public void InitializeMovementPart() { CreatureLocomotionType locomotionType = attachedAgent.locomotionType; attachedBody = PartTransform.GetComponentInParent <Rigidbody>(); if (locomotionType == CreatureLocomotionType.StandardForwardBack || locomotionType == CreatureLocomotionType.Flight) { ConstantForce cf = attachedBody.gameObject.GetComponent <ConstantForce>(); if (cf == null) { cf = attachedBody.gameObject.AddComponent <ConstantForce>(); } cf.relativeForce = Vector3.zero; engineMovementVariables = new EngineMovementVariables[3]; if (locomotionType == CreatureLocomotionType.Flight) { engineMovementVariables[(int)Direction.Y] = new EngineMovementVariables( attachedAgent, Direction.Y, miscVariables); engineMovementVariables[(int)Direction.Z] = new EngineMovementVariables( attachedAgent, Direction.Z, miscVariables); engineMovementVariables[(int)Direction.X] = new EngineMovementVariables( attachedAgent, Direction.X, miscVariables); engineMovementVariables[0].Initialize(attachedAgent, parentCreature, attachedBody); engineMovementVariables[1].Initialize(attachedAgent, parentCreature, attachedBody); engineMovementVariables[2].Initialize(attachedAgent, parentCreature, attachedBody); Enabled = true; } else if (locomotionType == CreatureLocomotionType.StandardForwardBack) { engineMovementVariables[(int)Direction.Y] = new EngineMovementVariables( attachedAgent, Direction.Y, miscVariables); engineMovementVariables[(int)Direction.Z] = new EngineMovementVariables( attachedAgent, Direction.Z, miscVariables); engineMovementVariables[(int)Direction.X] = new EngineMovementVariables( attachedAgent, Direction.X, miscVariables); } } else { engineMovementVariables = new EngineMovementVariables[0]; } }
public EnginePart(CreaturePart creaturePart, Transform transform, CreatureLocomotionType partMovementType, float updateEvery) : base(creaturePart, transform, updateEvery) { }