public void DecreaseRefCount(GeneratedMeshKey meshKey) { ChiselGeneratedRefCountedMesh refCountedMesh; if (!refCountedMeshes.TryGetValue(meshKey, out refCountedMesh)) { return; } refCountedMesh.refCount--; }
public UnityEngine.Mesh ReturnUnityMeshAndIncreaseRefCountIfExists(GeneratedMeshKey meshKey) { ChiselGeneratedRefCountedMesh refCountedMesh; if (!refCountedMeshes.TryGetValue(meshKey, out refCountedMesh)) { return(null); } refCountedMesh.refCount++; return(refCountedMesh.sharedMesh); }
public UnityEngine.Mesh ReturnOrRegisterUnityMeshAndIncreaseRefCount(GeneratedMeshKey meshKey, UnityEngine.Mesh generatedMesh) { ChiselGeneratedRefCountedMesh refCountedMesh; refCountedMeshes.TryGetValue(meshKey, out refCountedMesh); if (refCountedMesh == null) { refCountedMesh = new ChiselGeneratedRefCountedMesh(); refCountedMeshes[meshKey] = refCountedMesh; } if (refCountedMesh.sharedMesh != null && refCountedMesh.sharedMesh != generatedMesh) { garbageMeshes.Add(refCountedMesh.sharedMesh); refCountedMesh.refCount = 0; } refCountedMesh.sharedMesh = generatedMesh; refCountedMesh.refCount++; return(refCountedMesh.sharedMesh); }
public UnityEngine.Mesh CreateNewUnityMesh(GeneratedMeshKey meshKey) { UnityEngine.Mesh sharedMesh = null; if (garbageMeshes.Count > 0) { var lastIndex = garbageMeshes.Count - 1; sharedMesh = garbageMeshes[lastIndex]; garbageMeshes.RemoveAt(lastIndex); if (sharedMesh) { sharedMesh.Clear(); } } if (!sharedMesh) { sharedMesh = new UnityEngine.Mesh() { name = meshKey.GetHashCode().ToString() } } ; return(ReturnOrRegisterUnityMeshAndIncreaseRefCount(meshKey, sharedMesh)); }