コード例 #1
0
ファイル: Basic3DObjects.cs プロジェクト: Murgn/3D-OpenGL
        // Draw
        public void Draw(Camera cam)
        {
            gpu.SetVertexBuffer(vertexBuffer);
            gpu.Indices = indexBuffer;
            int obj_cnt = objex.Count, o;

            o = 0; while (o < obj_cnt)
            {
                Obj3D ob = objex[o];
                #region // Reminder_To_Set_Lighting_Draw_Params_Later for custom lighting class and effect
                // TO DO (later):
                // if (DrawDepth)        light.SetDepthParams(ob.transform);           // for drawing to a depth shader
                // else if (DrawShadows) light.SetShadowParams(ob.transform, cam);     // for drawing shadows (using depth shader results)
                // else                  light.SetDrawParams(ob.transform,cam,ob.tex); // regular drawing
                #endregion
                // Set shader paramaters:
                basic_effect.Texture    = ob.tex;
                basic_effect.World      = ob.transform;
                basic_effect.View       = cam.view;
                basic_effect.Projection = cam.proj;
                basic_effect.FogEnabled = true;
                basic_effect.FogStart   = 15;
                basic_effect.FogEnd     = 500;
                basic_effect.FogColor   = new Vector3(0f, 0f, 0f);
                foreach (EffectPass pass in basic_effect.CurrentTechnique.Passes)
                {
                    pass.Apply();
                    gpu.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, ob.start_index, ob.triangle_count); o++;
                }
            }
        }
コード例 #2
0
        // BASIC CUBE
        public void AddCube(float width, float length, float height, Vector3 mid_position, Vector3 rotation, string textureFile, Rectangle?sourceRect)
        {
            Obj3D obj = new Obj3D();

            obj.AddCube(mid_position, new Vector3(width, height, length), rotation, textureFile, sourceRect);
            objex.Add(obj);
        }
コード例 #3
0
        // BASIC OBJECTS THAT YOU CAN ADD ------------------------------
        // BASIC FLOOR
        public void AddFloor(float width, float length, Vector3 mid_position, Vector3 rotation, string textureFile, Rectangle?sourceRect)
        {
            Obj3D obj = new Obj3D();

            obj.AddQuad(mid_position, width, length, rotation, textureFile, sourceRect);
            objex.Add(obj);
        }
コード例 #4
0
ファイル: Basic3DObjects.cs プロジェクト: Murgn/3D-OpenGL
        // Basic Cube
        public void AddCube(float width, float length, float height, Vector3 mid_position, Vector3 rotation, string textureFile, Rectangle?sourceRect)
        {
            Obj3D obj = new Obj3D();

            obj.AddCube(mid_position, new Vector3(width, height, length), rotation, textureFile, sourceRect);
            Console.WriteLine("adding cube with texture " + textureFile);
            objex.Add(obj);
            Console.WriteLine("Added!");
        }
コード例 #5
0
ファイル: Basic3DObjects.cs プロジェクト: Murgn/3D-OpenGL
        // ADDING BASIC OBJECTS --------------------------
        // Basic Floor
        public void AddFloor(float width, float length, Vector3 mid_position, Vector3 rotation, string textureFile, Rectangle?sourceRect)
        {
            Obj3D obj = new Obj3D();

            obj.AddQuad(mid_position, width, length, rotation, textureFile, sourceRect);
            Console.WriteLine("adding floor with texture " + textureFile);
            objex.Add(obj);
            Console.WriteLine("Added!");
        }
