public override void OnEnter()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            theScript = go.GetComponent <BodyColliderScript>();

            if (!everyFrame.Value)
            {
                MakeItSo();
                Finish();
            }
        }
        void MakeItSo()
        {
            var go = Fsm.GetOwnerDefaultTarget(gameObject);

            if (go == null)
            {
                return;
            }

            BodyColliderScript bcs = go.GetComponent <BodyColliderScript>();

            int[] parts = new int[] { bcs.index };
            bcs.ParentRagdollManager.startHitReaction(parts, vector3Hit.Value * floatForce.Value);
        }
        public override void DoParticleCollision(GameObject other)
        {
            if (collision == CollisionType.OnParticleCollision)
            {
                if (hitTimer > hitInterval.Value)
                {
                    BodyColliderScript bcs = other.GetComponent <Collider>().GetComponent <BodyColliderScript>();
                    if (bcs && rb)
                    {
                        var   mass    = rb.mass * massMultiplier.Value;
                        int[] indices = new int[] { bcs.index };
                        bcs.ParentRagdollManager.startHitReaction(indices, rb.velocity * mass);
                    }

                    hitTimer = 0.0f;
                    Fsm.Event(hit);
                    storeForce.Value    = 0;
                    storeCollider.Value = other;
                }
            }
        }
        public override void DoCollisionStay(Collision collisionInfo)
        {
            if (collision == CollisionType.OnCollisionStay)
            {
                StoreCollisionInfo(collisionInfo);

                if (hitTimer > hitInterval.Value)
                {
                    BodyColliderScript bcs = collisionInfo.collider.GetComponent <BodyColliderScript>();
                    if (bcs && rb)
                    {
                        var   mass    = rb.mass * massMultiplier.Value;
                        int[] indices = new int[] { bcs.index };
                        bcs.ParentRagdollManager.startHitReaction(indices, rb.velocity * mass);
                    }

                    hitTimer = 0.0f;
                    Fsm.Event(hit);
                }
            }
        }