Esempio n. 1
0
        public void DecreaseRefCount(GeneratedMeshKey meshKey)
        {
            ChiselGeneratedRefCountedMesh refCountedMesh;

            if (!refCountedMeshes.TryGetValue(meshKey, out refCountedMesh))
            {
                return;
            }
            refCountedMesh.refCount--;
        }
Esempio n. 2
0
        public UnityEngine.Mesh ReturnUnityMeshAndIncreaseRefCountIfExists(GeneratedMeshKey meshKey)
        {
            ChiselGeneratedRefCountedMesh refCountedMesh;

            if (!refCountedMeshes.TryGetValue(meshKey, out refCountedMesh))
            {
                return(null);
            }
            refCountedMesh.refCount++;
            return(refCountedMesh.sharedMesh);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 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));
 }