void DestroySpringBoneEntities(VRMSpringBoneEntity springBone)
 {
     foreach (var colliderEntity in springBone.SphereColliderEntities)
     {
         this.DestroyEntity(colliderEntity);
     }
 }
        // ----------------------------------------------------

        #region // Private Methods

        unsafe void CreateSphereColliderEntities(VRMSpringBoneEntity springBone)
        {
            var groups = springBone.ColliderGroups;

            if (groups == null || groups.Length <= 0)
            {
                return;
            }

            var createSphereColliderEntities = new List <Entity>();

            foreach (var group in groups)
            {
                if (!group.IsActive)
                {
                    continue;
                }

                var groupEntity = group.CreateEntity();

                // SphereColliderEntityの生成
                // ※こちらのEntityはNativeMultiHashMap生成時の長さの算出に使用する
                for (var i = 0; i < group.Colliders.Length; i++)
                {
                    var entity = this._entityManager.Instantiate(this._sphereColliderPrefab);
                    this._entityManager.SetComponentData(entity, new SphereColliderTag());
                    createSphereColliderEntities.Add(entity);
                }
            }

            springBone.SphereColliderEntities = createSphereColliderEntities;
        }
 void CreateSpringBoneEntities(VRMSpringBoneEntity springBone)
 {
     foreach (var node in springBone.Nodes)
     {
         node.CreateEntity();
     }
 }
        public void RemoveSpringBone(VRMSpringBoneEntity springBone)
        {
            if (!this._springBones.Contains(springBone))
            {
                return;
            }

            this.DestroySpringBoneEntities(springBone);
            this._springBones.Remove(springBone);
            springBone.Dispose();
        }
        // ----------------------------------------------------

        #region // Public Methods

        public void AddSpringBone(VRMSpringBoneEntity springBone)
        {
            if (springBone.RootBones == null ||
                springBone.RootBones.Count <= 0 ||
                this._springBones.Contains(springBone))
            {
                return;
            }

            springBone.Initialize(this._entityManager);
            this.CreateSphereColliderEntities(springBone);
            this.CreateSpringBoneEntities(springBone);
            this._springBones.Add(springBone);
        }