/// <summary>
 /// Constructs the model mesh.
 /// </summary>
 /// <param name="_name">The name of it.</param>
 public ModelMesh(string _name)
 {
     Name = _name.ToLowerFast();
     if (Name.EndsWith(".001"))
     {
         Name = Name.Substring(0, Name.Length - ".001".Length);
     }
     Faces = new List <ModelFace>();
     vbo   = new VBO();
 }
Example #2
0
 /// <summary>
 /// Generates a line.
 /// </summary>
 void GenerateLineVBO()
 {
     Vector3[] vecs  = new Vector3[2];
     uint[]    inds  = new uint[2];
     Vector3[] norms = new Vector3[2];
     Vector3[] texs  = new Vector3[2];
     Vector4[] cols  = new Vector4[2];
     Vector3[] tangs = new Vector3[2];
     for (uint u = 0; u < 2; u++)
     {
         inds[u]  = u;
         tangs[u] = new Vector3(1f, 0f, 0f);
     }
     for (int n = 0; n < 2; n++)
     {
         norms[n] = new Vector3(0, 0, 1);
     }
     for (int c = 0; c < 2; c++)
     {
         cols[c] = new Vector4(1, 1, 1, 1);
     }
     Vector4[] BoneIDs      = new Vector4[2];
     Vector4[] BoneWeights  = new Vector4[2];
     Vector4[] BoneIDs2     = new Vector4[2];
     Vector4[] BoneWeights2 = new Vector4[2];
     for (int n = 0; n < 2; n++)
     {
         BoneIDs[n]      = new Vector4(0, 0, 0, 0);
         BoneWeights[n]  = new Vector4(0, 0, 0, 0);
         BoneIDs2[n]     = new Vector4(0, 0, 0, 0);
         BoneWeights2[n] = new Vector4(0, 0, 0, 0);
     }
     vecs[0] = new Vector3(0, 0, 0);
     texs[0] = new Vector3(0, 0, 0);
     vecs[1] = new Vector3(1, 0, 0);
     texs[1] = new Vector3(1, 0, 0);
     Line    = new VBO()
     {
         Vertices     = vecs.ToList(),
         Indices      = inds.ToList(),
         Normals      = norms.ToList(),
         Tangents     = tangs.ToList(),
         TexCoords    = texs.ToList(),
         Colors       = cols.ToList(),
         BoneIDs      = BoneIDs.ToList(),
         BoneWeights  = BoneWeights.ToList(),
         BoneIDs2     = BoneIDs2.ToList(),
         BoneWeights2 = BoneWeights2.ToList()
     };
     Line.GenerateVBO();
 }
Example #3
0
 /// <summary>
 /// Generates a square.
 /// </summary>
 void GenerateSquareVBO()
 {
     Vector3[] vecs         = new Vector3[6];
     uint[]    inds         = new uint[6];
     Vector3[] norms        = new Vector3[6];
     Vector3[] texs         = new Vector3[6];
     Vector4[] cols         = new Vector4[6];
     Vector4[] BoneIDs      = new Vector4[6];
     Vector4[] BoneWeights  = new Vector4[6];
     Vector4[] BoneIDs2     = new Vector4[6];
     Vector4[] BoneWeights2 = new Vector4[6];
     Vector3[] tangs        = new Vector3[6];
     for (uint n = 0; n < 6; n++)
     {
         inds[n]         = n;
         tangs[n]        = new Vector3(1, 0, 0);
         norms[n]        = new Vector3(0, 0, 1);
         cols[n]         = new Vector4(1, 1, 1, 1);
         BoneIDs[n]      = new Vector4(0, 0, 0, 0);
         BoneWeights[n]  = new Vector4(0, 0, 0, 0);
         BoneIDs2[n]     = new Vector4(0, 0, 0, 0);
         BoneWeights2[n] = new Vector4(0, 0, 0, 0);
     }
     vecs[0] = new Vector3(1, 0, 0);
     texs[0] = new Vector3(1, 0, 0);
     vecs[1] = new Vector3(1, 1, 0);
     texs[1] = new Vector3(1, 1, 0);
     vecs[2] = new Vector3(0, 1, 0);
     texs[2] = new Vector3(0, 1, 0);
     vecs[3] = new Vector3(1, 0, 0);
     texs[3] = new Vector3(1, 0, 0);
     vecs[4] = new Vector3(0, 1, 0);
     texs[4] = new Vector3(0, 1, 0);
     vecs[5] = new Vector3(0, 0, 0);
     texs[5] = new Vector3(0, 0, 0);
     Square  = new VBO()
     {
         Vertices     = vecs.ToList(),
         Indices      = inds.ToList(),
         Normals      = norms.ToList(),
         Tangents     = tangs.ToList(),
         TexCoords    = texs.ToList(),
         Colors       = cols.ToList(),
         BoneIDs      = BoneIDs.ToList(),
         BoneWeights  = BoneWeights.ToList(),
         BoneIDs2     = BoneIDs2.ToList(),
         BoneWeights2 = BoneWeights2.ToList()
     };
     Square.GenerateVBO();
 }
