コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
            }
        }