Example #1
0
        /// <summary>
        /// Adds new attribute data to the mesh object
        /// Note: must call StartMeshObject first
        /// </summary>
        /// <param name="attribute"></param>
        /// <param name="inputValues"></param>
        public void AddAttributeToMeshObject(UltimateVertexAttribute attribute, SSBHVertexAttribute[] inputValues)
        {
            if (currentMesh == null)
            {
                return;
            }

            int size = GetAttributeSize(attribute);

            float[] values = new float[inputValues.Length * size];
            for (int i = 0; i < inputValues.Length; i++)
            {
                if (size > 0)
                {
                    values[i * size + 0] = inputValues[i].X;
                }
                if (size > 1)
                {
                    values[i * size + 1] = inputValues[i].Y;
                }
                if (size > 2)
                {
                    values[i * size + 2] = inputValues[i].Z;
                }
                if (size > 3)
                {
                    values[i * size + 3] = inputValues[i].W;
                }
            }

            currentMesh.VertexData.Add(attribute, values);
        }
Example #2
0
        /// <summary>
        /// Adds new attribute data to the mesh object
        /// Note: must call <see cref="StartMeshObject(string, uint[], SsbhVertexAttribute[], string, bool)"/> first.
        /// </summary>
        /// <param name="attribute"></param>
        /// <param name="inputValues"></param>
        public void AddAttributeToMeshObject(UltimateVertexAttribute attribute, SsbhVertexAttribute[] inputValues)
        {
            // TODO: Why must StartMeshObject be called?
            if (currentMesh == null)
            {
                return;
            }

            int componentCount = attribute.ComponentCount;

            float[] values = new float[inputValues.Length * componentCount];
            for (int i = 0; i < inputValues.Length; i++)
            {
                // TODO: Add brackets operator to SsbhVertexAttribute.
                // Ex: attribute[0] == attribute.X
                if (componentCount > 0)
                {
                    values[i * componentCount + 0] = inputValues[i].X;
                }
                if (componentCount > 1)
                {
                    values[i * componentCount + 1] = inputValues[i].Y;
                }
                if (componentCount > 2)
                {
                    values[i * componentCount + 2] = inputValues[i].Z;
                }
                if (componentCount > 3)
                {
                    values[i * componentCount + 3] = inputValues[i].W;
                }
            }

            currentMesh.VertexData.Add(attribute, values);
        }
Example #3
0
        private int GetAttributeDataType(UltimateVertexAttribute attribute)
        {
            // TODO: Use enum?
            switch (attribute)
            {
            case UltimateVertexAttribute.Position0:
                return(0);

            case UltimateVertexAttribute.Normal0:
            case UltimateVertexAttribute.Tangent0:
                return(5);

            case UltimateVertexAttribute.map1:
            case UltimateVertexAttribute.uvSet:
            case UltimateVertexAttribute.uvSet1:
            case UltimateVertexAttribute.uvSet2:
            case UltimateVertexAttribute.bake1:
                return(8);

            case UltimateVertexAttribute.colorSet1:
            case UltimateVertexAttribute.colorSet2:
            case UltimateVertexAttribute.colorSet2_1:
            case UltimateVertexAttribute.colorSet2_2:
            case UltimateVertexAttribute.colorSet2_3:
            case UltimateVertexAttribute.colorSet3:
            case UltimateVertexAttribute.colorSet4:
            case UltimateVertexAttribute.colorSet5:
            case UltimateVertexAttribute.colorSet6:
            case UltimateVertexAttribute.colorSet7:
                return(2);

            default:
                return(-1);
            }
        }
Example #4
0
        private static int GetAttributeDataType(UltimateVertexAttribute attribute)
        {
            // TODO: Use enum?
            switch (attribute)
            {
            case UltimateVertexAttribute.Position0:
                return(0);

            case UltimateVertexAttribute.Normal0:
            case UltimateVertexAttribute.Tangent0:
                return(5);

            case UltimateVertexAttribute.Map1:
            case UltimateVertexAttribute.UvSet:
            case UltimateVertexAttribute.UvSet1:
            case UltimateVertexAttribute.UvSet2:
            case UltimateVertexAttribute.Bake1:
                return(8);

            case UltimateVertexAttribute.ColorSet1:
            case UltimateVertexAttribute.ColorSet2:
            case UltimateVertexAttribute.ColorSet21:
            case UltimateVertexAttribute.ColorSet22:
            case UltimateVertexAttribute.ColorSet23:
            case UltimateVertexAttribute.ColorSet3:
            case UltimateVertexAttribute.ColorSet4:
            case UltimateVertexAttribute.ColorSet5:
            case UltimateVertexAttribute.ColorSet6:
            case UltimateVertexAttribute.ColorSet7:
                return(2);

            default:
                return(-1);
            }
        }
