public MeshSerializable.MeshSerializable GenerateMesh() { MeshSerializable.MeshSerializable data = new MeshSerializable.MeshSerializable(); data.vertices = new MeshSerializable.Vector3Serializable[Mesh.vertices.Length]; data.uv = new MeshSerializable.Vector2Serializable[Mesh.uv.Length]; data.triangles = new int[Mesh.triangles.Length]; int i = 0; foreach (Vector3 v in Mesh.vertices) { data.vertices[i] = new MeshSerializable.Vector3Serializable() { x = v.x, y = v.y, z = v.z }; i++; } i = 0; foreach (int x in Mesh.triangles) { data.triangles[i] = x; i++; } i = 0; foreach (Vector2 v in Mesh.uv) { data.uv[i] = new MeshSerializable.Vector2Serializable() { x = v.x, y = v.y }; i++; } return(data); }
public static void WavesMesh(Packet _packet) { data = _packet.ReadMesh(); }
// Update is called once per frame void Update() { while (ClientHandle.data == null) { return; } if (!initialized) { Debug.Log("Initialize waves"); MeshSerializable.MeshSerializable data = ClientHandle.data; Vector3[] vertices = new Vector3[data.uv.Length]; for (int i = 0; i < data.vertices.Length; i++) { vertices[i] = new Vector3(data.vertices[i].x, data.vertices[i].y, data.vertices[i].z); } Mesh.vertices = vertices; Mesh.triangles = data.triangles; Vector2[] uv = new Vector2[data.uv.Length]; for (int i = 0; i < data.uv.Length; i++) { uv[i] = new Vector2(data.uv[i].x, data.uv[i].y); } Mesh.uv = uv; Mesh.RecalculateNormals(); Mesh.RecalculateBounds(); initialized = true; return; } var verts = Mesh.vertices; for (int x = 0; x <= Dimension; x++) { for (int z = 0; z <= Dimension; z++) { var y = 0f; for (int o = 0; o < Octaves.Length; o++) { if (Octaves[o].alternate) { var perl = Mathf.PerlinNoise((x * Octaves[o].scale.x) / Dimension, (z * Octaves[o].scale.y) / Dimension) * Mathf.PI * 2f; y += Mathf.Cos(perl + Octaves[o].speed.magnitude * ClientHandle.time) * Octaves[o].height; } else { var perl = Mathf.PerlinNoise((x * Octaves[o].scale.x + ClientHandle.time * Octaves[o].speed.x) / Dimension, (z * Octaves[o].scale.y + ClientHandle.time * Octaves[o].speed.y) / Dimension) - 0.5f; y += perl * Octaves[o].height; } } verts[index(x, z)] = new Vector3(x, y, z); } } Mesh.vertices = verts; Mesh.RecalculateNormals(); /*MeshSerializable.MeshSerializable data = ClientHandle.data; * Mesh.triangles = data.triangles; * * Vector2[] uv = new Vector2[data.uv.Length]; * for (int i = 0; i < data.uv.Length; i++) * uv[i] = new Vector2(data.uv[i].x, data.uv[i].y); * Mesh.uv = uv; * * Vector3[] vertices = new Vector3[data.uv.Length]; * for (int i = 0; i < data.vertices.Length; i++) * vertices[i] = new Vector3(data.vertices[i].x, data.vertices[i].y, data.vertices[i].z); * Mesh.vertices = vertices; * * Mesh.RecalculateNormals(); */ }
public void Write(MeshSerializable.MeshSerializable _value) { byte[] data = ObjectToByteArray(_value); Write(data.Length); // Add the length of the string to the packet buffer.AddRange(data); // Add the string itself }