public void PrepareAndSendCollisionResult(FixedUpdateEvent e, TankCollisionDetectionNode tank, [JoinByBattle] BattleTankCollisionsNode battle) { TankCollisionDetectionComponent tankCollisionDetection = tank.tankCollisionDetection; if (tankCollisionDetection.Detector.UpdatesCout >= this.DETECTOR_TRUST_UPDATES_COUNT) { long semiActiveCollisionsPhase = battle.battleTankCollisions.SemiActiveCollisionsPhase; if ((tankCollisionDetection.Phase < semiActiveCollisionsPhase) && tankCollisionDetection.Detector.CanBeActivated) { tankCollisionDetection.Phase = semiActiveCollisionsPhase; base.ScheduleEvent(new ActivateTankEvent(semiActiveCollisionsPhase), tank.Entity); } tankCollisionDetection.Detector.UpdatesCout = 0; tankCollisionDetection.Detector.CanBeActivated = true; } }
public void EnableDetector(NodeAddedEvent nodeAdded, TankNode tank) { BoxCollider boundsCollider = tank.tankColliders.BoundsCollider; TankCollisionDetectionComponent component = new TankCollisionDetectionComponent { Detector = boundsCollider.gameObject.AddComponent <TankCollisionDetector>() }; Rigidbody rigidbody = boundsCollider.gameObject.GetComponent <Rigidbody>(); if (!rigidbody) { rigidbody = boundsCollider.gameObject.AddComponent <Rigidbody>(); } rigidbody.isKinematic = true; boundsCollider.enabled = true; boundsCollider.isTrigger = true; if (!tank.Entity.HasComponent <TankCollisionDetectionComponent>()) { tank.Entity.AddComponent(component); } }