Torque/1.5/WhatsNew

From TDN

Contents

New Features and Enhancements

  • Integrated Torque Lighting Kit - John Kabus rolled into TGE 1.5 the several years worth of research, development, and QA he has put into the Torque Lighting Kit. Not only did John merge the TLK into TGE 1.5, he also re-factored the lighting system so that it is cleaner and easier for people to use, and so that people can easily introduce their own custom lighting models.
  • Huge Mac Update - All of the OSX platform updates integrated into the latest version of Torque Game Builder have also been integrated into TGE 1.5.
  • Torque Show Tool Pro now Included - That's right, David Wyand's essential ShowTool Pro will now be included in the purchase of TGE 1.5.
  • Vastly improved interior rendering performance with dynamic lights
  • Improved dynamic light blending on terrains
  • Updates to the TGE waterblock system that enable it to work for terrains with smaller block sizes, allowing for higher geometry and texture detail
  • Support for Visual Studio 2005 and Visual Studio 2005 Express
  • Mac platform supports Universal Binary for running TGE on both PowerPC and Intel based Macs
  • Enabled Unicode and Threading support on Windows 98 and Windows ME
  • Added the Max2dts Pro Exporter source code
  • Integrated fxRenderObject to serve as an example for renderable SceneObjects
  • Integrated the Volume Lighting special effect
  • Added an enhanced version of RigidShape for doing simple rigid body physic in a generic way
  • Added the ability to have multiple keybinds bound to the same script function and updated the optionsDlg.gui to allow this
  • New multithreaded profiler!
  • Brought engine and gui code that is shared with TGB up-to-date.
  • Updated the Telnet Debugger with all of the latest bugfixes and enhancements.
  • Update for magicButton/InteriorInstance::addChildren(). You can now instantiate SceneObject entities as well.
  • Updated the Axis Gizmo to be prettier and a little easier to see/use with some code from Constructor

New Content

  • Elf Character
  • Redone Starter.FPS Environment & Mission (Includes Skybox, terrain, etc)
  • Redone Starter.Racing Environment & Mission (Includes Skybox, terrain, etc)
  • Redone Interactive Walkthrough Environment & Mission (Includes Skybox, terrain, etc)
  • Replaced Trees & Rocks with new ones (Courtesy Games Extract)
  • Redone buildings (Monument, Orc Tower, Hovel)
  • 5 Starter Skyboxes (Courtesy of Red Thumb Games)
  • Redone Starter.FPS Audio (Courtesy of Dark Combat Audio)
  • RTS Environment Pack, Winter Environment (Courtesy Todd Pickens)
  • Tim Aste Environment Pack #1
  • Tim Aste Combo Pack #2 Particle FX Sampler
  • Foliage Sampler from FPS Environment Pack (Courtesy Todd Pickens)
  • Redone GUI from Interactive Walkthrough

