Example #1
0
        //
        //ORIGINAL LINE: MeshPtr realizeMesh(const string& name ="")
        public MeshPtr realizeMesh(string name)
        {
            //Mogre.SceneManager smgr = Root.Singleton.GetSceneManagerIterator().Current;
            Mogre.SceneManagerEnumerator.SceneManagerIterator item = Root.Singleton.GetSceneManagerIterator();
            item.MoveNext();
            Mogre.SceneManager smgr = item.Current;
            item.Dispose();
            ManualObject manual = smgr.CreateManualObject(name);

            //for (List<Shape>.Enumerator it = mShapes.GetEnumerator(); it.MoveNext(); ++it)
            foreach (var it in mShapes)
            {
                manual.Begin("BaseWhiteNoLighting", RenderOperation.OperationTypes.OT_LINE_STRIP);
                it._appendToManualObject(manual);
                manual.End();
            }

            MeshPtr mesh = null;// MeshManager.Singleton.CreateManual(Guid.NewGuid().ToString("N"), "General"); //new MeshPtr();

            if (name == "")
            {
                mesh = manual.ConvertToMesh(Utils.getName("mutishape_procedural_"));
            }
            else
            {
                mesh = manual.ConvertToMesh(name);
            }
            smgr.DestroyManualObject(manual);
            return(mesh);
        }
Example #2
0
        public MeshPtr LoadStaticBrfMeshIntoOgre(SceneManager sceneManager, MBBrfMesh brfMesh, int frame = 0)
        {
            //Convert Vertex and Faces to Ogre Mesh Format
            if (brfMesh == null)
            {
                return(null);
            }
            if (meshes.ContainsKey(brfMesh.Name))
            {
                return(meshes[brfMesh.Name]);
            }
            ManualObject mo = sceneManager.CreateManualObject(brfMesh.Name + "-" + Guid.NewGuid().ToString());

            mo.Begin(brfMesh.Material);

            int np = 0, nv = 0;

            for (int i = 0; i < brfMesh.Frames[frame].pos.Count; i++)
            {
                mo.Position(
                    brfMesh.Frames[frame].pos[i].x,
                    brfMesh.Frames[frame].pos[i].y,
                    brfMesh.Frames[frame].pos[i].z
                    );
                np++;
            }

            for (int i = 0; i < brfMesh.Frames[frame].norm.Count; i++)
            {
                mo.Normal(
                    -brfMesh.Frames[frame].norm[i].x,
                    brfMesh.Frames[frame].norm[i].y,
                    brfMesh.Frames[frame].norm[i].z
                    );
                mo.TextureCoord(
                    brfMesh.Vertex[i].ta.X,
                    brfMesh.Vertex[i].ta.Y
                    );
                nv++;
            }

            for (int i = 0; i < brfMesh.Faces.Count; i++)
            {
                for (int j = 0; j < 3; j++)
                {
                    mo.Triangle(
                        (uint)(brfMesh.Vertex[brfMesh.Faces[i].index[j]].index + 1 + cp),
                        (uint)(brfMesh.Faces[i].index[j] + 1 + cv),
                        (uint)(brfMesh.Faces[i].index[j] + 1 + cv)
                        );
                }
            }

            mo.End();

            cp += np;
            cv += nv;

            return(mo.ConvertToMesh(brfMesh.Name + "-" + Guid.NewGuid().ToString()));
        }
Example #3
0
        public MeshPtr getCube(string cubeName)
        {
            manualObj = mSceneMgr.CreateManualObject("maualObjQuad");
            manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list

            // ---- Vertex Buffer ----
            manualObj.Position(new Vector3(-1000, 0, 1000));        // --- Vertex 0 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Position(new Vector3(1000, 0, 1000));         // --- Vertex 1 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Position(new Vector3(1000, 0, -1000));        // --- Vertex 2 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Position(new Vector3(-1000, 0, -1000 0));     // --- Vertex 3 ---
            manualObj.TextureCoord(new Vector2(1, 1));

            // ---- Index Buffer ----
            // --- Triangle 0 ---
            manualObj.Index(0);
            manualObj.Index(1);
            manualObj.Index(2);

            // --- Triangle 1 ---
            manualObj.Index(1);
            manualObj.Index(3);
            manualObj.Index(2);


            manualObj.End();                                    // Closes the manual objet

            return(manualObj.ConvertToMesh("Floor"));           // Prepares the data to be sent to the GPU
        }
Example #4
0
        /// <summary>
        /// This private method defines the vertex and index buffers of a quad as a triangle list.
        /// </summary>
        private MeshPtr Quad()
        {
            manualObj = mSceneMgr.CreateManualObject("maualObjQuad");
            manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);    // Starts filling the manual object as a triangle list

            // ---- Vertex Buffer ----
            manualObj.Position(new Vector3(5, 5, 0));               // --- Vertex 0 ---
            manualObj.Position(new Vector3(-5, 5, 0));              // --- Vertex 1 ---
            manualObj.Position(new Vector3(5, -5, 0));              // --- Vertex 2 ---
            manualObj.Position(new Vector3(-5, -5, 0));             // --- Vertex 3 ---

            // ---- Index Buffer ----
            // --- Triangle 0 ---
            manualObj.Index(0);
            manualObj.Index(1);
            manualObj.Index(2);

            // --- Triangle 1 ---
            manualObj.Index(1);
            manualObj.Index(3);
            manualObj.Index(2);

            manualObj.End();                                        // Closes the manual objet

            return(manualObj.ConvertToMesh("Quad"));                // Prepares the data to be sent to the GPU
        }
