Exemplo n.º 1
0
 public void ReadRenderPassTriangles(int matIndex, GrnRenderPassTrianglesNode renderPassTriangles)
 {
     foreach (KeyValuePair <int, List <int> > rendPassTri in renderPassTriangles.TextureIndices)
     {
         this.Faces[rendPassTri.Key].TextureIndices = rendPassTri.Value;
         this.Faces[rendPassTri.Key].MaterialIndex  = (Int16)matIndex;
     }
 }
Exemplo n.º 2
0
        public void WriteRenderPass(GrnNode rendPassSecNode, int meshIndex)
        {
            Dictionary <int, List <int> > matFaceMap = new Dictionary <int, List <int> >();

            for (int i = 0; i < this.Faces.Count; ++i)
            {
                if (!matFaceMap.ContainsKey(this.Faces[i].MaterialIndex))
                {
                    matFaceMap.Add(this.Faces[i].MaterialIndex, new List <int>());
                }
                matFaceMap[this.Faces[i].MaterialIndex].Add(i);
            }
            foreach (KeyValuePair <int, List <int> > matFace in matFaceMap)
            {
                GrnRenderPassNode rendPassNode = new GrnRenderPassNode(rendPassSecNode);
                rendPassNode.FormMeshIndex = meshIndex;
                rendPassNode.MaterialIndex = matFace.Key + 1;
                rendPassSecNode.AppendChild(rendPassNode);

                GrnNode rpFieldSecNode = new GrnNode(rendPassNode, GrnNodeType.RenderPassFieldSection);
                rendPassNode.AppendChild(rpFieldSecNode);
                GrnNode rpFieldConstNode = new GrnNode(rpFieldSecNode, GrnNodeType.RenderPassFieldConstant);
                rpFieldConstNode.Data = new byte[] { 0x00, 0x00, 0x80, 0x3F,
                                                     0x00, 0x00, 0x80, 0x3F,
                                                     0x00, 0x00, 0x80, 0x3F };
                rpFieldSecNode.AppendChild(rpFieldConstNode);
                GrnNode rpFieldAssNode = new GrnNode(rpFieldSecNode, GrnNodeType.RenderPassFieldAssignment);
                rpFieldAssNode.Data = new byte[] { 0x00, 0x00, 0x00, 0x00 };
                rpFieldSecNode.AppendChild(rpFieldAssNode);

                GrnRenderPassTrianglesNode rpTriNode = new GrnRenderPassTrianglesNode(rendPassNode);
                foreach (int faceIndex in matFace.Value)
                {
                    rpTriNode.TextureIndices.Add(faceIndex, this.Faces[faceIndex].TextureIndices);
                }
                rendPassNode.AppendChild(rpTriNode);
            }
        }