-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
623 lines (593 loc) · 47.4 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
Orx - Portable Game Engine
==========================
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