Example #1
0
        private void Complete_Enter()
        {
            Ready = true;

            //serialize session:
            string sessionData = "";

            sessionData += $"{pcfAnchor.CFUID.ToString()}";                                     //pcf
            sessionData += $"|{SerializationUtilities.Serialize(Walls)}";                       //walls array
            sessionData += $"|{JsonUtility.ToJson(_playspaceCenter)}";                          //center
            sessionData += $"|{PrimaryWall}|{RightWall}|{RearWall}|{LeftWall}";                 //wall ids (clockwise)
            sessionData += $"|{SerializationUtilities.Serialize(_playspaceCorners.ToArray())}"; //playspace corners
            sessionData += $"|{(Height)}";                                                      //room dimensions

            //save session:
            PlayerPrefs.SetString(_sessionDataKey, sessionData);
            PlayerPrefs.SetString(_sessionMeshKey, _serializedMeshes);
            PlayerPrefs.Save();

            OnCompleted?.Invoke();

            //clean up:
            HideGUI();
            RemovePlottedBounds();
            RemoveDebugLines();

            ChangeState(State.Idle);
        }
Example #2
0
        private void BuildGeometry(Vector3[] wallVerticies, int[] wallTriangles, Vector3[] floorVerticies, int[] floorTriangles, Vector3[] ceilingVerticies)
        {
            //setup geometry:
            WallGeometry    = new GameObject("(PlayspaceWalls)", typeof(MeshFilter), typeof(MeshRenderer));
            FloorGeometry   = new GameObject("(PlayspaceFloor)", typeof(MeshFilter), typeof(MeshRenderer));
            CeilingGeometry = new GameObject("(PlayspaceCeiling)", typeof(MeshFilter), typeof(MeshRenderer));

            AnchorToPCF();

            //setup renderers:
            MeshRenderer wallsRenderer = WallGeometry.GetComponent <MeshRenderer>();

            if (wallMaterial != null)
            {
                wallsRenderer.material = wallMaterial;
            }
            else
            {
                wallsRenderer.enabled = false;
            }

            MeshRenderer floorRenderer = FloorGeometry.GetComponent <MeshRenderer>();

            if (floorMaterial != null)
            {
                floorRenderer.material = floorMaterial;
            }
            else
            {
                floorRenderer.enabled = false;
            }

            MeshRenderer ceilingRenderer = CeilingGeometry.GetComponent <MeshRenderer>();

            if (ceilingMaterial != null)
            {
                ceilingRenderer.material = ceilingMaterial;
            }
            else
            {
                ceilingRenderer.enabled = false;
            }

            //apply mesh:
            Mesh wallMesh = new Mesh();

            wallMesh.vertices  = wallVerticies;
            wallMesh.triangles = wallTriangles;
            WallGeometry.GetComponent <MeshFilter>().mesh = wallMesh;

            Mesh floorMesh = new Mesh();

            floorMesh.vertices  = floorVerticies;
            floorMesh.triangles = floorTriangles;
            FloorGeometry.GetComponent <MeshFilter>().mesh = floorMesh;

            Mesh ceilingMesh = new Mesh();

            ceilingMesh.vertices  = ceilingVerticies;
            ceilingMesh.triangles = floorTriangles.Reverse().ToArray();
            CeilingGeometry.GetComponent <MeshFilter>().mesh = ceilingMesh;

            //apply colliders:
            WallGeometry.AddComponent <MeshCollider>();
            FloorGeometry.AddComponent <MeshCollider>();
            CeilingGeometry.AddComponent <MeshCollider>();

            //serialize mesh:
            string wallVertsSerialized    = SerializationUtilities.Serialize(wallMesh.vertices);
            string wallTrisSerialized     = SerializationUtilities.Serialize(wallMesh.triangles);
            string floorVertsSerialized   = SerializationUtilities.Serialize(floorMesh.vertices);
            string floorTrisSerialized    = SerializationUtilities.Serialize(floorMesh.triangles);
            string ceilingVertsSerialized = SerializationUtilities.Serialize(ceilingMesh.vertices);

            _serializedMeshes = wallVertsSerialized + "|" + wallTrisSerialized + "|" + floorVertsSerialized + "|" + floorTrisSerialized + "|" + ceilingVertsSerialized;
        }