public override void OnStart(PartModule.StartState state)
        {
            if (broken)
            {
                mode = TrackingModes.BROKEN;
                List<Transform> toRemove = new List<Transform>();
                RTUtils.findTransformsWithCollider(part.FindModelTransform(Pivot1Name), ref toRemove);
                foreach (Transform t in toRemove)
                    Destroy(t.gameObject);

                if (this.MaximumDrag > 0)
                {
                    part.minimum_drag = this.MinimumDrag;
                    part.maximum_drag = this.MaximumDrag;
                }

                EnergyDrain = antennaRange = dishRange = 0;
                part.SendMessage("UpdateGUI");
                UpdatePA();
                RTGlobals.network = new RelayNetwork();
                return;
            }

            Actions["Mode1Action"].guiName = Events["Mode1Event"].guiName = Mode1Name;
            Actions["Mode0Action"].guiName = Events["Mode0Event"].guiName = Mode0Name;
            Actions["ActionToggle"].guiName = ToggleName;

            Events["OverrideMode1Event"].guiName = "Override " + Mode1Name;
            Events["OverrideMode0Event"].guiName = "Override " + Mode0Name;

            if (fixAnimLayers)
            {
                int i = 0;
                foreach (AnimationState s in anim)
                {
                    s.layer = i;
                    i++;
                }
            }

            if (animState == 1)
            {
                act1();

                anim[Animation].speed = Mathf.Abs(anim[Animation].speed);

                mode = TrackingModes.TRACKING;

                anim.Play(Animation);
            }
            else
            {
                act0();

                anim[Animation].speed = -Mathf.Abs(anim[Animation].speed);

                mode = TrackingModes.RETRACTED;

                anim.Play(Animation);
            }

            anim[Animation].wrapMode = WrapMode.Clamp;

            base.OnStart(state);

            if (state != StartState.Editor)
            {
                Pivot2Dir = part.FindModelTransform(Pivot2Name);

                pivot1 = new Pivot(part.FindModelTransform(Pivot1Name), Pivot1Speed, Pivot1Range);
                pivot2 = new Pivot(Pivot2Dir, Pivot2Speed, Pivot2Range);

                if (animState == 1)
                {
                    mode = TrackingModes.TRACKING;
                    if (target.isTarget)
                    {
                        pivot1.SnapToTarget(target.position);
                        pivot2.SnapToTarget(target.position);
                    }
                }
            }

            anim[Animation].normalizedTime = animState;
        }
예제 #2
0
        public override void OnStart(PartModule.StartState state)
        {
            if (broken)
            {
                mode = TrackingModes.BROKEN;
                List <Transform> toRemove = new List <Transform>();
                RTUtils.findTransformsWithCollider(part.FindModelTransform(Pivot1Name), ref toRemove);
                foreach (Transform t in toRemove)
                {
                    Destroy(t.gameObject);
                }

                if (this.MaximumDrag > 0)
                {
                    part.minimum_drag = this.MinimumDrag;
                    part.maximum_drag = this.MaximumDrag;
                }

                EnergyDrain = antennaRange = dishRange = 0;
                part.SendMessage("UpdateGUI");
                UpdatePA();
                RTGlobals.network = new RelayNetwork();
                return;
            }

            Actions["Mode1Action"].guiName  = Events["Mode1Event"].guiName = Mode1Name;
            Actions["Mode0Action"].guiName  = Events["Mode0Event"].guiName = Mode0Name;
            Actions["ActionToggle"].guiName = ToggleName;

            Events["OverrideMode1Event"].guiName = "Override " + Mode1Name;
            Events["OverrideMode0Event"].guiName = "Override " + Mode0Name;

            if (fixAnimLayers)
            {
                int i = 0;
                foreach (AnimationState s in anim)
                {
                    s.layer = i;
                    i++;
                }
            }

            if (animState == 1)
            {
                act1();

                anim[Animation].speed = Mathf.Abs(anim[Animation].speed);

                mode = TrackingModes.TRACKING;

                anim.Play(Animation);
            }
            else
            {
                act0();

                anim[Animation].speed = -Mathf.Abs(anim[Animation].speed);

                mode = TrackingModes.RETRACTED;

                anim.Play(Animation);
            }

            anim[Animation].wrapMode = WrapMode.Clamp;

            base.OnStart(state);

            if (state != StartState.Editor)
            {
                Pivot2Dir = part.FindModelTransform(Pivot2Name);

                pivot1 = new Pivot(part.FindModelTransform(Pivot1Name), Pivot1Speed, Pivot1Range);
                pivot2 = new Pivot(Pivot2Dir, Pivot2Speed, Pivot2Range);

                if (animState == 1)
                {
                    mode = TrackingModes.TRACKING;
                    if (target.isTarget)
                    {
                        pivot1.SnapToTarget(target.position);
                        pivot2.SnapToTarget(target.position);
                    }
                }
            }

            anim[Animation].normalizedTime = animState;
        }
        public override void OnStart(StartState state)
        {
            if (!String.IsNullOrEmpty(Pivot1Name) && !String.IsNullOrEmpty(Pivot2Name)) {
                ForceTransform = part.FindModelTransform(Pivot2Name);
                BreakTransform = part.FindModelTransform(Pivot1Name);
            } else {
                RTUtil.Log("ModuleRTAntennaAnimated: Pivot error");
                enabled = false;
                return;
            }

            if (IsRTBroken) {
                TrackingMode = TrackingModes.Broken;
            }

            base.OnStart(state);

            if (RTCore.Instance != null) {
                mPivot1 = new Pivot(BreakTransform, Pivot1Speed, Pivot1Range);
                mPivot2 = new Pivot(ForceTransform, Pivot2Speed, Pivot2Range);

                if (IsRTActive) {
                    TrackingMode = TrackingModes.Tracking;
                    mPivot1.SnapToTarget(new DynamicTarget(RTAntennaTargetGuid));
                    mPivot2.SnapToTarget(new DynamicTarget(RTAntennaTargetGuid));
                }
            }
        }