Game Development Community

dev|Pro Game Development Curriculum

Torque 3D Development - 1.1 Beta 2!

by Matt Fairfax · 08/04/2010 (1:32 am) · 80 comments

static.torquepowered.com/static/upload/emp-985/Torque-3D_Development-Blog-Header.png
The long awaited Torque 3D 1.1 Beta 2 is ready for your testing (if you are a Torque 3D Professional owner)! You can grab it from the Torque 3D downloads on your account page.

This Beta had two primary focuses:

static.torquepowered.com/static/upload/emp-985/Scripting%20Reference.jpg
Full Scripting Reference

A full Scripting Reference - for nearly a decade many parts of the engine that are exposed to script have had little or no documentation. Eric and Mich drew a line in the sand earlier this year, saying that the next release of Torque 3D would fix this long standing problem. The documentation and development team worked some really long hours to get this finished for this release and I am proud to say that they came through with flying colors!

Performance optimizations - going into GDC we put a lot of effort in optimizing our demos. This included many low level changes to the rendering systems and we still have a little more work to do in this area for Torque 3D 1.1 but everyone should see some nice speed increases.

Status Updates


For those of you who don't track the Torque 3D forums closely, we have started to give far more regular updates about the active status of Torque 3D. We will be particularily active over the next couple of months are we drive towards Beta 3 and the Final version. I highly recommend everyone keep a close eye there!

What Is In Beta 2


static.torquepowered.com/static/upload/emp-985/Physics%20Demo.png
New and improved Physics demo level


