Esempio n. 1
0
        private bool TryRotateUsingStarter(GameObject shipBase)
        {
            float rotationFix = TryGetRotationFixFinisher(shipBase);

            bool result = false;

            if (!float.IsNaN(rotationFix))
            {
                result = true;

                float angleFix = GetAngleFixRotation(shipBase);

                float savedRotation = TheShip.GetModelOrientation().transform.localEulerAngles.y;
                TheShip.SetRotationHelper2Angles(new Vector3(0, rotationFix, 0));
                TheShip.UpdateRotationHelperAngles(new Vector3(0, angleFix, 0));

                if (GetPathToProcessLeft(shipBase) <= 0)
                {
                    result = false;

                    TheShip.SetRotationHelper2Angles(new Vector3(0, savedRotation, 0));
                    TheShip.UpdateRotationHelperAngles(new Vector3(0, -angleFix, 0));
                }
            }

            return(result);
        }
Esempio n. 2
0
        // ROTATION

        public void UpdateRotation()
        {
            if (GetPathToProcessLeft(TheShip.GetModelOrientation()) > 0)
            {
                float rotationFix = GetRotationFix(TheShip.GetModelOrientation());
                TheShip.SetRotationHelper2Angles(new Vector3(0, rotationFix, 0));

                float angleFix = GetAngleFix(TheShip.GetModelOrientation());
                TheShip.UpdateRotationHelperAngles(new Vector3(0, angleFix, 0));
            }

            AddMovementTemplateCenterPoint(TheShip.Model);
        }
Esempio n. 3
0
        private void DoBarrelRollAnimation()
        {
            float progressStep = 2.5f * Time.deltaTime * Options.AnimationSpeed;

            progressStep     = Mathf.Min(progressStep, progressTarget - progressCurrent);
            progressCurrent += progressStep;

            TheShip.SetPosition(Vector3.MoveTowards(TheShip.GetPosition(), TemporaryShipBase.transform.position, progressStep));
            TheShip.RotateModelDuringBarrelRoll(progressCurrent / progressTarget, HelperDirection);
            TheShip.SetRotationHelper2Angles(new Vector3(0, progressCurrent / progressTarget * (plannedRotation - initialRotation), 0));
            TheShip.MoveUpwards(progressCurrent / progressTarget);
            if (progressCurrent >= progressTarget)
            {
                performingAnimation = false;
                GameMode.CurrentGameMode.FinishBarrelRoll();
            }
        }
Esempio n. 4
0
        private void DoBarrelRollAnimation()
        {
            float progressStep = Time.deltaTime * 0.2f * (0.5f + Options.AnimationSpeed * 10f);

            progressStep     = Mathf.Min(progressStep, progressTarget - progressCurrent);
            progressCurrent += progressStep;

            TheShip.SetPosition(Vector3.MoveTowards(TheShip.GetPosition(), TemporaryShipBase.transform.position, progressStep));

            if (!IsTractorBeamBarrelRoll && !TheShip.IsLandedModel)
            {
                TheShip.RotateModelDuringBarrelRoll(progressCurrent / progressTarget, (Direction == Direction.Left) ? -1 : 1);
                TheShip.SetRotationHelper2Angles(new Vector3(0, progressCurrent / progressTarget * (plannedRotation - initialRotation), 0));
                TheShip.MoveUpwards(progressCurrent / progressTarget);
            }

            if (progressCurrent >= progressTarget)
            {
                performingAnimation = false;
                FinishReposition();
            }
        }