Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
 public static void WavesMesh(Packet _packet)
 {
     data = _packet.ReadMesh();
 }
Exemplo n.º 3
0
    // 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();    */
    }
Exemplo n.º 4
0
 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
 }