public override void Dispose()
        {
            base.Dispose();
            if (matrices != null)
                matrices.Dispose();

            instanceIDs = null;
            parentIDs = null;
            matrices = null;
        }
        public override void Dispose()
        {
            base.Dispose();

            if (header != null) header.Dispose();
            if (subMeshes != null) subMeshes.Dispose();
            if (vertices != null) vertices.Dispose();
            if (uv != null) uv.Dispose();
            if (uv1 != null) uv1.Dispose();
            if (uv2 != null) uv2.Dispose();
            if (uv3 != null) uv3.Dispose();
            if (uv4 != null) uv4.Dispose();
            if (bindPoses != null) bindPoses.Dispose();
            if (bones != null) bones.Dispose();
            if (boneWeights != null) boneWeights.Dispose();

            header = null;
            subMeshes = null;
            triangles = null;
            vertices = null;
            uv = null;
            uv1 = null;
            uv2 = null;
            uv3 = null;
            uv4 = null;
            bindPoses = null;
            bones = null;
            boneWeights = null;
        }
        public SBonesArray(Transform[] input, int rootID)
        {
            count = input.Length;
            instanceIDs = new int[count];
            parentIDs = new int[count];

            Matrix4x4[] worldMatrices = new Matrix4x4[count];
            int iMax = input.Length;

            for (int i = 0; i < iMax; i++) {
                Transform bone = input[i];
                int childID = bone.GetInstanceID();
                instanceIDs[i] = childID;

                if (bone.parent != null) {
                    int parentID = bone.parent.GetInstanceID();
                    if (parentID != rootID) {
                        parentIDs[i] = parentID;
                    } else {
                        parentIDs[i] = -1; //Known root element
                    }
                } else {
                    parentIDs[i] = -1; //probible root element
                }
                worldMatrices[i] = bone.localToWorldMatrix;
            }

            //Debug.Log("test: " + test);
            matrices = new SMatrix4x4Array(worldMatrices);
        }