Example #5
0
        private string GetAttributeName(UltimateVertexAttribute attribute)
        {
            switch (attribute)
            {
            case UltimateVertexAttribute.Tangent0:
                return("map1");

            default:
                return(attribute.ToString());
            }
        }
Example #6
0
 public void EnableAttributes(MeshObject meshObject)
 {
     foreach (var attr in meshObject.Attributes)
     {
         foreach (var atstring in attr.AttributeStrings)
         {
             UltimateVertexAttribute at = UltimateVertexAttribute.GetAttributeFromName(atstring.Text);
             EnableAttribute(at);
         }
     }
 }
Example #7
0
        private int GetBufferIndex(UltimateVertexAttribute attribute)
        {
            switch (attribute)
            {
            case UltimateVertexAttribute.Position0:
            case UltimateVertexAttribute.Normal0:
            case UltimateVertexAttribute.Tangent0:
                return(0);

            default:
                return(1);
            }
        }
Example #8
0
        public void EnableAttribute(UltimateVertexAttribute attr)
        {
            switch (attr)
            {
            case UltimateVertexAttribute.Position0: ExportPosition = true; break;

            case UltimateVertexAttribute.Normal0: ExportNormal = true; break;

            case UltimateVertexAttribute.Tangent0: ExportTangent = true; break;

            case UltimateVertexAttribute.uvSet: ExportUVSet1 = true; break;

            case UltimateVertexAttribute.uvSet1: ExportUVSet2 = true; break;

            case UltimateVertexAttribute.uvSet2: ExportUVSet3 = true; break;

            case UltimateVertexAttribute.map1: ExportMap1 = true; break;

            case UltimateVertexAttribute.colorSet1: ExportColorSet1 = true; break;

            case UltimateVertexAttribute.colorSet2: ExportColorSet2 = true; break;

            case UltimateVertexAttribute.colorSet2_1: ExportColorSet21 = true; break;

            case UltimateVertexAttribute.colorSet2_2: ExportColorSet22 = true; break;

            case UltimateVertexAttribute.colorSet2_3: ExportColorSet23 = true; break;

            case UltimateVertexAttribute.colorSet3: ExportColorSet3 = true; break;

            case UltimateVertexAttribute.colorSet4: ExportColorSet4 = true; break;

            case UltimateVertexAttribute.colorSet5: ExportColorSet5 = true; break;

            case UltimateVertexAttribute.colorSet6: ExportColorSet6 = true; break;

            case UltimateVertexAttribute.colorSet7: ExportColorSet7 = true; break;

            default:
                ExtraExportAttributes.Add(attr);
                break;
            }
        }
Example #9
0
        private int GetAttributeDataSize(UltimateVertexAttribute attribute)
        {
            // TODO: Use enum?
            switch (GetAttributeDataType(attribute))
            {
            case 0:
                return(4);

            case 2:
                return(1);

            case 5:
                return(2);

            case 8:
                return(2);

            default:
                return(1);
            }
        }
Example #10
0
        public static int GetAttributeSize(UltimateVertexAttribute attribute)
        {
            switch (attribute)
            {
            case UltimateVertexAttribute.Position0:
                return(3);

            case UltimateVertexAttribute.Normal0:
                return(4);

            case UltimateVertexAttribute.Tangent0:
                return(4);

            case UltimateVertexAttribute.map1:
            case UltimateVertexAttribute.uvSet:
            case UltimateVertexAttribute.uvSet1:
            case UltimateVertexAttribute.uvSet2:
            case UltimateVertexAttribute.bake1:
                return(2);

            case UltimateVertexAttribute.colorSet1:
            case UltimateVertexAttribute.colorSet2:
            case UltimateVertexAttribute.colorSet2_1:
            case UltimateVertexAttribute.colorSet2_2:
            case UltimateVertexAttribute.colorSet2_3:
            case UltimateVertexAttribute.colorSet3:
            case UltimateVertexAttribute.colorSet4:
            case UltimateVertexAttribute.colorSet5:
            case UltimateVertexAttribute.colorSet6:
            case UltimateVertexAttribute.colorSet7:
                return(4);

            default:
                return(3);
            }
        }
Example #11
0
        private static int GetAttributeIndex(UltimateVertexAttribute attribute)
        {
            switch (attribute)
            {
            case UltimateVertexAttribute.Position0:
                return(0);

            case UltimateVertexAttribute.Normal0:
                return(1);

            case UltimateVertexAttribute.Tangent0:
                return(3);

            case UltimateVertexAttribute.Map1:
            case UltimateVertexAttribute.UvSet:
            case UltimateVertexAttribute.UvSet1:
            case UltimateVertexAttribute.UvSet2:
            case UltimateVertexAttribute.Bake1:
                return(4);

            case UltimateVertexAttribute.ColorSet1:
            case UltimateVertexAttribute.ColorSet2:
            case UltimateVertexAttribute.ColorSet21:
            case UltimateVertexAttribute.ColorSet22:
            case UltimateVertexAttribute.ColorSet23:
            case UltimateVertexAttribute.ColorSet3:
            case UltimateVertexAttribute.ColorSet4:
            case UltimateVertexAttribute.ColorSet5:
            case UltimateVertexAttribute.ColorSet6:
            case UltimateVertexAttribute.ColorSet7:
                return(5);

            default:
                return(-1);
            }
        }
