Example #1
0
    private void Start()
    {
        if (fallbackLevelMaterial == null)
        {
            Debug.LogError("Fallback Level Material CAN NOT BE NULL!");
            return;
        }

        foreach (Transform child in transform)
        {
            GameObject     go       = child.gameObject;
            ProBuilderMesh mainMesh = go.GetComponent <ProBuilderMesh>();

            ArrayPacker[] faces = new ArrayPacker[mainMesh.faces.Count];
            for (int i = 0; i < faces.Length; i++)
            {
                int[] faceVerts = new int[mainMesh.faces[i].indexes.Count];
                mainMesh.faces[i].indexes.CopyTo(faceVerts, 0);

                faces[i] = new ArrayPacker(faceVerts);
            }

            Vector3[] vertices = new Vector3[mainMesh.positions.Count];
            for (int i = 0; i < mainMesh.positions.Count; i++)
            {
                vertices[i] = mainMesh.positions[i];
            }

            ArrayPacker[] sharedVertices = new ArrayPacker[mainMesh.sharedVertices.Count];
            for (int i = 0; i < mainMesh.sharedVertices.Count; i++)
            {
                int[] sharedVertex = new int[mainMesh.sharedVertices[i].Count];
                mainMesh.sharedVertices[i].CopyTo(sharedVertex, 0);

                sharedVertices[i] = new ArrayPacker(sharedVertex);
            }

            LevelPiece piece = new LevelPiece(go.transform.position, go.transform.rotation, vertices, faces, sharedVertices);

            Renderer        renderer = go.GetComponent <Renderer>();
            MaterialMapping mapping  = MaterialMapping.GetMaterialMappingFromMaterial(levelMaterials, renderer.sharedMaterial);

            if (mapping != null)
            {
                piece.materialName = mapping.materialName;
            }
            else
            {
                piece.materialName = Constants.ERROR_NO_MATERIAL;
            }

            levelPieces.Add(piece);
        }

        // Was for testing to see duplicated data
        if (isTesting)
        {
            StartCoroutine(spawnBack());
        }
    }
Example #2
0
 /// <summary>Adds an ArrayPacker to the packet.</summary>
 /// <param name="_value">The ArrayPacker to add.</param>
 public void Write(ArrayPacker _value)
 {
     Write(_value.length);
     foreach (int value in _value.array)
     {
         Write(value);
     }
 }