RE: January 2013
Released 2.0 (Beta) for Windows and Android:
-reuploaded SDK again, to fix loading tutorials using worlds
Released 1.0 for Windows and Android:
build 20:
-IMPORTANT: please be advised this update features some name and api changes which are necessary in order to improve the engine, you will need to fix some code compilation errors after using this update
-IMPORTANT: Image.toCube now has additional parameter (please investigate your codes with calls to this method to adjust correct parameter ordering)
-IMPORTANT: game object type enum "Enum/obj_type.enum" is now no longer automatically loaded by the engine, you need to use this code "Game.ObjType="Enum/obj_type.enum";" inside 'InitPre' function to keep the old behavior
-IMPORTANT: Game.ObjType(Str name) now stands for Enum.operator() which will cause Exit if element was not found, to preserve old behevior please use Game.ObjType.find(Str name)
-IMPORTANT: default textures for Water are no longer set automatically (they are now NULL), if you wish to keep old behavior please use this code inside 'Init' function - Water.colorMap(Images.ptrGet("Env/Water/0.gfx")).normalMap(Images.ptrGet("Env/Water/0.n.gfx")).reflectionMap(Images.ptrGet("Env/Water/reflection.gfx"));
-IMPORTANT: channel arrangement for water textures is now the same as for Material textures (if you wish to use custom textures for Water, please generate them using Material Editor, and then assign the GFX files to the Water)
-IMPORTANT: because of new channel arrangement for water textures, default provided water GFX files have been updated
-IMPORTANT: removed Game.World.init(WORLD_MODE mode=WORLD_STREAM, Flt active_range=D.viewRange()) (you can set those parameters using Game.World.mode and Game.World.activeRange methods)
-IMPORTANT: Map Create function parameter must now have 'Key' reference parameter marked as const (this is needed so that programmers don't modify accidentally the key inside that function), Create function was also moved to 2nd parameter in Map constructor (because it is now optional function and can be set to NULL)
-IMPORTANT: changed parameter order in Physics.create (also 'hardware' is now by default disabled, 'css' is by default set to CSS_MATERIALS)
-IMPORTANT: File.equal now compares files from their current positions until their end
-IMPORTANT: FileXml is no longer available, please use XmlData, XmlNode, XmlParam classes instead
-IMPORTANT: GuiPC members 'hidden' and 'disabled' are now functions, added new members 'visible' and 'enabled'
-IMPORTANT: GuiObj.rect is now a method, GuiObj.setRect method was renamed to 'rect' (there are now 2 methods 'rect', one for get and one for set)
-IMPORTANT: updated Game.Chr sources - animation names for Game.Chr are now no longer hard coded in Game.Chr sources, instead they are now taken from character ObjParams, by looking for "anim walk", "anim run", .. parameters and loading animations from their values (please look into Game.Chr sources for more info, and sample object "Obj/Chr/base.obj" in world editor)
-added support for Visual Studio 2012
-WaterMtrls cache is now reference counted (WaterMtrlPtr can be used as pointers to cache elements)
-removed Physics.ccd parameter (it no longer needs to be set manually, ccd is always enabled for selected actors)
-improved Android compatibility with more devices (fixed black screen artifacts on some devices)
-greatly improved quality of DXT/ETC/PVRTC textures generation with smooth gradients (mainly helpful for skyboxes)
-added support for exporting images to ICO file format
-added new member Bool compressable=true to PakNode and PakFileData classes, allowing to manually disable compression for specified files when creating compressed paks
-FDel function will now delete both files and directories, to delete only a file please use new function FDelFile
-App.cmdLine is now unicode (C Str&)
-added support for decoding physx cooked meshes (which means that bullet, physx2 and physx3 builds will be able to read both physx2 and physx3 physical bodies without having universal mesh versions in them)
-improved Image.ImportJPG(File &f) and ExportJPG(File &f, Int quality) by using file streams, and reading data only as necessery allowing to store custom data in the stream after jpeg data
-new class IDGenerator (this class manages generating unique UInt ID's (starting from 0 and increasing by 1), an ID can be returned to the generator when it is no longer used, allowing the generator to reuse it in the future when requesting a new ID)
-new method Physics.collisionGroups(Byte group) allowing to get bit combination of ACTOR_GROUP that collide with 'group' ACTOR_GROUP
-PhysCutsCallback now processes data as one 'ActorInfo &actor_info' instead of 3 separate parameters
-redesigned physics materials (PhysMtrl) so actors now set pointer to material, instead of material index when using Actor.material
-introduced PhysMtrls cache, allowing to store and access physics materials from files
-new member Physics.ctrl_floor_slope allowing to control walkable slope angles for character controllers
-PhysBody now has new member PhysMtrl *material=NULL;
-Physics.engine() can now return one of 3 enums: PHYS_ENGINE_PHYSX2, PHYS_ENGINE_PHYSX3 and PHYS_ENGINE_BULLET
-updated Mouse Extend tool to close single tabs with middle mouse button for 64-bit Internet Explorer (IE10)
-new application callbacks App.paused,resumed used for mobile platforms
-Code Editor now supports italian language version of Visual Studio
-new member Gui.desc_draw allowing to override custom description drawing
-hovering a stylus over a gui object can now be used to draw their descriptions
-improved android stylus support
-new Actor.inertia methods allowing to get/set custom inertia tensor for an actor
-new method Physics.wheelFriction allowing to override friction calculation function for vehicle wheels
-new Vehicle class used on PhysX 3 for management of vehicle actors
-new functions SaveProperties LoadProperties which can be used to save Memx<Property> into an XmlNode
-Image.copyTry can now handle copying from/to IMAGE_CUBE
-new method Image.drawCubeFace allowing to draw a single face of a IMAGE_CUBE image as 2D image
-Sweep functions that operate on Esenthel Meshes now have additional parameter Bool ignore_hidden=true which allows to skip hidden mesh parts
-fixed bug in sources of Game.Static and Game.Kinematic objects where scale could sometimes not work correctly if object was rotated ('scaleOrnL' method should be used instead of 'scaleOrn')
-Physics.simulationTime is now more precise
-new methods GuiObj.moveAbove,moveBelow allowing to move single object above/below other object
-new methods File.cmpOrient2,cmpOrient3,decOrient2,decOrient3
-new macros HALF_MAX, FLT_MAX, DBL_MAX allowing to get max possible values of floating point types
-new functions Special, Inf, NaN allowing to check special types of floats
-new functions F32To16 and F16To32 allowing to convert between Flt and 16-bit half float
-AtomicInc and AtomicDec now return the previous value of the parameter (previously those functions were of void type)
-any pak resources embedded in the exe file will now be loaded before the 'InitPre' function to allow custom overriding of those files inside 'InitPre'
-MultiThreadedCall will now accept Mems<TYPE>, Memc<TYPE>, Memb<TYPE>, Memx<TYPE>, Mems<TYPE*>, Memc<TYPE*>, Memb<TYPE*>, Memx<TYPE*>
-increased performance of MultiThreadedCall
-new member PhysBody.box
-Game Object aligning will now include phys body of mesh and convex types as well (previously only phys body of shape types were taken into account)
-new Code Editor Application properties (Android Preferred Storage and Android Supported Orientations)
-Gui.msLit and Gui.ms will not be set to Gui.desktop on mobile platforms if a mouse is not detected (instead they will remain at NULL)
-improved Code Editor class header ordering when generating c++ codes (which reduces number of full recompilations needed and some cases when classes depended on classes declared later)
-fixed bug in Code Editor which could fail to compile codes if ASSERT macro was used globally more than once
-new classes CacheLock and MapLock used for simplified locking of Cache and Map objects (in similar way to how CritSectLock works)
-added more description about memory containers in their headers
-new method Map.key(C DATA *data) allowing to obtain element's key by giving element's data
-updated Mesh, Image, Blocks, Heightmap classes to make some of their methods const
-added new global constant "const UID UIDZero(0,0,0,0);"
-GuiObjs now provides methods for accessing all gui objects, creating from custom object containers, and copying to custom object containers
-Mems,Memc,Memb,Memx memory containers have new methods 'binaryAdd, 'binaryToggle'
-fixed setting ComboBox.arrow when loading it from file
-new functions WindowSetNormal, WindowSetWorking, WindowSetProgress, WindowSetPaused, WindowSetError allowing to set Win7 style effects to windows on the system taskbar
-fixed bug of disabled gui Tabs when they were loaded from an old .gobj file
-fixed potential crash when the gui had Tabs was added to the desktop and the Tabs had some object that could catch keyboard focus
-GuiStyle.draw is now virtual, to allow overriding default drawing for this class
-Pak internal file name will now be adjusted to full path in case relative path was provided, which will allow for pak to be accessed later in case 'CurDir' or 'DataPath' was changed
-new method Game.ObjParams.firstStored allowing to get first object from self and all its bases which is stored as a file
-Cache, Cache Elements, Worlds, Sounds, Skeleton Animations, now allow accessing resources from their ID (in addition to Str file_name), this will work only if elements are stored using names created with EncodeFileName (like Esenthel 2.0 does)
-new 'Environment' class which can be used to set/get/save/load environment settings
-Code Editor will now first count the number of braces in a source code file, to check if opening braces match closing braces before attempting compilation
-updated Physics.reportContact to return all contact positions, normals and forces
-fixed a bug in sqlite implementation which could return true when creating new element in a table even though it failed due to not all needed values specified
|