예제 #1
0
        public override void OnStart(StartState state)
        {
            if (!String.IsNullOrEmpty(BreakTransformName))
            {
                BreakTransform = part.FindModelTransform(BreakTransformName);
            }
            if (!String.IsNullOrEmpty(ForceTransformName))
            {
                ForceTransform = part.FindModelTransform(ForceTransformName);
            }

            Animation = part.FindModelAnimators(AnimationName)[0];
            if (Animation == null || Animation[AnimationName] == null)
            {
                RTUtil.Log("ModuleRTAntennaAnimated: Animation error");
                enabled = false;
                return;
            }

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

            base.OnStart(state);

            if (IsRTBroken && BreakTransform != null)
            {
                foreach (Transform t in RTUtil.FindTransformsWithCollider(BreakTransform))
                {
                    Destroy(t.gameObject);
                }
                enabled = false;
                return;
            }

            Animation[AnimationName].speed          = IsRTActive ? 1.0f : -1.0f;
            Animation[AnimationName].normalizedTime = IsRTActive ? 1.0f : 0.0f;
            Animation.Play(AnimationName);
        }
예제 #2
0
        private void Break()
        {
            foreach (Transform t in RTUtil.FindTransformsWithCollider(BreakTransform))
            {
                Rigidbody rb = t.gameObject.AddComponent <Rigidbody>();

                rb.angularDrag     = 0;
                rb.angularVelocity = part.rigidbody.angularVelocity;
                rb.drag            = 0;
                rb.mass            = t.collider.bounds.size.x * t.collider.bounds.size.y * t.collider.bounds.size.z * ShrapnelDensity;
                rb.velocity        = part.rigidbody.velocity;
                rb.isKinematic     = false;
                t.parent           = null;
                rb.AddForce(UnityEngine.Random.Range(-5, 5), UnityEngine.Random.Range(-5, 5), UnityEngine.Random.Range(-5, 5));
                rb.AddTorque(UnityEngine.Random.Range(-20, 20), UnityEngine.Random.Range(-20, 20), UnityEngine.Random.Range(-20, 20));

                DragModel dm = t.gameObject.AddComponent <DragModel>();
                dm.enabled = true;
                dm.dc      = ShrapnelDragCoeff;
                dm.mb      = vessel.mainBody;
            }

            Events["EventOpen"].guiActive                            =
                Events["EventClose"].guiActive                       =
                    Events["EventToggle"].guiActive                  =
                        Events["EventTarget"].guiActive              =
                            Events["EventOpen"].active               =
                                Events["EventClose"].active          =
                                    Events["EventToggle"].active     =
                                        Events["EventTarget"].active = false;

            Fields["GUI_OmniRange"].guiActive         =
                Fields["GUI_DishRange"].guiActive     =
                    Fields["GUI_EnergyReq"].guiActive = false;

            IsRTBroken = true;
            base.SetState(false);
        }