Important Bugfixes

  • Fixed it so that ParticleEmitters will have a properly sized bounding box. This greatly improved engine performance and ParticleEmitters no longer disappear at odd viewing angles.
  • The console scripting system can now properly interpret floating point numbers that are not prefixed with a 0 (ie .123 as opposed to 0.123).
  • Objects moved with the Axis Gizmo in the Mission Editor now properly show their new transform in the Inspector Pane
  • Re-enabled the ability to move WaterBlocks in the Mission Editor
  • Dedicated server now runs properly
  • Fixed a very non-obvious StringStack corruption bug in GuiInspectorField::setData()
  • Password Edit Field Fixed
  • Fixed the ResourceManager extension registration for ".uft" to point to constructNewFont
  • Improved axis selection in the Mission Editor
  • Fixed networking issues with Explosions (they weren't ticking or cleaning themselves up properly in client-only situation)
  • Proper alt-tab fix for Windows
  • GuiBitmapButton now looks for the given texture name to use as the "normal" texture before searching for texturename_n
  • Fixed mirror surface support for Map2dif Plus

General Bugfixes

  • The audio code properly attempts to load a ".wav" file if it is unable to find the corresponding ".ogg" file.
  • AudioBuffer::malBuffer was not getting set to NULL when it was deleted which was causing if (malBuffer) checks to later succeed and access invalid memory
  • Sometimes the AudioDescription datablock would arrive after the AudioProfile on the client. Added a handler for this situation in onAdd()
  • alListener3f had a bad argc check
  • Added check to make sure that the VorbisFile did not try to access beyond the end of its file
  • It is possible to compile the Tool Library with UNICODE support disabled without having to edit torqueConfig.h every time
  • Updated inspector to play nicely with persistent fields that are arrays
  • Console now properly reports line numbers with multi-line comments
  • Fixed advanced error reporting for the console
  • Fixed a memory leak in precipitation cleanup
  • ShapeBase was doing a bad comparison against MaxScriptThreads instead of MaxSoundThreads
  • GuiTextEditSliderCtrl::onMouseUp wasn't exec'ing its console command correctly
  • Fixed setCursorPos for Windows
  • Fixed it so that every call to a GuiControl's console command or validate command will properly set $ThisControl
  • Fixed problem with ConsoleGetType returning a potentially invalid ID. It will return a name if the object has one and an ID only if it doesn't.
  • dglSetFrustum calls in the Interior code need a dglIsOrtho() passed in in order to work correctly with the minimap
  • Fixed bin error in sceneobject that was giving bad results for castrays
  • Initializing the waterblock mask so that all waterblocks will render by default when there isn't a terrain
  • Function movieGrabScreen() was saving screenshots with a png filename but not ensuring the file would be saved in a PNG format
  • Cleaned up several references to files that didn't exist in the scripts
  • JoinServerGui was sending "0" to setServerInfo every time
  • Cleaned up a bit of spam in the start up scripts for starter.fps and starter.racing
  • Removed a call to bindEAXFunctions() since those extensions are never used and almost never exist on modern computers
  • Fixed bug with max3dtsExporterPlus's reflection value
  • Removed a linking warning (/nodefaultlib:LIBCMT)
  • Removed a user specific visual studio binary file
  • Fixed a setText bug in GuiTextEditCtrl
  • Removed all references to VC6 output directories from the VC7 and VC8 projects
  • Removed all references to VC7 output directories from the VC8 projects
  • Fixed slider gui bug (added skin texture and updated profile)
  • Updated torqueCheck.png for better distinction between checked and disabled
  • Missing glEnd() in missionAreaEditor
  • Merged in fix for main loop sleeping by [backgroundSleepTime] for EVERY main loop process
  • Propagating fix from TSE for incorrect binning of objects of size Container::csmTotalBinSize.
  • Fixed a typo in Precipitation::setPercentage console method.
  • Fixed a couple of nasty bugs in the theora control:
    • inspectPostApply() would reload the file every time the control was moved or resized
    • inspectPostApply() didnt call Parent::inspectPostApply() which caused ref count asserts in onSleep()
    • Both fixed by removing inspectPostApply(). This has the side effect that if you change the video filename in the gui editor then to see changes immediately you'd have to call the setFile() method.
  • Fix for infinite loop in GuiMLTextCtrl
  • Updated for VC6 compatiblity
  • Have the dedicated server automatically load a mission
  • Fix for when UNICODE is not defined
  • Fix for when TORQUE_MULTITHREAD is not defined
  • Fix for a font rendering crash for OS's/IME's that don't return bitmaps for non-renderable characters.
  • dglDrawBitmap rotation is now passed in degrees since it's easier to work with
  • Added optional prepend parameter to FileObject.writeObject that allows you to specify a non line-terminated prepend before the new keyword of the object that is being serialized as torque script. This is immensly useful especially when trying to write out formatted files making use of torque script serialization. For example, in the level builder for TGB I made use of this for saving a layout file (Gui Object tree) and adding an optional "%layoutObj = " prepende before the write. This allowed me to after writing the object write out a small registration call below that in the file that essentially allows self registering layouts just by execing the file without doing nasty InstantGroup hacks to accomplish it.
  • Added get/setInternalName methods to SimObject and Mirrored to Console. Internal names are used for locating child objects of a simgroup programmatically without worrying about conflicting namespaces by using an actual object name. Used extensively in TGB LevelBuilder
  • Added isMethod method to SimObject which is also mirrored to Console. isMethod does a namespace lookup so you can avoid situations where you may try to invoke a script callback that does not exist, resulting in console spam and wasted cycles.
  • Added findObjectByInternalName to SimGroup and mirrored to Console. findObjectByInternalName looks for an *IMMEDIATE* child with a given internal name and returns that object.
  • Changed fileCopy console function to pathCopy to be more appropriate across platforms. [no overwrite defaults to true now]
  • Added createPath console function (constrained to working directory)
  • Added fileDelete console function (constrained to working directory)
  • Fix for orbit camera jitter.
  • mSolveQuadratic now returns proper results
  • Updated text render for GuiBitmapButtonTextCtrl
  • WheeledVehicle wheel placement misbehavior.
  • Adding all the missing DSO files for TST Pro.
  • Added handy batch files for starting up different games/mods
  • Added prepRenderImage needs added to WheeledVehicle. This enables LOD on the tires.
  • Fixed a bug in StringBuffer::insert
  • Added neat helper function to StringBuffer to aid with allocating UTF8 buffer space.
  • Fixed deletion & selection logic in ML text controls.
  • Fixed time issues with multithreaded Con::execute()
  • Engine no longer crashes if there is no eye node in a mesh used for a Player
  • Some better sanity checking/edge case resolution in mutex and assert.
  • Renamed PlayerShape in all of the starter kits to PlayerBody so that our Player datablocks are consistent across all of our shipping games/mods.
  • Stubbed in a dummy function onNeedRelight to reduce console spam
  • Fixed EnvironmentMapAlpha being incorrectly set to 0
  • Fixed old references to "editor" folder
  • Expunged all of the old references to fps/foo instead of starter.fps/foo in the procedural terrain texturer
  • Updated all of the terrains with proper texture scripts
  • Vehicles were using the wrong damage emitters if there were more than one
  • Fixed sound source allocation code to accept <16 sources
  • The console command getServerConnection() was looking for the wrong number of arguments
  • Increased GuiScrollCtrl's tolerance to match standard Windows scrollbar-tolerance
  • Added Particle Editor keybinds to demo mod
  • Minor tweak to cursor offsets
  • Fixed footstep sounds on different materials on Interiors
  • Set up proper materialMaps for all of the starter kits
  • Added UnlinkNamespaces to console.cc
  • Added fileCopy ConsoleFunction to consoleFunctions.cc
  • Added NameSpace::unlinkClass to consoleInternal.cc
  • Added CanSaveFieldDictionary member and persistent field to SimObject.
  • Added save method to simObject (formerly only in the console method) and updated console method to call this on the object.
  • Added dumpClassHierarchy method to SimObject that will dump the class hierarchy up from the class to it's root class, plus accompanying console method.
  • Added isChildOfGroup method and console method that will return if this object is a child of the parameter object's group.
  • Added get/setCanSaveDynamicFields to SimObject as methods.
  • Added at method to SimObjectList and SimSet classes returning the item at a given index.
  • Changed writeFields member of SimObject to be virtual allowing for overriding of the functionality contained within.
  • Added WriteObject method and console method to FileObject allowing one to write a given SimObject to a file.
  • Added Rotation and Silhouette optional parameters to dlgDrawBitmap
  • Changed bad include path in GuiColorPickerCtrl.
  • Added getSelectedRow method and console method to GuiTextListCtrl.
  • NUMEROUS fixes to GuiTreeViewCtrl.
  • Added SetCanvasTitle ConsoleFunction that changes the window title of the Game Window.
  • Added Class/SuperClass proper namespace linking to GuiControl, which also Unlinks the namespaces when destroyed.
  • Added CanSave and InternalName persistent fields to GuiControl
  • Added getCanSave/setCanSave methods and getCanSaveParent (which checks up the hierarchy to see if all parents can save).
  • Overrode Write method to check to see if we can save.
  • Added New Console Methods
    • reorderChild
    • getParent
    • getChildByInternalName
    • getInternalName
    • setInternalName
    • getCenter
    • setCenter
    • setPosition
    • setExtent
    • ..and more
  • Fix for Tickable bug in TGB with gui inspector. Manually set process ticks to be safe.
  • added GuiListboxCtrl to engine.
  • Updated GuiProgressCtrl to inherit from GuiTextCtrl so that you may specify progress text in a progress control easily.
  • Added setWindowTitle to platform.h
  • Added checkOtherInstances to platform.h
  • Added getExecutableName to platform.h
  • Added dPathCopy to platform.h
  • Added getDesktopRes ConsoleFunction to platform video.
  • Added minimizeWindow ConsoleFunction to platform video.
  • Added getDesktopResolution to platform video.
  • Corrected the usage message on getScheduleDuration
  • Control object update fix for FlyingVehicle
  • Moved heightScripts to a new folder call terrain_imports since the user can now import from anywhere. This should help make it a little easier for the new user to find/use.
  • Added example bitmap to the terrain_imports folder.
  • Fixed Point3D::normalize()
  • Fixed FixShapeAspect for fxShapeReplicator
  • Small pathname error in the new editor scripts
  • TSShape::computeBounds was not handling meshes with multiple nodes in them correctly
  • D3D Window creation no longer bails if OpenGL isn't found
  • HFL files no longer incorrectly index their images
  • Added profiler blocks to the TheoraPlayer to make it easier to test multithreaded profiler
  • Added ThreadStorage class for cross platform Thread Local Storage in platform layer
  • Fixed crash on mission editor launch in TBE due to uninitialized memory in camera matrix
  • Texture manager uses safe delete
  • Fixed a bug where the texture manager would sometimes prematurely free textures
  • Improved font fallback sanity
  • Canvas no longer swallows TAB keys
  • setCursorPos() now properly updates the real system cursor position
  • Added $pref::Gui::noClampTorqueCursorToWindow, to allow torque cursor to leave window.
  • Cleaned up setting / clearing of first responder
  • Removed NetMutex, standardized it to Torque's Mutex
  • Fixed a IP address truncation bug in platformNetAsync.cc ( was using dStrncpy() instead of dMemcpy() )
  • platformNetAsync.cc now uses Platform::sleep() instead of usleep(). Still sleeps the net async thread for 500 ms, which may be too long for some apps.
  • platformNetAsync.cc standardized to use Torque's Threads, instead of pthreads directly
  • Double buffered the game event queue, to block other threads for the least possible amount of time, and to prevent deadlocking
  • Fonts now only save out to utf when characters have been added
  • Added Mac style keyboard shortcuts for cut, copy, paste, undo, and select all to GuiTextEditCtrl. Windows still uses Windows familiar keyboard shortcuts.
  • Fixed some bugs in the unicode converter, in the functions that create a buffer for you
  • Fixed typo that skipped null termination of some utf16 strings coming out of stringbuffer
  • Added simple debug guards to the FrameAllocator. These are enabled via torqueConfig.h .
  • Fix for bounds condition prob in unicode converter - was appending null off the end of the buffer
  • Fix for StringBuffer.get(UTF16) - was writing off the end of the supplied buffer
  • Fix in GFont::getBreakPos() - was not supplying a large enough buffer to the unicode converter
    • getStrNWidth(UTF8) could pass 0 as buffer len to unicode converter; it now passes size of buffer
    • As it turns out, there are a lot of places that pass buffers to the unicode converter that are too small
  • Hand optimized some stuff that GCC's optimizer should be optimizing but is not:
    • Moved creation of a temporary RayInfo out of a loop. Mostly this just makes stepping through optimized builds of castRay() easier.
    • Removed 2 branches from box-polytope building code in interiorCollision.cc & polyhedron.cc. GCC was emitting bad code in this block, a bug that Apple fixed as of Xcode 2.3.
  • Fixed a crash in fxSunLight.cc - was assuming that client always had a valid control object
  • Changed font fallback path, to try substituting Monaco before Courier
  • Added utf16 versions of dglDrawText() and dglDrawTextN()
  • Changed guiMLTextCtrl to use utf16 version of dglDrawText() in drawAtomText()
  • iTickable fell victim to the static initialization fiasco, and could nuke the list of tickables if they were constructed before the class itself was constructed
  • Changed dFileCopy prototype so that we default to not overwriting existing files. This seems safer.
  • Removed old getDesktopResolution ConsoleFunction
  • Removed pragmas from unicode.cc
  • Removed commented out code from thread
  • Added a new keybind alt-k to clear the console
  • Added a fix for text translation enable/disable in setFirstResponder()
  • Fixed a major rendering glitch in the editor caused by having a mirror in the scene
  • Tweaked the fxFoliageReplicator and the fxShapeReplicator so that it will generate random seeds at creation instead of always using the same one
  • Merged the changes from the Pro exporter into the dstSDK and dtsSDKPlus
  • Updated the dstSDKPlus library to use the proper typedefs (F32, U32, etc)
  • Got rid of most of the warnings that the exporters used to generate
  • Added VS2005 projects for the latest exporters
  • Updated the exporters' code to play nice with VS2005 Express
  • Collision constructor that sets the material to 0 (preventing a bad material crash in places)
  • FileStream seek fix
  • Disable DEBUG_GUARD by default
  • Fix for crash when mission area is deleted
  • Clamped the visible distance to 2000
  • Fixed a delete bug in editor scripts
  • Fix for Rellight popup width
  • Fixes for help file references
  • Fixed a couple hardcoded references to "demo/data/..."
  • Upped the areaImpulse on the crossbow so you can rocket jump with it
  • Fixed some compile errors for the maya2dts exporter and added Maya7 support
  • Fixed a bug in map2dif_plus related to the sgLightingScaleEntity
  • Updated Map2dif Plus to include the lighting kit changes
  • Tweaked the racing actionmaps to play nice with the free cam and the editor
  • Fixed a bug in the Heightfield editor where it wasn't setting the initially "meters" correctly
  • Fixed a bug where the Place by Water Level operation wasn't refreshing when the water height changed
  • Fixed a bug in the Mission Editor where it wasn't deslecting items in the TreeViewCtrl as you selected new items in the scene
  • Fixed a bug where editing a field or hitting apply was setting the wrong first responder making it appear that the function keys and the delete key weren't working any more
  • Fixed it so that deleted items are no longer being inspected
  • Fixed a bug where pasted items were having their data values set to the original's data values *including* position and rotation (which was bad)
  • Added some checks to prevent black squares on terrain when painting (now just get some dimness on terrain texture, d'oh).
  • Changed a line in InteriorInstance that was potentially checking against uninitialized memory for a NULL value. This would work sometimes but not always.
  • GuiTextEditCtrl was setting the cursor one letter from the end in setScriptValue(). It now correctly sets it to the end.
  • Merged the updated Map2dif Plus from MBU
  • Fixed several spots in GuiCheckBoxCtrl where it was trying to return a value from a void function. This allows vc6 to compile the engine.
  • convertUTF8toUTF16() and convertUTF8toUTF32() were shaving off the last characters in the buffer. This was causing getStrNWidthPrecise() to get bogus values in some cases.

This fixes the odd spacing we were seeing in guiMLTextCtrl (like the URL's and bolds in the demo).

  • Fixed LOD for the buggy
  • Fixed it so that ParticleEmitters will have a properly sized bounding box

Mac Enhancements

New Development Requirements

  • MacOS 10.4 and Xcode 2.3 or later are recommended for Torque development.
  • MacOS 10.4 and Xcode 2.2 or later is required to use the latest Xcode project file.
    • Older project files are still available, but are not being updated.
  • Games built with Torque require MacOS 10.2 or later.
  • Renamed "pb" directory to "xcode", since ProjectBuilder is obsolete
  • Updated Xcode project files to work with Xcode 2.2+
    • Moved old project files to 'old build projects' .
  • Updated Mac Xiph frameworks binaries for Universal Binary
  • Updated Mac OpenAL frameworks binaries for Universal Binary
  • Updated the Maya exporter & dts sdk , for gcc4 & universal binary
  • Mac project file cleanup:
    • Moved fixup scripts into build stages on each of the targets.
    • Fixed some absolute references
    • Removed cross-compile setting, not all users install the cross compile libs ( doh )
  • Users should upgrade to Xcode 2.3 or later: Apple has fixed some GCC codegen bugs as of Xcode 2.3 and later.
    • Fixes for crashing release build on Mac. Basically: GCC has been generating bad code, on alternate Wednesdays or something... little rhyme or reason to it.
    • I've stepped through the ASM, and verified that GCC codegen was at fault.
    • Apple has fixed this bug as of Xcode 2.3 and later.
      • If you are not using Xcode 2.3 or later's gcc, you will get this GCC codegen bug, period.
  • Adding better 10.2 compatibility. This is not perfect, but is good enough for now. Torque is still a touch klunky under 10.2, because the new platform uses features that just aren't available on 10.2 . This required some header rearrangement in some places, to cope with the weak linking bindings.
  • Fixed a memory leak related to an forward decl that GCC did not like, in terrData.h
  • Switched jpeg lib to ansi memory manager
  • Adding scripts to fire off each mod
  • Adding some user experience niceties for the final built installers: links, urls, etc.

Platform Rewrite & Cleanup

  • Moved main() out of macCarbWindow.cc, added macCarbMain.cc
  • Moved events out of macCarbWindow.cc, added macCarbEvents.cc
  • Moved alerts out of macCarbWindow.cc, added macCarbAlerts.cc
  • Added close box to the torque window on mac
  • Better Mac gamma support: will revert to default colorsync value if gamma setting approaches within epsilon of the original user gamma.
    • This is necessary because the mac gamma functions do not work well with the complex gamma curves that colorsync produces.
    • If this solution is too sloppy, then we can try using gamma tables, which is not perfect either but closer.
    • Torque's gamma adjustments now simply offset the user's configured color correction & gamma settings.
  • Added handler for the activation click event.
    • The first click in the window is now swallowed at the platform layer, and is not delivered to Torque.
    • This fixes a bug where clicking in a Torque window to activate it would re-click the link or button below the cursor.
    • Torque mouse cursor position is synced to system mouse cursor position when the window is click -activated.
  • Changed clipboard funcs to use the deprecated Scrap Manager instead of the newer Pasteboard Manager.
    • This allows 10.2 copy / paste compatibility. ( the newer code is safely in svn, so it can be retrieved at a later date if needed. )
  • enumDisplayModes() now supresses 8 bit display modes
  • enumDisplayModes() no longer adds "default" modes, it just properly enumerates modes.
  • Revamped window creation
  • Moved globals into platState
  • Moved Platform::getRandom() to macCarbMath
  • TimeManager::process will sleep if the elapsed time is not past the sleepTime. Basically, sleeptime is now actually respected.
  • Moved window level constants to platformMacCarb.h
  • Renamed some mac plat functions to have better names
  • Added some checks for null in macCarbStrings
  • Various kinds of events separated into more discrete hander functions.
  • A captured mouse is now centered to the window better, was off center & sometimes off the window before.
  • Mouse events now happen only at the application level.
    • If multiple windows are ever needed, they will have to be handled at both the window & app level again.
  • Screen res lists are now properly built from the CGDirectDisplay interface.
  • Added cgDisplay & cursorHidden to platState.
  • Cleanup in macCarbFileio.cc & macCarbInput.cc
  • Display mode enumeration -- wide screen displays are now detected!
  • Major mac text event handling improvements for unicode & raw keyboard input
  • Use of aglMacro.h is now more configurable
  • Some constants missing pre 10.4 added to macCarb_common_prefix.h
  • Beginnings of a fix for showing asian text input methods in fullscreen mode.
  • Beginnings of windowed-fullscreen mode.
    • Still need to change screen rez and investigate capturing alt-tab and Exposé F-key keystrokes.
    • $pref::Mac::captureDisplay controls windowed-fullscreen mode, and defaults to off.
  • Mouse is now centered properly even if the window has been moved from the center of the main screen, even to a 2nd screen.
  • Removed a number of spurious exclamation points in documentation ( !!!!!! )
  • Window title can now be set
  • Gamma control is now in.
  • Better display enumeration & selection
  • Added macCarbUtil.cc / .h to contain few platform version abstraction functions that didn't belong elsewhere
  • Updated mac media frameworks, removing some old OpenAL header files.
  • Fix for bug# 1240: Map2dif quits without compiling maps, on mac build.
    • getWorkingDirectory() now detects whether we've got content inside the bundle, outside the bundle, or if we're running as a cmd line tool.
  • Refactored event handling in the Mac platform layer.
  • Updated event installation stuff to deal with presence/absence of appWindow
  • Added debug dump info spam on new pixel formats.
  • Fix for font rendering small ( 1 pixel high ) characters such as '-' and '_' .
  • Split OpenGL outline (wireframe) rendering into its own file
  • Reworked the AGL setup sequence. It should be more maintainable now.
  • Replaced the getDesktopResolution console function with a more platform standard implementation.
    • Implemented Video::getDesktopResolution in macCarbOGLVideo.cc
  • Implemented setWindowTitle ( yay! )
  • Implemented dPathCopy, ( in cocoa )
  • Fix for dumpDirectories bug.
  • Mac side impl of thread storage class for the new multithread aware profiler
  • Cleanup in mac gl extensions reading code
  • Deleted some old spurious header files
  • FSAA switching now ignores vendor, and assumes it has a radeon card.
    • This has no detrimental effect on nvidia cards, as far as I know.
    • FSAA now defaults to off, instead of to max samples when it's available.
  • Fix for math overflow error in time code. Who knew it had been so long since the Epoch?
  • Updated CPU detection to see more recent model CPUs, including Intel CPUs
  • Minor changes to getLocalTime, made threadsafe.
  • Minor change to getRealMilliseconds(), to avoid a potential time jump
  • Cleanup in mac: Strings, ProcessControl, Net, Memory, and Font.
  • Altivec math!
    • Added some #ifdefs to allow builds without any altivec support at all. This should usually be unnecessary, as the code calls the OS to detect altivec functionality.
    • Added Altivec 4x4 matrix multuply, missed this file in an earlier commit.
  • Improvements to testScript(), to make it slightly more useful for automatically gathering rough performance metrics.
  • It would appear that CVAs no longer crash on mac. They have therefore been reenabled.
  • Removed some nonsense about the version of carbon ( that wasn't really used anyway )
  • Snipped all OS9 code
  • Added new openWebBrowser() impl.
  • Cleaned up vertical sync code
  • Restructured the blender slightly to allow altivec blending to be turned on & off at run time.
  • Engine now starts in 32 bpp mode
  • Adjusted header files in profiler.cc ... this platform specific stuff really needs to be split down into the platform layers.
  • Improvements to input & events:
    • Still a little convoluted, but easy to read
    • Should properly listen to all key events now ( ihpGp )
    • Properly listens to quit events now: fix from Chris Dillman, thanks!

Multithreaded Mac Platform

  • Added a wrapper for sending Torque flavored Carbon events to the main thread.
  • Window & menu bar management has been farmed off to the main thread.
  • Always create dummyAglContext is at app start.
    • This solves some obscure crashbugs from things that try to create textures before a window & OpenGL context are really created.
    • dummyAglContext is now properly destroyed
  • Added a custom carbon event for torque alerts.
    • Tells the main thread to show alert dialogs if we need to show an alert
    • Blocks the Torque thread if we are showing an alert.
    • Threads communicate via a semaphore
  • RunApplicationEventLoop is now on it's own thread, separate from Torque's event loop.
    • RunApplicationEventLoop() must run in the program's original thread.
    • Torque is run inside a Torque thread.
  • Fixed a bug where Thread::join() would never return if entered a 2nd time.
  • Alerts will drop out of fullscreen mode if the display is captured.
    • This means that Asserts and Alerts will now work properly in fullscreen mode! Woohoo!
  • setScreenMode() now re-installs window event handlers, and window event handlers now install the default handler...
    • which fixes old bug where window was not movable after returning from full screen.
  • Added a working mac console. now deals with standard in & standard out, removed old SIOUX code.
    • The console input takes place in another thread.
  • Game->postEvent() is now thread safe.
    • It stores a copy of each event.
    • Game->processEvents() will process each event in fifo order.
    • Only the main event loop, in the main thread, should be calling Game->processEvents().
  • Quiet speculation in macCarbThread.cc docs

Aesthetics & Improvements

  • Garbage from framebuffer in windows is now cleared before the user sees the window.
  • Added fading windows. Feature can be turned on & off with a pref: $pref::mac::fadeWindows, defaults to true.
  • Added mac-like mouse cursor appearance.
  • Added Mac specific shortcuts for cut, copy, paste, undo, and select-all in GuiTextEditCtrl's
  • Mac defaults to NOT clamp the cursor to the window.

Font Rendering

  • Zero-size font glyphs now properly early-out & do not create a blank bitmap
  • Added some debug spam to macCarbFont

Removal of Apple-Deprecated APIs

  • Updated Mac windowing code to use a CGDirectDisplayID instead of the deprecated GDHandle, as often as possible.
  • Alerts now use non-deprecated system calls
  • Reworked getting opengl capabilities, to be more in line with Apple recommendations.
  • Added TORQUE_MAC_HAS_QDGETCGDIRECTDISPLAYID flag in macCarb_common_prefix.h, for use with the cgl opengl capabilities
  • Snipped the platState.osX flag out of everywhere. It hasn't been relevant for quite a while now.
  • Mac fullscreen mode now uses AGL, dependance on the deprecated DrawSprocket has been completely removed!

Linux Enhancements

  • Updated the linux icons
  • Updated dpi for fonts, 78 was not looking to shabby reduce to 76.
  • http://www.garagegames.com/mg/forums/result.thread.php?qt=35921
  • Updated DPI to 78, looks a bit cleaner than 65 or 75
  • Ensured the xiph libs are being compiled
  • Added the xiph include directory to ensure the vorbis/ogg and theora (if needed) header files are found. This will ensure that the user does not have to haveogg/vorbis and theora installed to compile the tools
  • Fixed dedicated build for the new 1.4.2 functions
  • Fixed/improved font rendering
  • Added GCC4 support
  • Fixed engine build so that tools can properly be compiled
  • Modified the message displayed when creating links
  • Added link to so.0 - .so is used at compile time and .so.0 at run time
  • Fixed typo in checklinks.sh
  • Updated Font finding/loading code
  • Script used to check for and add links to ogg/vorbis and theora
  • Added call to checkLinks.sh to enasure we have .so.0 lins for ogg/vorbis and theora
  • Updated LINK.LIBS.VORBIS
  • Added ogg/config_types.h - this along with the other ogg/vorbis headers/libs allows one to compile TGE without haveing to install ogg/vorbis
  • Fix for pthreads
  • Fixed LD_LIBRARY_PATH
  • Fixed crash during font creation, if Arial is not available we try Helvetica.
  • Fixed font sizing issue reported in forums.
  • Fix eddirectory recursion on odder filesystems under linux
  • Added ThreadStorage Code
  • Added -D_GNU_SOURCE for pthreads
  • Had to move around the -Wno-invalid-offsetof compiler option, it is only valid for c++ compiles
  • Updated conf.UNIX.mk to use the new ogg, vorbis and theora lib names
  • Renamed lib files to there standard usage format
  • Updated the lib paths for vorbis
  • Updated build/compile scripts to properly handle the example/lib directory
  • Also updated project.xml so that the lib dir is built into the installer
  • Removed the loading of creator mod for dedicated builds
  • Missed the .rej file for targets.torque.mk, needed hand patching
  • Added deletion of vi tmp files (*~)
  • Removed RegisterCoreTypes() and RegisterMathTypes()
  • Fixed sizeof() bugs in GuiTreeViewCtl
  • Updated OpeanAL to a more recent version
  • Added GCC 3.4 compiler option - Thanks Gregory McLean
  • Start of ifdef'ing out SDL from Thread and Semaphore code for DEDICATED builds
  • Added missing x86UNIXFont.h
  • Various Linux updates to get Threads/Semaphore's working and a first pass at the dedicated stub
  • Added target.map2difPlus.mk
  • Updated map2difPlus *.cc & *.h files to use the new map2difPlus directory
  • Updated to enable complilation of the tools under linux
  • Fixed bug for Linux where dedicated server was evaluating every console command as having a synatx error (in StdConsole::process())