@@ -97,17 +97,11 @@ inline const glm::ivec3& GetVectorFromMapDirection(eMapDirection direction)
9797// ////////////////////////////////////////////////////////////////////////
9898
9999AiCharacterController::AiCharacterController (Pedestrian* character)
100+ : CharacterController(character)
100101{
101- mCharacter = character;
102102 mFollowNearDistance = gGameParams .mPedestrianBoundsSphereRadius * 2 .0f ;
103103 mFollowFarDistance = Convert::MapUnitsToMeters (0 .5f );
104104 mDefaultNearDistance = gGameParams .mPedestrianBoundsSphereRadius ;
105-
106- if (mCharacter )
107- {
108- debug_assert (mCharacter ->mController == nullptr );
109- mCharacter ->mController = this ;
110- }
111105}
112106
113107void AiCharacterController::DebugDraw (DebugRenderer& debugRender)
@@ -167,7 +161,7 @@ bool AiCharacterController::ScanForGunshots()
167161 return false ;
168162}
169163
170- void AiCharacterController::UpdateFrame ()
164+ void AiCharacterController::OnCharacterUpdateFrame ()
171165{
172166 // choose current activity
173167 if (mAiMode == ePedestrianAiMode_None)
@@ -271,7 +265,7 @@ void AiCharacterController::StartPanic()
271265
272266 mRunToTarget = true ;
273267
274- mCharacter -> mCtlState .Clear ();
268+ mCtlState .Clear ();
275269 if (!ChooseWalkWaypoint (true ) || !ContinueWalkToWaypoint (mDefaultNearDistance ))
276270 {
277271 mAiMode = ePedestrianAiMode_Disabled; // disable ai
@@ -283,7 +277,7 @@ void AiCharacterController::StartWandering()
283277 mAiMode = ePedestrianAiMode_Wandering;
284278 mFollowPedestrian .reset ();
285279
286- mCharacter -> mCtlState .Clear ();
280+ mCtlState .Clear ();
287281 if (!ChooseWalkWaypoint (false ) || !ContinueWalkToWaypoint (mDefaultNearDistance ))
288282 {
289283 StartPanic ();
@@ -357,7 +351,7 @@ bool AiCharacterController::ContinueWalkToWaypoint(float distance)
357351 glm::vec2 currentPos2 = mCharacter ->mTransform .GetPosition2 ();
358352 if (glm::distance2 (currentPos2, mDestinationPoint ) <= tolerance2)
359353 {
360- mCharacter -> mCtlState .Clear ();
354+ mCtlState .Clear ();
361355 return false ;
362356 }
363357
@@ -366,8 +360,8 @@ bool AiCharacterController::ContinueWalkToWaypoint(float distance)
366360 mCharacter ->SetOrientation (toTarget);
367361
368362 // set control
369- mCharacter -> mCtlState .mWalkForward = true ;
370- mCharacter -> mCtlState .mRun = mRunToTarget ;
363+ mCtlState .mWalkForward = true ;
364+ mCtlState .mRun = mRunToTarget ;
371365 return true ;
372366}
373367
@@ -376,7 +370,7 @@ void AiCharacterController::StartDrivingCar()
376370 mAiMode = ePedestrianAiMode_DrivingCar;
377371 mFollowPedestrian .reset ();
378372
379- mCharacter -> mCtlState .Clear ();
373+ mCtlState .Clear ();
380374 if (!ChooseDriveWaypoint () || !ContinueDriveToWaypoint ())
381375 {
382376 StopDriving ();
@@ -388,12 +382,12 @@ void AiCharacterController::StopDriving()
388382 if (!mCharacter ->IsCarDriver ())
389383 return ;
390384
391- mCharacter -> mCtlState .Clear ();
385+ mCtlState .Clear ();
392386
393387 float currentSpeed = mCharacter ->mCurrentCar ->GetCurrentSpeed ();
394388 if (currentSpeed > gGameParams .mCarSpeedPassengerCanEnter )
395389 {
396- mCharacter -> mCtlState .mAcceleration = -1 .0f ;
390+ mCtlState .mAcceleration = -1 .0f ;
397391 }
398392 else
399393 {
@@ -458,7 +452,7 @@ void AiCharacterController::StartFollowTarget()
458452 return ;
459453 }
460454
461- mCharacter -> mCtlState .Clear ();
455+ mCtlState .Clear ();
462456 mAiMode = ePedestrianAiMode_FollowTarget;
463457
464458 mDestinationPoint = mFollowPedestrian ->mTransform .GetPosition2 ();
@@ -487,7 +481,7 @@ void AiCharacterController::UpdateFollowTarget()
487481 float distanceToTarget2 = glm::distance2 (characterPosition2, targetPosition2);
488482 if (distanceToTarget2 < glm::pow (mFollowNearDistance , 2 .0f ))
489483 {
490- mCharacter -> mCtlState .Clear ();
484+ mCtlState .Clear ();
491485 return ;
492486 }
493487
0 commit comments