Example #4
0
 void GenerateSquareOfLinesVBO()
 {
     Vector3[] vecs = new Vector3[5];
     uint[]    inds = new uint[5];
     Vector3[] texs = new Vector3[5];
     Vector4[] cols = new Vector4[5];
     Vector3[] nrms = new Vector3[5];
     for (uint u = 0; u < 5; u++)
     {
         inds[u] = u;
     }
     for (int c = 0; c < 5; c++)
     {
         cols[c] = new Vector4(1, 1, 1, 1);
         nrms[c] = new Vector3(0, 0, 1);
     }
     vecs[0]       = new Vector3(1, 0, 0);
     texs[0]       = new Vector3(1, 0, 0);
     vecs[1]       = new Vector3(1, 1, 0);
     texs[1]       = new Vector3(1, 1, 0);
     vecs[2]       = new Vector3(0, 1, 0);
     texs[2]       = new Vector3(0, 1, 0);
     vecs[3]       = new Vector3(0, 0, 0);
     texs[3]       = new Vector3(0, 0, 0);
     vecs[4]       = new Vector3(1, 0, 0);
     texs[4]       = new Vector3(1, 0, 0);
     SquareOfLines = new VBO()
     {
         Vertices  = vecs.ToList(),
         Indices   = inds.ToList(),
         TexCoords = texs.ToList(),
         Colors    = cols.ToList(),
         Normals   = nrms.ToList()
     };
     SquareOfLines.GenerateVBO();
 }
Example #5
0
        /// <summary>
        /// Generates a box.
        /// </summary>
        void GenerateBoxVBO()
        {
            // TODO: Optimize?
            Vector3[] vecs  = new Vector3[24];
            uint[]    inds  = new uint[24];
            Vector3[] norms = new Vector3[24];
            Vector3[] texs  = new Vector3[24];
            Vector4[] cols  = new Vector4[24];
            Vector3[] tangs = new Vector3[24];
            for (uint u = 0; u < 24; u++)
            {
                inds[u]  = u;
                tangs[u] = new Vector3(1f, 0f, 0f);
            }
            for (int t = 0; t < 24; t++)
            {
                texs[t] = new Vector3(0, 0, 0);
            }
            for (int n = 0; n < 24; n++)
            {
                norms[n] = new Vector3(0, 0, 1); // TODO: Accurate normals somehow? Do lines even have normals?
            }
            for (int c = 0; c < 24; c++)
            {
                cols[c] = new Vector4(1, 1, 1, 1);
            }
            Vector4[] BoneIDs      = new Vector4[24];
            Vector4[] BoneWeights  = new Vector4[24];
            Vector4[] BoneIDs2     = new Vector4[24];
            Vector4[] BoneWeights2 = new Vector4[24];
            for (int n = 0; n < 24; n++)
            {
                BoneIDs[n]      = new Vector4(0, 0, 0, 0);
                BoneWeights[n]  = new Vector4(0, 0, 0, 0);
                BoneIDs2[n]     = new Vector4(0, 0, 0, 0);
                BoneWeights2[n] = new Vector4(0, 0, 0, 0);
            }
            int i    = 0;
            int zero = -1; // Ssh.

            vecs[i] = new Vector3(zero, zero, zero); i++;
            vecs[i] = new Vector3(1, zero, zero); i++;
            vecs[i] = new Vector3(1, zero, zero); i++;
            vecs[i] = new Vector3(1, 1, zero); i++;
            vecs[i] = new Vector3(1, 1, zero); i++;
            vecs[i] = new Vector3(zero, 1, zero); i++;
            vecs[i] = new Vector3(zero, 1, zero); i++;
            vecs[i] = new Vector3(zero, zero, zero); i++;
            vecs[i] = new Vector3(zero, zero, 1); i++;
            vecs[i] = new Vector3(1, zero, 1); i++;
            vecs[i] = new Vector3(1, zero, 1); i++;
            vecs[i] = new Vector3(1, 1, 1); i++;
            vecs[i] = new Vector3(1, 1, 1); i++;
            vecs[i] = new Vector3(zero, 1, 1); i++;
            vecs[i] = new Vector3(zero, 1, 1); i++;
            vecs[i] = new Vector3(zero, zero, 1); i++;
            vecs[i] = new Vector3(zero, zero, zero); i++;
            vecs[i] = new Vector3(zero, zero, 1); i++;
            vecs[i] = new Vector3(1, zero, zero); i++;
            vecs[i] = new Vector3(1, zero, 1); i++;
            vecs[i] = new Vector3(1, 1, zero); i++;
            vecs[i] = new Vector3(1, 1, 1); i++;
            vecs[i] = new Vector3(zero, 1, zero); i++;
            vecs[i] = new Vector3(zero, 1, 1); i++;
            Box     = new VBO()
            {
                Vertices     = vecs.ToList(),
                Indices      = inds.ToList(),
                Normals      = norms.ToList(),
                Tangents     = tangs.ToList(),
                TexCoords    = texs.ToList(),
                Colors       = cols.ToList(),
                BoneIDs      = BoneIDs.ToList(),
                BoneWeights  = BoneWeights.ToList(),
                BoneIDs2     = BoneIDs2.ToList(),
                BoneWeights2 = BoneWeights2.ToList()
            };
            Box.GenerateVBO();
        }