private void SetVisibility(bool visible) { if (this.visible == visible) { return; } MeshRenderer renderer = PartTransform.GetComponent <MeshRenderer>(); if (visible) { if (renderer != null) { renderer.enabled = true; } for (int count = 0; count < PartTransform.childCount; count++) { PartTransform.GetChild(count).gameObject.SetActive(true); } ; this.visible = true; } else { if (renderer != null) { renderer.enabled = false; } for (int count = 0; count < PartTransform.childCount; count++) { PartTransform.GetChild(count).gameObject.SetActive(false); } ; this.visible = false; } }
private void animateMovement() { float relativeMultiplier; if (partMovesRelativeTo == PartMovesWith.Braking) { relativeMultiplier = attachedAgent.CurrentBrakeAmountRequest.magnitude; } else if (partMovesRelativeTo == PartMovesWith.ConstantForceY) { relativeMultiplier = attachedAgent.GetConstantForceComponent().relativeForce.y; } else if (partMovesRelativeTo == PartMovesWith.ConstantForceZ) { relativeMultiplier = attachedAgent.GetConstantForceComponent().relativeForce.z; } else if (partMovesRelativeTo == PartMovesWith.Velocity) { relativeMultiplier = attachedAgent.GetRigidBody().velocity.magnitude; } else if (partMovesRelativeTo == PartMovesWith.IsKinematic) { relativeMultiplier = attachedAgent.IsKinematic(); } else if (partMovesRelativeTo == PartMovesWith.TargetPosition) { relativeMultiplier = 0; } else { relativeMultiplier = 1; } // NO changes // if (relativeMultiplier == 0) { if (!visibleIfNotAnimating && visible) { SetVisibility(false); } } else { if (!visibleIfNotAnimating && !visible) { SetVisibility(true); } Vector3 rotation = movementDirection * relativeMultiplier; PartTransform.Rotate(rotation * movementMultiplier); } }
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]; } }