public void RenderModel(Model model)
        {
            this.model = model;
            vertexBuffer = new VertexBuffer(typeof(CustomVertex.PositionNormalColored), model.getVertices().Length,
                                        device, Usage.Dynamic | Usage.WriteOnly, CustomVertex.PositionNormalColored.Format, Pool.Default);
            vertexBuffer.SetData(model.getVertices(), 0, LockFlags.None);

            indexBuffer = new IndexBuffer(typeof(ushort), model.getIndices().Length, device, Usage.WriteOnly, Pool.Default);
            indexBuffer.SetData(model.getIndices(), 0, LockFlags.None);

            Render();
        }
Exemple #2
0
        private void openToolStripMenuItem_Click(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.Filter = "PSSG files|*.pssg|All files|*.*";
            dialog.Title = "Select a PSSG file";
            if (dialog.ShowDialog() == DialogResult.OK) {
                closeFile();
                StreamReader sr = new StreamReader(dialog.FileName);
                CPSSGFile f = new CPSSGFile(sr.BaseStream);
                pssgFile = f;
                treeView.Nodes.Add(createTreeViewNode(f.rootNode));

                listBoxModels.Items.Clear();
                Model[] models = new Model[f.findNodes("MATRIXPALETTEJOINTRENDERINSTANCE").Count];
                modelView1.renderDataSources = new Dictionary<string,RenderDataSource>();

                int i = 0;
                List<CNode> mpbnNodes = f.findNodes("MATRIXPALETTEBUNDLENODE");
                foreach (CNode mpbnNode in mpbnNodes) {
                    List<CNode> mpjnNodes = mpbnNode.findNodes("MATRIXPALETTEJOINTNODE");
                    foreach (CNode mpjnNode in mpjnNodes) {
                        Matrix transform = getTransform((byte[])mpjnNode.subNodes[0].data);
                        foreach (CNode mpjriNode in mpjnNode.findNodes("MATRIXPALETTEJOINTRENDERINSTANCE")) {
                            string rdsId = mpjriNode.attributes["indices"].value.Substring(1);
                            RenderDataSource renderDataSource;

                            if (!modelView1.renderDataSources.TryGetValue(rdsId, out renderDataSource)) {
                                CNode rdsNode = f.findNodes("RENDERDATASOURCE", "id", rdsId)[0];
                                CNode dbNode = f.findNodes("DATABLOCK", "id", rdsNode.subNodes[1].attributes["dataBlock"].value.Substring(1))[0];

                                renderDataSource = createRenderDataSourceFromNodes(rdsNode, dbNode);
                                modelView1.renderDataSources.Add(rdsNode.attributes["id"].value, renderDataSource);
                            }

                            models[i] = new Model(mpjnNode.attributes["id"].ToString() + mpjriNode.attributes["shader"].ToString(), renderDataSource, transform,
                                (int)mpjriNode.attributes["streamOffset"].data, (int)mpjriNode.attributes["elementCountFromOffset"].data,
                                (int)mpjriNode.attributes["indexOffset"].data, (int)mpjriNode.attributes["indicesCountFromOffset"].data);
                            listBoxModels.Items.Add(models[i]);
                            i++;
                        }
                    }
                }

                createTreeViewTexturesList(f.rootNode);
            } else {

            }
        }
Exemple #3
0
        public void RenderModel(Model model)
        {
            this.model = model;
            vertexBuffer = new VertexBuffer(typeof(CustomVertex.PositionNormalColored), model.vertices.Length,
                                        device, Usage.Dynamic | Usage.WriteOnly, CustomVertex.PositionNormalColored.Format, Pool.Default);
            vertexBuffer.SetData(model.vertices, 0, LockFlags.None);

            indexBuffer = new IndexBuffer(typeof(ushort), model.indices.Length, device, Usage.WriteOnly, Pool.Default);
            indexBuffer.SetData(model.indices, 0, LockFlags.None);

            device.Transform.Projection = Matrix.PerspectiveFovLH((float)Math.PI / 4, this.Width / this.Height, 1f, 50f);
            device.Transform.View = Matrix.LookAtLH(new Vector3(-3, 3, 3), new Vector3(0, 0, 0), new Vector3(0, 1, 0));
            device.RenderState.Lighting = true;
            device.Lights[0].Type = LightType.Directional;
            device.Lights[0].Diffuse = Color.White;
            device.Lights[0].Direction = new Vector3(3, -3, -3);
            device.Lights[0].Position = new Vector3(-3, 3, 3);
            device.Lights[0].Enabled = true;

            Render();
        }