public void RenderFloorPlan() { if (data.plan == null) return; int numberOfPoints = data.plan.points.Count; if (mesh == null) mesh = new DynamicMeshGeneric(); if (mesh.size != numberOfPoints) mesh.Clear(); mesh.vertices.Clear(); mesh.uv.Clear(); mesh.triangles.Clear(); mesh.vertices.AddRange(data.plan.GetPointsAsVector3()); for (int i = 0; i < numberOfPoints; i++) mesh.uv.Add(Vector2.zero); mesh.triangles.AddRange(data.plan.triangles); mesh.Build(); while (meshHolders.Count > 0) { GameObject destroyOld = meshHolders[0]; meshHolders.RemoveAt(0); DestroyImmediate(destroyOld); } while (colliderHolders.Count > 0) { GameObject destroyOld = colliderHolders[0]; colliderHolders.RemoveAt(0); DestroyImmediate(destroyOld); } while (interiorMeshHolders.Count > 0) { GameObject destroyOld = interiorMeshHolders[0]; interiorMeshHolders.RemoveAt(0); DestroyImmediate(destroyOld); } while (bayModels.Count > 0) { GameObject destroyOld = bayModels[0]; bayModels.RemoveAt(0); DestroyImmediate(destroyOld); } int numberOfDetails = 0; if (details != null) numberOfDetails = details.Length; for (int i = 0; i < numberOfDetails; i++) DestroyImmediate(details[i]); GameObject newMeshHolder = new GameObject("floorplan"); newMeshHolder.transform.parent = transform; newMeshHolder.transform.localPosition = Vector3.zero; meshFilt = newMeshHolder.AddComponent<MeshFilter>(); meshRend = newMeshHolder.AddComponent<MeshRenderer>(); meshFilt.mesh = mesh.mesh; meshRend.sharedMaterials = new Material[0]; meshRend.sharedMaterial = blueMat; blueMat.color = blueprintColour; meshHolders.Add(newMeshHolder); #if UNITY_EDITOR EditorUtility.UnloadUnusedAssets(); #endif }
public void RenderFloorPlan() { if (data.plan == null) { return; } int numberOfPoints = data.plan.points.Count; if (mesh == null) { mesh = new DynamicMeshGeneric(); } if (mesh.size != numberOfPoints) { mesh.Clear(); } mesh.vertices.Clear(); mesh.uv.Clear(); mesh.triangles.Clear(); mesh.vertices.AddRange(data.plan.GetPointsAsVector3()); for (int i = 0; i < numberOfPoints; i++) { mesh.uv.Add(Vector2.zero); } mesh.triangles.AddRange(data.plan.triangles); mesh.Build(); while (meshHolders.Count > 0) { GameObject destroyOld = meshHolders[0]; meshHolders.RemoveAt(0); DestroyImmediate(destroyOld); } while (colliderHolders.Count > 0) { GameObject destroyOld = colliderHolders[0]; colliderHolders.RemoveAt(0); DestroyImmediate(destroyOld); } while (interiorMeshHolders.Count > 0) { GameObject destroyOld = interiorMeshHolders[0]; interiorMeshHolders.RemoveAt(0); DestroyImmediate(destroyOld); } while (bayModels.Count > 0) { GameObject destroyOld = bayModels[0]; bayModels.RemoveAt(0); DestroyImmediate(destroyOld); } int numberOfDetails = 0; if (details != null) { numberOfDetails = details.Length; } for (int i = 0; i < numberOfDetails; i++) { DestroyImmediate(details[i]); } GameObject newMeshHolder = new GameObject("floorplan"); newMeshHolder.transform.parent = transform; newMeshHolder.transform.localPosition = Vector3.zero; meshFilt = newMeshHolder.AddComponent <MeshFilter>(); meshRend = newMeshHolder.AddComponent <MeshRenderer>(); meshFilt.mesh = mesh.mesh; meshRend.sharedMaterials = new Material[0]; meshRend.sharedMaterial = blueMat; blueMat.color = blueprintColour; meshHolders.Add(newMeshHolder); #if UNITY_EDITOR EditorUtility.UnloadUnusedAssets(); #endif }