Features:

  • Full documentation of all classes, functions, callbacks, and variables exposed to script for building games (excludes deprecated, internal, and editor only functionality)
  • New engine API binding system with greatly expanded support for documentation
  • Added overrun and underrun guards to vertex and index (primitive) buffers when you lock and fill them
  • Added $pref::PhysicsDebris::lifetimeScale to scale the overall lifetime of dynamic physics debris
  • Added an optional destroyed PhysicsShape to PhysicsShapeData
  • Support for hardware mesh instancing for TSShape meshes
  • - Added multiple vertex stream support to GFXDevice via a refactor of the entire setVertexBuffer pipeline
    - GFXShaders now create "instancing constant handles" from an instancing vertex format assigned in initialization
    - GFXShaderConstBuffer now has support for "instancing constant handles" which write into a locked VB pointer
    - Changed WindDeformationHLSL to use only two shader constants and support instancing
    - We now use VPos for the screen space coords for fizzle (need to add fallback for SM 2.0)
    - Big refactor of RenderPrePassMgr to manage 3 seperate element lists for terrain, meshes, and object render insts
    - RenderPrePassMgr, RenderMeshMgr, RenderTranslucentMgr all support hardware mesh instancing
    - Added various helper methods to ShaderFeatureHLSL which wrap lookups to some matricies which can change based on instancing
    - Removed the unnecessary ProcessedMaterial::cleanup() virtual
  • Added buoyancy support to PhysicsShape
  • Added PhysicsBody::getCMassPosition()
  • Added PhysicsWorld::mGravity for future control over global gravity
  • Added PhysicsWorld::isEnabled() for testing when the world simulation is stopped
  • Combined lens and chromatic distortion post effect
  • Refactor of imposter rendering to use ShaderGen and render into shadows
  • - Added material feature "Imposter Vert" for unpacking imposter verts
    - TSLastDetail now creates a private Material and a MatInstance for rendering imposters
    - Added imposter bin to shadow pass
    - Added $pref::imposter::canShadow to control if imposters are rendered into shadows
  • Added $pref::PSSM::detailAdjustScale and $pref::PSSM::smallestVisiblePixelSize for tweaking DTS lod in PSSM shadows
  • Added destructibility to PhysicsShape, controlled via ConsoleMethod(s) destroy and restore. Destroy will spawn an optional Explosion and PhysicsDebris and remove the original PhysicsShape from the simulation until restore is called.
  • New class PhysicsDebris PhysicsDebris class ( similar to Debris ) except that debris pieces are rigid bodies simulated through the PhysicsPlugin
  • Added 'originSort' to TSStatic for translucent sorting of the mesh by the origin of the model instead of the nearest point to the bounding box. Useful when very explicit control over the mesh render order for transparency is needed.
  • If a Decal's Material has no normal map, the normal map from the surface the decal is on will show through (this only works in Advanced Lighting)
  • Vertex coloring support in ShaderGen which can be enabled through a 'vertColor' flag in Material
  • Added new MatStateHint object to allow for better batching of MatInstances
  • Added the ability to playback a Journal and save it as a video file
  • Examples:
    - "FPS Example.exe" -jPlayToVideo myJournal.rec (plays myJournal.rec and records a video using the same filename and default settings. Video extension is automatic depending on the encoder (defaults to Theora's .ogv))
    - "FPS Example.exe" -jPlayToVideo myJournal.rec -vidCapWidth 1280 -vidCapHeight 720 -vidCapFile myVideo (plays myJournal.rec and records a video to "myVideo.ogv", resizing the frame to 1280x720)
    - "FPS Example.exe" -jPlayToVideo myJournal.rec -vidCapFile myPNGVideo -vidCapEncoder PNG -vidCapFPS 60 (plays myJournal.rec and records a sequence of PNG files at 60fps to the folder "myPNGVideo")
  • Added a new command-line dae2dts application for converting Collada files to DTS files outside of Torque
  • Added PhysicsForce object for doing gravity and push effects
  • Ported Physics Demo over to use new PhysicsShape based breakables

Improvements:

  • Optimized how the imposter generates and packs its state into the vertex buffer
  • Added River Editor guide
  • Added Mesh Road Editor guide
  • Added Decal Road Editor guide
  • Added Decal Editor guide
  • Added Particle Editor guide
  • Added Datablock Editor guide
  • Updated Shape Editor guide in World Editor/Editors section
  • Improved formatting of Shape Editor guides
  • Updated Introduction for T3D Documentation
  • Various fixes for artist docs: odd characters, unused images, added missing files, fixed links
  • Added $gfx::disableOcclusionQuery and $SceneGraph::disableTerrainOcclusion for debugging and tweaking performance
  • Render object icons when multiple objects are selected
  • Removed the fizzle texture used by the visibility feature and replaced it with an ALU trick using the same number of instructions.
  • Since CustomMaterials cannot be previewed or edited properly in the Material Editor, filter them from the Material Selector GUI, and warn if one is selected in another way (such as from another editor, or via the Target dropdown list)
  • New Setup Guide, New Artist Guides, New TOC structure, New tutorials, Updated older images and guides, big formatting pass
  • Added new console function to force reloading a resource
  • Added ability to remove entire detail levels in the Shape Editor
  • Added ability to hide/show mesh objects in the Shape Editor preview window
  • Now message clients when mission load fails on the server so they can go back to the main menu rather than sit waiting at the loading gui
  • Enhanced prefabs to scale their internal items when the prefab is scaled
  • Now allow GuiSliderCtrl::setValue() to invoke the script callback (handy for updating a slider and text control at the same time)
  • Exposed additional Material properties to the Material Editor
  • Now allow URLs starting with 'www.' to be matched and rendered as links in GuiMessageVectorCtrl (as well as URLs starting with http://)
  • Signal now protects against a notification removing itself while being triggered
  • Now allow nonstandard X,Y (instead of S,T or U,V) texture coordinates in Collada models
  • Updated Shape Editor to support animation sequences on mounted shapes
  • Added button to Shape Editor to recompute the shape bounds using the current detail level
  • setEmitterDataBlock, in particleEmitterNode.cpp, now expects a ParticleEmitterData pointer rather than an integer to make it compatible with the new documentation system. Also rewrote the code within the DefineEngineMethod for this to support the change. This also adds a console error informing the end-user if the entered ParticleEmitterDatablock could not be found.
  • Now render Shape Editor node gizmo with world or object transform based on the world/object setting in the Node Properties window
  • New right-click menu for rollouts in the Gui Editor library tab
  • New callback GuiRolloutCtrl.onHeaderRightClick()
  • GuiAutoScrollCtrl
  • - New property GuiAutoScrollCtrl.direction that determines direction to scroll in
    - New property GuiAutoScrollCtrl.isLooping that determines whether to loop or not
    - New property GuiAutoScrollCtrl.scrollOutOfSight that determines whether to scroll only to border or out of sight
    - New method GuiAutoScrollCtrl.reset() that allows to reset scrolling
    - New callback GuiAutoScrollCtrl.onStart()
    - New callback GuiAutoScrollCtrl.onComplete()
    - New callback GuiAutoScrollCtrl.onReset()
  • SimSet::empty() is now const
  • Add 'neverImportMesh' and 'alwaysImportMesh' fields to TSShapeConstructor to allow specific meshes in the collada file to be ignore on import
  • Major refactor of MatTextureTarget
  • - Renamed MatTextureTarget to NamedTexTarget and merged in functionality of NamedTexture (which was removed)
    - You no longer inherit from MatTextureTarget... instead you create a NamedTexTarget and set parameters
    - Fixed up all the dependent classes and objects to use new NamedTexTarget
    - Removed all remaining traces of the BlurOp class
  • Added work around to keep D3D shader compiler DLL from constantly loading and unloading on each shader compilation
  • Added method to export a single sequence from a 3space shape to a DSQ file.
  • Updated legacy TSShape saving support (for compatibility with ShowToolPro)
  • Removed static allocation of BanList
  • Removed Bison parser header from public includes
  • Replaced doxygen.exe with custom-compiled version that hardwires enum handling to C# style enums so that enum values are locally scoped; solves the problem of Doxygen mixing up doc strings between enums
  • Can now reorder materials in the "Terrain Painter Material Selector" window via drag-drop mouse events. This allows you to change the order in which TerrainMaterials are blended in the detail pass.
  • TerrainEditor's brush now rendered in a more attractively (and less obtrusive)
  • TerrainPainter now supports undo/redo for adding or removing terrain layers
  • TerrainEditor now renders the brush/selection much more efficiently. It does one draw call per MAX_VOLATILE_VERTS rather than one draw call per brush tile (a whole lot).
  • Fix a typo in one of the EngineMarshallData overloads
  • Added a new type TransformF that represents a combination of VectorF position and AngAxisF orientation
  • Added examples to Vector Math functions
  • Changed some characters used in new documentation that are invalid when the console system is exported to XML (consoleXMLExport).
  • Added new dStrichr() function
  • Removed the unused netInit() function
  • Removed the defunct LightReceiver class from the SceneObject hierarchy and removed the unused "Lighting" fields from TSSTatic and StaticShape
  • Removed some unused variables and functions from InteriorInstance
  • Unification of console type system. ConsoleObject pointers are now just another kind of console types.
  • - All ConsoleObject-derived classes are now automatically console types. No need to DefineConsoleType manually and make use of IMPLEMENT_GETDATATYPE/IMPLEMENT_SETDATATYPE.
    - Field referring to other objects can now have precise type information. Use TYPEID< className >() to retrieve type IDs of classes (or any other native type registered as a console type).
  • Bitfields are now first-class console types
  • SimObject::dump() now takes a boolean argument to will switch between terse and detailed output (default is terse - no doc strings)
  • Enums are now first-class console types
  • Added support for true console constants
  • Setting HIDE_SCOPE_NAMES=NO for the moment so we see fully qualified names on variables; we may want to revisit this later
  • Added support dumping variable docs to engineDoc
  • Updated EngineAPI.rtf with information on how to document console variables
  • Added new String::split() method
  • Rolloff factor and doppler shift can now be controlled through ambient spaces
  • Replacing the HTML doc shortcut with a bat to open index.html since windows does not support shortcuts with relative paths
  • Modified Doxygen config to put @tsexamples in their own "Example" paragraphs
  • Added RTF file describing how to add engine APIs and document them
  • Added TypeMatrix console type (needed for using MatrixF with engineAPI)
  • Added TypeAngAxisF console type (needed for using AngAxisF with engineAPI)
  • Inspector now includes field docs only up to first newline
  • New methods for GuiCanvas (clientToScreen, screenToClient, getWindowPosition, setWindowPosition)
  • Added ability to document console variables
  • Added several functions to Namespace::Entry to retrieve pieces of doc string data
  • Added example ConsoleDocClass for GFXStateBlockData and GFXSamplerStateData
  • New macro ConsoleDoc for inserting arbitrary auto-doc source text into the code; needs to be hooked up in consoleDoc
  • New macro system for writing console functions; all marshalling and unmarshalling is performed internally
  • Much improved output of SimObject:dump (includes return types, proper prototypes, fields docs and types, etc)
  • Reimplemented DECLARE_CONSOLE_CALLBACK/IMPLEMENT_CONSOLE_CALLBACK mechanism; this should be used in place of generic executef calls now
  • New macro ConsoleDocClass for adding script reference documentation to classes
  • SimObject::dump now only includes method usage strings up to first newline
  • Reverted core/art/gui/profiles.cs' use of singletons back to isObject+new so user scripts may override core profiles with custom profiles without having to touch core
  • Renamed "Marker" in World Editor creator palette to "Path Node" for better clarity
  • Hiding/unhiding in Gui Editor is now undoable
  • Rocket decals in FPS Example now fade out
  • GuiObjectView properties can be set in the Gui Editor
  • Skins for the primary and mounted model in a GuiObjectView can now be specified
  • Light and camera control of GuiObjectViews is now exposed to script
  • Custom mount nodes can now be specified on GuiObjectViews
  • Animation sequences in GuiObjectViews can now be given by name
  • "hidden" and "locked" are now regular properties of SimObjects rather than using dynamic fields
  • The fade-from and fade-to color of GuiFadeinBitmapCtrls can now be set to a color other than black
  • Field flags can now be specified when adding fields
  • Fields can now be hidden from inspectors by setting the FIELD_HideInInspectors flag
  • The glow buffer will disable the glow postfx processing, saving alot of fillrate, if no elements are in the glow bin that frame
  • Restored SM 3.0 conditional to skip over fully transparent parts of terrain detail maps and normal maps
  • Refactored setupLights() to be called during reflections and when the material is forward lit. This removes CPU overhead of gathering and sorting lights on all deferred lit materials.
  • - Most of the TSShape rendering objects now use isForwardLit() and isReflectPass() to decide to gather lights
    - Added BaseMatInstance::isForwardLit()
    - Addded MaterialList::isForwardLit()
    - All BL materials now get the MFT_ForwardShading feature
  • Moved vector eye calculation to SceneState to remove recalculation that happened on every prepass and shadowed RenderInst in ProcessedShaderMaterial::setTransforms()
  • Removed unnecessary MatrixF work for a 3x3 cubemap matrix in ProcessedShaderMaterial::setTransforms()
  • Refactor of SceneGraphData to remove the memsets and matrix copies it was doing on every single RenderInst in every single pass
  • - Removed SceneGraphData::reset() (you should never need to do that)
    - Added SceneGraphData::init() which initializes the SceneGraphData for a SceneState
    - RenderBinManager::setupSGData() only sets MeshRenderInst state to the SceneGraphData (no resets or repeated calculation of fog parameters)
    - Changed SceneGraphData::objTrans into a const MatrixF* to avoid a matrix copy on every RenderInst
  • Removed unnecessary reset() and application of fog settings in AdvancedLightBinManager::setupSGData()
  • GFXVertexFormat now interns its description string and we optimized isEqual to just a pointer test
  • Refactor of RenderImposterMgr to use volatile VBs which removed all the vb locking overhead
  • We no longer pass the enable/disable collision state on to the player's physics proxy. This causes massive slow downs when doing Torque ray casts during rendering as it forces the system to block to get the physics results. If the player needs to be excluded from a physics ray cast we need a method that doesn't change the scene state and block the simulation.
  • Switched the UnifiedMainMenu to be a singleton so that it is easier to override on a project-by-project basis
  • Made the relevant parts of the LoadingGui singleton's so that they are easier to override on a project-by-project basis
  • Added $AL::UseSSAOMask global to toggle inclusion of sampling from the #ssaoMask texture target from the vector light shader. Saves one ALU per pixel and fixes a bug on the Xbox build.
  • The icon fading distance can be controlled with Alt-wheel
  • Object icons in World Editor now alpha-fade to give a less cluttered view of the scene with many objects
  • Datablock Editor now maintains editing state across activations
  • Datablock selection in Datablock Editor is now sync'd to SceneObject selection by switching to associated datablocks
  • New script function createAndConnectToLocalServer( %type, %level )
  • ChooseLevelDlg better protects against restarting level loading in-midst of initiated load and allows reinitiating on failure
  • Connection rejects for local server connects are now handled on the same path as remote server connect; this correctly signals onConnectRequestRejected in this case (will bring up error messages as expected)
  • World Editor now pastes into SimGroup selected with "Add New Objects Here"
  • GuiSliderCtrl no longer signals an update when the slider value has not changed
  • SimObject:assignFieldsFrom now allows the copy source to be an instance of a superclass compared to the copy target
  • Camera field in World Editor status bar is now a dropdown that allows to switch views
  • Class name strings of AbstractClassReps are now StringTableEntries
  • Script methods SimObject::getFieldValue and setFieldValue now automatically parse out array indices in the field name if present
  • Current particle slot in emitter can now be replaced with new particle definition by CTRL/CMD-clicking the new particle button (previously only appending a particle was possible)
  • New script method GuiPopUpMenuCtrl::changeTextById
  • GuiPopUpMenuCtrl::sort/sortID now preserve selections
  • TorqueScript datablock definitions can now have computed class names and object names
  • GameBase objects are now notified when their datablock is changed in the editor and given a chance to reload.
  • To support this with easy integration with all existing objects the signature of GameBase::onNewDatablock has changed to take a bool signifying this is a reload.
    Editing a PhysicsShapeData in the datablock editor has been tested and live-updates. Other classes may or may-not actually be setup to do all reloading they would need for live-updates within their onNewDataBlock method.
  • Multi-object editing in inspectors now longer builds a cross-section of the given object properties; this restricts editing to fields shared by inheritance but results in a significant speedup when selecting many objects at once (and being able to edit fields shared by definition only probably wasn't useful functionality anyway)
  • Reflections are now rendered using forward shading, saving massive quantities of CPU and GPU resources.
  • - Added 'bool SceneState::disableAdvancedLightingBins()' and 'void SceneState::disableAdvancedLightingBins(bool)'
    - Added MFT_ForwardShading
    - Changed Advanced Lighting functionality keyed off of MFT_IsTranslucent to be keyed off MFT_ForwardShading instead.
    - Added BaseMatInstance::getUserStateBlock()
    - Reflectors now use the material override delegate on SceneState to create reflection materials
    - Added ReflectionMatHook to manipulate materials used for reflection rendering
  • Added Support for bullet physics in the OSX Physics demo
  • Add ability to specify NULL detail levels (details without geometry) in collada models by adding a node called "nulldetailxxx" with no children or geometry attached.
  • Second parameter to makeRelativePath is now optional (defaults to game directory)
  • SFX initialization now falls back to auto-detection when initial device init fails
  • SFX device auto-detection now sorts all available devices by preferentiality and tries initialization in order until first device successfully initializes
  • New SFXState AudioMoodNeutral
  • New script functions ArrayObject::sortf/sortfk/sortfd/sortfdk to sort ArrayObjects using custom script callbacks
  • All datablock field list boxes in inspectors now have an empty first entry to allow unsetting the datablock (GameBase prevents it on its datablock field)
  • The ambient factor for particles now does lerp( particleColor, particleColor * ambientColor, ambientFactor ) for better results during time of day changes. Also aligned particles now get ambient color.
  • Non-networked SFXTracks in inspector popup selectors are now colored slightly red to help remind of the difference to networked tracks
  • Scrolling positions of GuiScrollCtrls can now be set interactively in Gui Editor by ALT-clicking into scrollbars; this simplifies editing their contents
  • Grid resolution changes more quickly in editor's ortho views
  • Grid in ortho editor views can now be disabled ("View -> Show Grid in Ortho Views"; CTRL-SHIFT-ALT-G)
  • Ability to change the default material for objects created by the Road Editor is available in the Editor Settings window
  • Ability to change the default material for objects created by the Mesh Road Editor is available in the Editor Settings window
  • Ability to change the default material for objects created by the Convex Editor is available in the Editor Settings window
  • Removed unnecessary casting in SimObjectPtr and static_cast<>s that break when using mutable
  • Added SceneState::getOverrideMaterial() and changed up shadow rendering to use it instead of the RenderMeshMgr override delegate. This improves batching for shadow materials and makes it easier to do a special render pass.
  • Removed light copy for shadow render passes to save CPU time
  • Slightly better batching for RenderPrePassMgr, but it batches very badly with alot of CPU overhead per-draw call
  • Added MatTextureTarget::getTargetName()
  • Fairly big performance fix on setting shader constants from MatrixSet
  • File to load for "New Level" can now be set in World editor preferences
  • Added a dynamic branch to skip ~35 instructions when there is no wind force in WindDeformationHLSL
  • Added new LightQuery class which simplifies and optimizes how lights are gathered for forward lit materials
  • Developed solution for order-of-creation dependencies between objects created in script. Objects can how have SimObjectRef type fields, which can be assigned to an objectId or name, and will only attempt a Sim::findObject to resolve on first dereference.
  • This solution has been applied to PhysicsShapeData, which was a particular problem, since it can hold a reference to another PhysicsShapeData, in addition to a debris and explosion. However this can be used in literally every datablock that references other datablocks, or possibly other non-datablock scenarios ( GuiProfiles? ).
  • The lower quality soft shadow mode now uses 5 better distributed taps and the quality is much higher.
  • Added support for minDamageAmount to PhysicsShape to keep some weapons from damaging objects.
  • Added console XML export script.
  • Setting $pref::windEffectRadius and $pref::Physics::threadCount. Overloaded to a specific value after exported prefs are loaded.
  • GuiCanvas and NetConnection will both call Journal::Disable() when created. This is done because journaling can not easily guarantee correct results when recorded/played after a GuiCanvas or a NetConnection have been created and began receiving inputs.
  • Switched the TSStatic::MeshTypes to using the new enum system
  • Added Journal::Disable() to put the journaling in disabled state
  • Added SimDelegateEvent which is a general purpose SimEvent which calls a Delegate callback
  • Script method GuiSwatchButtonCtrl::setColor() now executes "altCommand" after field set
  • Added real gravity gun to Physics demo.
  • Added support for either full (0-1) or single frame UV texture mapping for animated Material sequences (www.garagegames.com/community/forums/viewthread/93257).
  • Added exposure field to CloudLayer so you can get clouds brighter than previously possible even with a baseColor of white
  • The installers and Torque Toolbox are now signed executables
  • Can now set Anti-Aliasing level in the Options dialog. In Basic Lighting this will affect everything that renders, in Advance Lighting it will affect GUI elements only but will also enable EdgeAAPostEffect if AA is non-zero.
  • Protected against bad auto billboard settings and Material creation failures

Fixes:

  • River no longer disappears at certain angles (this was due to not re-binning after it calculates its worldbox)
  • River no longer generates vertex and index buffers on the serverside object
  • Audio volume is now saved and restored correctly
  • Volume sliders in audio options are no longer initialized to incorrect values
  • River is no longer allocating a new index buffer on every frame
  • Fixed primitive buffer overrun in GroundPlane
  • Clicking close window button in color picker now correctly cancels the selection and no longer permanently disables the dialog
  • Fixed "Export Interiors to Collada" function not working (www.torquepowered.com/community/forums/viewthread/109137)
  • Fixed wrong size sometimes returned by File::getSize() when the file is open (www.torquepowered.com/community/forums/viewthread/98765/1#comment-756693)
  • Fixed terrain editor/painter elliptical brush not working correctly when Terrain had a square size > 1
  • Fixed terrain editor brush settings being reset when changing another setting in the Editor Settings GUI
  • Fixed typo in object builder message boxes
  • Fixed crash if Material used by TSMesh fails to compile when switching between Basic and Advanced Lighting
  • Fixed crash in SFX3DObject when connecting remotely
  • Fixed Shape Editor fit-to-view not working correctly with shapes whose stored bounding box does not encompass the entire shape
  • Include TSStatic objects in collision mask when computing radius damage (www.garagegames.com/community/forums/viewthread/90985)
  • Fixed River/Road/MeshRoad nodes being modified when dragging the mouse in select mode
  • A PhysicsShape object which is inside a Prefab now restores to the correct position (was previously treating the object space position relative to the Prefab specified on-disk as a world-space position)
  • Fixed loading UV coordinates for Collada models that store them in the element
  • Remove unused/redundant code in Terrain Editor (www.garagegames.com/community/forums/viewthread/97379)
  • Fixed two problems with Player recoil sequences: too many recoil threads created, and only the last defined recoil sequence actually being used (www.garagegames.com/community/forums/viewthread/106571)
  • TimeOfDay now uses normalized elevation values for color and event processing (this fixes problems with repeatedly triggered events when azimuthOverride was set to 0) (www.torquepowered.com/community/forums/viewthread/107155/1#comment-706823)
  • PhysicsShape collision nodes can now be placed under a dummy node with the visible mesh nodes as siblings (this allows the user to have multiple visible meshes, for lod purposes for example)
  • Fixed PersistenceManager handling of field values containing multiple tokens (eg. "8.3 * 10") (www.garagegames.com/community/forums/viewthread/98055)
  • Fixed inconsistent radius damage from explosions
  • Remap some editors use of the "e" and "c" keys. All editors now use them to move the camera up and down.
  • Fixed crash when trying to paint Forest items using an invalid shape file (www.torquepowered.com/community/forums/viewthread/106285)
  • Now force prefabs (and other files saved from the world editor) to have the correct extension (www.torquepowered.com/community/forums/viewthread/106139)
  • Fixed shadows for Billboard meshes (www.garagegames.com/community/forums/viewthread/100055)
  • Footprints now scale based on the Player's scale
  • Fixed Material Editor light color selection
  • Fixed upside down texture coordinates in exported Collada models
  • Fixed RenderShapeExample object not rendering (www.garagegames.com/community/forums/viewthread/105681)
  • Fixed rotate gizmo not working correctly in orthographic views
  • Fixed soft snap to snap using selected object geometry rather than selected object center
  • Selecting a PhysicsShape from the tree within the ShapeEditor now shows the PhysicsShapeData::shapeName
  • Fix potential NULL pointer access when calling changeMaterial() on a TSStatic that doesn't have any Materials
  • Light visualisations no longer render when the world editor is inactive (www.torquepowered.com/community/forums/viewthread/110877)
  • Fixed Material Editor using diffuse and specular colors from layer 0 when editing colors in other layers (www.garagegames.com/community/forums/viewthread/101277)
  • Fixed misspelled WheeledVehicleTire field name
  • Fixed incorrect rendering of URLs in GuiMessageVectorCtrl (www.garagegames.com/community/forums/viewthread/100717)
  • Fixed missing key binding for object soft snap (www.garagegames.com/community/forums/viewthread/100619)
  • Fixed ScatterSky brightness parameter not being applied from object creator. (www.garagegames.com/community/forums/viewthread/97451).
  • Fixed Terrain snap key binding (www.garagegames.com/community/forums/viewthread/100621)
  • Fixed ShapeBase and TSStatics to export to Collada with normals, uvs and materials
  • Fixed TARGA (.tga) loader support to handle the colormap image types and the vertical/horizontal flip flags
  • Fixed normal map seams in imported Collada models by using better method to detect duplicate verts. A nice side effect is that models will now usually have fewer verts overall giving improved skinning performance.
  • specularPower values from Collada files are now normalized into the 1-128 range
  • Fixed collada loader to use frame rate in DAE file instead of fixed 30fps rate (this fixes odd bone rotations seen sometimes when resampling animation keyframes)
  • ReflectionManager metrics now show proper number for the number of reflectors that are visible
  • Fixed distorted mesh rendering when a mesh is added to a shape (using TSShapeContructor) with different vertex format. ie. the shape contains meshes with vert colors, but the mesh does not contain vert colors
  • Prevent crash when a Player death animation does not contain ground transforms (detect this case add them in automatically)
  • FogPostFx now on by default as intended. This was fixed by moving the declaration of PostEffect::onEnable, which needs to be default return true, to a location which is executed prior to other scripts which allocate PostEffect(s).
  • sfxStopAll() no longer stops the channel but rather stops sources contained in the channel (restores previous behavior of the function)
  • Rotating an object in the World Editor with the gizmo no longer causes the object to "list" to the side in unexpected ways. Also, the screen relative rotation handle has been disabled. It was bugged in a similar way and I attempted to fix it but ultimately decided to just disable the feature. (www.garagegames.com/community/forums/viewthread/99197)
  • PhysicsDebris no longer causes a crash if for some reason TSShape::buildColShapes() fails to find a colNode (eg. node is incorrectly named col_1 instead of col-1)
  • Fixed Collada loader handling of non-standard TEXCOORD parameter names (could by UV, ST or XY)
  • MacWindow::close() now deletes self like Win32Window::close() does
  • Fixed potential crash in TSShape::addSequence() if sequence was added from a different shape file
  • Several minor Shape Editor fixes including:
  • - Ensure Material list header is resized correctly
    - Fixed problem with toolbar button states not being set correctly from settings.xml
    - Fixed problem when setting camera mode from status bar
    - Made all text list control header rows un-selectable
    - Show message box when mounting fails
    - Resort thread list when sequence priority changes
  • A network error on the local client now only indirectly deletes the in-process server (previously lead to crashes)
  • Fixed Platform::makeFullPathName() handling of relative paths
  • Fixed bad vertex color type ("vec4") in VertLitHLSL::processPix()
  • When adding a sequence to an existing shape, make the addition of animation keys when the default transforms do not match optional (default action is NOT to add keyframes)
  • Finished complete support for ground transforms (by animating the bounds node transform) in DAE files
  • GFXPCD3D9Device now properly cleans up VideoFrameGrabber instance
  • Added DebugDrawer to RootGroup so it gets cleaned up on exit
  • The submesh culling in TSStatic now works with scaled meshes (www.torquepowered.com/community/forums/viewthread/114013/1)
  • Now properly initialise TSShape fields (prevents cached.dts files containing uninitialised version value)
  • Specular lighting fix
  • Specular now obeys the transparency of the Material
  • Fixed the animation period to be a division to make larger times animate slower and not faster (www.torquepowered.com/community/forums/viewthread/110915)
  • Fixed incorrect hotkey accelerator string on "Save As..." in Gui Editor
  • Fixed shader warning in pointLightP.hlsl
  • Fixed warnings in vectorLightP.hlsl under PSSM_DEBUG_RENDER
  • Added missing transform vector console methods to SceneObject
  • Display of field docs in Gui Editor is now consistent with World Editor
  • Corrected a number of wrong return types in the SFXSource script methods (used S32 instead of F32 in many places)
  • Renamed SFXSource::getFadeTimes() to the correct name SFXSource::setFadeTimes()
  • Fixed to allow Material's to be defined in the root main.cs
  • GroundCover's field "maxBillboardTiltAngle" now working again (this was lost when the change to render with regular Materials was made)
  • Fixed a DirectX error/assert in GuiTabBookCtrl when rendering the "end tab" if that tab was entirely offscreen (outside the viewport)
  • GuiDragDropCtrl now holds the "mLastTarget" control as a SimObjectPtr. This prevents a crash from occurring if the control currently underneath the GuiDragDropCtrl is deleted.
  • Corrected return type on SFXSource::getVolume, getPitch, getFadeOutTime, and getFadeInTime (in all cases was S32 when it should be F32)
  • TerrainEditor's brush no longer has the weird offset when it has an even size
  • Terrain shadows no longer flicker when painting terrain materials
  • Performance while sculpting terrain in the TerrainEditor now performs much better do to catching a few bugs causing unnecessary work
  • SFX3DObject::getEarTransform() now uses the camera transform if an ear node was not defined, which means it obeys first/third person camera changes
  • mPlayTimer.reset() needed to be called in SFXSource::_play, this was preventing a sound from be played more than once
  • Fixed out of range write on locked index buffers caused by the lock() API using a U16 start and end index
  • Fixed Collada spotlights exported from XSI being incorrectly rotated/positioned (actually, the problem would show up for any exporter that used the node transform element, but XSI is the only one that seems to use it).
  • Default SFXEnvironment on the default SFXAmbience datablock is now AudioEnvOff, i.e. reverb is off by default
  • Added lifetime to GrenadeSplashRingEmitter datablock
  • Particles are no longer rendering incorrectly after switching between Basic and Advanced Lighting due to the shader consts being set on the old shader rather than the new one
  • Fixed long time backwards matrix multiply in ground transform calculation
  • Cubemap reflections on WaterObject (eg. not fullreflect) now oriented properly
  • TSShape::addImposter() no longer calls setupBillboardDetails() if there is not a GFXDevice present (eg. dedicated server) (www.garagegames.com/community/forums/viewthread/106733)
  • Projectile now collides with Player objects with PhysX or Bullet physics enabled (the user object was not being assigned)
  • Removing a layer in the terrain painter now works (and does not crash). We also prevent the removal of a layer if it is the only one. (www.torquepowered.com/community/forums/viewthread/111585)
  • WorldEditor no longer causes a crash when undo/redo an object field change when no object is currently inspected
  • Player firing now obeys the ShapeBaseImage::correctMuzzleVector field (www.garagegames.com/community/forums/viewthread/105129/1#comment_form)
  • Moving WaterPlane vertically using the gizmo now works properly. GroundPlane was already modified to always and forever be at the origin. (www.garagegames.com/community/forums/viewthread/102639)
  • Canvas no longer calls endScene() if beginScene() has failed. This fixes an AssertFatal which occurred when Ctrl-Alt-Del was pressed in Windows 7.
  • RTLightingFeature now works properly on imposters that do not have normal maps. This fixes imposter shaders failing to compile when normal maps are disabled do to video quality prefs.
  • Imposter capture now renders out the correct number of frames when mip down scaling is enabled in the video quality prefs
  • Terrain materials now only render base texture if shader model is less than 3.0. This fixes terrain shaders going over the instruction limit for 2.0 and failing to compile.
  • Fixed NULL client mount PID crash in SceneObject::unmountObject()
  • PxBody properly builds kinematics even if the mass is 0
  • PxBody::setMaterial works with static bodies now
  • Fix for bad Particle draw calls from NULL VB in ParticleEmitter::prepBatchRender()
  • Changes in Sketch Tool now dirty the mission (activates File->Save)
  • Removed demo specific player object and datablock from default level spawn sphere
  • Fixed Player to gracefully fail creation if the shape instance is NULL
  • Fixed crash in SFXSystem::_updateSources() caused by SFXController adding sources while iterating over source loop
  • Added lifetime to RocketSplashRingEmitter datablocks
  • Fixed crash bug caused by the processAfter() mAfterObject not being cleared when the object was deleted
  • Fix for bad bit reads at end of stream
  • Removed vector truncation warning
  • Removed shader warnings
  • Removed old broken shader files from shared template
  • WorldEditor::getTerrainSnapAlignment() now returns terrain snap alignment instead of normal soft snap alignment
  • Fixed "Locked" menu command in Gui Editor tree view popup menu not toggling properly
  • Fixed Gui Editor treeview popup menu not showing correctly on Windows
  • Changing the name of a fully registered SimObject now also triggers namespace relinkage
  • Header guard #endif was before CameraBookmark
  • Fixed a bad isHidden() overload in ShapeBase
  • SimObject::setHidden() was changing the 'Locked' state and not the 'Hidden' state
  • Changed the default value for blendDest in GFXStateBlockDesc to GFXBlendZero to match the correct default in DX and GL
  • The IE web plugin can now properly register itself when not running in UAC mode
  • Changed loading of PhysX cooking DLL so that its on demand. This had a side effect of removing the need to have PhysXCooking.dll in the game folders.
  • Cubemaps now properly use 'Clamp' and not 'Wrap' for sampling
  • Made castConsoleTypeToString propery take a const reference
  • Added missing ImplementConsoleTypeCasters
  • The struct AbstractClassRep::Field was not being cleared on initialization. This allowed potential crashes when inspecting and working with the fields.
  • Added missing ImplementConsoleTypeCasters for bool
  • SimPersistIDs are now reference-counted (the previous lifetime policy could easily lead to crashes)
  • Material Editor no longer pops up save dialog when activated
  • Made the Torque Memory Manager compilable in Release builds
  • "command" is now triggered reliable on GuiSliderCtrls for mouse up and wheel scrolls (www.torquepowered.com/community/forums/viewthread/112163)
  • GuiSliderCtrl now maintains proper positioning of the thumb when resized
  • Inspector code in World and Gui Editors no longer classifies a single-object field edit as a multi-object one
  • WheeledVehicle no longer attempts to create tire ParticleEmitters server-side
  • Animation sequences set on GuiObjectViews are no longer ignored
  • Inspector no longer misaligns divider when expanding rollouts of array fields
  • TSStatics no longer lead to massive server slowdowns (bug introduced in Beta 1: www.torquepowered.com/community/forums/viewthread/110797)
  • We now stop the PhysX character controller and clear contacts while in the editor. This solves crashes caused by the static collision cache in the PhysX controller.
  • The shadow tap rotation tex now updates after texture zombify events fixing blocky shadow edges
  • Fixed NULL pointer crash in WaterObject::setCustomTextures()
  • LightFlare's no longer blow out across the screen if you whip the camera around
  • Delegate methods for getPreRenderSignal() and getPostRenderSignal() can now use SceneGraph::getSceneState()
  • TimeOfDay events are now fired in the correct chronological order should more than one occur during a single time update
  • TSCollision now builds convex type collision shapes correctly with a non-one scale
  • TSStatic(s) with Bounds type collision are now properly scaled by mObjScale. This applies to the PhysicsCollision created when their is a PhysicsPlugin (bug did not apply to default Torque collision)
  • ClassChunker::freeBlocks needed to set mFreeListHead to NULL so it knows to reallocate in the future.
  • MatrixSet::getWorldToScreen() was not being updated when the projection and/or view matrix changed
  • Imposter normal maps are properly transformed / lit again
  • Now protecting against possible infinite look if painting a ForestBrushElement with a radius of zero
  • Triggers / Player-overlap testing works again with PhysX
  • ParticleEmitterData is now being reloaded correctly (previously just accumulated particle definitions on the emitter)
  • World Editor no longer deselects newly created objects after using the gizmo
  • Drag-copy in World Editor now drops existing selection
  • Removed the rotational component of the transform which caused the fog band to pitch with the camera
  • Fixed infinite recursion in initialization of "Audio Parameters" dialog
  • SkyBox now renders the "fog band" with a Material which fixes it in HDR
  • TerrainEditor now uses normal mouse-wheel event handling as to not interfere with action map bindings
  • Datablock Editor no longer mixes up selection state when closing and re-opening World Editor
  • Local server NetConnection is no longer leaked on connection failure
  • GuiTreeViewCtrl no longer potentially locks up in rendering after doing a sort
  • Forward shaded fog was incorrectly fogging the fully transparent parts of meshes
  • m_matF_invert_to_C() now computes a correct inversion (www.torquepowered.com/community/forums/viewthread/111729)
  • SimObject::assignFieldsFrom() no longer tries to copy "name" and "persistentId"
  • Imposters now properly dissolve / fizzle at a distance ( with the recent changes to use ShaderGen )
  • Foliage now properly dissolves / fizzles out at a distance
  • applyRadialImpulse() calculation in PxMultiActor, PhysicsShape, and PhysicsDebris were doing the force scale by distance backwards
  • Corrected typos in anisotropic filtering option (www.torquepowered.com/community/forums/viewthread/111205)
  • Clicking off of an open GuiPopUpMenuCtrl now properly cancels the selection
  • RemapDlg is no longer shamed by ugliness
  • GuiCanvas::setFirstResponder() no longer signals onLoseFirstResponder when GuiControl::setFirstResponder rejected first responder
  • PhysX has the opposite winding order for collision meshes... added NX_MF_FLIPNORMALS to PxCollision::addTriangleMesh()
  • Join server dialog now shows all columns
  • Join server dialog now shows mission name
  • Mission loading now sets $Server::MissionName (uses theLevelInfo.levelName)
  • Fixed memory leak in server query
  • Emitters in Particle Editor can now be renamed and save under correct name (www.torquepowered.com/community/forums/viewthread/110925)
  • Camera can now be rotated in Particle Editor
  • QuickEditDropDownTextEditCtrl now properly sync's up popup menu when renaming through text edit ctrl
  • ParticleEmitter::emitParticles() no longer crashes when particleDataBlocks is empty after a failed reload
  • GuiPopUpMenuCtrl::setSelected() now correctly calls the Command callback
  • Frustum::set() was not copying points and planes causing inverted frustums to be lost after assignment
  • StringData::getOrCreateHashCase() and StringData::getOrCreateHashNoCaseString() were using an artificial limit of 64 characters causing some longer strings to hash to the same value
  • Mouse and joystick/gamepad events are now sync'd to previous change to fallback search with stripped modifiers
  • PopupMenu::handleSelectEvent() could be called after PopupMenu was already destroyed! Cannot rely on the PopUpNotifyRemoveEvent to be processed before our destructor, therefore destructor needs to also call remove from the smPopupMenuEvent signal.
  • Translucent meshes can now glow
  • Terrain detail textures don't disappear when entering World Editor (www.torquepowered.com/community/forums/viewthread/110789)
  • MFT_Hdr was not assigning back to the color
  • Live shader reloading should no longer complain about "mismatched const type" or "overlapping shader parameters" in situations where a float4x4 or float3x3 has been optimized down to a smaller type by the hlsl compiler
  • Frustum::invert() was inverting a dirty frustum. Fixes terrain not rendering into reflections.
  • Added missing HDR encoding feature to terrain materials
  • We now NULL the object pointer in Collision struct
  • Fixed a bug/oversight in shader reloading which could cause the "GenericConstBuffer::internalSet - The buffer is NULL!" assert.
  • Ground impact for players works again (www.torquepowered.com/community/forums/viewthread/105737)
  • Suicide through weapons is now properly detected in FPS Example
  • MsgClientScoreChanged is only sent once to all clients on death
  • Mission cycling in FPS Example now finds correct next mission
  • Drag selection in first-person view of World Editor no longer selects the connection's control object (www.torquepowered.com/community/forums/viewthread/111499)
  • Fixed Collada texture transforms (scale, offset etc) not being applied to UV coordinates
  • Incorrect usage of F32_MIN in GroundPlane::projectFrustum() and TSMesh::castRayOpcode()
  • Vector truncation warning in imposterV.hlsl
  • Autobillboards with polar images now generate correct mip maps
  • Fixed a crash that could occur when inserting a node to an existing river in the editor
  • Fixing a null accessors crash do to a typo in recent sketch tool changes
  • Fixed problem with object numbering when adding an imposter to a shape that already contains a collision detail level
  • FindMatch::isMatch() now correctly performs case-insensitive matching after wildcards
  • Rocket projectile splashes now properly expire (www.torquepowered.com/community/forums/viewthread/111433)
  • Detail normal maps now work when specular is enabled
  • Gui Profile Editor now saves in art/gui/customProfiles.cs by default (www.torquepowered.com/community/forums/viewthread/110977)
  • GuiControlProfiles now NULL out sound datablock pointers when these are deleted
  • Sound pointers in GuiControlProfiles now correctly refer to SFXTracks to conform to their console type TypeSFXTrackName
  • ShapeBaseData.cameraMinDist is now correctly handled (www.torquepowered.com/community/forums/viewthread/105219)
  • Parsing of sequence names in shape constructors now correctly handles spaces in filenames (www.torquepowered.com/community/forums/viewthread/110837)
  • GuiEditCtrl now keeps track of the current add set in a safer manner
  • ProcessObject now ensures removal from process list on object destruction (www.torquepowered.com/community/forums/viewthread/111201_
  • Datablocks loading into existing objects no longer unpack through a non-preloaded proxy datablock object; this especially broke datablocks referencing non-networked SFX datablocks
  • Gui Editor library panel popup now displays correctly on Windows
  • isValidObjectName() does not reject names with intermittent underscores anymore
  • Creating spawn spheres in World Editor works again (www.torquepowered.com/community/forums/viewthread/111347)
  • "Send to Front" button in Gui Editor now says "Send to Front" in its tooltip (www.torquepowered.com/community/forums/viewthread/110977)
  • Debris::initPersistFields() now calls Parent::initPersistFields() (bug made Debris basically unusable) (www.torquepowered.com/community/forums/viewthread/111217)
  • Terrain Material Editor should load up enabled
  • ShadowMatHook and MaterialList now fall back to Warning Material if Material instance initialization fails
  • Context menus now open on mouse up rather than down to not confuse GuiCanvas event system
  • Some more missing isPopup=true settings on editor popups (messed up display of popups on Windows)
  • EditorInspectBase was still calling renamed method getFieldName for CustomFields
  • Player footprints now fade correctly
  • World Editor button should be properly depress correctly
  • Gizmo text should not render while in select mode in the Mesh Road and the River Editor
  • DecalManager now computes vertex alphas for decals that aren't CustomDecals correctly (www.torquepowered.com/community/forums/viewthread/110099)
  • Fixed GuiControl::clearFirstResponder() stomping first responder status when it shouldn't
  • Sim::getUniqueName() no longer produces invalid names when passed in names ending in "_"
  • GuiContainer is now setting isContainer=true by default
  • Fixed crash in GuiStackControl::stackFromBottom (www.torquepowered.com/community/forums/viewthread/110999)
  • TSShape::computeAccelerator() now allocates correct array type for normalList
  • Correctly handle vert colors and 2nd tvert set when TSShape::init() is called after meshes have been converted to aligned data format (such as when TSShapeConstructor is used to modify the shape)
  • Prevent crash in TSShape destructor
  • Clients now clear their move lists when receiving EndGhosting messages so as to not go into backlogged mode during mission loads; this should fix the problem with clients getting stuck before datablock transmission
  • Removed near 0 taps in the high quality soft shadow filtering which caused ghosts of the aliased shadow.
  • Complete cleanup pass on Particle Editor scripts (this hopefully fixes the huge amount of errors, inconsistencies, and redundancy in those scripts)
  • Journal::_State is now initialized to StoppedState
  • Fixed crash bug caused by not clearing the pointer to a volatile index buffer which is later set on the device in a non-index drawPrimitive call
  • The RenderImposterMgr now properly clears its metrics stats
  • mZOffset wasn't hooked up in GroundCover
  • Fixed case where GuiDefaultProfile being deleted was leaving garbage pointers in GuiControl
  • Fixed a memory corruption on vector resize in PersistenceManager (www.torquepowered.com/community/forums/viewthread/115489)
  • The BL_ProjectedShadowRPM is now added to RootGroup so that its not destroyed on level shutdown
  • Basic Lighting shadows are no longer disabled in the 'Lowest' lighting setting (www.torquepowered.com/community/forums/viewthread/110823)
  • Fixed problem with skinned Collada models with negative bone indices (such weights will be ignored)
  • ShapeBase now applies the offset matrix in getMountTransform()/getRenderMountTransform()
  • Fixed mismatch between "number of frames" field in Material Editor, and "frameSize" field in Material (one is the inverse of the other)
  • TerrainBlock::setFile() now returns true if the file is not null
  • TexturePainter Slope Max and Min's text fields and sliders correctly set (www.torquepowered.com/community/forums/viewthread/118339)
  • Fixed the theta min/max angle range in the Particle Editor to match the valid range in ParticleEmitterData (0-180)
  • Corrected 'auto detect graphics quality' to call the recently changed GFXCardProfilerAPI::getVideoMemoryMB()
  • ParticleEmitter now skips submitting renderInstances if its VB is not valid.
  • Prefabs now always store the mainDotCs relative path to their prefab file (could previously save out an absolute path in some circumstances)
  • Fixed problem with DecalRoad sometimes not rendering segments towards towards the end
  • Placing a decal and continuing a mouse drag in one action no longer causes the decal to be placed at the world origin
  • Disabled the decal editor's 'forceRedraw' code because this is unnecessary and it is also not possible to trigger rendering code directly from script (the engine is not prepared to render at this point and generates GFX asserts)
  • Fixed mismatched detailScaleAndFade index in Terrain Material shader that caused assertion
  • Fixed compile error in generated shader when both SpecularMap and RTLighting features are enabled

Notes:

  • Updated the included Torque 3D EULA.pdf to be the new EULA
  • Property GuiAutoScrollCtrl.resetDelay now is relative to completion of scrolling rather than relative to startDelay
  • Removed "useInactiveState" functionality from GuiCheckBoxCtrl that keyed toggle state to activation state
  • BanList is no longer a SimObject as it cannot be instantiated in any useful way (all relevant functions are static and the class is meant to be a singleton)
  • Switched VS2005 solution to be a "Pro" solution since no one should be using VC2005 Express any longer
  • Removed unused field attribute maps feature from AbstractClassRep::Field
  • Removed strswiz()
  • Removed stripTrailingSpaces()
  • Removed GuiControl::getScriptFile/setScriptFile which overlaps with SimObject::getFilename/setFilename
  • Removed unused stripColorChars()
  • Removed long deprecated and unused overload markers feature
  • Completed revert of AbstractClassRep::Field string fields to plain const char*; String just incurs needless copying.
  • Removed long deprecated SimObject::getType (superseded by getTypeMask)
  • Removed per-field serialization filters from SimObject (addFieldFilter, removeFieldFilter, buildFilterList)
  • Removed SimObject enabled flag (isEnabled, setEnabled)
  • Removed several unused profiles from core/art/gui/profiles.cs
  • Removed semi/non-functional legacy HUD code from ShapeBase
  • Renamed SceneManager to SceneTracker
  • Removed unused GameBase.nameTag property (which supposedly would have something to do with precipitation)
  • Mouse control in ortho views is now RIGHT=select, MIDDLE=pan, RIGHT=zoom
  • Removed old TSShape IFL support

About the author

I am a Game Designer at PopCap who has worked on PvZ Adventures, PvZ2, Peggle Blast, and Bejeweled Skies. I am an ex-GarageGames employee who helped ship TGE, TGEA, Torque 3D, and Constructor.

#21
08/04/2010 (5:57 am)
woot!
#22
08/04/2010 (5:59 am)
amazing work!
#23
08/04/2010 (6:15 am)
With the mention of OSX in there (specifically using bullet in the physics demo) is there any hope I can hold out for getting a mac version of the beta, or is it looking like PC only until release?
#24
08/04/2010 (6:18 am)
We are still working on the Mac version but there isn't a timeline set for it yet.
#25
08/04/2010 (6:35 am)
Congradulations on the Beta! I'm looking forward to continuing to program the last project I was working on in Torque.
#26
08/04/2010 (6:42 am)
wow awesome... will download after work:) cant wait hehe
#27
08/04/2010 (6:44 am)
Good work :)
#28
08/04/2010 (7:02 am)
Wow! Sooo much to digest. Congradulations everyone- all the devs!
Downloading now...
#29
08/04/2010 (7:02 am)
Wow, that's some change log right there. Great work guys.
#30
08/04/2010 (7:06 am)
Good job guys!!

It's getting better & better, I'm glad to have choose this engine!
#31
08/04/2010 (7:08 am)
Wooooooooooooo hoooooooooooooooooooooooooooo :)

Great work guys, thanks for all the time and long hours I'm sure has gone into this one.
#33
08/04/2010 (7:13 am)
Quote:bullet in the physics demo
A quick heads up on Bullet.

Bullet can be enabled in the physics demo via physicsInit( Bullet ) in the console at the main menu. Its still buggy, but worse is that its crazy slow.

Bullet isn't as multithreaded as PhysX is out of the box. They sort of left the work of double buffering and threading the main simulation up to the user and we haven't had time to bring it up to par with PhysX.

I'll see what we can do on the performance, but i cannot promise anything.
#34
08/04/2010 (7:15 am)
What a great release! Thanks for all the hard work!
#35
08/04/2010 (7:17 am)
@Matt:
Kindly provide the link of the new documentation
#36
08/04/2010 (7:19 am)
OH~~~~I am wait 5:40AM....
#37
08/04/2010 (7:21 am)
Nice work guys :)
#38
08/04/2010 (7:21 am)
You can find it here:

Torque Script Manual.chm

Be sure to follow these directions in order to view it correctly:

1. Download the Torque Script Manual.chm
2. Locate it on your hard drive
3. Right click on the CHM, then click on Properties
4. At the bottom, click on the Unblock option
#39
08/04/2010 (7:34 am)
@ Matt

Seems link to the script manual is broken.

Good Work!

Expecting beta 3...
Expecting 1.1...
Expecting Afx new...
#40
08/04/2010 (7:39 am)
Sorry about that...should be fixed now =)