コード例 #1
0
 void OnDestroy()
 {
     if (doubleBufferedMesh == null)
     {
         return;
     }
     doubleBufferedMesh.GetNext().Dispose();
     doubleBufferedMesh.GetNext().Dispose();
     doubleBufferedMesh = null;
 }
コード例 #2
0
        public virtual void Initialize(bool overwrite)
        {
            if (valid && !overwrite)
            {
                return;
            }

            // Clear
            {
                if (meshFilter != null)
                {
                    meshFilter.sharedMesh = null;
                }

                meshRenderer = GetComponent <MeshRenderer>();
                if (meshRenderer != null)
                {
                    meshRenderer.sharedMaterial = null;
                }

                currentInstructions.Clear();
                vertices        = null;
                colors          = null;
                uvs             = null;
                sharedMaterials = new Material[0];
                submeshMaterials.Clear();
                submeshes.Clear();
                skeleton = null;

                valid = false;
            }

            if (!skeletonDataAsset)
            {
                if (logErrors)
                {
                    Debug.LogError("Missing SkeletonData asset.", this);
                }

                return;
            }
            SkeletonData skeletonData = skeletonDataAsset.GetSkeletonData(false);

            if (skeletonData == null)
            {
                return;
            }
            valid = true;

            meshFilter         = GetComponent <MeshFilter>();
            meshRenderer       = GetComponent <MeshRenderer>();
            doubleBufferedMesh = new DoubleBuffered <SmartMesh>();
            vertices           = new Vector3[0];

            skeleton = new Skeleton(skeletonData);
            if (!string.IsNullOrEmpty(initialSkinName) && initialSkinName != "default")
            {
                skeleton.SetSkin(initialSkinName);
            }

            separatorSlots.Clear();
            for (int i = 0; i < separatorSlotNames.Length; i++)
            {
                separatorSlots.Add(skeleton.FindSlot(separatorSlotNames[i]));
            }

            LateUpdate();

            if (OnRebuild != null)
            {
                OnRebuild(this);
            }
        }