# Version history ## Version 1.8, 12 October 2007 HGE_POWERSTATUS system state added Power management recommendations added Fixed a crash when using HGE_HWNDPARENT system state hgeFont::GetPreWidth and hgeFont::GetPostWidth were added hgeFont::GetStringWidth now have additional parameter bMultiline hgeParticleSystem::SetScale and hgeParticleSystem::GetScale were added HGE now correctly handles window (de)activation done by clicking the taskbar tab HGE now correctly handles changes of desktop color depth on the fly Several potential memory leaks were fixed Several minor fixes in documentation ## Version 1.7, 30 May 2007 HGE_SHOWSPLASH system state added instead of earlier hack with (hgeIntState)14 Timer_GetFPS now returns more precise value Input_GetKeyState now correctly handles swapped mouse buttons Input_GetMousePos now returns correct values before call to System_Start Input_KeyDown and Input_KeyUp were added System_Log now accepts strings of unlimited length Resource_MakePath can now be called without argument Several potential vulnerabilities in internal rendering pipeline were fixed Gfx_SetClipping now works correctly Gfx_StartBatch can now fail and return 0 under some conditions, be aware Changing HGE_WINDOWED system state on the fly (windowed/fullscreen toggle) now works correctly. Pressing Alt+ENTER now toggles windowed/fullscreen mode HGE_FOCUSGAINFUNC now should NOT be used to restore lost render targets. Use HGE_GFXRESTOREFUNC instead. Updated to BASS 2.3 Channel_PauseAll and Channel_ResumeAll were added Channel_SlideTo and Channel_IsSliding were added Music playback now correctly handles modules that require "ramping" Music_Play now has many additional, optional parameters Music_GetLength, Music_SetPos and Music_GetPos were added Music_SetInstrVolume, Music_GetInstrVolume, Music_SetChannelVolume and Music_GetChannelVolume were added Music_SetAmplification and Music_GetAmplification were added. Music resource has new amplify parameter in resource script hgeVector::Clamp method added hgeVector::operator/ (float) added, some operators made const hgeColor is now an alias for hgeColorRGB class Some hgeColorRGB operators made const New hgeColorRGB operators: hgeColorRGB * hgeColorRGB and hgeColorRGB / float hgeColorHSV class added hgeSprite::GetWidth and hgeSprite::GetHeight were added hgeSprite::SetTextureRect now has additional adjSize parameter hgeSprite::SetFlip now has additional bHotSpot parameter hgeAnimation now looks for frames within original texture dimensions, not within dimensions of loaded into video memory texture as earlier hgeGUIListbox Render method is fixed (had potential crash) Texture resource has new mipmap parameter in resource script hgeFont constructor has new optional bMipmap parameter, Font resource has new mipmap parameter in resource script hgeFont copy constructor and assignment operator were removed and made private hgeFont was not parsing the last line of a font file. Fixed. hgeFont::SetProportion and hgeFont::GetProportion were added. Font resource has new proportion parameter in resource script hgeFont::printf and hgeFont::printfb now have buffer overrun protection hgeFont::GetStringWidth were checking only the first line of the string. Fixed. String Table File now supports comments (start them with ";") New hgeGUI methods: Move, Reset, SetColor New hgeGUIObject methods: SetColor, Reset. And new data member: color hgeParticleSystem is now completely FPS-independent. Thus FPS arguments were removed from all it's constructors, resource script and editor INI-file. See Upgrading from older HGE for details. Particle Systems Editor now supports background image via it's INI-file. Also, you may now hide the interface with the TAB key and run particle preset with the SPACE key. hgeResourceManager now correctly parses hexadecimal values starting with decimal digit. PNG Optimizer tool added ## Version 1.6, 30 August 2006 Texture_Load now has optional third parameter allowing to use automatic mipmapping Added hgeDistortionMesh methods GetRows and GetCols Fixed minor bugs in mouse routines HGE now restricts cursor movement to it's window when a mouse button is pressed Added Input_IsMouseOver function Added HGE_RENDERFUNC system state, which allows more correct behaviour in windowed mode New font file format introduced allowing to use script and artistic fonts Bitmap Font Builder authoring tool released Added hgeFont methods SetSpacing and GetSpacing Added hgeFont method printfb, allowing to render a formatted string into specified rectangle hgeFont methods Render and printf made more consistent hgeStringTable class added hgeResourceManager updated to support hgeStringTable resources and new features of hgeFont hgeGUISlider now supports vertical sliders hgeGUIListbox class added Fixed bug in Stream_Play function, added 3-rd parameter volume Tutorials updated to show HGE_RENDERFUNC callback usage Licensing changed to The zlib/libpng License ## Version 1.54, 6 May 2006 Corrected bug in Gfx_SetClipping Corrected minor bugs in hgeGUI Added implementation for constructors/destructors/operators in hgeSprite and hgeAnimation Upgraded to BASS 2.2 New HGE functions: Channel_SetPos, Channel_GetPos, Channel_GetLength Corrected framerate inconsistency in hgeAnimation Fixed compiler compatibility issues. HGE should now work with Visual Studio, GCC, and Borland C++. As a side-effect, the hgeValue union has been eliminated. String system states now have the const attribute ## Version 1.53, 26 May 2005 Minor bugs in hgeGUI fixed Global "HGE *hge" pointer is not required anymore for helper classes to work Most of helper classes now have proper copy constructors and assignment operators for easy objects cloning HGE core functions and helper class methods now have const arguments where appropriate Timer_GetTime now returns time elapsed since System_Initiate call, not since System_Start as earlier HGE_HIDEMOUSE system state added HGE_HWNDPARENT system state added allowing to run HGE in a child window. See details here. Changing HGE_TEXTUREFILTER system state now flushes previously accumulated graphics File paths now can be used with forward and back slashes within both resource packs and disk folders Resource_AttachPack now takes additional password parameter allowing to encrypt your resources HGE version and execution date are now written into log-file at startup HGE window doesn't flicker now at shutdown ## Version 1.52, 11 January 2005 System_Snapshot function added HGE_TEXTUREFILTER system state added, allowing you to temporarily disable texture interpolation In fullscreen mode HGE window now has "topmost" style Fixed a bug in textures cleanup code Fixed a bug in hgeColorRGB::Clamp method Minor documentation updates New tutorial/demo added ## Version 1.51, 2 January 2005 If the disk HGE starts from is write protected, log file access resulted in crash. Fixed now. Fast InvSqrt routine implementation was moved from hgevector.h to hgehelp.lib for better compilers support Resource_Load failed to load files with a path from resource pack. Fixed now. Minor bugfixes in hgeResourceManager hgeResourceManager::GetStream added Backbuffer is now cleared at startup Texture_Load now supports usage of compressed DDS textures which result in better performance and lower video memory requirements ## Version 1.5, 29 December 2004 hgeVertex: reserved field and -0.5 coordinate adjustments are not needed anymore Added Gfx_SetTransform allowing global scene transformations Gfx_SetClipping now automatically adjusts clipping region to fit render target, flushes previously accumulated graphics and returns void Added Gfx_RenderTriple allowing rendering of arbitrary triangles Added Gfx_StartBatch and Gfx_FinishBatch for expert use Texture_GetWidth and Texture_GetHeight can now return original image file dimensions Not deleted textures are now automatically removed during shutdown Reading HGE_SCREENBPP system state under rare conditions returned incorrect value. Fixed now. Added HGE_HWND system state HGE_WINDOWED, HGE_TITLE, HGE_ICON, HGE_USESOUND and HGE_LOGFILE system states can now be changed on the fly HGE_FPS system state can now be set to HGEFPS_UNLIMITED or HGEFPS_VSYNC: screen refresh synchronization introduced In fixed FPS and HGEFPS_VSYNC modes HGE now releases unused CPU cycles to the system, resulting in better system responsibility and lower power consumption More HGE functions now available outside System_Initiate/System_Shutdown calls pair (exceptions are timing, input, audio and graphics functions) If System_Initiate call failed, there's no more need in calling System_Shutdown Fixed memory leak in Texture_Load Added System_Launch function allowing to open URLs and launch external files BLEND_DEFAULT and BLEND_DEFAULT_Z blending mode constants added Ini_GetString syntax simplified Input_GetKeyState now ignores user's input when application is inactive and isn't suspended System_Rand function removed Random_Seed, Random_Int and Random_Float added instead, allowing generation of random 32-bit integers and using pseudo-random sequences Resource_Load and all other file loading functions now support absolute paths Resource_MakePath, Resource_EnumFiles and Resource_EnumFolders added HGE_RESOURCEFILE system state removed Resource_AttachPack, Resource_RemovePack and Resource_RemoveAllPacks functions added instead: you can now have several resource packs simultaneously and switch them on the fly Better ZIP format and zip-compression support added Timer_GetTime function added Timing issue occuring under WinXP/2000 when not using BASS was fixed If no soundcard or it's unavailable Effect_Load crashed. Fixed now. Music_Play now takes additional loop parameter Channel_IsPlaying function added Added Stream_Load, Stream_Play and Stream_Free allowing playback of compressed streams Upgraded to newer BASS 2.1 hgeSprite and hgeDistortionMesh can now be used without a texture hgeSprite::SetTextureRect didn't work. Fixed. hgeSprite::RenderEx and hgeSprite::GetBoundingBoxEx now allow non-proportional scaling hgeSprite::GetBoundingBox, hgeSprite::GetBoundingBoxEx and hgeParticleSystem::GetBoundingBox now return hgeRect* hgeParticleSystem::Stop now takes additional bKillParticles parameter hgeParticleSystem::Transpose now just sets constant coordinates shift, independent of particle system's position hgeParticleSystem::MoveTo now takes additional bMoveParticles parameter hgeParticleSystem::GetTransposition added hgeParticleSystem::TrackBoundingBox added hgeParticleSystem::Render now saves the color of the particle system's hgeSprite instance hgeParticleManager: Transpose and GetTransposition functions added hgeGUI::EnableCtrl was not disabling mouse events. Fixed. hgeResourceManager: resource script now supports quoted strings with whitespaces and special characters Lots of performance optimizations (especially: general pipeline, lines rendering, sprites, particle systems, vectors math) Various documentation and tutorials updates HGE project setup tutorials for Visual Studio .NET, Borland C++ Builder 4 and Dev C++ 5 added New tutorial/demo added ## Version 1.4, 8 April 2004 hgeResourceManager class and resource script introduce fully automated complex resources management hgeSprite methods SetColorI and SetZI were removed, use the updated SetColor and SetZ instead hgeSprite new methods: GetFlip, GetColor, GetZ, GetTextureRect, SetTextureRect, Render4V hgeAnimation now deals correctly with sprite flipping hgeAnimation new nethods: GetMode, GetSpeed, GetFrames, SetFrames Fixed a bug prevented hgeFont from rendering characters with code greater than 127 hgeFont: characters not defined in the font are now rendered as '?', not just skipped as earlier hgeFont new methods: SetTracking, SetRotation, GetColor, GetZ, GetBlendMode, GetScale, GetRotation, GetTracking hgeDistorionMesh::Clear now takes additional Z-order parameter hgeDistortionMesh new methods: GetTexture, GetBlendMode, GetTextureRect hgeParticleSystem and hgeParticleManager constructors parameter "fps" is now float Fixed a bug in hgeParticleSystem::MoveTo, previous position is now cleared with next update hgeGUIObject::KeyClick now takes additional character parameter Default GUI controls declaration was moved into separate header (hgeguictrls.h) hgeVector new operators: operator^ and operator% Minor bug in color manipulation macros was fixed Ini_SetFloat and Ini_GetFloat functions were added Texture_Lock, Texture_Unlock and Texture_Create introduce direct access to texture data making possible texture manipulation, software rendering, pixel perfect collision detection etc. Render targets now support alpha channel (see Target_Create) Mouse_GetPosition, Mouse_GetWheel, Key_GetState, Key_GetKey were renamed to Input_GetMousePos, Input_GetMouseWheel, Input_GetKeyState, Input_GetKey respectively Input_SetMousePos function was added Input_GetChar and Input_GetKeyName functions were added Input_GetEvent function was added Keyboard states switching (Caps Lock etc.) is now reactivated HGE_SCREENBPP system state now reflects actual screen bitdepth Once again: in windowed mode the window is now centered on the desktop Seems like HGE can be used with Metrowerks Codewarrior compiler without any additional efforts ## Version 1.3, 12 March 2004 System_GetVersion was removed hgeCreate now takes the API version as a parameter hgeCreate name is now not distorted in the DLL. So you can load HGE.DLL dynamically with LoadLibrary/GetProcAddress calls hgeDistortionMesh helper class and tutorial were added hgeParticleManager helper class was added hgeParticleSystem new methods: FireAt, Transpose and GetAge Particle Systems Editor was updated to the latest HGE, it runs more smoothly now Particle systems tutorial was updated hgeAnimation new methods: SetMode (forward, reverse, ping pong, loop) and Resume; Play now takes no parameters hgeGUI and hgeGUIObject classes were improved to allow highly interactive animated GUIs GUI tutorial was added Color manipulation macros were added (see Hardware color format) HGE_FPS system state was added allowing you to use fixed FPS mode HGE_DONTSUSPEND system state added allowing you to disable application suspending when focus is lost HGE_EXITFUNC system state was added allowing you to handle user's attempts to close the application window Gfx_RenderLine function was added You can omit now the size parameter of Resource_Load function Effect_Load, Music_Load and Texture_Load can now load dynamically generated resources from memory Non power of 2 textures are now padded to the correct size, not stretched as earlier (see Texture_Load) Font bitmap filename in the font description file is now treated relatively to the font description file folder Fixed a bug in hgeRect::Intersect Key_GetKey and Mouse_GetWheel now return changes since last frame and hold the value regardless how many times they are called during the frame Key_GetKey now deals correctly with mouse button double clicks and middle mouse button System_Rand now starts with random seed HGE now freezes the timer when focus is lost and the application is suspended In windowed mode the window is now opened at the default position, not at the top-left corner of the desktop as earlier HGE startup and shutdown in fullscreen mode now look more nice Debug logging was extended Various documentation fixes and updates ## Version 1.2, 8 February 2004 HGE core functions (system layer) are now wrapped into the DLL Libraries for Visual C++/Intel C++, Borland C++/C++ Builder and MinGW32 were added Interface_Get/Interface_Release were replaced with hgeCreate/Release System_LoadResource was renamed to Resource_Load, Resource_Free was added Rectangular clipping regions were added (Gfx_SetClipping) Mouse wheel tracking was added (Mouse_GetWheel) Key_Clear was removed Font scaling was added (hgeFont::SetScale) Sprite flipping was added (hgeSprite::SetFlip) Minor optimizations Various documentation updates Precompiled tutorials ## Version 1.1, 15 January 2004 First public release Tested on various hardware Helper classes were added Particle systems editor was added Documentation was added ## Version 1.0, 28 November 2003 Preliminary internal version