Esempio n. 1
0
        public void InitTankChassis(NodeAddedEvent evt, ChassisInitNode node)
        {
            ChassisComponent chassis = new ChassisComponent();

            this.CreateTracks(node, chassis);
            node.Entity.AddComponent(chassis);
            node.Entity.AddComponent <EffectiveSpeedComponent>();
            ChassisSmootherComponent component = new ChassisSmootherComponent();

            component.maxSpeedSmoother.Reset(node.speed.Speed);
            component.maxTurnSpeedSmoother.Reset(node.speed.TurnSpeed);
            node.Entity.AddComponent(component);
            node.rigidbody.Rigidbody.mass = node.weight.Weight;
        }
Esempio n. 2
0
        private void CreateTracks(ChassisInitNode node, ChassisComponent chassis)
        {
            Entity entity = node.Entity;
            ChassisConfigComponent chassisConfig = node.chassisConfig;
            Rigidbody      rigidbody             = node.rigidbody.Rigidbody;
            BoxCollider    boundsCollider        = node.tankColliders.BoundsCollider;
            float          trackLength           = boundsCollider.size.z * 0.8f;
            float          num2                = boundsCollider.size.x - chassisConfig.TrackSeparation;
            Vector3        vector3             = boundsCollider.center - new Vector3(0f, boundsCollider.size.y / 2f, 0f);
            Vector3        trackCenterPosition = vector3 + new Vector3(-0.5f * num2, chassisConfig.NominalRayLength, 0f);
            Vector3        vector6             = vector3 + new Vector3(0.5f * num2, chassisConfig.NominalRayLength, 0f);
            float          damping             = node.damping.Damping;
            TrackComponent component           = new TrackComponent {
                LeftTrack  = new Track(rigidbody, chassisConfig.NumRaysPerTrack, trackCenterPosition, trackLength, chassisConfig, chassis, -1, damping),
                RightTrack = new Track(rigidbody, chassisConfig.NumRaysPerTrack, vector6, trackLength, chassisConfig, chassis, 1, damping)
            };
            int layerMask = LayerMasks.VISIBLE_FOR_CHASSIS_SEMI_ACTIVE;

            component.LeftTrack.SetRayсastLayerMask(layerMask);
            component.RightTrack.SetRayсastLayerMask(layerMask);
            entity.AddComponent(component);
        }