Skip to content
Permalink
1.11
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
679 lines (647 sloc) 52.2 KB
Orx - Portable Game Engine
==========================
orx 1.11
-----
* IMPORTANT: Init script now support optional extensions through templates: current available extensions are Scroll, Dear ImGui and orxArchive
* IMPORTANT: External dependencies are now compiled with MinGW-w64 8.1.0 (was MinGW 6.3.0), including new support for 64bit
* IMPORTANT: Added support for VS2019 and retired support for VS2013
* IMPORTANT: Min deployment OS version for MacOS is now 10.9 (due to stdlibc++ being replaced by libc++)
* IMPORTANT: Random seed is now initialized by default based on a real time-based value (it can be overridden as soon as the bootstrap call or main init)
* IMPORTANT: Fixed OSX/Retina and Windows high DPI display issues
* IMPORTANT: Multiple commands in config blocks can now be separated by EOL with an optional comma
* IMPORTANT: Added support for section clear marker (![Section])
* IMPORTANT: One can now control which physical peripherals will be polled on a per set basis by using orxInput_SetTypeFlags()
* IMPORTANT: Added support for text animations, which can also be optionally mixed with texture frames
* IMPORTANT: Commands can now be executed by animation custom events (multiple commands need to be comma-separated)
* IMPORTANT: Graphics/textures can now be modified when handling orxRENDER_EVENT_OBJECT_START
* IMPORTANT: Removed obsolete functions orxDisplay_SetBitmapColorKey() and orxTexture_SetColor()
* IMPORTANT: Removed obsolete fucntion orxViewport_SetAlignment()
* IMPORTANT: Object LifeTime config property & command can now take literals (fx, sound, spawn, track and child) which will keep an object alive until the mentioned properties don't exist anymore
* IMPORTANT: Viewports can now be uniquely indentified with config names + added viewport commands
* IMPORTANT: Command string parameters beginning with ( or { are now assumed to be vectors and will be handled as a single block
* IMPORTANT: orxObject_GetSize() will now use a default Z=1 value for 2D flat objects
* IMPORTANT: Empty config properties FXList, TrackList, SoundList, ShaderList, TextureList and GroupList are now valid
* IMPORTANT: Returning orxSTATUS_FAILURE when handling orxSHADER_EVENT_SET_PARAM will now keep the former parameter value in the shader
* IMPORTANT: orxFile_GetHomeDirectory() & orxFile_GetApplicationSaveDirectory() will now use linux separators in all returned paths
* Added orxThread_SetCallbacks() to support pre/post callbacks in orx threads, useful for interacting with other language runtimes
* Added orxDisplay_SetPartialBitmapData()
* Added config properties JoyName<Index> & JoyID<Index> that are kept up to date based on currently available joysticks
* Added commands File.GetHomeDirectory & File.GetApplicationSaveDirectory
* orxString_SkipWhiteSpaces() will now skip EOL characters as well
* Added recursive versions of orxObject_SetAnimFrequency(), orxObject_SetBlendMode() and orxObject_SetSmoothing()
* Object aging now take an object's clock multiply modifier into account if present
* Added orxObject_GetCurrentAnim(), orxObject_GetTargetAnim() & orxObject_GetAnimFrequency() + Object.GetAnim & Object.GetAnimFrequency commands
* Added an optional filter callback to orxConfig_Clear()
* Added color argument to orxDisplay_Transform*()
* Added command Command.VectorX|Y|Z + aliases Vector.X|Y|Z for vector component extraction
* Viewport shaders can be skipped when handling orxRENDER_EVENT_VIEWPORT_STOP
* Added support for 0-length animation frames if they contain custom events (frames won't be created but events will be stored)
* Added swizzles to IgnoreFromParents scale, position.scale & position.position flags
* Added orxFrame_GetIgnoreFlagNames() to convert flags back to literals
* Added config property Display.FramebufferSize that can now be used along gl_FragCoord when necessary
* Added orxObject_LogParents() function + Object.LogParents command to display an object's hierarchy including transformations and ignore flags
* orxConfig_ClearSection() now works with name parameters containing inheritance markers
* Added body/physics function for changing a part's friction, restitution and density
* Added orxPhysics_BoxPick()/orxBody_BoxPick() + orxPhysics_IsInsidePart()/orxBody_IsInsidePart()/orxBody_IsInside()
* Fixed Suspension (aka Wheel) joint parameters
* Cleaner version of chain and edge body parts
* Command Object.SetPivot can now accept literals
* Added Object.GetCount command
* Added new RENDER events for CONSOLE_START, CONSOLE_STOP, PROFILER_START and PROFILER_STOP
* Added config property Render.ProfilerOrientation
* Added Render config properties to control the colors of the console
* Updated/Cleaned all tutorials
* Deprecated and removed orxString_Copy() in favor of orxString_NCopy()
* Removed outdated orxScroll demo
* Misc fixes, optimizations and additions
orx 1.10
-----
* IMPORTANT: Migrated display, mouse, joystick and keyboard plugins from GLFW 2.7 to GLFW 3.3
* IMPORTANT: Modified orxDisplay_DrawMesh() to support more primitive types (points, lines/loop/strip, triangles/strip/fan)
* IMPORTANT: Inputs can now be bound/unbound using a binding index, for complete control over rebinding
* IMPORTANT: Resource types can now optionally support deletion (+ added deletion support to file resources)
* IMPORTANT: Two-component vectors, ie. (x, y), are now accepted anywhere vector literals are, z component is then set to 0
* IMPORTANT: Changed default number of digits for animation frames from 4 to 0 (ie. no leading 0-based prefixes by default)
* IMPORTANT: Events can now be filtered out based on IDs before reaching the handler with orxEvent_SetHandlerIDFlags()
* IMPORTANT: Updated some key names (NUMPAD_ prefix, *RETURN -> *ENTER, F16-F25, PRINT_SCREEN, ...) + added orxDisplay_GetKeyName()
* IMPORTANT: Multiple monitors support: display can be positioned across all monitors and the current monitor will be tracked when the windows is moved
* IMPORTANT: Added support for up to 16 joysticks + added new button/axis names (A, B, X, Y, LX, LY, RX, RY, ...)
* IMPORTANT: Added support for gamepad mappings (as per SDL database) + custom mappings through Input.MappingList config property
* IMPORTANT: Added drop (as in drag'n'drop) support for file names (orxSYSTEM_EVENT_DROP)
* IMPORTANT: Copy/Paste support through event, direct function calls and commands (+ paste support inside the interactive console)
* IMPORTANT: Hardware cursor support: for both OS builtins (arrow, ibeam, crosshair, hand, ...) and user-provided ones
* IMPORTANT: Added support for application icon list (+ on-the-fly update)
* IMPORTANT: Added steps variants to orxMath_GetRandom*() functions + associated config syntax (ie. val1 ~step~ val2)
* IMPORTANT: Objects with animation sets do not require a graphic anymore, by default a copy of the first frame of the initial animation will be used
* IMPORTANT: Prefixed animations/frames will now use an intermediate parent based on the non-prefixed animation/frame: allows for global settings
* IMPORTANT: OSX 10.6 support has been dropped
* IMPORTANT: Android API level raised from 14 to 19
* IMPORTANT: Dropped 32bit support for OSX targets
* Added support for UseParentSpace for objects created from a ChildList or from a spawner
* Added support for pivot literals in object config sections
* Added recursive version of orxObject_Set*Anim() and updated associated commands accordingly
* Blend mode and colors can now be modified on a per-frame basis within an animation
* Fixed a couple of minor issues in profiler's display
* Added interactive mode to init script (when launched without any argument)
* Console enhancement: tooltip is displayed when multiple results are returned from completion
* orxDisplay_SetBitmapClipping() will now work by default (when orxNULL is passed) on the main destination bitmap
* Added debug draw for physics raycasts
* Profiler's scrolling is now pause/unpaused by pressing 'space'
* Renamed orxSound*_GetCursor() -> orxSound*_GetTime() and orxSOUND_STREAM_PACKET.fCursor -> orxSOUND_STREAM_PACKET.fTime
* Fixed multi-inputs/thresholds/multipliers save support
* Fixed 1-frame delay when doing multiple animation transition in a row
* Custom logging callback can now be provided with orxDEBUG_SET_LOG_CALLBACK()
* orxRender_GetScreenPosition() is now inclusive with respect to near plane
* All timers occurrences using the same callback can now be removed from a single call, even when using different contexts
* Fixed config files not being properly loaded when using an UTF-8 BOM
* Removed __orxFREEBASIC__
* Misc fixes, optimizations and additions
orx 1.9
-----
* IMPORTANT: Added support for Visual Studio 2017
* IMPORTANT: Added init script to create/initialize a new project (init.bat/.sh <path/to/new/project)
* IMPORTANT: Setup script will now define a ORX environment variable that will point to where orx's library is (tutorials, tools and init-ed projects will rely on it to find orx)
* IMPORTANT: Every *Counter methods, fields and variables have been renamed to *Count
* IMPORTANT: Config hot-reload now supports deleted keys/sections
* IMPORTANT: Cameras will now use an inclusive near frustum plane (ie. objects with their Z == Camera.FrustumNear will now be rendered)
* IMPORTANT: Empty command parameters are now interpreted as 0/(0, 0, 0)/false
* IMPORTANT: Default number for animation frames is now -1 (as many as can fit) instead of 0 (as many as are defined in config)
* IMPORTANT: Added object age concept
* IMPORTANT: Added partial frame transmission support to orxFrame (+ config property IgnoreFromParent)
* IMPORTANT: Added support for lazy command evaluation as config values (ex: MyValue = % MyModule.MyCommand 18)
* IMPORTANT: Multiple commands can now be processed at once if separated by ',' (Works with commands from timelines as well as those from console or any call to orxCommand_Evaluate())
* IMPORTATN: Added orxText_SetSize() that can constrain a text horizontally and vertically
* IMPORTANT: Added orxSound_GetCursor() & orxSound_SetCursor()
* IMPORTANT: Graphic's texture and sound stream/sample now support locale marker ($) for localization
* One can now prevent any animation transition from an anim by explicitly defining it empty (ex: MyAnim-> =)
* 0 can now be used as a clock multiplier with Clock.SetMultiplier
* Added orxConfig_IsCommandValue() that will return true if there's a lazy command defined (works with lists as well)
* orxConfig_IsDynamicValue() now encompasses command values as well
* Spawners will now evaluate lazy commands for each spawned object if needed
* Added orxText_GetLineCount() and orxText_GetLineSize()
* orxTEXT's strings are now locally stored and not amongst StringIDs anymore
* Replaced orx_LogAllStructures() with orxStructure_LogAll() that now display a tree of all user-allocated active structures, instead of only the "roots"
* Added config property DoNotCache to orxFX (If set to true, any instance of this FX will always be entirely recreated from config, which allows for variations and random values)
* Added orxInput_HasBeenActivated() & orxInput_HasBeenDeactivated()
* Added event orxOBJECT_EVENT_PREPARE (called at the very beginning of object creation, before it is initialized, if handler returns orxSTATUS_FAILURE, object's creation will be aborted)
* Added orxObject_Play() & orxObject_Stop() to play and stop all the sounds on one object (+ corresponding commands)
* When a sound is manually stopped, it's not removed anymore (whereas those that stop automatically get removed as soon as they're stopped)
* Added group ID parameter to orxObject_CreateNeighborList()
* Removed orxCONFIG_EVENT_INVALID_TYPE_ACCESS
* Physics collision flags will now get maintained when reloading config if they not defined in config (if the property is defined in config, any additional runtime-only flags will need to be re-added)
* orxMath_GetTrailingZeroCount() now uses intrinsics on all platforms
* Added orxMath_GetTrailingZeroCount64() that uses intrinsics everywhere
* orxMath_GetBitCount() now uses intrinsics on all platforms
* Added orxFrame_GetIgnoreFlags()
* Fix attempt to 100% CPU use when VSync is on with some graphics drivers
* When iconified when VSync is on, orx will now sleep to simulate the same refresh rate and prevent high CPU use (computer only)
* Added __orx64__/__orx32__ to define CPU instruction size
* Removed __orxRASPBERRY_PI__
* Misc fixes and additions
orx 1.8
-----
* IMPORTANT: Config list shader parameters will now work with inheritance
* IMPORTANT: Input config property JoystickThreshold/JoystickMultiplier have been replaced by DefaultThreshold/DefaultMultipler (which are applied to *all* inputs)
* IMPORTANT: Threshold/Multiplier can now be applied on a per-input basis, both in code and config
* IMPORTANT: External input values are now subject to threshold/multiplier
* IMPORTANT: There's now a proper input value scaling continuously mapping from [threshold; 1.0] to [0.0; multiplier]
* Fixed a very low repro rate deadlock at init on Mac (and possibly some Linux)
* Fixed a memory corruption when loading WEBP images with debug/profile builds
* Made sure threads are properly registered before being executed -> fixes a profiler marker assert that would happen sometimes on Mac
* Better profile marker watermark computation (would stop working properly after a bit over 4h of continuous runtime)
* Fixed orxObject_Attach() for objects with bodies
* Added orxConfig_IsLocallyInheritedValue() to tell if a value is locally inherited (ie. Value = @...)
* Logs are not sent to Visual Studio debug windows when the debugger is attached
* Added orxSystem_GetVersionFullString()/ __orxVERSION_FULL_STRING__ that contains the build number
* Simplified tutorial 04_Anim
* Misc fixes and additions
orx 1.8rc0
-----
* IMPORTANT: New animation declaration system has been added, both simpler and more powerful, older system is still working but is deprecated!
* IMPORTANT: Support for Visual Studio 2015 has been added and support for Visual Studio 2008 and 2010 have been removed
* IMPORTANT: Added version to orx, using MAJOR.MINOR-RELEASE (+additional BUILD number for official releases) + compile-time warning when using mismatched headers/lib versions
* IMPORTANT: Renamed internal screen texture from -=Screen=- to screen
* IMPORTANT: Added arm64-v8a support for Android
* IMPORTANT: Default physics Box2D plugin has been replaced with one based on LiquidFun (which is a based on a more recent Box2D fork)
* IMPORTANT: Body properties AllowGroundSliding and CanSlide are not supported anymore!
* IMPORTANT: Display's screen config properties (ScreenWidth, ...) will be updated at runtime with current screen values
* IMPORTANT: Viewports with a fixed size will not auto-resize by default anymore, viewport Size/Position take precedence on RelativeSize/RelativePosition
* IMPORTANT: Added Display.ShaderListExtension config property, if not defined GL_EXT_gpu_shader4 will be enabled by default
* IMPORTANT: Shaders can now be reconstituted from multiple parts using the Shader.CodeList property instead of the Code one
* IMPORTANT: Highest priority storage will now always remain the default storage (".")
* IMPORTANT: Prototypes of functions orxTexture_CreationFromFile() and orxTexture_LinkBitmap() and of command Texture.Create have changed!
* IMPORTANT: Added KeepInCache property to textures (via graphics and fonts) and to animation sets
* Added scrolling support to the interactive console (`), Console.ScrollSize controls the scrolling rate + a more user-friendly command completion display
* Orx can now be used without a main module and can be partially initialized using any module combination, support for user modules registration has been added
* orxOBJECTs can now be reset/deactivated upton deletion by returning orxSTATUS_FAILURE when listening to orxOBJECT_EVENT_DELETE
* Added recursive version of some orxObject functions/commands like Enable, Pause, SetColor, SetGroupID, ...
* Added NoDebug config property to viewports to prevent any automated debug drawing inside those viewports, such as the physics debug
* Added Immediate property to spawner to ignore the delay for the first wave after creation/reset
* Added FixedRatio property to viewports that are not linked to a camera
* Added support for appending config list items (using +=), can't append to a value that is using inheritance marker (@) + added orxConfig_AppendListString()/Config.AppendValue
* Added ANSI color support for terminal logs (ANSI color tags will be stripped from file logs for readability)
* Config data can now be loaded from a memory buffer using orxConfig_LoadFromMemory()
* Added support for time parameter to viewport shaders (using core clock's current time so that pause & stretching will affect the shaders)
* Added orxConfig_MergeFiles() that will concatenate files' content, including comments and commands
* Added orxMemory_Reallocate()
* Added direct previous sibling link to orxTREE_NODEs
* Added commands Object.SetClock, Object.GetClock, Object.SetAnimFrequency, Clock.SetFrequency and Clock.SetModifier
* Optimized config list read accesses using an internal index list
* Shader compiling debug message should not report the line number accurately from a user point of view
* Added orxHashTable_Retrieve() to efficiently combine a get/set combo
* Misc fixes, optimizations and additions
orx 1.7
-----
* IMPORTANT: Simplified compile targets to: Debug, Profile and Release (the Core targets are used for tools and don't embed the plugins)
* IMPORTANT: New lighter-weight hg/git repository of orx, setup.bat/setup.sh needs to be called (the first time only) to gather dependencies
* IMPORTANT: Added sound bus feature (for grouped volume & pitch control)
* IMPORTANT: Renamed orxRENDER_EVENT_OBJECT_PAYLOAD to orxRENDER_EVENT_PAYLOAD + modified its layout to use struct hierarchy
* IMPORTANT: Added orxConfig_SetBootstrap() that allow user code to be executed after config module init but *before* any config file has been loaded
* IMPORTANT: Added Webp support (load) to all platforms
* IMPORTANT: Android's target surface is now driven by Display.ScreenWidth or Display.ScreenHeight properties but will maintain device's aspect ratio
* IMPORTANT: Engine will now pause/resume when receiving focus events (Android)
* IMPORTANT: Owner-less shaders are not supported anymore (for full screen shaders, use viewport-attached ones instead)
* IMPORTANT: orxDisplay_SetVideoMode(orxNULL) will now reinit client states/arrays to help with a Steam overlay bug on some Mac computers
* IMPORTANT: orxRENDER_EVENT_STOP is now sent after all extra rendering (FPS, console, profiler)
* IMPORTANT: Added half-axis support to input module
* IMPORTANT: Added optional "sub-frame" interpolation to spawners, off by default
* IMPORTANT: Simplified module dependency scheme (will affect users that do not use the orx_Execute*() helpers)
* IMPORTANT: Physics update now uses absolute fix step update, based on Physics.StepFrequency property, adaptable update is still optionally available
* IMPORTANT: Added Size/Pivot support to objects that do not have graphics, compatible with picking functions
* IMPORTANT: Removed OpenGL ES 1.x support on iOS
* orxHashtable can now use 64bit keys
* Reactivated Neon support in stb_image (iOS, device only)
* Android's external dependencies are now compiled with gcc 4.9
* Added support for iOS 64bit
* Added orxAnimSet_GetName()
* Added orx_LogAllStructures(), for tracking purposes
* Added commands Command.IsGreater and Command.IsLesser
* Added command Config.ClearValue
* Added orxTexture_GetLoadCounter + associated command
* Fixed scale propagation for physical bodies in object hierarchies
* Fixed CRC32 to use the actual CRC32B reference algorithm + added slice-by-8 optimization
* Fixed Win64 support in file module
* orxFile_GetSize() now support 64bit sizes on all platforms
* Added commands to access object colors in all supported color spaces
* Added resource commands
* Added orxVECTOR constants for secondary colors (RGB)
* Removed all manual CPU/GPU sync points -> no more calls to glFinish()/glFlush()
* Updated all display plugins with VS2013BO-based optimizations
* SoundPointers can now be paused/stopped right after creation
* When a localized string/font isn't found when switching to a different language, the text won't get modified
* Renamed default font -=DefaultFont=- to default
* Misc fixes, optimizations and additions
orx 1.6
-----
* IMPORTANT: Added VS2013 (win32 & x64) support + precompiled binaries
* IMPORTANT: Added VS2012 (win32) support + precompiled binaries
* IMPORTANT: Removed official support for VS2008 & VS2010
* IMPORTANT: orxDISPLAY_EVENT_PAYLOAD has been refactored (field renaming)
* IMPORTANT: orxANIM_EVENT_PAYLOAD has been refactored (field renaming)
* IMPORTANT: Android builds are now using hard-float ABI and NDK r10b
* IMPORTANT: Android builds have been migrated from Eclipse to Android Studio
* IMPORTANT: Added support for Android TV
* Param config section will now be populated with parameters provided on the command line (full names only)
* Debug-only: orx will try to detect and warn about case config errors
* Optional context can now be provided when registering event handlers
* Animations (both current & target) can now be changed from within an animation event callback
* Added Joystick support to Android, conditional upon Android.UseJoystick config property
* Added Nexus player remote support to Android
* orxSTRUCTURES ordered as lists will not be ordered as FIFO anymore (use instead a cache friendly strategy)
* Added orxDISPLAY_EVENT_LOAD_BITMAP, orxTEXTURE_EVENT_LOAD and orxANIM_EVENT_UPDATE events
* Added Display.ShaderVersion config property, defaults to 120 on Windows, Linux & OSX
* Spawner can now handle random/list values for WaveSize, WaveDelay and ObjectSpeed
* Android audio thread is paused when application is sent to the background
* AnimSets can now contain up to 1024 anims (previously: 256)
* Command Object.Delete will now handle disabled objects correctly
* Updated stb_image to v2.0b
* Updated stb_image_write to v0.95
* Updated stb_vorbis to v1.04
* Misc fixes, optimizations and additions
orx 1.6rc0
-----
* IMPORTANT: Added Multi-threading support
* IMPORTANT: MinGW32 build is now using gcc 4.8.1 instead of gcc 4.6.2
* IMPORTANT: Textures and sounds will be loaded asynchronously on all platforms, by default
* IMPORTANT: Added orxThread_RunTask() to run asynchronous tasks
* IMPORTANT: Orx's API (beside orxThread module) is *NOT* thread safe (don't use it inside tasks)
* IMPORTANT: Added orxFile_GetApplicationSaveDirectory() (and orxFile_GetHomeDirectory())
* IMPORTANT: Android native version is back!
* IMPORTANT: Added immediate command evaluation in config, using % as line prefix
* Added support for insert/overwrite modes in console
* Profiler display supports multi-threading: PageUp/PageDown to navigate between threads
* Added support for Bezier curves (orxVector_Bezier())
* Added orxVIEWPORT_EVENT_RESIZE
* Added nameless key inheritance (@.MyKey) to config
* Added orxDisplay_SetTempBitmap() to control temporary bitmap used for objects while their texture is being loaded
* Rewrote object<->body<->physics communication with cleaner&better parenting/time-stretching support
* Added 'Immediate' config property to timeline tracks
* Fixed a bug in orxFontGen regarding advance scaling and ascender
* Updated OpenAL-Soft
* OpenAL-Soft's thread is paused on Android when application is in the background
* orxFile_Open() will now create missing intermediate directories when used with a write mode
* Added orxFile_Remove() and orxFile_MakeDirectory()
* Removed SOIL dependency (use stb_image & co instead)
* Command Texture.Save can now either take a Texture (ID) or a name as argument
* Command Object.FindNext can now accept the character * as first argument to consider all objects
* Added a bunch of new commands
* Misc fixes, optimizations and additions
orx 1.5
-----
* IMPORTANT: Fixed screen saving in GLFW display plugin (affected screenshot feature as well)
* IMPORTANT: Added flip & animation support for text objects
* IMPORTANT: Added config property AutoResize to Viewport
* IMPORTANT: Added config property BackgroundAlpha to Viewport
* IMPORTANT: orxOBJECT_EVENT_ENABLE/_DISABLE are now only sent if there's an actual change of status
* IMPORTANT: Added virtual keyboard support for Android + orxKeyboard_Show()
* Improved orxFontGen's font generation when used in compressed/filtered textures
* Android: a few refactoring & fixes
* Added orxOBJECT_EVENT_PAUSE/_UNPAUSE events
* Added random seeds accessors (useful for backup & restore purposes in replays, for example)
* Added orxString_IsCharacterAlphaNumeric()
* Added orxAnimSet_FindNextAnim() to peek at next anim in queue
* Added orxBody_GetJointReactionForce()/orxBody_GetJointReactionTorque()
* Fixed a bug in hotreload of timeline tracks
* Fixed rare bug in orxObject_GetChild()/orxObject_GetSibling()
* Misx fixes, optimizations and additions
orx 1.5rc0
-----
* IMPORTANT: Added Resource module
* IMPORTANT: Added resource WatchList dev concept + hotreload for: configs, sounds, textures, shaders, texts, fonts, timelines & spawners
* IMPORTANT: Added concept of group to objects, cameras and rendering + added orxObject_GetNext() for group browsing
* IMPORTANT: Added MRT (Multiple Render Targets) support on computers + Android/OpenGL ES 3.0
* IMPORTANT: Textures are not Y-reverted at runtime anymore: no need to manually Y-revert compressed textures and shader UV coordinates
* IMPORTNAT: Added String ID support (using hash as key/comparison value + central content storage)
* IMPORTANT: No more screen-as-texture support, render-to-texture should be used at all time
* IMPORTANT: Viewports are now rendered in their order of creation (was previously reverse order)
* IMPORTANT: Added memory tracking, including resource-related dependencies: sound, textures, physics (displayed in the profiler screen)
* IMPORTANT: KEY_TILDE has been renamed to KEY_BACKQUOTE
* IMPORTANT: Added short-term history to profiler + histogram + pause/replay/navigation
* IMPORTANT: Added support for gl_Color in custom shaders (mapped to object's color/alpha)
* IMPORTANT: Fixed iOS XCode project
* IMPORTANT: Added support for Sync-or-Tear on Windows/Linux (GLFW plugins)
* IMPORTANT: Added support for premultiplied alpha
* IMPORTANT: Added support for background input sets
* IMPORTANT: orxRender_GetWorldPosition() takes an additional viewport parameter
* IMPORTANT: Rendering has been broken into two phases for greater CPU/GPU parallelism
* IMPORTANT: Added ownership concept to all orxSTRUCTUREs + full hierarchy support to orxOBJECTs
* IMPORTANT: Alpha, color, repeat and blend mode are only stored on orxGRAPHIC and not on orxOBJECTs anymore
* IMPORTANT: Added local<->global transformation functions in orxFrame module for position/rotation/scale
* Added Sublime Text 2/3 project
* Modified time-related functions to be Y38-ready
* Intermediate textures used for render-to-texture will be handled entirely by viewports
* Added support for orxDisplay_SaveBitmap() to Android
* Compositing can now be done by using a viewport shader instead of using camera+intermediate object
* No more fixed pipeline when shaders are supported on computers (GLFW plugins)
* Unified mouse cursor handling across different OSes + screen<->world coordinates conversions
* Added much better batching for objects using custom shaders
* Added a bunch of new commands
* Calling orxDisplay_GetVideoMode(orxU32_UNDEFINED) will now return the default/desktop mode
* Calling orxDisplay_GetVideoMode() with an index > number of modes will return the current mode
* Batches for FPS, console & profiler display won't appear in the profile stats anymore
* orxSystem_GetSystemTime() is now public
* Fixed windows property AllowResize not working when Mouse.ShowCursor was set to true
* Tighter waterstamping in profiler
* Better support for tiny animations (< 1 frame)
* Fixed bank segment alignment
* Added APK resource type for Android, based on the new Resource module
* Remove obsolete Config.IgnorePath property
* Better refresh rate estimation with GLFW plugins
* Fixed console history loading crash when history was full
* Better detection of cache line size on most platforms
* Improved orxDisplay_DrawMesh (all implementations)
* Improved orxFontGen tool
* Misc fixes, optimizations and additions
orx 1.4
-----
* IMPORTANT: Android native version has been deprecated and removed in favor of the standard Android version
* IMPORTANT: Android OS minimum version has been raised from 2.1 to 2.3
* IMPORTANT: Android: NDK_MODULE_PATH should now point to orx/code (or orx/dev-android) folder instead of /orx
* IMPORTANT: Audio plugin on Android is now based on libTremor & OpenAL which results in a big performance improvement
* IMPORTANT: Literal names can be used for Body properties CheckMask and SelfFlags, instead of numerical values
* IMPORTANT: Added conditional commands (If, EvalIf), logical ones (Not, And, Or, XOr) and numerical ones (AreEqual, Sub, Add, Div, Mul)
* IMPORTANT: orxFontGen will now center glyphs when executed in monospace mode
* orxFontGen tool now exports directly to .png format instead of .tga
* Font config property TextureCorner has been renamed to TextureOrigin for more consistency
* Command Config.GetValue can now resolve numerical randoms (~)
* orxStructure_GetGUID() now masks out the reference counter value for easy GUID comparisons
* Objects created via tracks get their first update during the current frame (wasn't always happening before)
* iOS: Fixed optional depth buffer creation/handling
* Fixed profiler not being initialized correctly if orx is started twice within the same program during the same second
* Android: Config properties Display.DepthBuffer and Android.AccelerometerFrequency are now properly recognized
* Added support for .ktx, .pvr and .dds texture format on Android
* Version 2.7.7 of GLFW is now used in relevant plugins
* Updated OpenAL-Soft to a newer version (10/01/2013)
* Tighter sphere culling in the render plugin
* Misc fixes and additions
orx 1.4rc0
-----
* IMPORTANT: Using the default launcher is now deprecated and all tutorials are stand alones
* IMPORTANT: Added TimeLine module for non-interactive timed sequences (can be defined in config)
* IMPORTANT: Added Command module that can evaluate/execute literal commands at runtime (commands can also be registered by user at runtime)
* IMPORTANT: Commands stored in timeline tracks will be automatically parsed/executed using a special syntax to access owner's GUID
* IMPORTANT: Added weakly resolved aliases for commands that can wrap command line arguments
* IMPORTANT: Added interactive (and customizable) console that allows the execution of commands at runtime
* IMPORTANT: Fixed animation custom event registration: they are now registered at the *beginning* of the corresponding frame
* IMPORTANT: Added linux x86_64 support + added corresponding project files/precompiled dependencies
* IMPORTANT: Added native landscape orientation support on iOS (double camera trick isn't needed anymore)
* IMPORTANT: touch and accelerometer events are now handled in a thread-safe way on iOS
* IMPORTANT: Added dynamic self-reference in config using the @ 'keyword'
* IMPORTANT: Added optional default parent for all config sections
* IMPORTANT: Keyboard presses (characters and unicode strings) can be directly obtained on linux/mac/windows
* IMPORTANT: Much more efficient version of Android (non-native) plugins
* IMPORTANT: Renamed the config property TextureCorner to TextureOrigin to match internal code naming convention
* IMPORTANT: Added primitive draw support (line, circle, polygon, box)
* IMPORTANT: Added primitive to draw meshes (textured polygon list as a GL_TRIANGLE_STRIP)
* IMPORTANT: Added window resize support (both in code or via direct user manipulation of the handles)
* IMPORTANT: MainClockFrequency should now work much smoother and lower CPU use in any non-vsync case
* IMPORTANT: Added 64b GUID for all orx structures
* IMPORTANT: Added Box2D debug display (in non-release builds only) when config property Physics.ShowDebug is set
* IMPORTANT: Replaced __orxIPHONE__ by __orxIOS__
* IMPORTANT: Renamed orxObject_GetChild/orxObject_GetSibling to orxObject_GetOwnedChild/orxObject_GetOwnedSibling
* IMPORTANT: Fixed Retina display for iOS devices
* IMPORTANT: Added compressed texture support for iOS devices, powered by TDomhan
* IMPORTANT: Added ogg/vorbis support for iOS devices (not hardware accelerated)
* IMPORTANT: orxCrypt tool doesn't do merge by default anymore but simple 1:1 file copy (-m to trigger config merging)
* IMPORTANT: Added RGB/HSL/HSV as config input for objects, graphics & FXs
* IMPORTANT: FXs can now be used for modifying the color of objects using HSL or HSV color spaces (for more natural blendings)
* IMPORTANT: FXs can now be used for modifying volume and pitch of sounds over time (with curves) on objects
* IMPORTANT: Multitouch support is now unified across Android and iOS devices (still handled via events)
* IMPORTANT: Single touch and accelerometer are now emulated on computers via system events using left mouse click / first joystick data
* IMPORTANT: PVRTC textures are now supported for android/android-native
* IMPORTANT: Big speed optimization for debug builds: they will only flush the debug log to disk when quiting
* IMPORTANT: Added automated shader parameter "time" that will contain the owner's active time (only available for objects as owners)
* IMPORTANT: Calling orxDisplay_SetVideoMode() will always clear the cached texture/blend mode (useful after custom rendering)
* IMPORTANT: Replaced orxHashTable_FindFirst/orxHashTable_FindNext with orxHashTable_GetNext
* IMPORTANT: orxRGBA is now a full-fledged structure
* All build/project files can now be regenerated using premake4 for all platforms/IDEs (except XCode)
* All config values can now be saved back to the file where they were defined for the first time.
* Config lists can now span multiple lines provided each line to be continued ends with #
* Added 64b int/uint support for config values, math random number and string conversion
* Added FXDelayList config property for objects
* Added PNG write support for computer versions (SDL/GLFW)
* Replaced old PNRG with a Xor128 one (as fast as the previous one but with a much better quality of distribution and a huge cycle size)
* Added Display.ScreenPosition config property
* Added possibility to create/modify sound samples and streams at runtime
* Iconification is now correctly supported on computers
* Added Smoother(step) curve for orxFXs
* Added possibility to filter output of log/debug messages based on their categories
* Cleaner logs for error messages + per-debug level filtering options
* Memory bank elements can now be aligned on cache line size by defining __orxBANK_ALIGN__
* Added orxHashTable_Optimize that optimizes an already filled hash table for cache misses upon collisions during read accesses
* Fixed using an object hierarchy + bodies with respect to speed update
* Fixed ApplyForce/ApplyImpulse on physics bodies
* Fixed spawning of physics object when UseSelfAsParent is set
* Fixed applying physics impulse/force not using the center of mass correctly by default + not using local space
* Added monotonic clock support on linux, mac os x and iOS
* Added support for refresh rate in video modes (only used for computers in the glfw plugin)
* Improved profiler display + support portrait orientation + added some more internal markers + markers are ignored during profiler rendering
* Added new maths functions : smooth/smoother steps + catmull-rom sline interpolation
* Fixed orxBody_GetMassCenter() not returning a scale-invariant position
* Fixed NPOT texture support for iOS devices
* Fixed relative children object positioning + joints when created in config
* Added support for motor speed/torque for revolute ChildJointList
* Fixed orxConfig_IsInheritedValue() not working for global section inheritance
* Added config-customizable sound streaming (buffer size & number)
* Fixed sub-graphic (ie. in spritesheet/texture atlas) coordinates passed to shaders
* Fixed multi-texture animations not working with shaders
* Fixed texture smoothing/blending when some shaders are active
* Fixed pre-multiplied texture issue on iOS devices
* Fixed render-to-texture offset for architectures that don't have NPOT texture support
* Fixed aspect rendering on portrait-oriented (ie. vertical display) devices
* Optimized core event dispatch
* Added direct accessors to object's sibling and child for better performances
* Added config encryption get accessor + config file copy function
* Frames are not immediately updated (no more passive deferred frame update)
* Newly added sounds to objects will get their position updated immediately
* Added option to synchronize FXs on one object with respect to another one
* Fixed lost sound stream buffers when they were discarded on the fly by the user
* Worked around a framebuffer bug in iOS 4.2
* Added orxRender_GetScreenPosition() to transform a world position to screen given an optional viewport
* orxRENDER_EVENT_START is now sent *after* screen had been cleared
* Fixed calling orxObject_SetParent(orxNULL)
* Fixed orxSOUND_EVENT_STOP not sent for all cases of sounds removal
* Calling orxDisplay_SetVideoMode(orxNULL) will now trigger a window title update based on the config value
* Added index buffer object optimization for all rendering
* Removed obsolete orxSYSTEM_EVENT_MOUSE_IN/_OUT events
* Added debug error message when loading config files with an unsupported unicode encoding (only UTF-8 is supported)
* Removed obsolete __orxWII__ and __orxGP2X__ defines
* Misc fixes, optimizations and additions
orx 1.3rc0
-----
* *** Added new platform with full support: android/android native. ***
* IMPORTANT: Added very easy to use CPU profiler module with optional runtime graphical display (#define __orxPROFILER__)
* IMPORTANT: Added OpenGL ES 2.0 support for iPhone/iPod Touch/iPad + full shader pipeline (including custom shader support)
* IMPORTANT: Mingw dev package has binaries built with gcc 4.5.0 which are *NOT* compatible with older versions of gcc. Please upgrade or recompile orx and dependencies.
* IMPORTANT: Added physics joints support and updated to Box2D 2.1.3 (svn v140, pre-release) which impacts on some physics settings (no more world boundaries, etc...)
* IMPORTANT: a ChildJointList can be specified in config for building complex objects with joints, along the ChildList config property
* IMPORTANT: iPhone touch, motion and accelerometer events have now been merged with android ones in orxSYSTEM_EVENT_*
* IMPORTANT: Added non-monospace (ie. non-fixed width) font support + updated orxFontGen to generate both monospace and non-monospace fonts, packed/non packed characters
* IMPORTANT: Added sound recording (to memory and/or disk with various file format support, with possibility of analyzing/pre-processing the samples through events)
* IMPORTANT: When playing a sound stream, the packets can be analized/altered on the fly (for realtime effects, for example)
* IMPORTANT: Rendering to texture support is back with GLFW & iPhone plugins
* IMPORTANT: orxSYSTEM_EVENT_BACKGROUND & orxSYSTEM_EVENT_FOREGROUND have been added to handle new iOS 4 "backgrounding" for application and will deactivate any rendering made by orx by defaault
* IMPORTANT: Scale for objects with a ParentCamera is now expressed in camera space, by default.
* IMPORTANT: Custom event config syntax has changed (please check CreationTemplate.ini): they are now bound to keys and don't require a timestamp
* IMPORTANT: If a shader parameter is defined as an explicit list, an array will be created instead of a single variable
* IMPORTANT: UseParentSpace config property for objects with a ParentCamera now take additional values: both, non, positiona and scale
* IMPORTANT: UseRotation/UseScale in spawner config changed: when set to false, no rotation/scale will be applied to the created object by the spawner and UseRelativeSpeed will always use spawner's parent orientation/scale
* IMPORTANT: Added Tutorial #12, Shader and Lighting
* IMPORTANT: Added Smooth(step) curve for orxFXs
* IMPORTANT: orxCamera_GetFrustum now returns a frustum in camera's local space
* IMPORTANT: Config save callback now takes an extra parameter: the file name
* IMPORTANT: orxLOG() will now use the current debug flags so it's possible to globally enable/disable file/console logging, even for orx's generated logs
* Optimized home render plugin to batch objects by texture (5-15% FPS boost, depending on scenes)
* Optimized frame update for orphan objects (6-8% FPS boost)
* Optimized GLFW and iPhone rendering: batching + indexing + interlacing -> 10 - 100% FPS boost
* Orx will now use the current desktop resolution if none if provided
* Fixed 2nd object in orx's global list not being ticked for one frame when first object's life time was depleted
* Orx has perfect synchronization between sound playing and sound recording to allow on the fly analysis/modication of sound packets
* When selecting a new input set, the inputs status will be updated immediately to make sure holding key/button won't register as a new status
* Better mouse axis handling in the input module: when user manually moves the cursor to simulate a capture, this won't affect input's values
* Added JoystickMultiplier to input module: all joystick axis values will be multiplied by this value to allow scaling and a more seamless joystick/mouse input integration
* Anims can now contain 65535 keys and 65535 events
* Config lists can now contain 65535 values
* Increased config section table size to provide faster accesses for huge config data (10 000+ sections)
* Added orxDisplay_GetBitmapData()
* Added optional depth buffer creation + better user-defined external rendering support (such as custom 3D rendering)
* Added CleanOnDelete in spawner config to delete all alive spawned objects when their spawner is deleted
* Minor internal pipeline/vertex shader optimization
* Added dlmalloc as internal default memory allocator
* Clock DT and orxSystemGetTime() are now using double precision and can support much much longer uptimes
* Added orxEVENT_TYPE_DISPLAY/orxDISPLAY_EVENT_SET_VIDEO_MODE event
* No more limitation on the number of body parts contained in a body
* Added AllowSleep config property for bodies
* Replaced system's pseudo-random functions with faster pseudo-random ones
* Merged orxFile and orxFileSystem modules
* Added orxBank_Compact()/orxBank_CompactAll() functions to reclaim unused bank segments
* Fixed rendering with positive aspect ratio (only negative were working correctly)
* Fixed some config "block" parsing issues with multiple double-quotes
* Fixed orxFontGen to output visually correct fonts when used with fonts that have a negative left side bearing
* Fixed orxConfig_SetEncryptionKey() not being able to be called before orx's init
* Fixed orxString_ToS32/ToU32 considering 0 as an invalid octal number (still giving 0 as result but interrupting the conversion of the remainder of the string)
* Removed object render flag (wasn't very precise)
* Added orxTEXTURE_EVENT_CREATE/_DELETE events
* Added orxSPAWNER_EVENT_CREATE event
* Body's features can now be queried with read-only flags
* Added linear & angular damping runtime accessors (get/set) for bodies
* Added self flags & check mask runtime accessors (get/set) for body parts
* Simplified iPhone demo
* Changed the way reference handling works for orxSTRUCTUREs so as to be more consisten
* Fixed issues that prevented orx from being fully restarted in the same program execution
* Better AllowGroundSliding handling in the Box2D physics plugin
* Fixed full executable path handling on init
* Misc optimizations & fixes
orx 1.2
-----
* *** Added new platform with full support: iPhone (iPod Touch/iPad). ***
* *** Orx is now published under the zlib license, please see the LICENSE file. ***
* IMPORTANT: Added Unicode support with UTF-8. Config files now should be encoded with either plain ANSI or UTF-8: extended ASCII characters (ISO-Latin-1) won't be recognized any longer.
* IMPORTANT: Added custom bitmap font support in orx with Jørgen 'Jibs' Ibsen's Dina font as default.
* IMPORTANT: Added the orxFontGen tool to create orx-compatible bitmap fonts (.tga/.ini) from TrueType (.ttf) font files, using reference texts to define the list of characters to export.
* IMPORTANT: Joystick buttons/axes are now suffixed with the corresponding joystick's ID (JOY_X_1, JOY_1_2, ...).
* IMPORTANT: Added new plugins for embedded versions: SDL plugins for win/linux (35-40% than the SFML ones) and GLFW plugins for win/linux/osx (~2% faster than SDL ones).
* IMPORTANT: Added an OpenAL/libsndfile/stb_vorbis audio plugin as SFML audio plugin counterpart.
* IMPORTANT: SDL & GLFW now handle per-object shaders in a correct manner: shader is only applied when the object is rendered and only on it. This behavior can't be obtained with SFML plugins.
* IMPORTANT: Added an internal texture called "pixel" that holds a white pixel with full opacity. This can be used for all fade in/out effects and more.
* Added automatically generated coordinates for shader textures: Texture MyTex -> MyTex_Top, MyTex_Left, MyTex_Right & MyTex_Bottom are generated by orx in a consistant way across all platforms/plugins.
* GLFW plugins are now the default plugins for embedded mode. SFML plugins are still the only existing plugins for non-embedded mode.
* GLFW and SDL plugins also use SOIL library for handling graphic files I/O
* Fixed incorrectly names joystick axes
* Texts can use localized fonts using the locale module in the same way as string content
* Added orxBank_GetIndex() & orxBank_GetAtIndex() for array-like manipulations
* Heavy optims in the orxBANK module when allocating cells and clearing banks
* Added orxObject_BoxPick() for picking objects intersecting with box
* Added orxMOUSE_X and orxMOUSE_Y as valid inputs for the generic input system
* Added HSL/HSV color space support with HSL<->RGB & HSV<->RGB conversion functions
* Added ParentCamera property for cameras (useful for cascading cameras or Fixed/UI camera trick for portrait<->landscape adaptation)
* When selecting a new locale language at runtime, graphics containing localized text will now resize accordingly to the text's new size
* Added __orxFREEBASIC__ define for free basic friendly build of orx
* orxClock_RemoveTimer() can now filter using the registered context
* Added events orxCONFIG_EVENT_RELOAD_START, orxCONFIG_EVENT_RELOAD_END & orxCONFIG_EVENT_INVALID_TYPE_ACCESS
* Added some new orxConfig_* functions for advanced config manipulations
* Working directory is set to executable's one for all platforms (was done only for Mac OS X before)
* Fixed constness of all orxSTRING related code
* Cleaner texture/bitmap deletion handling
* Fixed FPS display position when aspect ratio is not 1:1
* Removed a couple of warnings from external library Box2D
* Fixed some minor issues in SFML-based sound plugin
* Config raw sections/values can now be accessed at runtime (used in EyeCreate's orx config editor Pey)
* Fixed sound attenuation ratio in SFML plugin
* Added Config::IgnorePath parameter to ignore all paths when loading resources (useful for iPhone bundles were all files easily end up in the root folder)
* Modules' Init & Exit functions are now optional (ie. stand alone application don't have to define them if not needed).
* Default minimal frequency for the home made renderer plugin is now 10Hz (was 60Hz).
* Fixed orxLOCALE_EVENT_SET_STRING not sent
* Some optims / fixes / cleaning
orx 1.1
-----
* Added orxCrypt command line tool for merging/encrypting/decrypting config files
* Added owner to spawner structure + all missing accessors for runtime handling
* Added associated clock to objects so as to allow localized time stretching (including sound pitch alteration)
* Clocks can now be created from config files and directly from objects. There can be only one clock with a given name (like cameras)
* IMPORTANT: Renamed spawner's WaveNumber property to WaveSize
* IMPORTANT: World gravity now use the physics dimension ratio -> update your config files accordingly
* orxCLOCK is now an orxSTRUCTURE
* Added timer handling functions in clock module
* Fixed aspect ratio correction when viewport was narrower than camera
* Added custom events for animations
* Integrated current Box2D version from its svn repository
* Added Raycast feature when physics is enabled (+wrappers in body & object modules)
* Dynamic objects can now have parents and get the cumulated result move from parents + physics simulation!
* Added a custom gravity as Body's property
* Physics simulation is back on main clock to provide a more robust game loop
* Fixed FixedRotation property to use Box2D feature instead of orx's hacked one
* Fixed orxVector_FromCartesianToSpherical() not getting the correct Rho when colinear to negative axes
* Added names of both involved parts in contact events
* Fixed orxFRAME child calculation when using anisotropic scale on parent
* Fixed home render plugin camera rotation when the camera has a parent object
* Removed AutoDelete property for spawners
* Added possibility for spawner to transmit or not parent's rotation & scale (by default it transmit them as before)
* Added orxObject_GetChild() / orxObject_GetSibling() for querying dependencies (for objects created through config's ChildList property only)
* Fixed config block value incorrectly saved by orxConfig_Save()
* Added the possibility to use empty config values either by using an empty line or a ;
* IMPORTANT: Due to the above change, block values must have the opening " on the same line as the key attribution: Key = "
* Config section inheritance can now easily be modified on-the-fly, at runtime (orxConfig_SetParent())
* Added 'screen' keyword for ShaderList properties
* Optimized shader lists processing when rendering objects & viewports
* Fixed tutorial #5 (viewport) jerkyness
* Sets default gravity to none in Box2D physics plugin
* Fixed use of AutoScroll/DepthScale with objects using bodies
* Changed tutorial #11 (spawner/shader) shader code
* Added orxDisplay_GetVideoModeCounter() / orxDisplay_GetVideoMode() / orxDisplay_SetVideoMode() & orxDisplay_IsVideoModeAvailable() (+SFML implementations)
* Renamed orxInput_GetBoundInputNumber() to orxInput_GetBoundInputCounter()
* Renamed orxStructure_GetNumber() to orxStructure_GetCounter()
* orxSystem module is now part of core (external library independent) and not a plugin anymore (+updated all configurations)
* When querying screen texture size, the latest display size will always be used
* Updated bounce demo to be able to change resolution on the fly (F1/F2) + ToggleFullScreen on F3
* Added orx_WinExecute() helper for console-less windows application
* Added __orxWII__ platform define for future work
* Added __orxIPHONE__ platform define for future work
* Misc updates & fixes
orx 1.0 final
-----
* Added fully featured localization module (orxLocale)
* orxTEXT that relies on the orxLocale module will now be automatically updated when changing language at runtime
* Updated screenshot module to work with config reloads
* Optimized some access to the config module
* Added acceleration parameter to FX curves (to controle their frequencies over time)
* Fixed flipped & tiled objects rendering
* Replaced all external uses of orxRGBA by orxCOLOR
* Events handlers are now expected to return orxSTATUS_SUCCESS so as to continue calling other handlers
* Added orxDisplay_SetFullScreen() and orxDisplay_IsFullScreen() functions + SFML implementation
* Improved some tutorials + added localization example in tutorial #10
* Misc minor updates in code & comments
orx 1.0rc1
-----
* Migrated all SFML plugins on all platforms to SFML 1.5: linux was using SFML 1.3, other platforms were using SFML 1.4
* Fixed the reload of config history: logic was broken and it could even crash
* Physics plugin now can handle negative scales (mirror effect)
* Fixed spawner not using scale when setting spawned object's relative speed
* Added orxLOG_CONSOLE(), orxLOG_FILE() and orxLOG_RAW() helpers
* Config section are not allowed anylonger to have leading or trailing spaces + trimmed all requests accordingly
* Fixed spawner wave timestamp not being correctly cleared when a spawner was reset
* Removed obsolete files
* Misc minor updates in comments/doc files
orx 1.0rc0
-----
* Initial release candidate for orx 1.0