diff --git a/Engine/source/T3D/AI/AIInfo.cpp b/Engine/source/T3D/AI/AIInfo.cpp index c2c11de9a..2f0022658 100644 --- a/Engine/source/T3D/AI/AIInfo.cpp +++ b/Engine/source/T3D/AI/AIInfo.cpp @@ -39,6 +39,8 @@ AIInfo::AIInfo(AIController* controller, SimObjectPtr 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) diff --git a/Engine/source/T3D/player.cpp b/Engine/source/T3D/player.cpp index e48f204e6..938fc3e6d 100644 --- a/Engine/source/T3D/player.cpp +++ b/Engine/source/T3D/player.cpp @@ -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); diff --git a/Engine/source/T3D/vehicles/vehicle.cpp b/Engine/source/T3D/vehicles/vehicle.cpp index cfbd9a876..cd420c9d3 100644 --- a/Engine/source/T3D/vehicles/vehicle.cpp +++ b/Engine/source/T3D/vehicles/vehicle.cpp @@ -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; imControllerData) + { + 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(); +} diff --git a/Engine/source/T3D/vehicles/vehicle.h b/Engine/source/T3D/vehicles/vehicle.h index 8c43a6e41..4dd518552 100644 --- a/Engine/source/T3D/vehicles/vehicle.h +++ b/Engine/source/T3D/vehicles/vehicle.h @@ -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 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;