Example #5
0
        void CreateGrassMesh()
        {
            const float  width  = 25;
            const float  height = 30;
            Vector3      vec    = new Vector3(width / 2, 0, 0);
            ManualObject obj    = _sceneManager.CreateManualObject("GrassObject");

            Quaternion quat = new Quaternion(new Degree(60), Vector3.UNIT_Y);

            obj.Begin("Examples/GrassBlades", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            for (uint i = 0; i < 3; ++i)
            {
                obj.Position(-vec.x, height, -vec.z);
                obj.TextureCoord(0, 0);
                obj.Position(vec.x, height, vec.z);
                obj.TextureCoord(1, 0);
                obj.Position(-vec.x, 0, -vec.z);
                obj.TextureCoord(0, 1);
                obj.Position(vec.x, 0, vec.z);
                obj.TextureCoord(1, 1);

                uint offset = 4 * i;
                obj.Triangle(offset, offset + 3, offset + 1);
                obj.Triangle(offset, offset + 2, offset + 3);

                vec = quat * vec;
            }

            obj.End();
            obj.ConvertToMesh("grass");
            _sceneManager.DestroyManualObject(obj);
        }
Example #6
0
        private void createSphere(string strName, float r, SceneManager sceneMgr, int nRings = 16, int nSegments = 16)
        {
            ManualObject manual = sceneMgr.CreateManualObject(strName);

            manual.Begin("BaseWhiteNoLighting", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            float  fDeltaRingAngle = (Mogre.Math.PI / nRings);
            float  fDeltaSegAngle  = (2 * Mogre.Math.PI / nSegments);
            ushort wVerticeIndex   = 0;

            // Generate the group of rings for the sphere
            for (int ring = 0; ring <= nRings; ring++)
            {
                float r0 = r * Mogre.Math.Sin(ring * fDeltaRingAngle);
                float y0 = r * Mogre.Math.Cos(ring * fDeltaRingAngle);

                // Generate the group of segments for the current ring
                for (int seg = 0; seg <= nSegments; seg++)
                {
                    float x0 = r0 * Mogre.Math.Sin(seg * fDeltaSegAngle);
                    float z0 = r0 * Mogre.Math.Cos(seg * fDeltaSegAngle);

                    // Add one vertex to the strip which makes up the sphere
                    manual.Position(x0, y0, z0);
                    manual.Normal(new Mogre.Vector3(x0, y0, z0).NormalisedCopy);
                    manual.TextureCoord((float)seg / (float)nSegments, (float)ring / (float)nRings);

                    if (ring != nRings)
                    {
                        // each vertex (except the last) has six indicies pointing to it
                        manual.Index((uint)(wVerticeIndex + nSegments + 1));
                        manual.Index(wVerticeIndex);
                        manual.Index((uint)(wVerticeIndex + nSegments));
                        manual.Index((uint)(wVerticeIndex + nSegments + 1));
                        manual.Index((uint)(wVerticeIndex + 1));
                        manual.Index(wVerticeIndex);
                        wVerticeIndex++;
                    }
                }
                ;  // end for seg
            } // end for ring
            manual.End();
            MeshPtr mesh = manual.ConvertToMesh(strName);

            mesh._setBounds(new AxisAlignedBox(new Mogre.Vector3(-r, -r, -r), new Mogre.Vector3(r, r, r)), false);

            mesh._setBoundingSphereRadius(r);
            ushort src, dest;

            if (!mesh.SuggestTangentVectorBuildParams(VertexElementSemantic.VES_TANGENT, out src, out dest))
            {
                mesh.BuildTangentVectors(VertexElementSemantic.VES_TANGENT, src, dest);
            }
        }
        public MeshPtr buildMesh(string name, string group)
        {
            System.Diagnostics.Debug.Assert(!string.IsNullOrEmpty(name));
            if (string.IsNullOrEmpty(name))
            {
                name = Utils.getName("debugrender_procedural");
            }
            //SceneManager sceneMgr = Root.Singleton.GetSceneManagerIterator().Current;
            Mogre.SceneManagerEnumerator.SceneManagerIterator item = Root.Singleton.GetSceneManagerIterator();
            item.MoveNext();
            Mogre.SceneManager sceneMgr = item.Current;
            item.Dispose();
            ManualObject mo   = buildManualObject();
            MeshPtr      mesh = mo.ConvertToMesh(name, group);

            sceneMgr.DestroyManualObject(mo);

            return(mesh);
        }
Example #8
0
        public static void generateFace()
        {
            string defaultMaterial = "Default";

            ManualObject block = new ManualObject("frontFace");

            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, 0));                                     block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[0]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, 0));                   block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[0]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[0]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[0]);

            block.Quad(3, 2, 1, 0);
            block.End();
            block.ConvertToMesh("frontFace");


            block = new ManualObject("underFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, 0));                                      block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[1]);
            block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[1]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[1]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0));                    block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[1]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("underFace");


            block = new ManualObject("rightFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0));                                      block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[2]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[2]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[2]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0));                    block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[2]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("rightFace");


            block = new ManualObject("upperFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0));                    block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[3]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[3]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE));                   block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[3]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, 0));                                      block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[3]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("upperFace");


            block = new ManualObject("leftFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, 0));                                      block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[4]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, 0));                    block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[4]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[4]);
            block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[4]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("leftFace");


            block = new ManualObject("backFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE));                                     block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[5]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE));                   block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[5]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[5]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[5]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("backFace");
        }
Example #9
0
        /// <summary>
        /// The vertexs for the walls around the edge of the arena are defined, and placed into the buffer to create the walls.
        /// </summary>
        private void BoundaryCubes()
        {
            manualObj = mSceneMgr.CreateManualObject("a");
            manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);    // Starts filling the manual object as a triangle list


            // ---- Vertex Buffer ----
            manualObj.Position(new Vector3(500, 45, -500));  //SW        // --- Vertex 0 ---
            manualObj.Position(new Vector3(-500, 45, -500)); //SE       // --- Vertex 1 ---
            manualObj.Position(new Vector3(500, 0, -500));   //SW         // --- Vertex 2 ---
            manualObj.Position(new Vector3(-500, 0, -500));  //SE        // --- Vertex 3 ---

            manualObj.Position(new Vector3(500, 45, 500));   //NW         // --- Vertex 4 ---
            manualObj.Position(new Vector3(-500, 45, 500));  //NE        // --- Vertex 5 ---
            manualObj.Position(new Vector3(500, 0, 500));    //NW          // --- Vertex 6 ---
            manualObj.Position(new Vector3(-500, 0, 500));   //NE         // --- Vertex 7 ---

            // ---- Index Buffer ----

            //south wall
            // --- Triangle 0 ---
            manualObj.Index(0);
            manualObj.Index(1);
            manualObj.Index(2);
            // --- Triangle 1 ---
            manualObj.Index(1);
            manualObj.Index(3);
            manualObj.Index(2);

            //north wall
            // --- Triangle 2 ---
            manualObj.Index(6);
            manualObj.Index(5);
            manualObj.Index(4);
            // --- Triangle 3 ---
            manualObj.Index(6);
            manualObj.Index(7);
            manualObj.Index(5);

            //east wall
            // --- Triangle 4 ---
            manualObj.Index(7);
            manualObj.Index(3);
            manualObj.Index(5);
            // --- Triangle 5 ---
            manualObj.Index(3);
            manualObj.Index(1);
            manualObj.Index(5);

            //west wall
            // --- Triangle 6 ---
            manualObj.Index(4);
            manualObj.Index(2);
            manualObj.Index(6);

            // --- Triangle 7 ---
            manualObj.Index(4); //NWT
            manualObj.Index(0); //SWT
            manualObj.Index(2); //SWB

            manualObj.End();    // Closes the manual objet

            //return manualObj.ConvertToMesh("Quad");

            manualObj.ConvertToMesh("Quad");
            boundaryEntity = mSceneMgr.CreateEntity("maualObjQuad", "Quad");
            boundaryEntity.SetMaterialName("Ground");
        }
Example #10
0
        public static void generateFace()
        {
            string defaultMaterial = "Default";

            ManualObject block = new ManualObject("frontFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, 0));                                     block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[0]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, 0));                   block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[0]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[0]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0)); block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[0]);

            block.Quad(3, 2, 1, 0);
            block.End();
            block.ConvertToMesh("frontFace");

            block = new ManualObject("underFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, 0));                                      block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[1]);
            block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[1]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[1]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0));                    block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[1]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("underFace");

            block = new ManualObject("rightFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(Cst.CUBE_SIDE, 0, 0));                                      block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[2]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[2]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[2]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0));                    block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[2]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("rightFace");

            block = new ManualObject("upperFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, 0));                    block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[3]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[3]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE));                   block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[3]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, 0));                                      block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[3]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("upperFace");

            block = new ManualObject("leftFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, 0));                                      block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[4]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, 0));                    block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[4]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[4]);
            block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[4]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("leftFace");

            block = new ManualObject("backFace");
            block.Begin(defaultMaterial, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            block.Position(new Vector3(0, 0, -Cst.CUBE_SIDE));                                     block.TextureCoord(1, 1); block.Normal(VanillaMultiBlock.normals[5]);
            block.Position(new Vector3(0, Cst.CUBE_SIDE, -Cst.CUBE_SIDE));                   block.TextureCoord(1, 0); block.Normal(VanillaMultiBlock.normals[5]);
            block.Position(new Vector3(Cst.CUBE_SIDE, Cst.CUBE_SIDE, -Cst.CUBE_SIDE)); block.TextureCoord(0, 0); block.Normal(VanillaMultiBlock.normals[5]);
            block.Position(new Vector3(Cst.CUBE_SIDE, 0, -Cst.CUBE_SIDE));                   block.TextureCoord(0, 1); block.Normal(VanillaMultiBlock.normals[5]);

            block.Quad(0, 1, 2, 3);
            block.End();
            block.ConvertToMesh("backFace");
        }
Example #11
0
			public DebugRenderable( Node parent )
			{
				_parent = parent;

				string materialName = "Axiom/Debug/AxesMat";
				_material = (Material)MaterialManager.Instance[ materialName ];
				if ( _material == null )
				{
					_material = (Material)MaterialManager.Instance.Create( materialName, ResourceGroupManager.InternalResourceGroupName );
					Pass p = _material.GetTechnique( 0 ).GetPass( 0 );
					p.LightingEnabled = false;
					//TODO: p.PolygonModeOverrideable = false;
					p.VertexColorTracking = TrackVertexColor.Ambient;
					p.SetSceneBlending( SceneBlendType.TransparentAlpha );
					p.CullingMode = CullingMode.None;
					p.DepthWrite = false;
				}

				string meshName = "Axiom/Debug/AxesMesh";
				_mesh = MeshManager.Instance[ meshName ];
				if ( _mesh == null )
				{
					ManualObject mo = new ManualObject( "tmp" );
					mo.Begin( Material.Name, OperationType.TriangleList );
					/* 3 axes, each made up of 2 of these (base plane = XY)
					 *   .------------|\
					 *   '------------|/
					 */
					mo.EstimateVertexCount( 7 * 2 * 3 );
					mo.EstimateIndexCount( 3 * 2 * 3 );
					Quaternion[] quat = new Quaternion[ 6 ];
					ColorEx[] col = new ColorEx[ 3 ];

					// x-axis
					quat[ 0 ] = Quaternion.Identity;
					quat[ 1 ] = Quaternion.FromAxes( Vector3.UnitX, Vector3.NegativeUnitZ, Vector3.UnitY );
					col[ 0 ] = ColorEx.Red;
					col[ 0 ].a = 0.8f;
					// y-axis
					quat[ 2 ] = Quaternion.FromAxes( Vector3.UnitY, Vector3.NegativeUnitX, Vector3.UnitZ );
					quat[ 3 ] = Quaternion.FromAxes( Vector3.UnitY, Vector3.UnitZ, Vector3.UnitX );
					col[ 1 ] = ColorEx.Green;
					col[ 1 ].a = 0.8f;
					// z-axis
					quat[ 4 ] = Quaternion.FromAxes( Vector3.UnitZ, Vector3.UnitY, Vector3.NegativeUnitX );
					quat[ 5 ] = Quaternion.FromAxes( Vector3.UnitZ, Vector3.UnitX, Vector3.UnitY );
					col[ 2 ] = ColorEx.Blue;
					col[ 2 ].a = 0.8f;

					Vector3[] basepos = new Vector3[ 7 ]  
										{
											// stalk
											new Vector3(0f, 0.05f, 0f), 
											new Vector3(0f, -0.05f, 0f),
											new Vector3(0.7f, -0.05f, 0f),
											new Vector3(0.7f, 0.05f, 0f),
											// head
											new Vector3(0.7f, -0.15f, 0f),
											new Vector3(1f, 0f, 0f),
											new Vector3(0.7f, 0.15f, 0f)
										};


					// vertices
					// 6 arrows
					for ( int i = 0; i < 6; ++i )
					{
						// 7 points
						for ( int p = 0; p < 7; ++p )
						{
							Vector3 pos = quat[ i ] * basepos[ p ];
							mo.Position( pos );
							mo.Color( col[ i / 2 ] );
						}
					}

					// indices
					// 6 arrows
					for ( int i = 0; i < 6; ++i )
					{
						ushort baseIndex = (ushort)( i * 7 );
						mo.Triangle( (ushort)( baseIndex + 0 ), (ushort)( baseIndex + 1 ), (ushort)( baseIndex + 2 ) );
						mo.Triangle( (ushort)( baseIndex + 0 ), (ushort)( baseIndex + 2 ), (ushort)( baseIndex + 3 ) );
						mo.Triangle( (ushort)( baseIndex + 4 ), (ushort)( baseIndex + 5 ), (ushort)( baseIndex + 6 ) );
					}

					mo.End();

					_mesh = mo.ConvertToMesh( meshName, ResourceGroupManager.InternalResourceGroupName );
				}
			}
Example #12
0
        public void InitMogre()
        {
            //-----------------------------------------------------
            // 1 enter ogre
            //-----------------------------------------------------
            root = new Root();

            //-----------------------------------------------------
            // 2 configure resource paths
            //-----------------------------------------------------
            ConfigFile cf = new ConfigFile();

            cf.Load("resources.cfg", "\t:=", true);

            // Go through all sections & settings in the file
            ConfigFile.SectionIterator seci = cf.GetSectionIterator();

            String secName, typeName, archName;

            // Normally we would use the foreach syntax, which enumerates the values, but in this case we need CurrentKey too;
            while (seci.MoveNext())
            {
                secName = seci.CurrentKey;
                ConfigFile.SettingsMultiMap settings = seci.Current;
                foreach (KeyValuePair <string, string> pair in settings)
                {
                    typeName = pair.Key;
                    archName = pair.Value;
                    ResourceGroupManager.Singleton.AddResourceLocation(archName, typeName, secName);
                }
            }

            //-----------------------------------------------------
            // 3 Configures the application and creates the window
            //-----------------------------------------------------
            bool foundit = false;

            foreach (RenderSystem rs in root.GetAvailableRenderers())
            {
                root.RenderSystem = rs;
                String rname = root.RenderSystem.Name;
                if (rname == "Direct3D9 Rendering Subsystem")
                {
                    foundit = true;
                    break;
                }
            }

            if (!foundit)
            {
                return; //we didn't find it... Raise exception?
            }
            //we found it, we might as well use it!
            root.RenderSystem.SetConfigOption("Full Screen", "No");
            root.RenderSystem.SetConfigOption("Video Mode", "640 x 480 @ 32-bit colour");

            root.Initialise(false);
            NameValuePairList misc = new NameValuePairList();

            misc["externalWindowHandle"] = hWnd.ToString();
            window = root.CreateRenderWindow("Simple Mogre Form Window", 0, 0, false, misc);
            ResourceGroupManager.Singleton.InitialiseAllResourceGroups();

            //-----------------------------------------------------
            // 4 Create the SceneManager
            //
            //		ST_GENERIC = octree
            //		ST_EXTERIOR_CLOSE = simple terrain
            //		ST_EXTERIOR_FAR = nature terrain (depreciated)
            //		ST_EXTERIOR_REAL_FAR = paging landscape
            //		ST_INTERIOR = Quake3 BSP
            //-----------------------------------------------------
            sceneMgr = root.CreateSceneManager(SceneType.ST_GENERIC, "SceneMgr");
            sceneMgr.AmbientLight = new ColourValue(1f, 1f, 1f);

            //-----------------------------------------------------
            // 5 Create the camera
            //-----------------------------------------------------
            camera          = sceneMgr.CreateCamera("SimpleCamera");
            camera.Position = new Vector3(400f, 0f, 0f);
            // Look back along -Z
            camera.LookAt(new Vector3(-1f, 0f, 0f));
            camera.NearClipDistance = 5;

            viewport = window.AddViewport(camera);
            viewport.BackgroundColour = new ColourValue(0.0f, 0.0f, 0.0f, 1.0f);



            material = MaterialManager.Singleton.Create("front", "General");
            material.GetTechnique(0).GetPass(0).CreateTextureUnitState("snow3.jpg");
            material = MaterialManager.Singleton.Create("other", "General");
            material.GetTechnique(0).GetPass(0).CreateTextureUnitState("snow.jpg");
            material = MaterialManager.Singleton.Create("back", "General");
            material.GetTechnique(0).GetPass(0).CreateTextureUnitState("back2.jpg");

            Vector3 moveVector3 = new Vector3(0f, -60f, 110f);

            for (int i = 0; i < cubeCount; i++)
            {
                Cube cube = new Cube();
                cube.CubeName = "cube" + i.ToString();
                cube.BuildCube("front", ref sceneMgr);

                ManualObject manual = sceneMgr.GetManualObject(cube.CubeName);
                manual.ConvertToMesh("cubeMesh" + i.ToString());
                Entity    ent  = sceneMgr.CreateEntity("box" + i.ToString(), "cubeMesh" + i.ToString());
                SceneNode node = sceneMgr.RootSceneNode.CreateChildSceneNode("boxNode" + i.ToString());
                ent.CastShadows = true;
                node.AttachObject(ent);
                float y = i * (Cube.cubeHeight + 10) + moveVector3.y;
                node.Position = new Vector3(0f, y, moveVector3.z);
            }

            Plane plane = new Plane();

            plane.BuildPlane("back", ref sceneMgr);
            ManualObject manualPlane = sceneMgr.GetManualObject(plane.PlaneName);

            manualPlane.ConvertToMesh("planeMesh");
            Entity    planeEntity = sceneMgr.CreateEntity("planeEntity", "planeMesh");
            SceneNode planeNode   = sceneMgr.RootSceneNode.CreateChildSceneNode("planeNode");

            planeNode.AttachObject(planeEntity);
        }
Example #13
0
        public MeshPtr getCube(string cubeName, string materialName, float width, float height, float depth)
        {
            cube = mSceneMgr.CreateManualObject(cubeName + "_ManObj");
            cube.Begin(materialName, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            // --- Fills the Vertex buffer and define the texture coordinates for each vertex ---

            //--- Vertex 0 ---
            cube.Position(new Vector3(.5f * width, .5f * height, .5f * depth));
            cube.TextureCoord(new Vector2(0, 0));
            //--- Vertex 1 ---
            cube.Position(new Vector3(.5f * width, -.5f * height, .5f * depth));
            cube.TextureCoord(new Vector2(1, 0));
            //--- Vertex 2 ---
            cube.Position(new Vector3(.5f * width, .5f * height, -.5f * depth));
            cube.TextureCoord(new Vector2(0, 1));
            //--- Vertex 3 ---
            cube.Position(new Vector3(.5f * width, -.5f * height, -.5f * depth));
            cube.TextureCoord(new Vector2(1, 1));

            //--- Vertex 4 ---
            cube.Position(new Vector3(-.5f * width, .5f * height, .5f * depth));
            cube.TextureCoord(new Vector2(0, 0));
            //--- Vertex 5 ---
            cube.Position(new Vector3(-.5f * width, -.5f * height, .5f * depth));
            cube.TextureCoord(new Vector2(1, 0));
            //--- Vertex 6 ---
            cube.Position(new Vector3(-.5f * width, .5f * height, -.5f * depth));
            cube.TextureCoord(new Vector2(0, 1));
            //--- Vertex 7 ---
            cube.Position(new Vector3(-.5f * width, -.5f * height, -.5f * depth));
            cube.TextureCoord(new Vector2(1, 1));

            // --- Fills the Index Buffer ---
            //--------Face 1----------
            cube.Index(0);
            cube.Index(1);
            cube.Index(2);

            cube.Index(2);
            cube.Index(1);
            cube.Index(3);

            //--------Face 2----------
            cube.Index(4);
            cube.Index(6);
            cube.Index(5);

            cube.Index(6);
            cube.Index(7);
            cube.Index(5);

            //--------Face 3----------
            cube.Index(0);
            cube.Index(4);
            cube.Index(1);

            cube.Index(1);
            cube.Index(4);
            cube.Index(5);

            //--------Face 4----------
            cube.Index(0);
            cube.Index(6);
            cube.Index(4);

            cube.Index(0);
            cube.Index(2);
            cube.Index(6);

            //--------Face 5----------
            cube.Index(6);
            cube.Index(2);
            cube.Index(3);

            cube.Index(6);
            cube.Index(3);
            cube.Index(7);

            //--------Face 5----------
            cube.Index(3);
            cube.Index(1);
            cube.Index(7);

            cube.Index(1);
            cube.Index(5);
            cube.Index(7);

            cube.End();
            return(cube.ConvertToMesh(cubeName));
        }
Example #14
0
        /// <summary>
        /// This private method defines the vertex and index buffers of a quad as a triangle list.
        /// </summary>
        private MeshPtr Quad()
        {
            manualObj = mSceneMgr.CreateManualObject("maualObjQuad");
            manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);    // Starts filling the manual object as a triangle list

            // ---- Vertex Buffer ----
            manualObj.Position(new Vector3(5, 5, 0));               // --- Vertex 0 ---
            manualObj.Position(new Vector3(-5, 5, 0));              // --- Vertex 1 ---
            manualObj.Position(new Vector3(5, -5, 0));              // --- Vertex 2 ---
            manualObj.Position(new Vector3(-5, -5, 0));             // --- Vertex 3 ---

            // ---- Index Buffer ----
            // --- Triangle 0 ---
            manualObj.Index(0);
            manualObj.Index(1);
            manualObj.Index(2);

            // --- Triangle 1 ---
            manualObj.Index(1);
            manualObj.Index(3);
            manualObj.Index(2);

            manualObj.End();                                        // Closes the manual objet

            return manualObj.ConvertToMesh("Quad");                 // Prepares the data to be sent to the GPU
        }
Example #15
0
        /// <summary>
        /// This method contructs the mesh for the cube
        /// </summary>
        /// <param name="cubeName"></param>
        /// <returns>cubeMesh object</returns>
        public MeshPtr getCube(string cubeName)
        {
            // Console.Write("getCube: "+count);
            manualObj = mSceneMgr.CreateManualObject("manualObjQuad" + count);
            manualObj.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST); // Starts filling the manual object as a triangle list

            // ---- Vertex Buffer ----
            manualObj.Position(new Vector3(30, 30, 0));           // --- Vertex 0 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, 30, 0));              // --- Vertex 1 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, -30, 0));              // --- Vertex 2 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, -30, 0));             // --- Vertex 3 ---
            manualObj.TextureCoord(new Vector2(1, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, 30, -60));             // --- Vertex 4 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, -30, -60));            // --- Vertex 5 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, 30, -60));             // --- Vertex 6 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, -30, -60));            // --- Vertex 7 ---
            manualObj.TextureCoord(new Vector2(1, 1));
            manualObj.Normal(1, 1, 1);

            // ---- Index Buffer ----
            // --- Triangle 0 ---
            manualObj.Index(0);
            manualObj.Index(1);
            manualObj.Index(2);

            // --- Triangle 1 ---
            manualObj.Index(1);
            manualObj.Index(3);
            manualObj.Index(2);


            // --- Triangle 8 ---
            manualObj.Index(4);
            manualObj.Index(5);
            manualObj.Index(6);

            // --- Triangle 9 ---
            manualObj.Index(5);
            manualObj.Index(7);
            manualObj.Index(6);


            manualObj.Position(new Vector3(30, 30, -60));          // --- Vertex 8 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, 30, 0));              // --- Vertex 9 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, -30, -60));              // --- Vertex 10 ---
            manualObj.TextureCoord(new Vector2(1, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, -30, 0));             // --- Vertex 11 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, 30, 0));             // --- Vertex 12 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, 30, -60));            // --- Vertex 13 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, -30, 0));             // ---Vertex 14 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, -30, -60));            // ---Vertex 15 ---
            manualObj.TextureCoord(new Vector2(1, 1));
            manualObj.Normal(1, 1, 1);

            // ---Triangle 12-- -
            manualObj.Index(8);
            manualObj.Index(9);
            manualObj.Index(10);

            //  ---Triangle 13-- -
            manualObj.Index(9);
            manualObj.Index(11);
            manualObj.Index(10);

            // ---Triangle 14-- -
            manualObj.Index(12);
            manualObj.Index(13);
            manualObj.Index(14);

            //  ---Triangle 15-- -
            manualObj.Index(13);
            manualObj.Index(15);
            manualObj.Index(14);

            manualObj.Position(new Vector3(30, 30, -60));               // --- Vertex 16 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, 30, -60));              // --- Vertex 17 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, 30, 0));              // --- Vertex 18 ---
            manualObj.TextureCoord(new Vector2(1, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, 30, 0));             // --- Vertex 19 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, -30, 0));             // --- Vertex 20 ---
            manualObj.TextureCoord(new Vector2(0, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, -30, 0));            // --- Vertex 21 ---
            manualObj.TextureCoord(new Vector2(0, 1));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(30, -30, -60));             // ---Vertex 22 ---
            manualObj.TextureCoord(new Vector2(1, 0));
            manualObj.Normal(1, 1, 1);
            manualObj.Position(new Vector3(-30, -30, -60));           // ---Vertex 23 ---
            manualObj.TextureCoord(new Vector2(1, 1));
            manualObj.Normal(1, 1, 1);

            // ---Triangle 12-- -
            manualObj.Index(16);
            manualObj.Index(17);
            manualObj.Index(18);

            //  ---Triangle 13-- -
            manualObj.Index(17);
            manualObj.Index(19);
            manualObj.Index(18);

            // ---Triangle 14-- -
            manualObj.Index(20);
            manualObj.Index(21);
            manualObj.Index(22);

            //  ---Triangle 15-- -
            manualObj.Index(21);
            manualObj.Index(23);
            manualObj.Index(22);


            manualObj.End();                                      // Closes the manual objet

            return(manualObj.ConvertToMesh(cubeName));            // Prepares the data to be sent to the GPU
        }
Example #16
0
        public MeshPtr LoadWorldMap(string worldMapID, SceneManager sceneManager, MBWorldMap worldMap, bool faceted = false)
        {
            //Convert Vertex and Faces to Ogre Mesh Format
            if (worldMap == null)
            {
                return(null);
            }
            if (meshes.ContainsKey(worldMapID))
            {
                return(meshes[worldMapID]);
            }
            ManualObject worldMapTerrain = sceneManager.CreateManualObject("WORLDMAP-MANUAL-OBJECT-" + worldMapID);

            worldMapTerrain.Begin("", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            calculateNormal(worldMapTerrain, worldMap);

            for (int i = 0; i < worldMap.Faces.Count; i++)
            {
                int vindex1 = worldMap.Faces[i].indexFirst;
                int vindex2 = worldMap.Faces[i].indexSecond;
                int vindex3 = worldMap.Faces[i].indexThird;

                float[] vnindex1 = worldMap.fcn[i];
                float[] vnindex2 = worldMap.fcn[i];
                float[] vnindex3 = worldMap.fcn[i];

                worldMapTerrain.Position(
                    worldMap.Vertics[vindex1].x,
                    worldMap.Vertics[vindex1].z,
                    worldMap.Vertics[vindex1].y
                    );
                worldMapTerrain.Normal(vnindex1[0], vnindex1[1], vnindex1[2]);
                worldMapTerrain.Colour(worldMap.Color[worldMap.Faces[i].TerrainType]);

                worldMapTerrain.Position(
                    worldMap.Vertics[vindex2].x,
                    worldMap.Vertics[vindex2].z,
                    worldMap.Vertics[vindex2].y
                    );
                worldMapTerrain.Normal(vnindex2[0], vnindex2[1], vnindex2[2]);
                worldMapTerrain.Colour(worldMap.Color[worldMap.Faces[i].TerrainType]);

                worldMapTerrain.Position(
                    worldMap.Vertics[vindex3].x,
                    worldMap.Vertics[vindex3].z,
                    worldMap.Vertics[vindex3].y
                    );
                worldMapTerrain.Normal(vnindex3[0], vnindex3[1], vnindex3[2]);
                worldMapTerrain.Colour(worldMap.Color[worldMap.Faces[i].TerrainType]);

                worldMapTerrain.Triangle(
                    (uint)(vindex1),
                    (uint)(vindex2),
                    (uint)(vindex3)
                    );
            }

            worldMapTerrain.End();

            var mesh = worldMapTerrain.ConvertToMesh("WORLDMAP-" + worldMapID);

            meshes.Add(worldMapID, mesh);
            return(mesh);
        }
Example #17
0
        public MeshPtr getCube(string cubeName, string materialName, float width, float height, float depth)
        {
            manual = mSceneMgr.CreateManualObject(cubeName + "_ManObj");
            manual.Begin(materialName, RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            // --- Fills the Vertex buffer and define the texture coordinates for each vertex ---

            //--- Vertex 0 ---
            v0 = new Vector3(.5f * width, .5f * height, .5f * depth);
            manual.Position(v0);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(0, 0));

            //--- Vertex 1 ---
            v1 = new Vector3(.5f * width, -.5f * height, .5f * depth);
            manual.Position(v1);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(1, 0));

            //--- Vertex 2 ---
            v2 = new Vector3(.5f * width, .5f * height, -.5f * depth);
            manual.Position(v2);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(0, 1));

            //--- Vertex 3 ---
            v3 = new Vector3(.5f * width, -.5f * height, -.5f * depth);
            manual.Position(v3);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(1, 1));


            //--- Vertex 4 ---
            v4 = new Vector3(-.5f * width, .5f * height, .5f * depth);
            manual.Position(v4);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(0, 0));

            //--- Vertex 5 ---
            v5 = new Vector3(-.5f * width, -.5f * height, .5f * depth);
            manual.Position(v5);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(-1, 0));

            //--- Vertex 6 ---
            v6 = new Vector3(-.5f * width, .5f * height, -.5f * depth);
            manual.Position(v6);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(0, -1));

            //--- Vertex 7 ---
            v7 = new Vector3(-.5f * width, -.5f * height, -.5f * depth);
            manual.Position(v7);
            //Texture coordinates here!
            manual.TextureCoord(new Vector2(-1, -1));


            // --- Fills the Index Buffer ---
            //--------Face 1----------
            manual.Index(2);
            manual.Index(1);
            manual.Index(0);

            manual.Index(3);
            manual.Index(1);
            manual.Index(2);

            //--------Face 2----------
            manual.Index(5);
            manual.Index(6);
            manual.Index(4);

            manual.Index(5);
            manual.Index(7);
            manual.Index(6);

            //--------Face 3----------
            manual.Index(1);
            manual.Index(4);
            manual.Index(0);

            manual.Index(5);
            manual.Index(4);
            manual.Index(1);

            ////--------Face 4----------
            //manual.Index(0);
            //manual.Index(6);
            //manual.Index(4);

            //manual.Index(0);
            //manual.Index(2);
            //manual.Index(6);

            //--------Face 5----------
            manual.Index(3);
            manual.Index(2);
            manual.Index(6);

            manual.Index(7);
            manual.Index(3);
            manual.Index(6);

            //--------Face 6----------
            //manual.Index(3);
            //manual.Index(1);
            //manual.Index(7);

            //manual.Index(1);
            //manual.Index(5);
            //manual.Index(7);

            manual.End();
            return(manual.ConvertToMesh(cubeName));
        }
