From 25d7cbda9e6240a127652e6bf902a117bfc49b37 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Tue, 21 Jul 2015 18:48:51 +1000 Subject: [PATCH] Combine player rendering functions into Player class, remove D3DX reference since we longer need it. --- ClassicalSharp.csproj | 3 +- Entities/LocalPlayer.cs | 14 ++---- Entities/NetPlayer.cs | 8 +--- Entities/Player.Rendering.cs | 56 +++++++++++++++++++++++ Entities/Player.cs | 21 ++++----- GraphicsAPI/IGraphicsApi.cs | 14 +++--- GraphicsAPI/OpenGLApi.cs | 6 ++- Model/BlockModel.cs | 2 +- Model/ChickenModel.cs | 4 +- Model/CreeperModel.cs | 4 +- Model/IModel.cs | 6 +-- Model/PigModel.cs | 4 +- Model/PlayerModel.cs | 4 +- Model/SheepModel.cs | 4 +- Model/SkeletonModel.cs | 4 +- Model/SpiderModel.cs | 4 +- Model/ZombieModel.cs | 4 +- OpenTK/Graphics/OpenGL/GLDelegates.cs | 4 -- OpenTK/Graphics/OpenGL/GLHelper.cs | 1 - OpenTK/Platform/Windows/Wgl.cs | 24 +++++----- Rendering/PlayerRenderer.cs | 64 --------------------------- Utils/MinimalEnvRenderer.cs | 40 +++++++++++++++++ 22 files changed, 157 insertions(+), 138 deletions(-) create mode 100644 Entities/Player.Rendering.cs delete mode 100644 Rendering/PlayerRenderer.cs create mode 100644 Utils/MinimalEnvRenderer.cs diff --git a/ClassicalSharp.csproj b/ClassicalSharp.csproj index 544893c5d..2cb712921 100644 --- a/ClassicalSharp.csproj +++ b/ClassicalSharp.csproj @@ -81,7 +81,6 @@ - @@ -119,6 +118,7 @@ + @@ -169,7 +169,6 @@ - diff --git a/Entities/LocalPlayer.cs b/Entities/LocalPlayer.cs index 7e6ea6056..f0d624372 100644 --- a/Entities/LocalPlayer.cs +++ b/Entities/LocalPlayer.cs @@ -62,12 +62,6 @@ namespace ClassicalSharp { } } - public override void Despawn() { - if( renderer != null ) { - renderer.Dispose(); - } - } - public override void Tick( double delta ) { if( Window.Map.IsNotLoaded ) return; //Window.Title = ( GC.GetTotalMemory( false ) / 1024.0 / 1024.0 ).ToString(); // TODO: temp debug statement @@ -82,19 +76,19 @@ namespace ClassicalSharp { nextPos = Position; Position = lastPos; UpdateAnimState( lastPos, nextPos, delta ); - if( renderer != null ) { + if( api != null ) { CheckSkin(); } } public override void Render( double deltaTime, float t ) { if( !Window.Camera.IsThirdPerson ) return; - if( renderer == null ) { - renderer = new PlayerRenderer( this, Window ); + if( api == null ) { + InitRenderingData(); Window.AsyncDownloader.DownloadSkin( SkinName ); } SetCurrentAnimState( t ); - renderer.Render( deltaTime ); + RenderModel( deltaTime ); } void HandleInput( ref float xMoving, ref float zMoving ) { diff --git a/Entities/NetPlayer.cs b/Entities/NetPlayer.cs index 963744ca3..1b4691f1f 100644 --- a/Entities/NetPlayer.cs +++ b/Entities/NetPlayer.cs @@ -11,7 +11,7 @@ namespace ClassicalSharp { public NetPlayer( string displayName, string skinName, Game window ) : base( window ) { DisplayName = displayName; SkinName = Utils.StripColours( skinName ); - renderer = new PlayerRenderer( this, window ); + InitRenderingData(); } // Last known position and orientation sent by the server. @@ -42,10 +42,6 @@ namespace ClassicalSharp { } } - public override void Despawn() { - renderer.Dispose(); - } - struct State { public int tick; public Vector3 pos; @@ -97,7 +93,7 @@ namespace ClassicalSharp { PitchDegrees = Utils.InterpAngle( oldState.pitch, newState.pitch, t ); SetCurrentAnimState( t ); - renderer.Render( deltaTime ); + RenderModel( deltaTime ); } } } \ No newline at end of file diff --git a/Entities/Player.Rendering.cs b/Entities/Player.Rendering.cs new file mode 100644 index 000000000..c41d77675 --- /dev/null +++ b/Entities/Player.Rendering.cs @@ -0,0 +1,56 @@ +using System; +using System.Drawing; +using ClassicalSharp.GraphicsAPI; +using OpenTK; + +namespace ClassicalSharp { + + partial class Player { + + protected IGraphicsApi api; + protected Texture nameTex; + protected internal int PlayerTextureId = -1, MobTextureId = -1; + + public override void Despawn() { + api.DeleteTexture( ref PlayerTextureId ); + api.DeleteTexture( ref nameTex.ID ); + } + + protected void InitRenderingData() { + api = Window.Graphics; + + using( Font font = new Font( "Arial", 14 ) ) { + DrawTextArgs args = new DrawTextArgs( api, DisplayName, true ); + nameTex = Utils2D.MakeTextTexture( font, 0, 0, ref args ); + } + } + + protected void RenderModel( double deltaTime ) { + Model.RenderModel( this ); + DrawName(); + } + + void DrawName() { + api.Texturing = true; + api.Bind2DTexture( nameTex.ID ); + + float x1 = -nameTex.Width * 0.5f / 50f, y1 = nameTex.Height / 50f; + float x2 = nameTex.Width * 0.5f / 50f, y2 = 0; + // NOTE: Do this instead with network player's yaw to have names rotate with them instead. + //yaw = Math.Pi - Player.YawRadians; + float angle = Window.LocalPlayer.YawRadians; + float cosA = (float)Math.Cos( angle ), sinA = (float)Math.Sin( angle ); + Vector3 pos = Position; + pos.Y += Model.NameYOffset; + + // Inlined translation + rotation Y axis + api.texVerts[0] = new VertexPos3fTex2f( cosA * x2 + pos.X, y1 + pos.Y, sinA * x2 + pos.Z, nameTex.U2, nameTex.V1 ); + api.texVerts[1] = new VertexPos3fTex2f( cosA * x2 + pos.X, y2 + pos.Y, sinA * x2 + pos.Z, nameTex.U2, nameTex.V2 ); + api.texVerts[2] = new VertexPos3fTex2f( cosA * x1 + pos.X, y1 + pos.Y, sinA * x1 + pos.Z, nameTex.U1, nameTex.V1 ); + api.texVerts[3] = new VertexPos3fTex2f( cosA * x1 + pos.X, y2 + pos.Y, sinA * x1 + pos.Z, nameTex.U1, nameTex.V2 ); + api.DrawDynamicVb( DrawMode.TriangleStrip, api.texVb, api.texVerts, VertexFormat.Pos3fTex2f, 4 ); + api.Texturing = false; + api.AlphaTest = false; + } + } +} \ No newline at end of file diff --git a/Entities/Player.cs b/Entities/Player.cs index c33c0c8d8..affda696e 100644 --- a/Entities/Player.cs +++ b/Entities/Player.cs @@ -7,7 +7,7 @@ using ClassicalSharp.Renderers; namespace ClassicalSharp { - public abstract class Player : Entity { + public abstract partial class Player : Entity { public const float EyeHeight = 1.625f; @@ -18,8 +18,7 @@ namespace ClassicalSharp { public Game Window; public string DisplayName, SkinName; - public SkinType SkinType; - protected PlayerRenderer renderer; + public SkinType SkinType; public Player( Game window ) : base( window ) { Window = window; @@ -93,22 +92,22 @@ namespace ClassicalSharp { Window.AsyncDownloader.TryGetItem( "skin_" + SkinName, out item ); if( item != null && item.Bmp != null ) { Bitmap bmp = item.Bmp; - Window.Graphics.DeleteTexture( ref renderer.PlayerTextureId ); + Window.Graphics.DeleteTexture( ref PlayerTextureId ); try { SkinType = Utils.GetSkinType( bmp ); - renderer.PlayerTextureId = Window.Graphics.LoadTexture( bmp ); - renderer.MobTextureId = -1; + PlayerTextureId = Window.Graphics.LoadTexture( bmp ); + MobTextureId = -1; // Custom mob textures. if( Utils.IsUrl( item.Url ) && item.TimeAdded > lastModelChange ) { - renderer.MobTextureId = renderer.PlayerTextureId; + MobTextureId = PlayerTextureId; } } catch( NotSupportedException ) { string formatString = "Skin {0} has unsupported dimensions({1}, {2}), reverting to default."; Utils.LogWarning( formatString, SkinName, bmp.Width, bmp.Height ); - renderer.MobTextureId = -1; - renderer.PlayerTextureId = -1; + MobTextureId = -1; + PlayerTextureId = -1; SkinType = Window.DefaultPlayerSkinType; } bmp.Dispose(); @@ -121,9 +120,7 @@ namespace ClassicalSharp { ModelName = modelName; Model = Window.ModelCache.GetModel( ModelName ); lastModelChange = DateTime.UtcNow; - if( renderer != null ) { - renderer.MobTextureId = -1; - } + MobTextureId = -1; } } } \ No newline at end of file diff --git a/GraphicsAPI/IGraphicsApi.cs b/GraphicsAPI/IGraphicsApi.cs index 6c95c8bcd..b88865094 100644 --- a/GraphicsAPI/IGraphicsApi.cs +++ b/GraphicsAPI/IGraphicsApi.cs @@ -184,8 +184,8 @@ namespace ClassicalSharp.GraphicsAPI { DrawDynamicVb( DrawMode.TriangleStrip, quadVb, quadVertices, VertexFormat.Pos3fCol4b, 4 ); } - VertexPos3fTex2f[] texVertices = new VertexPos3fTex2f[4]; - int texVb; + internal VertexPos3fTex2f[] texVerts = new VertexPos3fTex2f[4]; + internal int texVb; public virtual void Draw2DTexture( ref Texture tex ) { float x1 = tex.X1, y1 = tex.Y1, x2 = tex.X2, y2 = tex.Y2; #if USE_DX @@ -197,11 +197,11 @@ namespace ClassicalSharp.GraphicsAPI { y2 -= 0.5f; #endif // Have to order them this way because it's a triangle strip. - texVertices[0] = new VertexPos3fTex2f( x2, y1, 0, tex.U2, tex.V1 ); - texVertices[1] = new VertexPos3fTex2f( x2, y2, 0, tex.U2, tex.V2 ); - texVertices[2] = new VertexPos3fTex2f( x1, y1, 0, tex.U1, tex.V1 ); - texVertices[3] = new VertexPos3fTex2f( x1, y2, 0, tex.U1, tex.V2 ); - DrawDynamicVb( DrawMode.TriangleStrip, texVb, texVertices, VertexFormat.Pos3fTex2f, 4 ); + texVerts[0] = new VertexPos3fTex2f( x2, y1, 0, tex.U2, tex.V1 ); + texVerts[1] = new VertexPos3fTex2f( x2, y2, 0, tex.U2, tex.V2 ); + texVerts[2] = new VertexPos3fTex2f( x1, y1, 0, tex.U1, tex.V1 ); + texVerts[3] = new VertexPos3fTex2f( x1, y2, 0, tex.U1, tex.V2 ); + DrawDynamicVb( DrawMode.TriangleStrip, texVb, texVerts, VertexFormat.Pos3fTex2f, 4 ); } public void Mode2D( float width, float height ) { diff --git a/GraphicsAPI/OpenGLApi.cs b/GraphicsAPI/OpenGLApi.cs index f28eb38d4..5b9e4097e 100644 --- a/GraphicsAPI/OpenGLApi.cs +++ b/GraphicsAPI/OpenGLApi.cs @@ -1,4 +1,5 @@ -using System; +#if !USE_DX +using System; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropServices; @@ -421,4 +422,5 @@ namespace ClassicalSharp.GraphicsAPI { Gl.glDisable( EnableCap.Texture2D ); } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/Model/BlockModel.cs b/Model/BlockModel.cs index a03415a26..09d2ad83d 100644 --- a/Model/BlockModel.cs +++ b/Model/BlockModel.cs @@ -26,7 +26,7 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -0.5f, 0f, -0.5f, 0.5f, blockHeight, 0.5f ); } } - protected override void DrawPlayerModel( Player player, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player player ) { graphics.Texturing = true; graphics.AlphaTest = true; block = Byte.Parse( player.ModelName ); diff --git a/Model/ChickenModel.cs b/Model/ChickenModel.cs index ef274b7a0..2134a122c 100644 --- a/Model/ChickenModel.cs +++ b/Model/ChickenModel.cs @@ -62,9 +62,9 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -4 / 16f, 0, -8 / 16f, 4 / 16f, 15 / 16f, 4 / 16f ); } } - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); graphics.AlphaTest = true; diff --git a/Model/CreeperModel.cs b/Model/CreeperModel.cs index dee2ab1bd..89ffefc04 100644 --- a/Model/CreeperModel.cs +++ b/Model/CreeperModel.cs @@ -45,9 +45,9 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -4 / 16f, 0, -6 / 16f, 4 / 16f, 26 / 16f, 6 / 16f ); } } - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); DrawRotate( 0, 1.125f, 0, -p.PitchRadians, 0, 0, Head ); diff --git a/Model/IModel.cs b/Model/IModel.cs index fdb91d605..e60a3370a 100644 --- a/Model/IModel.cs +++ b/Model/IModel.cs @@ -23,15 +23,15 @@ namespace ClassicalSharp.Model { public abstract BoundingBox PickingBounds { get; } - public void RenderModel( Player p, PlayerRenderer renderer ) { + public void RenderModel( Player p ) { graphics.PushMatrix(); Matrix4 mat = Matrix4.RotateY( -p.YawRadians ) * Matrix4.Translate( p.Position ); graphics.MultiplyMatrix( ref mat ); - DrawPlayerModel( p, renderer ); + DrawPlayerModel( p ); graphics.PopMatrix(); } - protected abstract void DrawPlayerModel( Player p, PlayerRenderer renderer ); + protected abstract void DrawPlayerModel( Player p ); public abstract void Dispose(); diff --git a/Model/PigModel.cs b/Model/PigModel.cs index a5447bc8d..4d314ad7b 100644 --- a/Model/PigModel.cs +++ b/Model/PigModel.cs @@ -45,9 +45,9 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -5 / 16f, 0, -14 / 16f, 5 / 16f, 16 / 16f, 9 / 16f ); } } - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); DrawRotate( 0, 0.75f, -0.375f, -p.PitchRadians, 0, 0, Head ); diff --git a/Model/PlayerModel.cs b/Model/PlayerModel.cs index 47cc9903a..097cb4126 100644 --- a/Model/PlayerModel.cs +++ b/Model/PlayerModel.cs @@ -88,9 +88,9 @@ namespace ClassicalSharp.Model { } ModelSet model; - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.PlayerTextureId <= 0 ? DefaultTexId : renderer.PlayerTextureId; + int texId = p.PlayerTextureId <= 0 ? DefaultTexId : p.PlayerTextureId; graphics.Bind2DTexture( texId ); SkinType skinType = p.SkinType; model = Set64x32; diff --git a/Model/SheepModel.cs b/Model/SheepModel.cs index 1bf1a7598..4544a9283 100644 --- a/Model/SheepModel.cs +++ b/Model/SheepModel.cs @@ -69,9 +69,9 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -6 / 16f, 0, -13 / 16f, 6 / 16f, 23 / 16f, 10 / 16f ); } } - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); DrawRotate( 0, 1.125f, -0.5f, -p.PitchRadians, 0, 0, Head ); diff --git a/Model/SkeletonModel.cs b/Model/SkeletonModel.cs index 4a3b3c27b..5c9a44053 100644 --- a/Model/SkeletonModel.cs +++ b/Model/SkeletonModel.cs @@ -57,10 +57,10 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -4 / 16f, 0, -4 / 16f, 4 / 16f, 32 / 16f, 4 / 16f ); } } - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; graphics.AlphaTest = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); DrawRotate( 0, 1.5f, 0, -p.PitchRadians, 0, 0, Head ); diff --git a/Model/SpiderModel.cs b/Model/SpiderModel.cs index ad1db8211..db11c1714 100644 --- a/Model/SpiderModel.cs +++ b/Model/SpiderModel.cs @@ -50,9 +50,9 @@ namespace ClassicalSharp.Model { const float quarterPi = (float)( Math.PI / 4 ); const float eighthPi = (float)( Math.PI / 8 ); - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); graphics.AlphaTest = true; diff --git a/Model/ZombieModel.cs b/Model/ZombieModel.cs index db3b45c90..774307570 100644 --- a/Model/ZombieModel.cs +++ b/Model/ZombieModel.cs @@ -57,9 +57,9 @@ namespace ClassicalSharp.Model { get { return new BoundingBox( -4 / 16f, 0, -4 / 16f, 4 / 16f, 32 / 16f, 4 / 16f ); } } - protected override void DrawPlayerModel( Player p, PlayerRenderer renderer ) { + protected override void DrawPlayerModel( Player p ) { graphics.Texturing = true; - int texId = renderer.MobTextureId <= 0 ? DefaultTexId : renderer.MobTextureId; + int texId = p.MobTextureId <= 0 ? DefaultTexId : p.MobTextureId; graphics.Bind2DTexture( texId ); DrawRotate( 0, 1.5f, 0, -p.PitchRadians, 0, 0, Head ); diff --git a/OpenTK/Graphics/OpenGL/GLDelegates.cs b/OpenTK/Graphics/OpenGL/GLDelegates.cs index a590df939..f651366f4 100644 --- a/OpenTK/Graphics/OpenGL/GLDelegates.cs +++ b/OpenTK/Graphics/OpenGL/GLDelegates.cs @@ -215,10 +215,6 @@ namespace OpenTK.Graphics.OpenGL { public delegate void TexImage2D(TextureTarget target, Int32 level, PixelInternalFormat publicformat, Int32 width, Int32 height, Int32 border, PixelFormat format, PixelType type, IntPtr pixels); public static TexImage2D glTexImage2D; - [SuppressUnmanagedCodeSecurity()] - public delegate void TexParameterf(TextureTarget target, TextureParameterName pname, Single param); - public static TexParameterf glTexParameterf; - [SuppressUnmanagedCodeSecurity()] public delegate void TexParameteri(TextureTarget target, TextureParameterName pname, Int32 param); public static TexParameteri glTexParameteri; diff --git a/OpenTK/Graphics/OpenGL/GLHelper.cs b/OpenTK/Graphics/OpenGL/GLHelper.cs index ef3f4db37..94bfa3a46 100644 --- a/OpenTK/Graphics/OpenGL/GLHelper.cs +++ b/OpenTK/Graphics/OpenGL/GLHelper.cs @@ -84,7 +84,6 @@ namespace OpenTK.Graphics.OpenGL //LoadDelegate( "glShadeModel", out Delegates.glShadeModel ); LoadDelegate( "glTexCoordPointer", out Delegates.glTexCoordPointer ); LoadDelegate( "glTexImage2D", out Delegates.glTexImage2D ); - //LoadDelegate( "glTexParameterf", out Delegates.glTexParameterf ); LoadDelegate( "glTexParameteri", out Delegates.glTexParameteri ); LoadDelegate( "glTexSubImage2D", out Delegates.glTexSubImage2D ); LoadDelegate( "glVertexPointer", out Delegates.glVertexPointer ); diff --git a/OpenTK/Platform/Windows/Wgl.cs b/OpenTK/Platform/Windows/Wgl.cs index 041004c2f..810346053 100644 --- a/OpenTK/Platform/Windows/Wgl.cs +++ b/OpenTK/Platform/Windows/Wgl.cs @@ -3,8 +3,6 @@ using System.Runtime.InteropServices; using System.Security; namespace OpenTK.Platform.Windows { - - #pragma warning disable 0649 internal partial class Wgl : BindingsBase { @@ -25,29 +23,35 @@ namespace OpenTK.Platform.Windows { } } - [SuppressUnmanagedCodeSecurity()] + [SuppressUnmanagedCodeSecurity] internal delegate Boolean SwapIntervalEXT(int interval); internal static SwapIntervalEXT wglSwapIntervalEXT; - [SuppressUnmanagedCodeSecurity()] + + [SuppressUnmanagedCodeSecurity] internal delegate int GetSwapIntervalEXT(); internal static GetSwapIntervalEXT wglGetSwapIntervalEXT; - [SuppressUnmanagedCodeSecurity()] + [SuppressUnmanagedCodeSecurity] [DllImport(Library, SetLastError = true)] internal extern static IntPtr wglCreateContext(IntPtr hDc); - [SuppressUnmanagedCodeSecurity()] + + [SuppressUnmanagedCodeSecurity] [DllImport(Library, SetLastError = true)] internal extern static Boolean wglDeleteContext(IntPtr oldContext); - [SuppressUnmanagedCodeSecurity()] + + [SuppressUnmanagedCodeSecurity] [DllImport(Library, SetLastError = true)] internal extern static IntPtr wglGetCurrentContext(); - [SuppressUnmanagedCodeSecurity()] + + [SuppressUnmanagedCodeSecurity] [DllImport(Library, SetLastError = true)] internal extern static Boolean wglMakeCurrent(IntPtr hDc, IntPtr newContext); - [SuppressUnmanagedCodeSecurity()] + + [SuppressUnmanagedCodeSecurity] [DllImport(Library, SetLastError = true)] internal extern static IntPtr wglGetCurrentDC(); - [SuppressUnmanagedCodeSecurity()] + + [SuppressUnmanagedCodeSecurity] [DllImport(Library, SetLastError = true)] internal extern static IntPtr wglGetProcAddress(String lpszProc); } diff --git a/Rendering/PlayerRenderer.cs b/Rendering/PlayerRenderer.cs deleted file mode 100644 index 094f687f9..000000000 --- a/Rendering/PlayerRenderer.cs +++ /dev/null @@ -1,64 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using ClassicalSharp.GraphicsAPI; -using OpenTK; - -namespace ClassicalSharp.Renderers { - - public class PlayerRenderer { - - public Game Window; - public IGraphicsApi Graphics; - public Player Player; - Texture nameTexture; - float nameWidth, nameHeight; - public int PlayerTextureId = -1, MobTextureId = -1; - int nameTextureId = -1; - - public PlayerRenderer( Player player, Game window ) { - Player = player; - Window = window; - Graphics = window.Graphics; - - using( Font font = new Font( "Arial", 14 ) ) { - DrawTextArgs args = new DrawTextArgs( Graphics, player.DisplayName, true ); - nameTexture = Utils2D.MakeTextTexture( font, 0, 0, ref args ); - nameWidth = nameTexture.Width; - nameHeight = nameTexture.Height; - nameTextureId = nameTexture.ID; - } - } - - public void Dispose() { - Graphics.DeleteTexture( ref PlayerTextureId ); - Graphics.DeleteTexture( ref nameTextureId ); - } - - public void Render( double deltaTime ) { - Player.Model.RenderModel( Player, this ); - DrawName(); - } - - const float nameScale = 1 / 50f; - private void DrawName() { - Vector3 pos = Player.Position; - Graphics.PushMatrix(); - Matrix4 mat = Matrix4.Translate( pos.X, pos.Y + Player.Model.NameYOffset, pos.Z ); - // Do this to always have names facing the player - float yaw = Window.LocalPlayer.YawRadians; - mat = Matrix4.RotateY( 0f - yaw ) * mat; - // NOTE: Do this instead with network player's yaw to have names rotate with them instead. - //Graphics.RotateY( 180f - yaw ); - mat = Matrix4.Scale( nameScale, -nameScale, nameScale ) * mat; // -y to flip text - mat = Matrix4.Translate( -nameWidth / 2f, -nameHeight, 0f ) * mat; - Graphics.MultiplyMatrix( ref mat ); - Graphics.Texturing = true; - nameTexture.Render( Graphics ); - - Graphics.PopMatrix(); - Graphics.Texturing = false; - Graphics.AlphaTest = false; - } - } -} \ No newline at end of file diff --git a/Utils/MinimalEnvRenderer.cs b/Utils/MinimalEnvRenderer.cs new file mode 100644 index 000000000..0a49f9a8c --- /dev/null +++ b/Utils/MinimalEnvRenderer.cs @@ -0,0 +1,40 @@ +using System; + +namespace ClassicalSharp.Renderers { + + /// Minimialistic environment renderer - only sets the clear colour to be sky colour. + /// (no fog, clouds, or proper overhead sky) + public class MinimalEnvRenderer : EnvRenderer { + + public MinimalEnvRenderer( Game window ) { + Window = window; + Map = Window.Map; + } + + public override void Render( double deltaTime ) { + Graphics.ClearColour( Map.SkyCol ); + } + + public override void Init() { + base.Init(); + Graphics.Fog = false; + Graphics.ClearColour( Map.SkyCol ); + } + + public override void OnNewMap( object sender, EventArgs e ) { + } + + public override void OnNewMapLoaded( object sender, EventArgs e ) { + Graphics.ClearColour( Map.SkyCol ); + } + + protected override void CloudsColourChanged() { + } + + protected override void FogColourChanged() { + } + + protected override void SkyColourChanged() { + } + } +}