예제 #1
0
        // Start ops
        void StartMethods()
        {
            // Skinned mesh FIXME
            if (objectType == ObjectType.SkinnedMesh)
            {
                // Reset rigid data
                Default();

                // Check for demolition state every frame
                if (demolitionType != DemolitionType.None)
                {
                    StartCoroutine(limitations.DemolishableCor(this));
                }

                initialized = true;
            }

            // Excluded from simulation
            if (physics.exclude == true)
            {
                return;
            }

            // Set Start variables
            SetObjectType();

            // Start all coroutines
            StartAllCoroutines();

            // Object initialized
            initialized = true;
        }
예제 #2
0
        /// /////////////////////////////////////////////////////////
        /// Coroutines
        /// /////////////////////////////////////////////////////////

        // Start all coroutines
        public void StartAllCoroutines()
        {
            // Stop if static
            if (simulationType == SimType.Static)
            {
                return;
            }

            // Prevent physics cors
            if (physics.exclude == true)
            {
                return;
            }

            // Inactive
            if (gameObject.activeSelf == false)
            {
                return;
            }

            // Check for demolition state every frame
            if (demolitionType != DemolitionType.None)
            {
                StartCoroutine(limitations.DemolishableCor(this));
            }

            // Cache physics data for fragments
            StartCoroutine(physics.PhysicsDataCor(this));

            // Activation by velocity\offset coroutines
            if (simulationType == SimType.Inactive || simulationType == SimType.Kinematic)
            {
                if (activation.byVelocity > 0)
                {
                    StartCoroutine(activation.ActivationVelocityCor(this));
                }
                if (activation.byOffset > 0)
                {
                    StartCoroutine(activation.ActivationOffsetCor(this));
                }
            }

            // Init inactive every frame update coroutine
            if (simulationType == SimType.Inactive)
            {
                StartCoroutine(activation.InactiveCor(this));
            }

            // Init restriction check
            RFRestriction.InitRestriction(this);
        }