Example #18
0
        ///private MeshPtr Quad()
        public MeshPtr Quad()
        {
            cube = mSceneMgr.CreateManualObject("fieldQuad");
            cube.Begin("void", RenderOperation.OperationTypes.OT_TRIANGLE_LIST);

            cube.Position(new Vector3(20f, 20f, 20f)); // Vector 0
            cube.TextureCoord(new Vector2(0, 0));

            cube.Position(new Vector3(20f, -20f, 20f)); // Vector 1
            cube.TextureCoord(new Vector2(1, 0));

            cube.Position(new Vector3(20f, 20f, -20f)); // Vector 2
            cube.TextureCoord(new Vector2(0, 1));

            cube.Position(new Vector3(20f, -20f, -20f)); // Vector 3
            cube.TextureCoord(new Vector2(1, 1));

            cube.Position(new Vector3(-20f, 20f, 20f)); // Vector 4
            cube.TextureCoord(new Vector2(0, 0));

            cube.Position(new Vector3(-20f, -20f, 20f)); // Vector 5
            cube.TextureCoord(new Vector2(0, 1));

            cube.Position(new Vector3(-20f, 20f, -20f)); // Vector 6
            cube.TextureCoord(new Vector2(1, 0));

            cube.Position(new Vector3(-20f, -20f, -20f)); // Vector 7
            cube.TextureCoord(new Vector2(1, 1));

            // Index Buffer

            // Triangle 0
            cube.Index(0);
            cube.Index(1);
            cube.Index(2);

            // Triangle 1
            cube.Index(2);
            cube.Index(1);
            cube.Index(3);

            // Triangle 2
            cube.Index(4);
            cube.Index(6);
            cube.Index(5);

            // Triangle 3
            cube.Index(6);
            cube.Index(7);
            cube.Index(5);

            // Triangle 4
            cube.Index(0);
            cube.Index(4);
            cube.Index(1);

            // Triangle 5
            cube.Index(1);
            cube.Index(4);
            cube.Index(5);

            // Triangle 6
            cube.Index(0);
            cube.Index(6);
            cube.Index(4);

            // Triangle 7
            cube.Index(0);
            cube.Index(2);
            cube.Index(6);

            // Triangle 8
            cube.Index(6);
            cube.Index(2);
            cube.Index(3);

            // Triangle 9
            cube.Index(6);
            cube.Index(3);
            cube.Index(7);

            // Triangle 9
            cube.Index(3);
            cube.Index(1);
            cube.Index(7);

            cube.Index(1);
            cube.Index(5);
            cube.Index(7);

            cube.End();

            return(cube.ConvertToMesh("Quad"));
        }