tge to torque3d moon_back.jpgscreenshot_001-00003.png

   
Point3F #ifndef _MPOINT3_H_
#include "math/mPoint3.h"
#endif
#include "util/safeDelete.h" #include "core/util/safeDelete.h"
Container SceneContainer
ConsoleMethod(BasicGrid,init, void, 4, 4, "param: area: x y w h, F32 SquareSize")

#include "console/engineAPI.h"

DefineEngineMethod(BasicGrid, init, void, (const char* areastr, F32 squareSize), ,"param: area: x y w h, F32 SquareSize")

also look at: DefineEngineStringlyVariadicMethod

 

Con::executef(this, 2, "onAdd", Con::getIntArg(getId())); Con::executef(this, "onAdd",getId());
dglSetBitmapModulation GFX->getDrawUtil->setBitmapModulation
InputEvent InputEventInfo
TextureHandle GFXTexHandle
TextureObject GFXTextureObject
 GBitmap::RGB GFXFormatR8G8B8A8
scriptThis()  getId()
 (player) delta  mDelta
ConsoleFunction DefineEngineFunction
DefineEngineStringlyVariadicFunction

   
   
   

 Also take a look at IMPLEMENT_CALLBACK. It will be defined once and showup on dump for example - make the life easier. Once defined you call is like that:

mDatablock->onLaunch_callback(this, mCaster, mTarget, mMissile);

While it's defined like that:

IMPLEMENT_CALLBACK( afxMagicSpellData, onLaunch, void,
   (afxMagicSpell* spell, ShapeBase* caster, SceneObject* target, afxMagicMissile* missile),
   (spell, caster, target, missile),
   "Called when the spell's casting stage ends and the delivery stage begins.\n"
   "@param spell the spell object\n" );


 

Compile Test FreeBSD:

set CC=/usr/bin/clang
set CXX=/usr/bin/clang++
mkdir -p /opt/OGE3D/Projects/BaseGame
cd /opt/OGE3D/Projects/BaseGame
cmake ../../ -DTORQUE_APP_NAME=BaseGame -DCMAKE_BUILD_TYPE=Debug -DVIDEO_WAYLAND=OFF 

 

Engine Changes:

TerrainEditor.cpp:

      if (!collide(event, pos))
      {
         //XXTH Con::errorf("XXTH mMouseBrush RESET!!! collide failed!");
         //XXTH This is a very bad move!!! terrain change get painted on 0 0 0
         //XXTH sucks: mMouseBrush->reset(); instead:
         return;
      }
   }

GameBase.h:

after:

virtual WaterObject* getCurrentWaterObject() { return mCurrentWaterObject; }

add:   

//XXTH added for compat with ohmtal/ai
virtual float getMaxForwardVelocity() { return 0.f; }

player.h:

after:

bool renderFirstPerson;  

add:

   //XXTH rendering to ground for animals !
   bool conformToGround;

 

player.ccp:

before:

shadowEnable = true;

add:

   //XXTH
   conformToGround = false;

after:

Parent::packData(stream);

add:

   //XXTH
   stream->write(conformToGround);

after:

void PlayerData::initPersistFields()

add:

   //XXTH
   addField("conformToGround", TypeBool, Offset(conformToGround, PlayerData),
      "@brief Render a shape more natural with terrain. "
      );

 after:

    Parent::unpackData(stream);

add:

   //XXTH
   stream->read(&conformToGround);

 

CMAKE :

in \Tools\CMake\torque3d.cmake
after addPath("${srcDir}/math/test")


# XXTH
addPath("${srcDir}/ohmtal/app")
addPath("${srcDir}/ohmtal/2d")
addPath("${srcDir}/ohmtal/ai")
addPath("${srcDir}/ohmtal/ai/fsm")
#addPath("${srcDir}/ohmtal/ai/graph")
addPath("${srcDir}/ohmtal/grid")
addPath("${srcDir}/ohmtal/misc")
addPath("${srcDir}/ohmtal/path")
#addPath("${srcDir}/ohmtal/gui")
addPath("${srcDir}/ohmtal/fx")
addPath("${srcDir}/ohmtal/clientobjects")