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
    }
Exemple #2
0
    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
    }