コード例 #6
0
        /// <summary>
        /// This loads an *.obj file which has been embedded in the SciChart.Examples.ExternalDependencies as an
        /// embedded resource. Valid obj files include the values provided by <see cref="Obj3D"/> type
        /// </summary>
        /// <param name="objResource">The resource to load</param>
        /// <returns>A byte[] array representing the obj file</returns>
        public byte[] LoadWavefrontObject(Obj3D objResource)
        {
            var asm            = GetType().Assembly;
            var resourceString = asm.GetManifestResourceNames().Single(x => x.Contains(objResource.Value));

            using (var stream = asm.GetManifestResourceStream(resourceString))
                using (var ms = new MemoryStream())
                {
                    stream.CopyTo(ms);
                    return(ms.ToArray());
                }
        }
コード例 #7
0
 private void ReadObj3D(uint addr, out Obj3D obj)
 {
     obj                = new Obj3D();
     obj.PtrNext        = ReadPtrAndAdvance(ref addr);
     obj.Flags          = ReadU16AndAdvance(ref addr);
     obj.XPos           = ReadS32AndAdvance(ref addr);
     obj.ZPos           = ReadS32AndAdvance(ref addr);
     obj.YPos           = ReadS32AndAdvance(ref addr);
     obj.Width          = ReadS32AndAdvance(ref addr);
     obj.Depth          = ReadS32AndAdvance(ref addr);
     obj.Height         = ReadS32AndAdvance(ref addr);
     obj.prevSpeed      = ReadS32AndAdvance(ref addr);
     obj.XOrig          = ReadS32AndAdvance(ref addr);
     obj.ZOrig          = ReadS32AndAdvance(ref addr);
     obj.YOrig          = ReadS32AndAdvance(ref addr);
     obj.XVel           = ReadS32AndAdvance(ref addr);
     obj.ZVel           = ReadS32AndAdvance(ref addr);
     obj.YVel           = ReadS32AndAdvance(ref addr);
     obj.XUnk           = ReadS32AndAdvance(ref addr);
     obj.ZUnk           = ReadS32AndAdvance(ref addr);
     obj.YUnk           = ReadS32AndAdvance(ref addr);
     addr              += 12;
     obj.PLC            = ReadPtrAndAdvance(ref addr);
     obj.Sprite         = ReadS16AndAdvance(ref addr);
     obj.SpriteScale    = ReadS16AndAdvance(ref addr);
     obj.PtrMainFunc    = ReadPtrAndAdvance(ref addr);
     obj.unks0          = ReadS16AndAdvance(ref addr);
     obj.unks1          = ReadS16AndAdvance(ref addr);
     obj.Mode           = ReadS16AndAdvance(ref addr);
     obj.AccelCounter   = ReadByteAndAdvance(ref addr);
     obj.PrevControls   = ReadByteAndAdvance(ref addr);
     obj.CurControls    = ReadByteAndAdvance(ref addr);
     obj.ChargeCtr      = ReadByteAndAdvance(ref addr);
     obj.LastWasCharge  = ReadByteAndAdvance(ref addr);
     obj.InvincCount    = ReadByteAndAdvance(ref addr);
     obj.unk5           = ReadS32AndAdvance(ref addr);
     obj.Damage         = ReadS32AndAdvance(ref addr);
     obj.State          = ReadByteAndAdvance(ref addr);
     obj.ControlsLocked = ReadByteAndAdvance(ref addr);
     obj.unkb0          = ReadByteAndAdvance(ref addr);
     obj.BreachCtr      = ReadByteAndAdvance(ref addr);
     obj.ScreenX        = ReadS32AndAdvance(ref addr);
     obj.ScreenY        = ReadS32AndAdvance(ref addr);
     obj.unkb1          = ReadByteAndAdvance(ref addr);
     obj.unkb2          = ReadByteAndAdvance(ref addr);
 }
コード例 #8
0
 private void GetEcco3DScreenCoords(Obj3D obj, out int X, out int Y, out int Z)
 {
     X = 160 + ((obj.XPos >> 0xC) - Cam3D.X);
     Y = 112 - ((obj.YPos >> 0xC) - Cam3D.Y);
     Z = _top + 112 - ((obj.ZPos >> 0xC) - Cam3D.Z);
 }