コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
ファイル: EnginePart.cs プロジェクト: Rakjavik/EmergenceOfRak
        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];
            }
        }