public void UpdateTankEngine(FixedUpdateEvent evt, TankEngineMovableNode tank) { TankEngineComponent tankEngine = tank.tankEngine; TankEngineConfigComponent tankEngineConfig = tank.tankEngineConfig; TrackComponent track = tank.track; ChassisComponent chassis = tank.chassis; float effectiveMoveAxis = chassis.EffectiveMoveAxis; float effectiveTurnAxis = chassis.EffectiveTurnAxis; bool hasCollision = tank.tankCollision.HasCollision; tankEngine.CollisionTimerSec = (hasCollision == tankEngine.HasValuableCollision) ? 0f : (tankEngine.CollisionTimerSec + evt.DeltaTime); if (tankEngine.CollisionTimerSec >= tankEngineConfig.EngineCollisionIntervalSec) { tankEngine.HasValuableCollision = hasCollision; } if (effectiveMoveAxis != 0f) { this.UpdateTankEngine(tankEngine, tankEngineConfig, tankEngine.HasValuableCollision, track, evt.DeltaTime, effectiveMoveAxis, tank.speed.Acceleration, tank.speedConfig.ReverseAcceleration, tank.speed.Speed, tankEngine.MovingBorder); } else if (effectiveTurnAxis == 0f) { tankEngine.Value = 0f; } else { this.UpdateTankEngine(tankEngine, tankEngineConfig, tankEngine.HasValuableCollision, track, evt.DeltaTime, effectiveTurnAxis, tank.speedConfig.TurnAcceleration, tank.speedConfig.ReverseTurnAcceleration, tank.speed.TurnSpeed, tank.tankEngineConfig.EngineTurningBorder); } }
public void ResetTankEngine(NodeAddedEvent evt, TankEngineMovableNode engine) { engine.chassis.Reset(); }