From dab0e31bfc9501cbc44ca14da1cba2bc6ee06c15 Mon Sep 17 00:00:00 2001 From: UnknownShadow200 Date: Sat, 29 Aug 2015 11:54:55 +1000 Subject: [PATCH] More code XML comments. --- ClassicalSharp/Blocks/BlockInfo.cs | 1 + ClassicalSharp/Commands/CommandReader.cs | 4 +- ClassicalSharp/Commands/DefaultCommands.cs | 17 ++-- ClassicalSharp/Entities/LocationUpdate.cs | 3 +- ClassicalSharp/Entities/NetPlayer.cs | 6 +- ClassicalSharp/Game/Game.Chat.cs | 4 +- ClassicalSharp/Game/Game.Events.cs | 110 ++++++++------------- ClassicalSharp/Game/Game.cs | 4 +- ClassicalSharp/GraphicsAPI/IGraphicsApi.cs | 7 +- ClassicalSharp/GraphicsAPI/OpenGLApi.cs | 1 + ClassicalSharp/Rendering/EnvRenderer.cs | 6 +- ClassicalSharp/Rendering/MapEnvRenderer.cs | 6 +- ClassicalSharp/Rendering/MapRenderer.cs | 2 +- ClassicalSharp/Utils/FastBitmap.cs | 19 ++-- ClassicalSharp/Utils/FastColour.cs | 7 +- ClassicalSharp/Utils/TerrainAtlas1D.cs | 5 +- ClassicalSharp/Utils/TerrainAtlas2D.cs | 14 ++- ClassicalSharp/Utils/TextureRectangle.cs | 1 + ClassicalSharp/Utils/Utils.cs | 10 -- ClassicalSharp/Utils/Vector3I.cs | 1 + 20 files changed, 105 insertions(+), 123 deletions(-) diff --git a/ClassicalSharp/Blocks/BlockInfo.cs b/ClassicalSharp/Blocks/BlockInfo.cs index 1992f516e..65aeeace9 100644 --- a/ClassicalSharp/Blocks/BlockInfo.cs +++ b/ClassicalSharp/Blocks/BlockInfo.cs @@ -2,6 +2,7 @@ namespace ClassicalSharp { + /// Stores various properties about the blocks in Minecraft Classic. public partial class BlockInfo { internal bool[] isTransparent = new bool[BlocksCount]; diff --git a/ClassicalSharp/Commands/CommandReader.cs b/ClassicalSharp/Commands/CommandReader.cs index 5d2201312..ed5efc86b 100644 --- a/ClassicalSharp/Commands/CommandReader.cs +++ b/ClassicalSharp/Commands/CommandReader.cs @@ -2,6 +2,8 @@ namespace ClassicalSharp.Commands { + /// Reads and parses arguments for a client command. + /// Spaces are designated as the argument separators. public class CommandReader { string rawInput; @@ -16,7 +18,7 @@ namespace ClassicalSharp.Commands { } string arg = rawInput.Substring( curOffset, next - curOffset ); - curOffset = next + 1; // skip space + curOffset = next + 1; // skip following space return arg; } diff --git a/ClassicalSharp/Commands/DefaultCommands.cs b/ClassicalSharp/Commands/DefaultCommands.cs index c0f535099..30c404f09 100644 --- a/ClassicalSharp/Commands/DefaultCommands.cs +++ b/ClassicalSharp/Commands/DefaultCommands.cs @@ -1,13 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Drawing; -using System.Threading; -using System.IO; -using System.Text; -using ClassicalSharp.Renderers; +using System; +using System.Collections.Generic; +using System.Text; +using ClassicalSharp.Renderers; namespace ClassicalSharp.Commands { + /// Command that displays the list of all currently registered client commands. public sealed class CommandsCommand : Command { public CommandsCommand() { @@ -38,6 +36,7 @@ namespace ClassicalSharp.Commands { } } + /// Command that modifies various aspects of the environment of the current map. public sealed class EnvCommand : Command { public EnvCommand() { @@ -100,6 +99,7 @@ namespace ClassicalSharp.Commands { } } + /// Command that displays information about an input client command. public sealed class HelpCommand : Command { public HelpCommand() { @@ -209,6 +209,7 @@ namespace ClassicalSharp.Commands { } } + /// Command that modifies the font size of chat in the normal gui screen. public sealed class ChatFontSizeCommand : Command { public ChatFontSizeCommand() { @@ -239,6 +240,7 @@ namespace ClassicalSharp.Commands { } } + /// Command that modifies how sensitive the client is to changes in the mouse position. public sealed class MouseSensitivityCommand : Command { public MouseSensitivityCommand() { @@ -261,6 +263,7 @@ namespace ClassicalSharp.Commands { } } + /// Command that modifies how far the client can see. public sealed class ViewDistanceCommand : Command { public ViewDistanceCommand() { diff --git a/ClassicalSharp/Entities/LocationUpdate.cs b/ClassicalSharp/Entities/LocationUpdate.cs index 4da886e67..7fa674e1c 100644 --- a/ClassicalSharp/Entities/LocationUpdate.cs +++ b/ClassicalSharp/Entities/LocationUpdate.cs @@ -1,9 +1,10 @@ using System; -using ClassicalSharp.Model; using OpenTK; namespace ClassicalSharp { + /// Stores data that describes either a relative position, + /// full position, or an orientation update for an entity. public struct LocationUpdate { public Vector3 Pos; diff --git a/ClassicalSharp/Entities/NetPlayer.cs b/ClassicalSharp/Entities/NetPlayer.cs index 2e67eca72..e695e79cc 100644 --- a/ClassicalSharp/Entities/NetPlayer.cs +++ b/ClassicalSharp/Entities/NetPlayer.cs @@ -1,6 +1,6 @@ -using System; -using ClassicalSharp.Renderers; -using OpenTK; +using System; +using ClassicalSharp.Renderers; +using OpenTK; namespace ClassicalSharp { diff --git a/ClassicalSharp/Game/Game.Chat.cs b/ClassicalSharp/Game/Game.Chat.cs index 7cee707ab..9e0ae756c 100644 --- a/ClassicalSharp/Game/Game.Chat.cs +++ b/ClassicalSharp/Game/Game.Chat.cs @@ -38,7 +38,7 @@ namespace ClassicalSharp { LogChatToFile( text ); chatArgs.Text = text; chatArgs.Type = CpeMessage.Normal; - RaiseEvent( ChatReceived, chatArgs ); + Raise( ChatReceived, chatArgs ); } ChatEventArgs chatArgs = new ChatEventArgs(); @@ -63,7 +63,7 @@ namespace ClassicalSharp { } chatArgs.Text = text; chatArgs.Type = type; - RaiseEvent( ChatReceived, chatArgs ); + Raise( ChatReceived, chatArgs ); } DateTime last = new DateTime( 1, 1, 1 ); diff --git a/ClassicalSharp/Game/Game.Events.cs b/ClassicalSharp/Game/Game.Events.cs index 716646c04..f7e537429 100644 --- a/ClassicalSharp/Game/Game.Events.cs +++ b/ClassicalSharp/Game/Game.Events.cs @@ -1,104 +1,78 @@ -using System; -using ClassicalSharp; -using OpenTK; +using System; namespace ClassicalSharp { public partial class Game { - /// Raised when a player is spawned in the current world. + /// Raised when an entity is spawned in the current world. public event EventHandler EntityAdded; + internal void RaiseEntityAdded( byte id ) { idArgs.Id = id; Raise( EntityAdded, idArgs ); } - /// Raised when a player is despawned from the current world. + /// Raised when an entity is despawned from the current world. public event EventHandler EntityRemoved; + internal void RaiseEntityRemoved( byte id ) { idArgs.Id = id; Raise( EntityRemoved, idArgs ); } + /// Raised when a new CPE player list entry is created. public event EventHandler CpeListInfoAdded; + internal void RaiseCpeListInfoAdded( byte id ) { idArgs.Id = id; Raise( CpeListInfoAdded, idArgs ); } + /// Raised when a CPE player list entry is modified. public event EventHandler CpeListInfoChanged; + internal void RaiseCpeListInfoChanged( byte id ) { idArgs.Id = id; Raise( CpeListInfoChanged, idArgs ); } + /// Raised when a CPE player list entry is removed. public event EventHandler CpeListInfoRemoved; + internal void RaiseCpeListInfoRemoved( byte id ) { idArgs.Id = id; Raise( CpeListInfoRemoved, idArgs ); } + + /// Raised when the client joins and begins loading a new map. + public event EventHandler OnNewMap; + internal void RaiseOnNewMap() { Raise( OnNewMap ); } + + /// Raised when a portion of the map is read and decompressed by the client. public event EventHandler MapLoading; + internal void RaiseMapLoading( byte progress ) { loadingArgs.Progress = progress; Raise( MapLoading, loadingArgs ); } + /// Raised when the client has finished loading a new map and can now interact with it. + public event EventHandler OnNewMapLoaded; + internal void RaiseOnNewMapLoaded() { Raise( OnNewMapLoaded ); } + + + /// Raised when the terrain atlas ("terrain.png") is changed. + public event EventHandler TerrainAtlasChanged; + + /// Raised when an environment variable is changed by the user, CPE, or WoM config. public event EventHandler EnvVariableChanged; + internal void RaiseEnvVariableChanged( EnvVariable envVar ) { envArgs.Var = envVar; Raise( EnvVariableChanged, envArgs ); } + /// Raised when the user changed their view/fog distance. public event EventHandler ViewDistanceChanged; - public event EventHandler OnNewMap; - - public event EventHandler OnNewMapLoaded; + /// Raised when the held block is changed by the user or by CPE. public event EventHandler HeldBlockChanged; + internal void RaiseHeldBlockChanged() { Raise( HeldBlockChanged ); } /// Raised when the client's block permissions(can place or delete a block) change. public event EventHandler BlockPermissionsChanged; + internal void RaiseBlockPermissionsChanged() { Raise( BlockPermissionsChanged ); } - /// Raised when the terrain atlas("terrain.png") is changed. - public event EventHandler TerrainAtlasChanged; - - public event EventHandler ChatReceived; - - internal void RaiseOnNewMap() { - RaiseEvent( OnNewMap ); - } - - internal void RaiseHeldBlockChanged() { - RaiseEvent( HeldBlockChanged ); - } + /// Raised when the server or a client-side command sends a message. + public event EventHandler ChatReceived; + + // Cache event instances so we don't create needless new objects. IdEventArgs idArgs = new IdEventArgs( 0 ); - internal void RaiseEntityAdded( byte id ) { - idArgs.Id = id; - RaiseEvent( EntityAdded, idArgs ); - } - - internal void RaiseEntityRemoved( byte id ) { - idArgs.Id = id; - RaiseEvent( EntityRemoved, idArgs ); - } - - internal void RaiseCpeListInfoAdded( byte id ) { - idArgs.Id = id; - RaiseEvent( CpeListInfoAdded, idArgs ); - } - - internal void RaiseCpeListInfoChanged( byte id ) { - idArgs.Id = id; - RaiseEvent( CpeListInfoChanged, idArgs ); - } - - internal void RaiseCpeListInfoRemoved( byte id ) { - idArgs.Id = id; - RaiseEvent( CpeListInfoRemoved, idArgs ); - } - - internal void RaiseBlockPermissionsChanged() { - RaiseEvent( BlockPermissionsChanged ); - } - - internal void RaiseOnNewMapLoaded() { - RaiseEvent( OnNewMapLoaded ); - } - - MapLoadingEventArgs loadingArgs = new MapLoadingEventArgs( 0 ); - internal void RaiseMapLoading( byte progress ) { - loadingArgs.Progress = progress; - RaiseEvent( MapLoading, loadingArgs ); - } - + MapLoadingEventArgs loadingArgs = new MapLoadingEventArgs( 0 ); EnvVariableEventArgs envArgs = new EnvVariableEventArgs( 0 ); - internal void RaiseEnvVariableChanged( EnvVariable variable ) { - envArgs.Variable = variable; - RaiseEvent( EnvVariableChanged, envArgs ); - } - - void RaiseEvent( EventHandler handler ) { + + void Raise( EventHandler handler ) { if( handler != null ) { handler( this, EventArgs.Empty ); } } - void RaiseEvent( EventHandler handler, T args ) where T : EventArgs { + void Raise( EventHandler handler, T args ) where T : EventArgs { if( handler != null ) { handler( this, args ); } @@ -132,10 +106,10 @@ namespace ClassicalSharp { public sealed class EnvVariableEventArgs : EventArgs { - public EnvVariable Variable; + public EnvVariable Var; public EnvVariableEventArgs( EnvVariable variable ) { - Variable = variable; + Var = variable; } } diff --git a/ClassicalSharp/Game/Game.cs b/ClassicalSharp/Game/Game.cs index 379221239..94e351453 100644 --- a/ClassicalSharp/Game/Game.cs +++ b/ClassicalSharp/Game/Game.cs @@ -103,7 +103,7 @@ namespace ClassicalSharp { public void ChangeTerrainAtlas( Bitmap newAtlas ) { LoadAtlas( newAtlas ); - RaiseEvent( TerrainAtlasChanged ); + Raise( TerrainAtlasChanged ); } void PrintGraphicsInfo() { @@ -172,7 +172,7 @@ namespace ClassicalSharp { public void SetViewDistance( int distance ) { ViewDistance = distance; Utils.LogDebug( "setting view distance to: " + distance ); - RaiseEvent( ViewDistanceChanged ); + Raise( ViewDistanceChanged ); UpdateProjection(); } diff --git a/ClassicalSharp/GraphicsAPI/IGraphicsApi.cs b/ClassicalSharp/GraphicsAPI/IGraphicsApi.cs index b5a1b86cc..7b8c8a4e2 100644 --- a/ClassicalSharp/GraphicsAPI/IGraphicsApi.cs +++ b/ClassicalSharp/GraphicsAPI/IGraphicsApi.cs @@ -8,10 +8,11 @@ using OpenTK.Graphics.OpenGL; namespace ClassicalSharp.GraphicsAPI { + /// Abstracts a 3D graphics rendering API. + /// Only Direct3D9 and OpenGL support are implemented. public abstract class IGraphicsApi { - /// Maximum supported length of a dimension - /// (i.e. max width and max height) in a 2D texture. + /// Maximum supported length of a dimension (width and height) of a 2D texture. public abstract int MaxTextureDimensions { get; } public abstract bool Texturing { set; } @@ -227,7 +228,7 @@ namespace ClassicalSharp.GraphicsAPI { AlphaBlending = false; } - public unsafe int MakeDefaultIb() { + internal unsafe int MakeDefaultIb() { const int maxIndices = 65536 / 4 * 6; int element = 0; ushort* indices = stackalloc ushort[maxIndices]; diff --git a/ClassicalSharp/GraphicsAPI/OpenGLApi.cs b/ClassicalSharp/GraphicsAPI/OpenGLApi.cs index 3f26f59cd..a52d95fd0 100644 --- a/ClassicalSharp/GraphicsAPI/OpenGLApi.cs +++ b/ClassicalSharp/GraphicsAPI/OpenGLApi.cs @@ -18,6 +18,7 @@ namespace ClassicalSharp.GraphicsAPI { textureDimensions = texDims; string extensions = new String( (sbyte*)GL.GetString( StringName.Extensions ) ); + // NOTE: Not sure if there are any >= 1.5 drivers that support vbos but don't expose the ARB extension. if( !extensions.Contains( "GL_ARB_vertex_buffer_object" ) ) { Utils.LogError( "ClassicalSharp post 0.6 version requires OpenGL VBOs." ); Utils.LogWarning( "You may need to install and/or update your video card drivers." ); diff --git a/ClassicalSharp/Rendering/EnvRenderer.cs b/ClassicalSharp/Rendering/EnvRenderer.cs index dc770b5c1..0b3c8dbfe 100644 --- a/ClassicalSharp/Rendering/EnvRenderer.cs +++ b/ClassicalSharp/Rendering/EnvRenderer.cs @@ -31,11 +31,11 @@ namespace ClassicalSharp.Renderers { public abstract void Render( double deltaTime ); void EnvVariableChanged( object sender, EnvVariableEventArgs e ) { - if( e.Variable == EnvVariable.SkyColour ) { + if( e.Var == EnvVariable.SkyColour ) { SkyColourChanged(); - } else if( e.Variable == EnvVariable.FogColour ) { + } else if( e.Var == EnvVariable.FogColour ) { FogColourChanged(); - } else if( e.Variable == EnvVariable.CloudsColour ) { + } else if( e.Var == EnvVariable.CloudsColour ) { CloudsColourChanged(); } } diff --git a/ClassicalSharp/Rendering/MapEnvRenderer.cs b/ClassicalSharp/Rendering/MapEnvRenderer.cs index 9acc3e592..d1de231f9 100644 --- a/ClassicalSharp/Rendering/MapEnvRenderer.cs +++ b/ClassicalSharp/Rendering/MapEnvRenderer.cs @@ -89,11 +89,11 @@ namespace ClassicalSharp { } void EnvVariableChanged( object sender, EnvVariableEventArgs e ) { - if( e.Variable == EnvVariable.EdgeBlock ) { + if( e.Var == EnvVariable.EdgeBlock ) { MakeTexture( ref edgeTexId, ref lastEdgeTexLoc, Map.EdgeBlock ); - } else if( e.Variable == EnvVariable.SidesBlock ) { + } else if( e.Var == EnvVariable.SidesBlock ) { MakeTexture( ref sideTexId, ref lastSideTexLoc, Map.SidesBlock ); - } else if( e.Variable == EnvVariable.WaterLevel ) { + } else if( e.Var == EnvVariable.WaterLevel ) { ResetSidesAndEdges( null, null ); } } diff --git a/ClassicalSharp/Rendering/MapRenderer.cs b/ClassicalSharp/Rendering/MapRenderer.cs index 2a81fc435..326a910f8 100644 --- a/ClassicalSharp/Rendering/MapRenderer.cs +++ b/ClassicalSharp/Rendering/MapRenderer.cs @@ -66,7 +66,7 @@ namespace ClassicalSharp { } void EnvVariableChanged( object sender, EnvVariableEventArgs e ) { - if( e.Variable == EnvVariable.SunlightColour || e.Variable == EnvVariable.ShadowlightColour ) { + if( e.Var == EnvVariable.SunlightColour || e.Var == EnvVariable.ShadowlightColour ) { Refresh(); } } diff --git a/ClassicalSharp/Utils/FastBitmap.cs b/ClassicalSharp/Utils/FastBitmap.cs index d43de1aeb..4b4f6201c 100644 --- a/ClassicalSharp/Utils/FastBitmap.cs +++ b/ClassicalSharp/Utils/FastBitmap.cs @@ -4,6 +4,7 @@ using System.Drawing.Imaging; namespace ClassicalSharp { + /// Wrapper around a bitmap that allows extremely fast manipulation of 32bpp images. public unsafe class FastBitmap : IDisposable { public FastBitmap( Bitmap bmp, bool lockBits ) { @@ -57,19 +58,19 @@ namespace ClassicalSharp { } } - public int GetPixel( int x, int y ) { - // TODO: Does this work with big-endian systems? - int* row = (int*)( scan0Byte + ( y * Stride ) ); - return row[x]; // b g r a - } - + /// Returns a pointer to the start of the y'th scanline. public int* GetRowPtr( int y ) { return (int*)( scan0Byte + ( y * Stride ) ); } - public void SetPixel( int x, int y, int col ) { - int* row = (int*)( scan0Byte + ( y * Stride ) ); - row[x] = col; + internal static void MovePortion( int srcX, int srcY, int dstX, int dstY, FastBitmap src, FastBitmap dst, int size ) { + for( int y = 0; y < size; y++ ) { + int* srcRow = src.GetRowPtr( srcY + y ); + int* dstRow = dst.GetRowPtr( dstY + y ); + for( int x = 0; x < size; x++ ) { + dstRow[dstX + x] = srcRow[srcX + x]; + } + } } } } \ No newline at end of file diff --git a/ClassicalSharp/Utils/FastColour.cs b/ClassicalSharp/Utils/FastColour.cs index 33f8a7854..b27519095 100644 --- a/ClassicalSharp/Utils/FastColour.cs +++ b/ClassicalSharp/Utils/FastColour.cs @@ -1,9 +1,10 @@ -using System; -using System.Drawing; -using OpenTK.Graphics; +using System; +using System.Drawing; namespace ClassicalSharp { + /// Structure that can be used for quick manipulations of A/R/G/B colours. + /// This structure is **not** suitable for interop with OpenGL or Direct3D. public struct FastColour { public byte A, R, G, B; diff --git a/ClassicalSharp/Utils/TerrainAtlas1D.cs b/ClassicalSharp/Utils/TerrainAtlas1D.cs index 31b03bdc5..2762568c2 100644 --- a/ClassicalSharp/Utils/TerrainAtlas1D.cs +++ b/ClassicalSharp/Utils/TerrainAtlas1D.cs @@ -4,7 +4,8 @@ using ClassicalSharp.GraphicsAPI; namespace ClassicalSharp { - public class TerrainAtlas1D : IDisposable { + /// Represents a 2D packed texture atlas that has been converted into an array of 1D atlases. + public sealed class TerrainAtlas1D : IDisposable { int usedElementsPerAtlas1D; internal int elementsPerBitmap; @@ -52,7 +53,7 @@ namespace ClassicalSharp { for( int y_1D = 0; y_1D < usedElementsPerAtlas1D; y_1D++ ) { int x = index & 0x0F; int y = index >> 4; - Utils.MovePortion( x * elemSize, y * elemSize, 0, y_1D * elemSize, atlas, dst, elemSize ); + FastBitmap.MovePortion( x * elemSize, y * elemSize, 0, y_1D * elemSize, atlas, dst, elemSize ); index++; } TexIds[i] = graphics.CreateTexture( dst ); diff --git a/ClassicalSharp/Utils/TerrainAtlas2D.cs b/ClassicalSharp/Utils/TerrainAtlas2D.cs index f7fa925bf..74d30e962 100644 --- a/ClassicalSharp/Utils/TerrainAtlas2D.cs +++ b/ClassicalSharp/Utils/TerrainAtlas2D.cs @@ -14,6 +14,7 @@ namespace ClassicalSharp { public const int Sides = 6; } + /// Represents a 2D packed texture atlas, specifically for terrain.png. public class TerrainAtlas2D : IDisposable { public const int ElementsPerRow = 16, RowsCount = 16; @@ -40,10 +41,12 @@ namespace ClassicalSharp { public int LoadTextureElement( int index ) { int x = index & 0x0F; int y = index >> 4; + int size = elementSize; + using( FastBitmap atlas = new FastBitmap( AtlasBitmap, true ) ) { - using( Bitmap bmp = new Bitmap( elementSize, elementSize ) ) { + using( Bitmap bmp = new Bitmap( size, size ) ) { using( FastBitmap dst = new FastBitmap( bmp, true ) ) { - Utils.MovePortion( x * elementSize, y * elementSize, 0, 0, atlas, dst, elementSize ); + FastBitmap.MovePortion( x * size, y * size, 0, 0, atlas, dst, size ); return graphics.CreateTexture( dst ); } } @@ -67,15 +70,16 @@ namespace ClassicalSharp { static ushort[] rowFlags = { 0xFFFF, 0xFFEE, 0xFFE0, 0xFFE0, 0xFFFF, 0xFA00 }; void MakeOptimisedTexture( FastBitmap atlas ) { int srcIndex = 0, destIndex = 0; + int size = elementSize; for( int y = 0; y < 6; y++ ) { int flags = rowFlags[y]; for( int x = 0; x < ElementsPerRow; x++ ) { bool isUsed = ( flags & 1 << ( 15 - x ) ) != 0; if( isUsed && srcIndex != destIndex ) { - int dstX = ( destIndex & 0x0F ) * elementSize; - int dstY = ( destIndex >> 4 ) * elementSize; - Utils.MovePortion( x * elementSize, y * elementSize, dstX, dstY, atlas, atlas, elementSize ); + int dstX = ( destIndex & 0x0F ) * size; + int dstY = ( destIndex >> 4 ) * size; + FastBitmap.MovePortion( x * size, y * size, dstX, dstY, atlas, atlas, size ); } srcIndex++; diff --git a/ClassicalSharp/Utils/TextureRectangle.cs b/ClassicalSharp/Utils/TextureRectangle.cs index 7320799fb..e29b410a0 100644 --- a/ClassicalSharp/Utils/TextureRectangle.cs +++ b/ClassicalSharp/Utils/TextureRectangle.cs @@ -2,6 +2,7 @@ namespace ClassicalSharp { + /// Stores the four texture coordinates that bound a textured quad. public struct TextureRectangle { public float U1, V1, U2, V2; diff --git a/ClassicalSharp/Utils/Utils.cs b/ClassicalSharp/Utils/Utils.cs index a0e25bc00..f818b8b59 100644 --- a/ClassicalSharp/Utils/Utils.cs +++ b/ClassicalSharp/Utils/Utils.cs @@ -239,15 +239,5 @@ namespace ClassicalSharp { throw new NotSupportedException( "unsupported skin dimensions: " + bmp.Width + ", " + bmp.Height ); } } - - internal unsafe static void MovePortion( int srcX, int srcY, int dstX, int dstY, FastBitmap src, FastBitmap dst, int size ) { - for( int y = 0; y < size; y++ ) { - int* srcRow = src.GetRowPtr( srcY + y ); - int* dstRow = dst.GetRowPtr( dstY + y ); - for( int x = 0; x < size; x++ ) { - dstRow[dstX + x] = srcRow[srcX + x]; - } - } - } } } \ No newline at end of file diff --git a/ClassicalSharp/Utils/Vector3I.cs b/ClassicalSharp/Utils/Vector3I.cs index 88fd0c103..3b0300134 100644 --- a/ClassicalSharp/Utils/Vector3I.cs +++ b/ClassicalSharp/Utils/Vector3I.cs @@ -3,6 +3,7 @@ using OpenTK; namespace ClassicalSharp { + /// Represents a 3D integer vector. public struct Vector3I { public static Vector3I Zero = new Vector3I( 0, 0, 0 );