Пример #1
0
        public void ReadRawFloat(byte[] bytes)
        {
            int res = (int)Mathf.Sqrt(bytes.Length / 4);

            if (arr_x.Length != res)
            {
                arr_x = new float[res];
            }
            if (arr_X.Length != res)
            {
                arr_X = new float[res];
            }
            if (arr_z.Length != res)
            {
                arr_z = new float[res];
            }
            if (arr_Z.Length != res)
            {
                arr_Z = new float[res];
            }

            Matrix.FloatToBytes converter = new Matrix.FloatToBytes();

            for (int x = 0; x < res; x++)
            {
                int pos = x * 4;
                converter.b0 = bytes[pos];
                converter.b1 = bytes[pos + 1];
                converter.b2 = bytes[pos + 2];
                converter.b3 = bytes[pos + 3];
                arr_x[x]     = converter.f * 2;                   //texture requires halved value for some reason

                pos          = (x + res * (res - 1)) * 4;
                converter.b0 = bytes[pos];
                converter.b1 = bytes[pos + 1];
                converter.b2 = bytes[pos + 2];
                converter.b3 = bytes[pos + 3];
                arr_X[x]     = converter.f * 2;
            }

            for (int z = 0; z < res; z++)
            {
                int pos = z * res * 4;
                converter.b0 = bytes[pos];
                converter.b1 = bytes[pos + 1];
                converter.b2 = bytes[pos + 2];
                converter.b3 = bytes[pos + 3];
                arr_z[z]     = converter.f * 2;

                pos          = (z * res + res - 1) * 4;
                converter.b0 = bytes[pos];
                converter.b1 = bytes[pos + 1];
                converter.b2 = bytes[pos + 2];
                converter.b3 = bytes[pos + 3];
                arr_Z[z]     = converter.f * 2;
            }
        }
Пример #2
0
        public void WriteRawFloat(byte[] bytes)
        {
            int res = (int)Mathf.Sqrt(bytes.Length / 4);

            Matrix.FloatToBytes converter = new Matrix.FloatToBytes();

            for (int x = 0; x < res; x++)
            {
                converter.f = arr_x[x] / 2;                       //texture requires halved value for some reason
                int pos = x * 4;
                bytes[pos]     = converter.b0;
                bytes[pos + 1] = converter.b1;
                bytes[pos + 2] = converter.b2;
                bytes[pos + 3] = converter.b3;

                converter.f    = arr_X[x] / 2;
                pos            = (x + res * (res - 1)) * 4;
                bytes[pos]     = converter.b0;
                bytes[pos + 1] = converter.b1;
                bytes[pos + 2] = converter.b2;
                bytes[pos + 3] = converter.b3;
            }

            for (int z = 0; z < res; z++)
            {
                converter.f = arr_z[z] / 2;
                int pos = z * res * 4;
                bytes[pos]     = converter.b0;
                bytes[pos + 1] = converter.b1;
                bytes[pos + 2] = converter.b2;
                bytes[pos + 3] = converter.b3;

                converter.f    = arr_Z[z] / 2;
                pos            = (z * res + res - 1) * 4;
                bytes[pos]     = converter.b0;
                bytes[pos + 1] = converter.b1;
                bytes[pos + 2] = converter.b2;
                bytes[pos + 3] = converter.b3;
            }
        }