Example #12
0
        private int GetAttributeIndex(UltimateVertexAttribute attribute)
        {
            switch (attribute)
            {
            case UltimateVertexAttribute.Position0:
                return(0);

            case UltimateVertexAttribute.Normal0:
                return(1);

            case UltimateVertexAttribute.Tangent0:
                return(3);

            case UltimateVertexAttribute.map1:
            case UltimateVertexAttribute.uvSet:
            case UltimateVertexAttribute.uvSet1:
            case UltimateVertexAttribute.uvSet2:
            case UltimateVertexAttribute.bake1:
                return(4);

            case UltimateVertexAttribute.colorSet1:
            case UltimateVertexAttribute.colorSet2:
            case UltimateVertexAttribute.colorSet2_1:
            case UltimateVertexAttribute.colorSet2_2:
            case UltimateVertexAttribute.colorSet2_3:
            case UltimateVertexAttribute.colorSet3:
            case UltimateVertexAttribute.colorSet4:
            case UltimateVertexAttribute.colorSet5:
            case UltimateVertexAttribute.colorSet6:
            case UltimateVertexAttribute.colorSet7:
                return(5);

            default:
                return(-1);
            }
        }
Example #13
0
 public void EnableAttribute(UltimateVertexAttribute attr)
 {
     if (attr == UltimateVertexAttribute.Position0)
     {
         ExportPosition = true;
     }
     else if (attr == UltimateVertexAttribute.Normal0)
     {
         ExportNormal = true;
     }
     else if (attr == UltimateVertexAttribute.Tangent0)
     {
         ExportTangent = true;
     }
     else if (attr == UltimateVertexAttribute.UvSet)
     {
         ExportUVSet1 = true;
     }
     else if (attr == UltimateVertexAttribute.UvSet1)
     {
         ExportUVSet2 = true;
     }
     else if (attr == UltimateVertexAttribute.UvSet2)
     {
         ExportUVSet3 = true;
     }
     else if (attr == UltimateVertexAttribute.Map1)
     {
         ExportMap1 = true;
     }
     else if (attr == UltimateVertexAttribute.Bake1)
     {
         ExportBake1 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet1)
     {
         ExportColorSet1 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet2)
     {
         ExportColorSet2 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet21)
     {
         ExportColorSet21 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet22)
     {
         ExportColorSet22 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet23)
     {
         ExportColorSet23 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet3)
     {
         ExportColorSet3 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet4)
     {
         ExportColorSet4 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet5)
     {
         ExportColorSet5 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet6)
     {
         ExportColorSet6 = true;
     }
     else if (attr == UltimateVertexAttribute.ColorSet7)
     {
         ExportColorSet7 = true;
     }
     else
     {
         ExtraExportAttributes.Add(attr);
     }
 }
Example #14
0
 public void ColorSet6()
 {
     Assert.AreSame(UltimateVertexAttribute.ColorSet6, UltimateVertexAttribute.GetAttributeFromName("colorSet6"));
 }
Example #15
0
 public void Position0()
 {
     Assert.AreSame(UltimateVertexAttribute.Position0, UltimateVertexAttribute.GetAttributeFromName("Position0"));
 }
Example #16
0
 public void UvSet2()
 {
     Assert.AreSame(UltimateVertexAttribute.UvSet2, UltimateVertexAttribute.GetAttributeFromName("uvSet2"));
 }
Example #17
0
 public void Map1()
 {
     Assert.AreSame(UltimateVertexAttribute.Map1, UltimateVertexAttribute.GetAttributeFromName("map1"));
 }
Example #18
0
 public void Tangent0()
 {
     Assert.AreSame(UltimateVertexAttribute.Tangent0, UltimateVertexAttribute.GetAttributeFromName("Tangent0"));
 }
Example #19
0
 public void Normal0()
 {
     Assert.AreSame(UltimateVertexAttribute.Normal0, UltimateVertexAttribute.GetAttributeFromName("Normal0"));
 }
Example #20
0
 public void InvalidName()
 {
     var e = Assert.ThrowsException <NotImplementedException>(() => UltimateVertexAttribute.GetAttributeFromName("position0"));
 }
Example #21
0
 public void EmptyName()
 {
     var e = Assert.ThrowsException <NotImplementedException>(() => UltimateVertexAttribute.GetAttributeFromName(""));
 }