mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-20 04:34:48 +00:00
behavioural change: feeding an AInfo an object with a 0 radius causes the class to fill in radius from that objects bounds box
also, vehicle direct hooks
This commit is contained in:
parent
78a26b0108
commit
2d0bcbcf8d
|
|
@ -39,6 +39,8 @@ AIInfo::AIInfo(AIController* controller, SimObjectPtr<SceneObject> objIn, F32 ra
|
|||
mPosition = mLastPos = objIn->getPosition();
|
||||
mRadius = radIn;
|
||||
mPosSet = false;
|
||||
if (radIn == 0.0f)
|
||||
mRadius = mMax(objIn->getObjBox().len_x(), objIn->getObjBox().len_y()) * 0.5;
|
||||
};
|
||||
|
||||
AIInfo::AIInfo(AIController* controller, Point3F pointIn, F32 radIn)
|
||||
|
|
|
|||
|
|
@ -2264,7 +2264,7 @@ bool Player::setAIController(SimObjectId controller)
|
|||
{
|
||||
if (Sim::findObject(controller, mAIController) && mAIController->mControllerData)
|
||||
{
|
||||
mAIController->setAIInfo(this, mAIController->mControllerData->mMoveTolerance);
|
||||
mAIController->setAIInfo(this);
|
||||
return true;
|
||||
}
|
||||
Con::errorf("unable to find AIController : %i", controller);
|
||||
|
|
|
|||
|
|
@ -405,6 +405,7 @@ Vehicle::Vehicle()
|
|||
mWorkingQueryBoxCountDown = sWorkingQueryBoxStaleThreshold;
|
||||
|
||||
mPhysicsRep = NULL;
|
||||
mAIController = NULL;
|
||||
}
|
||||
|
||||
U32 Vehicle::getCollisionMask()
|
||||
|
|
@ -471,7 +472,7 @@ bool Vehicle::onAdd()
|
|||
void Vehicle::onRemove()
|
||||
{
|
||||
SAFE_DELETE(mPhysicsRep);
|
||||
|
||||
if (mAIController) mAIController->deleteObject();
|
||||
U32 i=0;
|
||||
|
||||
for( i=0; i<VehicleData::VC_NUM_DAMAGE_EMITTERS; i++ )
|
||||
|
|
@ -1219,3 +1220,25 @@ void Vehicle::_renderMuzzleVector( ObjectRenderInst *ri, SceneRenderState *state
|
|||
|
||||
PrimBuild::end();
|
||||
}
|
||||
|
||||
bool Vehicle::setAIController(SimObjectId controller)
|
||||
{
|
||||
if (Sim::findObject(controller, mAIController) && mAIController->mControllerData)
|
||||
{
|
||||
mAIController->setAIInfo(this);
|
||||
return true;
|
||||
}
|
||||
Con::errorf("unable to find AIController : %i", controller);
|
||||
mAIController = NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
DefineEngineMethod(Vehicle, setAIController, bool, (S32 controller), , "")
|
||||
{
|
||||
return object->setAIController(controller);
|
||||
}
|
||||
|
||||
DefineEngineMethod(Vehicle, getAIController, AIController*, (), , "")
|
||||
{
|
||||
return object->getAIController();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -27,6 +27,8 @@
|
|||
#include "T3D/rigidShape.h"
|
||||
#endif
|
||||
|
||||
#include "T3D/AI/AIController.h"
|
||||
|
||||
class ParticleEmitter;
|
||||
class ParticleEmitterData;
|
||||
class ClippedPolyList;
|
||||
|
|
@ -98,7 +100,7 @@ class Vehicle : public RigidShape
|
|||
Point2F mSteering;
|
||||
F32 mThrottle;
|
||||
bool mJetting;
|
||||
|
||||
AIController* mAIController;
|
||||
GFXStateBlockRef mSolidSB;
|
||||
|
||||
SimObjectPtr<ParticleEmitter> mDamageEmitterList[VehicleData::VC_NUM_DAMAGE_EMITTERS];
|
||||
|
|
@ -148,6 +150,8 @@ public:
|
|||
|
||||
Point2F getSteering() { return mSteering; };
|
||||
F32 getThrottle() { return mThrottle;};
|
||||
bool setAIController(SimObjectId controller);
|
||||
AIController* getAIController() { return mAIController; };
|
||||
/// Interpolates between move ticks @see processTick
|
||||
/// @param dt Change in time between the last call and this call to the function
|
||||
void advanceTime(F32 dt) override;
|
||||
|
|
|
|||
Loading…
Reference in a new issue