void OnDestroy() { if (doubleBufferedMesh == null) { return; } doubleBufferedMesh.GetNext().Dispose(); doubleBufferedMesh.GetNext().Dispose(); doubleBufferedMesh = null; }
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); } }