protected override void OnInitiate()
        {
            // Initiate chain
            for (int i = 0; i < chain.Length; i++)
            {
                chain[i].Initiate(this);
            }

            // Initiate effectors
            foreach (IKEffector e in effectors)
            {
                e.Initiate(this);
            }

            // Initiate IK mapping
            spineMapping.Initiate(this);
            foreach (IKMappingBone boneMapping in boneMappings)
            {
                boneMapping.Initiate(this);
            }
            foreach (IKMappingLimb limbMapping in limbMappings)
            {
                limbMapping.Initiate(this);
            }
        }
        protected override void OnInitiate()
        {
            if (OnPreInitiate != null)
            {
                OnPreInitiate();
            }

            // Initiate chain
            for (int i = 0; i < chain.Length; i++)
            {
                chain[i].Initiate(this, chain);
            }

            // Initiate effectors
            foreach (IKEffector e in effectors)
            {
                e.Initiate(this);
            }

            // Initiate bend constraints
            foreach (IKConstraintBend b in bendConstraints)
            {
                b.Initiate(this);
            }

            // Initiate IK mapping
            spineMapping.Initiate(this);
            foreach (IKMappingBone boneMapping in boneMappings)
            {
                boneMapping.Initiate(this);
            }
            foreach (IKMappingLimb limbMapping in limbMappings)
            {
                limbMapping.Initiate(this);
            }

            if (OnPostInitiate != null)
            {
                OnPostInitiate();
            }
        }