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; }
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); }