Browse Source

Fixed OSX startup crash issue with consoleDictionary

Merge branch 'development' of https://github.com/GarageGames/Torque2D into sixtyfour

Conflicts:
	engine/source/platformOSX/osxMutex.mm
Mike Lilligreen 11 years ago
parent
commit
a9985e5e2c
45 changed files with 293 additions and 433 deletions
  1. 1 1
      engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj
  2. 0 18
      engine/source/2d/assets/SkeletonAsset.cc
  3. 3 9
      engine/source/2d/assets/SkeletonAsset.h
  4. 1 23
      engine/source/2d/assets/SkeletonAsset_ScriptBinding.h
  5. 2 1
      engine/source/2d/controllers/BuoyancyController.cc
  6. 10 6
      engine/source/2d/scene/Scene.cc
  7. 56 44
      engine/source/2d/sceneobject/Skeleton.cc
  8. 52 39
      engine/source/2d/sceneobject/Skeleton.h
  9. 117 22
      engine/source/2d/sceneobject/Skeleton_ScriptBinding.h
  10. 1 1
      engine/source/console/console.h
  11. 1 1
      engine/source/console/consoleDictionary.cc
  12. 6 4
      engine/source/graphics/TextureManager.cc
  13. 24 1
      engine/source/gui/containers/guiGridCtrl.cc
  14. 2 1
      engine/source/io/zip/zipSubStream.cc
  15. 2 1
      engine/source/platformOSX/osxGL.mm
  16. 6 3
      engine/source/platformOSX/osxMutex.mm
  17. 1 1
      engine/source/sim/simDictionary.cc
  18. BIN
      tools/documentation/doxygen.exe
  19. BIN
      tools/documentation/doxyindexer.exe
  20. 0 0
      tools/doxygen/.gitignore
  21. 8 6
      tools/doxygen/ReadMe.txt
  22. 0 0
      tools/doxygen/comment.rb
  23. 0 0
      tools/doxygen/config/t2d-stylesheet-extra.css
  24. 0 0
      tools/doxygen/config/torque2DReference.cfg
  25. 0 0
      tools/doxygen/config/torqueScriptReference-footer.html
  26. 0 0
      tools/doxygen/config/torqueScriptReference-from-dump.cfg
  27. 0 0
      tools/doxygen/config/torqueScriptReference-header.html
  28. 0 0
      tools/doxygen/config/torqueScriptReference-layout.xml
  29. 0 0
      tools/doxygen/config/torqueScriptReference.cfg
  30. 0 0
      tools/doxygen/doxysearch.cgi
  31. 0 0
      tools/doxygen/generateDocs.bat
  32. 0 0
      tools/doxygen/generateDocs.cs
  33. 0 0
      tools/doxygen/hhc.exe
  34. 0 0
      tools/doxygen/input/.gitignore
  35. 0 0
      tools/doxygen/main.generateDocs.cs
  36. 0 0
      tools/doxygen/output/.gitignore
  37. 0 62
      tutorials/starterProject/.gitignore
  38. 0 24
      tutorials/starterProject/README - setup.md
  39. 0 1
      tutorials/starterProject/cleandso.bat
  40. 0 36
      tutorials/starterProject/main.cs
  41. 0 9
      tutorials/starterProject/modules/BlankGame/1/assets/images/font.asset.taml
  42. BIN
      tutorials/starterProject/modules/BlankGame/1/assets/images/font.png
  43. 0 72
      tutorials/starterProject/modules/BlankGame/1/main.cs
  44. 0 13
      tutorials/starterProject/modules/BlankGame/1/module.taml
  45. 0 34
      tutorials/starterProject/starterProject.torsion

+ 1 - 1
engine/compilers/Xcode/Torque2D.xcodeproj/project.pbxproj

@@ -3228,7 +3228,7 @@
 		869FF8AF1651518C002FE082 /* Project object */ = {
 			isa = PBXProject;
 			attributes = {
-				LastUpgradeCheck = 0460;
+				LastUpgradeCheck = 0500;
 				ORGANIZATIONNAME = "Michael Perry";
 			};
 			buildConfigurationList = 869FF8B21651518C002FE082 /* Build configuration list for PBXProject "Torque2D" */;

+ 0 - 18
engine/source/2d/assets/SkeletonAsset.cc

@@ -99,7 +99,6 @@ ConsoleSetType( TypeSkeletonAssetPtr )
 
 SkeletonAsset::SkeletonAsset() :    mSkeletonFile(StringTable->EmptyString),
                                     mAtlasFile(StringTable->EmptyString),
-                                    mScale(1),
                                     mAtlasDirty(true),
                                     mAtlas(NULL),
                                     mSkeletonData(NULL),
@@ -126,7 +125,6 @@ void SkeletonAsset::initPersistFields()
     // Fields.
     addProtectedField("AtlasFile", TypeAssetLooseFilePath, Offset(mAtlasFile, SkeletonAsset), &setAtlasFile, &defaultProtectedGetFn, &writeAtlasFile, "The loose file pointing to the .atlas file used for skinning");
     addProtectedField("SkeletonFile", TypeAssetLooseFilePath, Offset(mSkeletonFile, SkeletonAsset), &setSkeletonFile, &defaultProtectedGetFn, &writeSkeletonFile, "The loose file produced by the editor, which is fed into this asset");
-    addProtectedField("Scale", TypeF32, Offset(mScale, SkeletonAsset), &setScale, &defaultProtectedGetFn, &writeScale, "");
 }
 
 //------------------------------------------------------------------------------
@@ -193,20 +191,6 @@ void SkeletonAsset::setAtlasFile( const char* pAtlasFile )
 
 //------------------------------------------------------------------------------
 
-void SkeletonAsset::setScale( F32 fScale)
-{
-    // Ignore no change.
-    if (fScale == mScale )
-        return;
-
-    mScale = fScale;
-
-    // Scale has been set, refresh the asset based on this
-    refreshAsset();
-}
-
-//------------------------------------------------------------------------------
-
 void SkeletonAsset::copyTo(SimObject* object)
 {
     // Call to parent.
@@ -221,7 +205,6 @@ void SkeletonAsset::copyTo(SimObject* object)
     // Copy state.
     pAsset->setAtlasFile( getAtlasFile() );
     pAsset->setSkeletonFile( getSkeletonFile() );
-    pAsset->setScale( getScale() );
 }
 
 //------------------------------------------------------------------------------
@@ -329,7 +312,6 @@ void SkeletonAsset::buildSkeletonData( void )
         spSkeletonData_dispose(mSkeletonData);
     
     spSkeletonJson* json = spSkeletonJson_create(mAtlas);
-    json->scale = mScale;
     mSkeletonData = spSkeletonJson_readSkeletonDataFile(json, mSkeletonFile);
 
     if (!mSkeletonData)

+ 3 - 9
engine/source/2d/assets/SkeletonAsset.h

@@ -50,11 +50,10 @@ private:
 public:
     StringTableEntry                mSkeletonFile;
     StringTableEntry                mAtlasFile;
-    F32                           mScale;
     AssetPtr<ImageAsset>            mImageAsset;
-    spAtlas*                 mAtlas;
-    spSkeletonData*          mSkeletonData;
-    spAnimationStateData*    mStateData;
+    spAtlas*                        mAtlas;
+    spSkeletonData*                 mSkeletonData;
+    spAnimationStateData*           mStateData;
 
 public:
     SkeletonAsset();
@@ -71,9 +70,6 @@ public:
 
     void                    setAtlasFile( const char* pAtlasFile );
     inline StringTableEntry getAtlasFile( void ) const                      { return mAtlasFile; }
-
-    void                    setScale( const F32 fScale );
-    inline F32              getScale( void ) const                          { return mScale; }
     
     virtual bool            isAssetValid( void ) const;
 
@@ -100,8 +96,6 @@ protected:
     static bool writeSkeletonFile( void* obj, StringTableEntry pFieldName ) { return static_cast<SkeletonAsset*>(obj)->getSkeletonFile() != StringTable->EmptyString; }
     static bool setAtlasFile( void* obj, const char* data )                 { static_cast<SkeletonAsset*>(obj)->setAtlasFile(data); return false; }
     static bool writeAtlasFile( void* obj, StringTableEntry pFieldName )    { return static_cast<SkeletonAsset*>(obj)->getAtlasFile() != StringTable->EmptyString; }
-    static bool setScale( void* obj, const char* data )                     { static_cast<SkeletonAsset*>(obj)->setScale(dAtof(data)); return false; }
-    static bool writeScale( void* obj, StringTableEntry pFieldName )        { return static_cast<SkeletonAsset*>(obj)->getScale() != 1.0f; }
 };
 
 #endif // _SKELETON_ASSET_H_

+ 1 - 23
engine/source/2d/assets/SkeletonAsset_ScriptBinding.h

@@ -62,26 +62,4 @@ ConsoleMethodWithDocs(SkeletonAsset, getSkeletonFile, ConsoleString, 2, 2, ())
 
 //------------------------------------------------------------------------------
 
-/*! Sets the scale for the skeleton size.
-	@param scale The scale for the skeleton size.
-    @return No return value.
-*/
-ConsoleMethodWithDocs(SkeletonAsset, setScale, ConsoleVoid, 3, 3, (float scale))
-{
-    // Compilier complains that setScale can't be found. Not sure how to fix.
-    //object->setScale( argv[2] );
-}
-
-//-----------------------------------------------------------------------------
-
-/*! Gets the scale for the skeleton size.
-    @return Returns the scale for the skeleton size.
-*/
-ConsoleMethodWithDocs(SkeletonAsset, getScale, ConsoleFloat, 2, 2, ())
-{
-    return object->getScale();
-}
-
-//------------------------------------------------------------------------------
-
-ConsoleMethodGroupEndWithDocs(SkeletonAsset)
+ConsoleMethodGroupEndWithDocs(SkeletonAsset)

+ 2 - 1
engine/source/2d/controllers/BuoyancyController.cc

@@ -75,7 +75,8 @@ void BuoyancyController::copyTo(SimObject* object)
     Parent::copyTo(object);
 
     // Cast to controller.
-    BuoyancyController* pController = static_cast<BuoyancyController*>(object);
+    BuoyancyController* pController;
+    pController = static_cast<BuoyancyController*>(object);
 
     // Sanity!
     AssertFatal(pController != NULL, "BuoyancyController::copyTo() - Object is not the correct type.");

+ 10 - 6
engine/source/2d/scene/Scene.cc

@@ -138,7 +138,7 @@ static StringTableEntry jointMotorMaxTorqueName           = jointRevoluteMotorMa
 static StringTableEntry jointMotorCorrectionFactorName    = StringTable->insert( "CorrectionFactor" );
 
 // Controller custom node names.
-static StringTableEntry controllerCustomNodeName	      = StringTable->insert( "Controllers" );
+static StringTableEntry controllerCustomNodeName          = StringTable->insert( "Controllers" );
 
 // Asset preload custom node names.
 static StringTableEntry assetPreloadNodeName              = StringTable->insert( "AssetPreloads" );
@@ -1617,7 +1617,8 @@ S32 Scene::createJoint( b2JointDef* pJointDef )
     const S32 jointId = mJointMasterId++;
 
     // Insert joint.
-    typeJointHash::iterator itr = mJoints.insert( jointId, pJoint );
+    typeJointHash::iterator itr;
+    itr = mJoints.insert( jointId, pJoint );
 
     // Sanity!
     AssertFatal( itr != mJoints.end(), "Joint already in hash table." );
@@ -2183,7 +2184,7 @@ F32 Scene::getRevoluteJointAngle( const U32 jointId )
 
 //-----------------------------------------------------------------------------
 
-F32	Scene::getRevoluteJointSpeed( const U32 jointId )
+F32 Scene::getRevoluteJointSpeed( const U32 jointId )
 {
     // Fetch joint.
     b2Joint* pJoint = findJoint( jointId );
@@ -4615,20 +4616,23 @@ void Scene::onTamlPostRead( const TamlCustomNodes& customNodes )
     }
 
     // Find controller custom node.
-    const TamlCustomNode* pControllerNode = customNodes.findNode( controllerCustomNodeName );
+    const TamlCustomNode* pControllerCustomNode = customNodes.findNode( controllerCustomNodeName );
 
     // Do we have any controllers?
-    if ( pControllerNode != NULL )
+    if ( pControllerCustomNode != NULL )
     {
         // Yes, so fetch the scene controllers.
         SimSet* pControllerSet = getControllers();
 
         // Fetch children controller nodes.
-        const TamlCustomNodeVector& controllerChildren = pControllerNode->getChildren();
+        const TamlCustomNodeVector& controllerChildren = pControllerCustomNode->getChildren();
 
         // Iterate controllers.
         for( TamlCustomNodeVector::const_iterator controllerNodeItr = controllerChildren.begin(); controllerNodeItr != controllerChildren.end(); ++controllerNodeItr )
         {
+            // Fetch controller node.
+            TamlCustomNode* pControllerNode = *controllerNodeItr;
+            
             // Is the node a proxy object?
             if ( !pControllerNode->isProxyObject() )
             {

+ 56 - 44
engine/source/2d/sceneobject/Skeleton.cc

@@ -55,7 +55,9 @@ Skeleton::Skeleton() :      mPreTickTime( 0.0f ),
                             mState(NULL),
                             mAnimationCycle(false),
                             mAnimationFinished(true),
-                            mAnimationDuration(0.0)
+                            mAnimationDuration(0.0),
+                            mFlipX(false),
+                            mFlipY(false)
 {
     mCurrentAnimation = StringTable->insert("");
     mSkeletonScale.SetZero();
@@ -84,11 +86,13 @@ void Skeleton::initPersistFields()
     Parent::initPersistFields();
     
     addProtectedField("Asset", TypeSkeletonAssetPtr, Offset(mSkeletonAsset, Skeleton), &setSkeletonAsset, &getSkeletonAsset, &writeSkeletonAsset, "The skeleton asset ID used for the skeleton.");
-    addProtectedField("AnimationName", TypeString, Offset(mCurrentAnimation, Skeleton), &setCurrentAnimation, &getCurrentAnimation, &writeCurrentAnimation, "The animation name to play.");
+    addProtectedField("AnimationName", TypeString, Offset(mCurrentAnimation, Skeleton), &setAnimationName, &getAnimationName, &writeAnimationName, "The animation name to play.");
     addProtectedField("Skin", TypeString, Offset(mCurrentSkin, Skeleton), &setCurrentSkin, &getCurrentSkin, &writeCurrentSkin, "The skin to use.");
-    addProtectedField("RootBoneScale", TypeVector2, NULL, &setSkeletonScale, &getSkeletonScale, &writeSkeletonScale, "Scaling of the skeleton's root bone");
-    addProtectedField("RootBoneOffset", TypeVector2, NULL, &setSkeletonOffset, &getSkeletonOffset, &writeSkeletonOffset, "X/Y offset of the skeleton's root bone");
+    addProtectedField("RootBoneScale", TypeVector2, NULL, &setRootBoneScale, &getRootBoneScale, &writeRootBoneScale, "Scaling of the skeleton's root bone");
+    addProtectedField("RootBoneOffset", TypeVector2, NULL, &setRootBoneOffset, &getRootBoneOffset, &writeRootBoneOffset, "X/Y offset of the skeleton's root bone");
     addProtectedField("AnimationCycle", TypeBool, Offset(mAnimationCycle, Skeleton), &setAnimationCycle, &defaultProtectedGetFn, &writeAnimationCycle, "Whether the animation loops or not");
+    addField("FlipX", TypeBool, Offset(mFlipX, Skeleton), &writeFlipX, "");
+    addField("FlipY", TypeBool, Offset(mFlipY, Skeleton), &writeFlipY, "");
 }
 
 //-----------------------------------------------------------------------------
@@ -168,10 +172,10 @@ void Skeleton::copyTo(SimObject* object)
     
     // Copy state.
     pComposite->setSkeletonAsset( getSkeletonAsset() );
-    pComposite->setCurrentAnimation( getCurrentAnimation(), getAnimationCycle() );
+    pComposite->setAnimationName( getAnimationName(), getAnimationCycle() );
     pComposite->setCurrentSkin( getCurrentSkin() );
-    pComposite->setSkeletonScale( getSkeletonScale() );
-    pComposite->setSkeletonOffset( getSkeletonOffset() );
+    pComposite->setRootBoneScale( getRootBoneScale() );
+    pComposite->setRootBoneOffset( getRootBoneOffset() );
 }
 
 //-----------------------------------------------------------------------------
@@ -188,7 +192,7 @@ void Skeleton::sceneRender( const SceneRenderState* pSceneRenderState, const Sce
 {
     // Render.
     SpriteBatch::render( pSceneRenderState, pSceneRenderRequest, pBatchRenderer );
-
+    
 }
 
 //-----------------------------------------------------------------------------
@@ -209,20 +213,20 @@ bool Skeleton::setSkeletonAsset( const char* pSkeletonAssetId )
 
 //-----------------------------------------------------------------------------
 
-bool Skeleton::setCurrentAnimation( const char* pAnimation, const bool isLooping )
+bool Skeleton::setAnimationName( const char* pAnimation, const bool isLooping )
 {
     // Make sure an asset was loaded.
     if (mSkeletonAsset.isNull())
         return false;
-
+    
     // Set the animation.
     mCurrentAnimation = StringTable->insert(pAnimation);
-
+    
     mAnimationCycle = isLooping;
     
     // Generate composition.
     generateComposition();
-
+    
     return true;
 }
 
@@ -249,8 +253,8 @@ bool Skeleton::setMix( const char* pFromAnimation, const char* pToAnimation, flo
     }
     
     // Check to see if the "to animation" is valid
-	spAnimation* to = spSkeletonData_findAnimation(mSkeleton->data, pToAnimation);
-	
+    spAnimation* to = spSkeletonData_findAnimation(mSkeleton->data, pToAnimation);
+    
     if (!to)
     {
         Con::warnf("Skeleton::setMix() - Animation %s does not exist.", pToAnimation);
@@ -277,9 +281,9 @@ bool Skeleton::setCurrentSkin( const char* pSkin )
         Con::errorf("Skeleton::setCurrentSkin() - Skeleton Asset was null or skeleton was not built");
         return false;
     }
-
+    
     S32 result = spSkeleton_setSkinByName(mSkeleton, pSkin);
-
+    
     if (result)
     {
         spSkeleton_setSlotsToSetupPose(mSkeleton);
@@ -294,13 +298,13 @@ bool Skeleton::setCurrentSkin( const char* pSkin )
 
 //-----------------------------------------------------------------------------
 
-void Skeleton::setSkeletonScale(const Vector2& scale)
+void Skeleton::setRootBoneScale(const Vector2& scale)
 {
     mSkeletonScale = scale;
-
+    
     if (!mSkeleton)
         return;
-
+    
     if (mSkeletonScale.notZero())
     {
         spBone* rootBone = mSkeleton->root;
@@ -311,13 +315,13 @@ void Skeleton::setSkeletonScale(const Vector2& scale)
 
 //-----------------------------------------------------------------------------
 
-void Skeleton::setSkeletonOffset(const Vector2& offset)
+void Skeleton::setRootBoneOffset(const Vector2& offset)
 {
     mSkeletonOffset = offset;
-
-     if (!mSkeleton)
+    
+    if (!mSkeleton)
         return;
-
+    
     if (mSkeletonOffset.notZero())
     {
         spBone* rootBone = mSkeleton->root;
@@ -333,24 +337,24 @@ void Skeleton::generateComposition( void )
     // Clear existing visualization
     clearSprites();
     mSkeletonSprites.clear();
-
+    
     // Finish if skeleton asset isn't available.
     if ( mSkeletonAsset.isNull() )
         return;
-
-    // Generate visualization.  
+    
+    // Generate visualization.
     if ((*mSkeletonAsset).mImageAsset.isNull())
     {
         Con::warnf( "Skeleton::generateComposition() - Image asset was NULL, so nothing can be added to the composition.");
         return;
     }
-
+    
     if (!mSkeleton)
         mSkeleton = spSkeleton_create(mSkeletonAsset->mSkeletonData);
-
+    
     if (!mState)
         mState = spAnimationState_create(mSkeletonAsset->mStateData);
-
+    
     if (mCurrentAnimation != StringTable->EmptyString)
     {
         spAnimationState_setAnimationByName(mState, 0, mCurrentAnimation, mAnimationCycle);
@@ -381,7 +385,7 @@ void Skeleton::updateComposition( const F32 time )
     // Update position/orientation/state of visualization
     float delta = (time - mLastFrameTime) * mTimeScale;
     mLastFrameTime = time;
-
+    
     spSkeleton_update(mSkeleton, delta);
     
     if (!mAnimationFinished)
@@ -389,16 +393,16 @@ void Skeleton::updateComposition( const F32 time )
         spAnimationState_update(mState, delta);
         spAnimationState_apply(mState, mSkeleton);
     }
-
+    
     spSkeleton_updateWorldTransform(mSkeleton);
-
+    
     // Get the ImageAsset used by the sprites
     StringTableEntry assetId = (*mSkeletonAsset).mImageAsset.getAssetId();
-
+    
     clearSprites();
-
+    
     Vector2 vertices[4];
-
+    
     F32 vertexPositions[8];
     for (int i = 0; i < mSkeleton->slotCount; ++i)
     {
@@ -410,12 +414,17 @@ void Skeleton::updateComposition( const F32 time )
         
         spRegionAttachment* regionAttachment = (spRegionAttachment*)attachment;
         spRegionAttachment_computeWorldVertices(regionAttachment, slot->skeleton->x, slot->skeleton->y, slot->bone, vertexPositions);
-
+        
         SpriteBatchItem* pSprite = SpriteBatch::createSprite();
-		  
-        pSprite->setSrcBlendFactor(GL_ONE);
-        pSprite->setDstBlendFactor(GL_ONE_MINUS_SRC_ALPHA);
-
+        
+        pSprite->setSrcBlendFactor(mSrcBlendFactor);
+        pSprite->setDstBlendFactor(mDstBlendFactor);
+        
+        mSkeleton->r = mBlendColor.red;
+        mSkeleton->g = mBlendColor.green;
+        mSkeleton->b = mBlendColor.blue;
+        mSkeleton->a = mBlendColor.alpha;
+        
         F32 alpha = mSkeleton->a * slot->a;
         pSprite->setBlendColor(ColorF(
             mSkeleton->r * slot->r * alpha,
@@ -423,7 +432,10 @@ void Skeleton::updateComposition( const F32 time )
             mSkeleton->b * slot->b * alpha,
             alpha
         ));
-
+        
+        mSkeleton->flipX = getFlipX();
+        mSkeleton->flipY = getFlipY();
+        
         vertices[0].x = vertexPositions[VERTEX_X1];
         vertices[0].y = vertexPositions[VERTEX_Y1];
         vertices[1].x = vertexPositions[VERTEX_X4];
@@ -433,11 +445,11 @@ void Skeleton::updateComposition( const F32 time )
         vertices[3].x = vertexPositions[VERTEX_X2];
         vertices[3].y = vertexPositions[VERTEX_Y2];
         pSprite->setExplicitVertices(vertices);
-
+        
         pSprite->setImage(assetId);
         pSprite->setImageFrameByName(attachment->name);
     }
-
+    
     if (mLastFrameTime >= mTotalAnimationTime)
         mAnimationFinished = true;
     
@@ -455,4 +467,4 @@ void Skeleton::onAnimationFinished()
 {
     // Do script callback.
     Con::executef( this, 2, "onAnimationFinished", mCurrentAnimation );
-}
+}

+ 52 - 39
engine/source/2d/sceneobject/Skeleton.h

@@ -45,26 +45,29 @@ protected:
 private:
     typedef Vector<SpriteBatchItem*> typeSkeletonSpritesVector;
     typeSkeletonSpritesVector   mSkeletonSprites;
-
+    
     AssetPtr<SkeletonAsset>     mSkeletonAsset;
-    spSkeleton*          mSkeleton;
-    spAnimationState*    mState;
+    spSkeleton*                 mSkeleton;
+    spAnimationState*           mState;
     
     F32                         mPreTickTime;
-    F32                         mPostTickTime;    
+    F32                         mPostTickTime;
     F32                         mTimeScale;
     F32                         mLastFrameTime;
     F32                         mAnimationDuration;
     F32                         mTotalAnimationTime;
-
+    
     bool                        mAnimationFinished;
     bool                        mAnimationCycle;
     Vector2                     mSkeletonScale;
     Vector2                     mSkeletonOffset;
-
+    
     StringTableEntry            mCurrentAnimation;
     StringTableEntry            mCurrentSkin;
-
+    
+    bool                        mFlipX;
+    bool                        mFlipY;
+    
     
     
 public:
@@ -85,34 +88,41 @@ public:
     virtual void scenePrepareRender( const SceneRenderState* pSceneRenderState, SceneRenderQueue* pSceneRenderQueue );
     virtual void sceneRender( const SceneRenderState* pSceneRenderState, const SceneRenderRequest* pSceneRenderRequest, BatchRender* pBatchRenderer );
     
+    /// Render flipping.
+    void setFlip( const bool flipX, const bool flipY )  { mFlipX = flipX; mFlipY = flipY; }
+    void setFlipX( const bool flipX )                   { setFlip( flipX, mFlipY ); }
+    void setFlipY( const bool flipY )                   { setFlip( mFlipX, flipY ); }
+    inline bool getFlipX( void ) const                  { return mFlipX; }
+    inline bool getFlipY( void ) const                  { return mFlipY; }
+    
     bool setSkeletonAsset( const char* pSkeletonAssetId );
     inline StringTableEntry getSkeletonAsset( void ) const { return mSkeletonAsset.getAssetId(); }
     
-    inline bool setCurrentAnimation( const char* pAnimation ) { return setCurrentAnimation( pAnimation, mAnimationCycle ); }
-    bool setCurrentAnimation( const char* pAnimation, const bool isLooping = false);
-    inline StringTableEntry getCurrentAnimation( void ) const { return mCurrentAnimation; }
-
+    inline bool setAnimationName( const char* pAnimation ) { return setAnimationName( pAnimation, mAnimationCycle ); }
+    bool setAnimationName( const char* pAnimation, const bool isLooping = false);
+    inline StringTableEntry getAnimationName( void ) const { return mCurrentAnimation; }
+    
     bool setMix( const char* pFromAnimation, const char* pToAnimation, float time);
     
     bool setCurrentSkin( const char* pSkin );
     inline StringTableEntry getCurrentSkin( void ) const { return mCurrentSkin; }
-
-    void setSkeletonScale( const Vector2& scale );
-    inline void setSkeletonScale( const F32 x, const F32 y ){ setSkeletonScale( Vector2(x, y) ); }
-    inline Vector2 getSkeletonScale( void ) const { return mSkeletonScale; }
-
-    void setSkeletonOffset( const Vector2& scale );
-    inline void setSkeletonOffset( const F32 x, const F32 y ){ setSkeletonOffset( Vector2(x, y) ); }
-    inline Vector2 getSkeletonOffset( void ) const { return mSkeletonOffset; }
-
+    
+    void setRootBoneScale( const Vector2& scale );
+    inline void setRootBoneScale( const F32 x, const F32 y ){ setRootBoneScale( Vector2(x, y) ); }
+    inline Vector2 getRootBoneScale( void ) const { return mSkeletonScale; }
+    
+    void setRootBoneOffset( const Vector2& scale );
+    inline void setRootBoneOffset( const F32 x, const F32 y ){ setRootBoneOffset( Vector2(x, y) ); }
+    inline Vector2 getRootBoneOffset( void ) const { return mSkeletonOffset; }
+    
     inline F32 getAnimationDuration( void ) const { return mAnimationDuration; }
     inline bool isAnimationFinished( void ) const { return mAnimationFinished; };
-
+    
     inline void setAnimationCycle( const bool isLooping ) { mAnimationCycle = isLooping; }
     inline bool getAnimationCycle( void ) const {return mAnimationCycle; };
-
+    
     void onAnimationFinished();
-
+    
     /// Declare Console Object.
     DECLARE_CONOBJECT( Skeleton );
     
@@ -124,25 +134,28 @@ protected:
     static bool setSkeletonAsset( void* obj, const char* data )                  { static_cast<Skeleton*>(obj)->setSkeletonAsset(data); return false; }
     static const char* getSkeletonAsset(void* obj, const char* data)             { return static_cast<Skeleton*>(obj)->getSkeletonAsset(); }
     static bool writeSkeletonAsset( void* obj, StringTableEntry pFieldName )     { return static_cast<Skeleton*>(obj)->mSkeletonAsset.notNull(); }
-
-    static bool setCurrentAnimation( void* obj, const char* data )               { static_cast<Skeleton*>(obj)->setCurrentAnimation(data, static_cast<Skeleton*>(obj)->getAnimationCycle()); return false; }
-    static const char* getCurrentAnimation(void* obj, const char* data)          { return static_cast<Skeleton*>(obj)->getCurrentAnimation(); }
-    static bool writeCurrentAnimation( void*obj, StringTableEntry pAnimation )   { return static_cast<Skeleton*>(obj)->getCurrentAnimation() != StringTable->EmptyString; }
-
+    
+    static bool setAnimationName( void* obj, const char* data )                  { static_cast<Skeleton*>(obj)->setAnimationName(data, static_cast<Skeleton*>(obj)->getAnimationCycle()); return false; }
+    static const char* getAnimationName(void* obj, const char* data)             { return static_cast<Skeleton*>(obj)->getAnimationName(); }
+    static bool writeAnimationName( void*obj, StringTableEntry pAnimation )      { return static_cast<Skeleton*>(obj)->getAnimationName() != StringTable->EmptyString; }
+    
     static bool setCurrentSkin( void* obj, const char* data )                    { static_cast<Skeleton*>(obj)->setCurrentSkin(data); return false; }
     static const char* getCurrentSkin(void* obj, const char* data)               { return static_cast<Skeleton*>(obj)->getCurrentSkin(); }
     static bool writeCurrentSkin( void*obj, StringTableEntry pSkin )             { return static_cast<Skeleton*>(obj)->getCurrentSkin() != StringTable->EmptyString; }
-
-    static bool setSkeletonScale(void* obj, const char* data)                    { static_cast<Skeleton*>(obj)->setSkeletonScale(Vector2(data)); return false; }
-    static const char* getSkeletonScale(void* obj, const char* data)             { return static_cast<Skeleton*>(obj)->getSkeletonScale().scriptThis(); }
-    static bool writeSkeletonScale( void* obj, StringTableEntry pFieldName )     { return static_cast<Skeleton*>(obj)->getSkeletonScale().notZero(); }
-
-    static bool setSkeletonOffset(void* obj, const char* data)                   { static_cast<Skeleton*>(obj)->setSkeletonOffset(Vector2(data)); return false; }
-    static const char* getSkeletonOffset(void* obj, const char* data)            { return static_cast<Skeleton*>(obj)->getSkeletonOffset().scriptThis(); }
-    static bool writeSkeletonOffset( void* obj, StringTableEntry pFieldName )    { return static_cast<Skeleton*>(obj)->getSkeletonOffset().notZero(); }
-
-    static bool setAnimationCycle( void* obj, const char* data )                 { static_cast<Skeleton*>(obj)->setAnimationCycle( dAtob(data) ); return false; }    
+    
+    static bool setRootBoneScale(void* obj, const char* data)                    { static_cast<Skeleton*>(obj)->setRootBoneScale(Vector2(data)); return false; }
+    static const char* getRootBoneScale(void* obj, const char* data)             { return static_cast<Skeleton*>(obj)->getRootBoneScale().scriptThis(); }
+    static bool writeRootBoneScale( void* obj, StringTableEntry pFieldName )     { return static_cast<Skeleton*>(obj)->getRootBoneScale().notZero(); }
+    
+    static bool setRootBoneOffset(void* obj, const char* data)                   { static_cast<Skeleton*>(obj)->setRootBoneOffset(Vector2(data)); return false; }
+    static const char* getRootBoneOffset(void* obj, const char* data)            { return static_cast<Skeleton*>(obj)->getRootBoneOffset().scriptThis(); }
+    static bool writeRootBoneOffset( void* obj, StringTableEntry pFieldName )    { return static_cast<Skeleton*>(obj)->getRootBoneOffset().notZero(); }
+    
+    static bool setAnimationCycle( void* obj, const char* data )                 { static_cast<Skeleton*>(obj)->setAnimationCycle( dAtob(data) ); return false; }
     static bool writeAnimationCycle( void* obj, StringTableEntry pFieldName )    { return static_cast<Skeleton*>(obj)->getAnimationCycle() == false; }
+    
+    static bool writeFlipX( void* obj, StringTableEntry pFieldName )             { return static_cast<Skeleton*>(obj)->getFlipX() == true; }
+    static bool writeFlipY( void* obj, StringTableEntry pFieldName )             { return static_cast<Skeleton*>(obj)->getFlipY() == true; }
 };
 
-#endif // _SKELETON_H_
+#endif // _SKELETON_H_

+ 117 - 22
engine/source/2d/sceneobject/Skeleton_ScriptBinding.h

@@ -48,12 +48,12 @@ ConsoleMethodWithDocs(Skeleton, getSkeletonAsset, ConsoleString, 2, 2, ())
     @param cycle Optional bool to determine whether the animation should loop.
     @return Returns true on success."
 */
-ConsoleMethodWithDocs(Skeleton, setAnimation, ConsoleBool, 3, 4, (animationName, [cycle]))
+ConsoleMethodWithDocs(Skeleton, setAnimationName, ConsoleBool, 3, 4, (animationName, [cycle]))
 {
     // Determine looping
     bool shouldLoop = argc >= 4 ? dAtob(argv[3]) : false;
     
-    return object->setCurrentAnimation(argv[2], shouldLoop);
+    return object->setAnimationName(argv[2], shouldLoop);
 }
 
 //-----------------------------------------------------------------------------
@@ -61,9 +61,9 @@ ConsoleMethodWithDocs(Skeleton, setAnimation, ConsoleBool, 3, 4, (animationName,
 /*! Gets the name of the current animation.
     @return String containing the animation name.
 */
-ConsoleMethodWithDocs(Skeleton, getAnimation, ConsoleString, 2, 2, ())
+ConsoleMethodWithDocs(Skeleton, getAnimationName, ConsoleString, 2, 2, ())
 {
-    return object->getCurrentAnimation();
+    return object->getAnimationName();
 }
 
 //-----------------------------------------------------------------------------
@@ -96,27 +96,27 @@ ConsoleMethodWithDocs(Skeleton, getSkin, ConsoleString, 2, 2, ())
 ConsoleMethodWithDocs(Skeleton, setRootBoneScale, ConsoleVoid, 3, 4, (float scaleX, float scaleY))
 {
     F32 scaleX, scaleY;
-
+    
     const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
+    
     // ("width height")
     if ((elementCount == 2) && (argc == 3))
     {
         scaleX = dAtof(Utility::mGetStringElement(argv[2], 0));
         scaleY = dAtof(Utility::mGetStringElement(argv[2], 1));
     }
-
+    
     // (width, [height])
     else if (elementCount == 1)
     {
         scaleX = dAtof(argv[2]);
-
+        
         if (argc > 3)
             scaleY = dAtof(argv[3]);
         else
             scaleY = scaleX;
     }
-
+    
     // Invalid
     else
     {
@@ -124,9 +124,9 @@ ConsoleMethodWithDocs(Skeleton, setRootBoneScale, ConsoleVoid, 3, 4, (float scal
         return;
     }
     
-    // Set Size.
-    object->setSkeletonScale(Vector2(scaleX, scaleY));
-}  
+    // Set Scale.
+    object->setRootBoneScale(Vector2(scaleX, scaleY));
+}
 
 //-----------------------------------------------------------------------------
 
@@ -135,7 +135,7 @@ ConsoleMethodWithDocs(Skeleton, setRootBoneScale, ConsoleVoid, 3, 4, (float scal
 */
 ConsoleMethodWithDocs(Skeleton, getRootBoneScale, ConsoleString, 2, 2, ())
 {
-    return object->getSkeletonScale().scriptThis();
+    return object->getRootBoneScale().scriptThis();
 }
 
 //-----------------------------------------------------------------------------
@@ -148,27 +148,27 @@ ConsoleMethodWithDocs(Skeleton, getRootBoneScale, ConsoleString, 2, 2, ())
 ConsoleMethodWithDocs(Skeleton, setRootBoneOffset, ConsoleVoid, 3, 4, (float x, float y))
 {
     F32 x, y;
-
+    
     const U32 elementCount = Utility::mGetStringElementCount(argv[2]);
-
+    
     // ("x y")
     if ((elementCount == 2) && (argc == 3))
     {
         x = dAtof(Utility::mGetStringElement(argv[2], 0));
         y = dAtof(Utility::mGetStringElement(argv[2], 1));
     }
-
+    
     // (x, [y])
     else if (elementCount == 1)
     {
         x = dAtof(argv[2]);
-
+        
         if (argc > 3)
             y = dAtof(argv[3]);
         else
             y = x;
     }
-
+    
     // Invalid
     else
     {
@@ -177,8 +177,8 @@ ConsoleMethodWithDocs(Skeleton, setRootBoneOffset, ConsoleVoid, 3, 4, (float x,
     }
     
     // Set Size.
-    object->setSkeletonOffset(Vector2(x, y));
-}  
+    object->setRootBoneOffset(Vector2(x, y));
+}
 
 //-----------------------------------------------------------------------------
 
@@ -187,7 +187,102 @@ ConsoleMethodWithDocs(Skeleton, setRootBoneOffset, ConsoleVoid, 3, 4, (float x,
 */
 ConsoleMethodWithDocs(Skeleton, getRootBoneOffset, ConsoleString, 2, 2, ())
 {
-    return object->getSkeletonOffset().scriptThis();
+    return object->getRootBoneOffset().scriptThis();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Sets whether the animation cycles or not.
+    @param cycle Bool to determine whether the animation should loop.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Skeleton, setAnimationCycle, ConsoleVoid, 3, 3, (bool cycle))
+{
+    object->setAnimationCycle( dAtob(argv[2] ) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets whether the animation cycles or not.
+    @return Whether the animation cycles or not.
+*/
+ConsoleMethodWithDocs(Skeleton, getAnimationCycle, ConsoleBool, 2, 2, ())
+{
+    return object->getAnimationCycle();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Sets the sprite texture flipping for each axis.
+    @param flipX Whether or not to flip the texture along the x (horizontal) axis.
+    @param flipY Whether or not to flip the texture along the y (vertical) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Skeleton, setFlip, ConsoleVoid, 4, 4, (bool flipX, bool flipY))
+{
+    // Set Flip.
+    object->setFlip( dAtob(argv[2]), dAtob(argv[3]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets the flip for each axis.
+    @return (bool flipX/bool flipY) Whether or not the texture is flipped along the x and y axis.
+*/
+ConsoleMethodWithDocs(Skeleton, getFlip, ConsoleString, 2, 2, ())
+{
+    // Create Returnable Buffer.
+    char* pBuffer = Con::getReturnBuffer(32);
+    
+    // Format Buffer.
+    dSprintf(pBuffer, 32, "%d %d", object->getFlipX(), object->getFlipY());
+    
+    // Return Buffer.
+    return pBuffer;
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Sets whether or not the texture is flipped horizontally.
+    @param flipX Whether or not to flip the texture along the x (horizontal) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Skeleton, setFlipX, ConsoleVoid, 3, 3, (bool flipX))
+{
+    // Set Flip.
+    object->setFlipX( dAtob(argv[2]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Sets whether or not the texture is flipped vertically.
+    @param flipY Whether or not to flip the texture along the y (vertical) axis.
+    @return No return value.
+*/
+ConsoleMethodWithDocs(Skeleton, setFlipY, ConsoleVoid, 3, 3, (bool flipY))
+{
+    // Set Flip.
+    object->setFlipY( dAtob(argv[2]) );
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets whether or not the texture is flipped horizontally.
+    @return (bool flipX) Whether or not the texture is flipped along the x axis.
+*/
+ConsoleMethodWithDocs(Skeleton, getFlipX, ConsoleBool, 2, 2, ())
+{
+    return object->getFlipX();
+}
+
+//-----------------------------------------------------------------------------
+
+/*! Gets whether or not the texture is flipped vertically.
+    @return (bool flipY) Whether or not the texture is flipped along the y axis.
+*/
+ConsoleMethodWithDocs(Skeleton, getFlipY, ConsoleBool, 2, 2, ())
+{
+    return object->getFlipY();
 }
 
 //-----------------------------------------------------------------------------
@@ -213,4 +308,4 @@ ConsoleMethodWithDocs(Skeleton, setMix, ConsoleBool, 5, 5, (fromAnimation, toAni
     return object->setMix(argv[2], argv[3], dAtof(argv[4]));
 }
 
-ConsoleMethodGroupEndWithDocs(Skeleton)
+ConsoleMethodGroupEndWithDocs(Skeleton)

+ 1 - 1
engine/source/console/console.h

@@ -641,7 +641,7 @@ namespace Con
 
 extern void expandEscape(char *dest, const char *src);
 extern bool collapseEscape(char *buf);
-extern S32 HashPointer(StringTableEntry ptr);
+extern U32 HashPointer(StringTableEntry ptr);
 
 /// This is the backend for the ConsoleMethod()/ConsoleFunction() macros.
 ///

+ 1 - 1
engine/source/console/consoleDictionary.cc

@@ -159,7 +159,7 @@ void Dictionary::deleteVariables(const char *varString)
    }
 }
 
-S32 HashPointer(StringTableEntry ptr)
+U32 HashPointer(StringTableEntry ptr)
 {
    return (U32)(((dsize_t)ptr) >> 2);
 }

+ 6 - 4
engine/source/graphics/TextureManager.cc

@@ -74,7 +74,7 @@ static const char* extArray[EXT_ARRAY_SIZE] = { "", ".jpg", ".png"};
 #endif
 
 //---------------------------------------------------------------------------------------------------------------------
-
+
 struct EventCallbackEntry
 {
     TextureManager::TextureEventCallback callback;
@@ -229,7 +229,8 @@ void TextureManager::resurrectManager( void )
                     AssertISV(pBitmap != NULL, "Error resurrecting the texture cache.\n""Possible cause: a bitmap was deleted during the course of gameplay.");
 
                     // Register texture.
-                    TextureObject* pTextureObject = registerTexture(probe->mTextureKey, pBitmap, probe->mHandleType, probe->mClamp);
+                    TextureObject* pTextureObject;
+                    pTextureObject = registerTexture(probe->mTextureKey, pBitmap, probe->mHandleType, probe->mClamp);
 
                     // Sanity!
                     AssertFatal(pTextureObject == probe, "A new texture was returned during resurrection.");
@@ -415,7 +416,7 @@ void TextureManager::getSourceDestByteFormat(GBitmap *pBitmap, U32 *sourceFormat
     *destFormat = *sourceFormat;
     *texelSize = byteSize;
     return;
-#else	
+#else   
     switch(pBitmap->getFormat()) 
     {
     case GBitmap::Intensity:
@@ -681,7 +682,8 @@ void TextureManager::refresh( const char *textureName )
         return;
 
     // Register texture.
-    TextureObject* pNewTextureObject = registerTexture(pTextureObject->mTextureKey, pBitmap, pTextureObject->mHandleType, pTextureObject->mClamp);
+    TextureObject* pNewTextureObject;
+    pNewTextureObject = registerTexture(pTextureObject->mTextureKey, pBitmap, pTextureObject->mHandleType, pTextureObject->mClamp);
 
     // Sanity!
     AssertFatal(pNewTextureObject == pTextureObject, "A new texture was returned during refresh.");

+ 24 - 1
engine/source/gui/containers/guiGridCtrl.cc

@@ -1,3 +1,25 @@
+//-----------------------------------------------------------------------------
+// Copyright (c) 2013 GarageGames, LLC
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to
+// deal in the Software without restriction, including without limitation the
+// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+// sell copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+// IN THE SOFTWARE.
+//-----------------------------------------------------------------------------
+
 #include "gui/containers/guiGridCtrl.h"
 
 //------------------------------------------------------------------------------
@@ -242,7 +264,8 @@ void GuiGridControl::AdjustGrid(const Point2I& newExtent)
 void GuiGridControl::AdjustGridItems(S32 size, Vector<StringTableEntry>& strItems, Vector<S32>& items)
 {
 	Vector<GridItem> GridItems;
-	S32 bFoundStar = false;
+    S32 bFoundStar;
+	bFoundStar = false;
 	S32 IndexRemaining = -1;
 	S32 totalSize = 0;
 	S32 idx =0;

+ 2 - 1
engine/source/io/zip/zipSubStream.cc

@@ -428,7 +428,8 @@ bool ZipSubWStream::_write(const U32 numBytes, const void *pBuffer)
          m_pZipStream->avail_out = csm_bufferSize;
       }
 
-      S32 retVal = deflate(m_pZipStream, Z_NO_FLUSH);
+      S32 retVal;
+      retVal = deflate(m_pZipStream, Z_NO_FLUSH);
       AssertFatal(retVal !=  Z_BUF_ERROR, "ZipSubWStream::_write: invalid buffer");
    }
 

+ 2 - 1
engine/source/platformOSX/osxGL.mm

@@ -135,7 +135,8 @@ CGLContextObj getContextForCapsCheck()
 // Find out which extensions are available for this renderer. 
 void getGLCapabilities()
 {
-    osxPlatState * platState = [osxPlatState sharedPlatState];
+    osxPlatState * platState;
+    platState = [osxPlatState sharedPlatState];
     
     AssertFatal([platState cgDisplay], "getGLCapabilities() was called before a monitor was chosen!");
     

+ 6 - 3
engine/source/platformOSX/osxMutex.mm

@@ -66,7 +66,8 @@ Mutex::Mutex()
 Mutex::~Mutex()
 {
     // Destroy the system mutex.
-    const bool ok = pthread_mutex_destroy( &(mData->mMutex) );
+    bool ok;
+    ok = pthread_mutex_destroy( &(mData->mMutex) );
     
     // Sanity!
     AssertFatal(ok == 0, "~Mutex() failed: pthread_mutex_destroy() failed.");
@@ -83,7 +84,8 @@ bool Mutex::lock( bool block )
     if( block )
     {
         // Yes, so block until mutex can be locked.
-        const int ok = pthread_mutex_lock( &(mData->mMutex) );
+        int ok;
+        ok = pthread_mutex_lock( &(mData->mMutex) );
         
         // Sanity!
         AssertFatal( ok != EINVAL, "Mutex::lockMutex() failed: invalid mutex.");
@@ -119,7 +121,8 @@ bool Mutex::lock( bool block )
 void Mutex::unlock()
 {
     // Unlock the thread.
-    const bool ok = pthread_mutex_unlock( &(mData->mMutex) );
+    bool ok;
+    ok = pthread_mutex_unlock( &(mData->mMutex) );
     
     // Sanity!
     AssertFatal( ok == 0, "Mutex::unlockMutex() failed: pthread_mutex_unlock() failed.");

+ 1 - 1
engine/source/sim/simDictionary.cc

@@ -25,7 +25,7 @@
 
 //----------------------------------------------------------------------------
 //----------------------------------------------------------------------------
-extern S32 HashPointer(StringTableEntry e);
+extern U32 HashPointer(StringTableEntry e);
 
 SimNameDictionary::SimNameDictionary()
 {

BIN
tools/documentation/doxygen.exe


BIN
tools/documentation/doxyindexer.exe


+ 0 - 0
tools/documentation/.gitignore → tools/doxygen/.gitignore


+ 8 - 6
tools/documentation/ReadMe.txt → tools/doxygen/ReadMe.txt

@@ -1,6 +1,8 @@
 Generates Torque2D and TorqueScript reference documentation.
 
-Use the manual (A) or automated (B) method.  Note that the automated method needs some updating and testing
+The latest Doxygen for Windows/OSX can be found here: http://www.stack.nl/~dimitri/doxygen/download.html
+
+Use the manual (A) or automated (B) method.  Note that the automated method needs some updating and testing.
 
 ***************
 
@@ -8,10 +10,11 @@ A) Manual
 
 This should work for PC or Mac (or anywhere doxygen and git/svn run)
 
-	1. start in this directory
-	2. run  doxygen config/torque2DReference.cfg (will produce ./output/torque2DDocs and torque2D.tag)
-	3. run  doxygen config/torqueScriptReference.cfg (will produce ./output/torqueScriptDocs)
-	4. "push" output/torque2DDocs and output/torqueScriptDocs to gh-pages
+	1. download Doxygen as noted in the link above. Move the exe/app into this folder.
+	2. start in this directory
+	3. run  doxygen config/torque2DReference.cfg (will produce ./output/torque2DDocs and torque2D.tag)
+	4. run  doxygen config/torqueScriptReference.cfg (will produce ./output/torqueScriptDocs)
+	5. "push" output/torque2DDocs and output/torqueScriptDocs to gh-pages
 
 ***************
 
@@ -27,4 +30,3 @@ This should produce an output file in the sub-folder "input" followed by executi
 
 Execute the "generateDocs.command"
 This should produce an output file in the sub-folder "input" followed by executing the Win32 Doxygen to generate the documentation in the output sub-folder.  The default configuration only outputs HTML.
-The latest Doxygen for OSX can be found here: http://www.stack.nl/~dimitri/doxygen/download.html  Shortly the OSX version will be placed into the repository alongside the DMG version.

+ 0 - 0
tools/documentation/comment.rb → tools/doxygen/comment.rb


+ 0 - 0
tools/documentation/config/t2d-stylesheet-extra.css → tools/doxygen/config/t2d-stylesheet-extra.css


+ 0 - 0
tools/documentation/config/torque2DReference.cfg → tools/doxygen/config/torque2DReference.cfg


+ 0 - 0
tools/documentation/config/torqueScriptReference-footer.html → tools/doxygen/config/torqueScriptReference-footer.html


+ 0 - 0
tools/documentation/config/torqueScriptReference-from-dump.cfg → tools/doxygen/config/torqueScriptReference-from-dump.cfg


+ 0 - 0
tools/documentation/config/torqueScriptReference-header.html → tools/doxygen/config/torqueScriptReference-header.html


+ 0 - 0
tools/documentation/config/torqueScriptReference-layout.xml → tools/doxygen/config/torqueScriptReference-layout.xml


+ 0 - 0
tools/documentation/config/torqueScriptReference.cfg → tools/doxygen/config/torqueScriptReference.cfg


+ 0 - 0
tools/documentation/doxysearch.cgi → tools/doxygen/doxysearch.cgi


+ 0 - 0
tools/documentation/generateDocs.bat → tools/doxygen/generateDocs.bat


+ 0 - 0
tools/documentation/generateDocs.cs → tools/doxygen/generateDocs.cs


+ 0 - 0
tools/documentation/hhc.exe → tools/doxygen/hhc.exe


+ 0 - 0
tools/documentation/input/.gitignore → tools/doxygen/input/.gitignore


+ 0 - 0
tools/documentation/main.generateDocs.cs → tools/doxygen/main.generateDocs.cs


+ 0 - 0
tools/documentation/output/.gitignore → tools/doxygen/output/.gitignore


+ 0 - 62
tutorials/starterProject/.gitignore

@@ -1,62 +0,0 @@
-# Dev Files #
-###################
-*.xcworkspace
-*.xcuserdatad
-.LSOverride
-/tmp/*
-/preferences.cs
-*.dso
-*.edso
-*.user
-*.sdf
-*.suo
-*.dir
-*.opensdf
-*.idea
-*.dSYM
-*.res
-*.cache
-*.exports
-*.opt
-*.tmp
-Torque2D.app
-Torque2D_DEBUG.app
-Torque2D.exe
-Torque2D_DEBUG.exe
-Torque2DGame.app
-Torque2DGame_Debug.app
-linkmap.txt
-    
-# Compiled source #
-###################
-*.com
-*.class
-*.o
-*.a
-*.so
-*.obj
-*.lib
-*.idb
-*.pdb
-*.ilk
-*.ipch
-*.lastbuildstate
-*.unsuccessfulbuild
-*.manifest
-*.tlog
-
-# Logs and databases #
-######################
-*.log
-*.sql
-
-# OS generated files #
-######################
-.DS_Store
-.DS_Store?
-._*
-.Spotlight-V100
-.Trashes
-Icon?
-ehthumbs.db
-Thumbs.db

+ 0 - 24
tutorials/starterProject/README - setup.md

@@ -1,24 +0,0 @@
-## What Is This `StarterProject` Directory
-
-`starterProject` is a template project for starting a Torque2D game from scratch.  You don't have to start here, but it should be easy to do so.
-
-## What Does a Torque2D Game Project Consist Of?
-
-In its simplest form, a project consists of a top-level directory with the following contents:
-
-* the Torque2D game engine
-* a `main.cs` script file, which the engine runs when it starts
-* almost certainly a `modules` directory containing one or more modules of game assets and scripts
-* almost certainly a bootstrap module, such as `AppCore`, to setup common variables and other required bits for the engine.
-
-## How To Start With This `starterProject`
-
-1. If you do not have a copy of the Torque2D binary, obtain or compile one.
-2. Copy this "startProject" directory to wherever you want to create the project.  This becomes the main project directory.
-3. If you are running Windows, copy the following files from your Torque2D original to this directory:
-  * Torque2D.exe
-  * OpenAL32.dll
-	* unicows.dll
-4. If you are running OSX, copy the following files from your Torque2D original to this directory:
-  * Torque2D(.app)
-5. Go to your Torque2D original and copy the modules/AppCore directory to this projects modules/ directory.

+ 0 - 1
tutorials/starterProject/cleandso.bat

@@ -1 +0,0 @@
-del /s *.dso

+ 0 - 36
tutorials/starterProject/main.cs

@@ -1,36 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) 2013 GarageGames, LLC
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//-----------------------------------------------------------------------------
-
-// debug amounts of log output
-setLogMode(6);
-// run game from the script files.  don't compile them first
-$Scripts::ignoreDSOs = true;
-
-ModuleDatabase.scanModules( "modules" );
-ModuleDatabase.LoadExplicit( "BlankGame" );
-
-//-----------------------------------------------------------------------------
-
-function onExit()
-{
-    ModuleDatabase.unloadExplicit( "BlankGame" );
-}

+ 0 - 9
tutorials/starterProject/modules/BlankGame/1/assets/images/font.asset.taml

@@ -1,9 +0,0 @@
-<ImageAsset
-    AssetName="font"
-    ImageFile="font.png"
-	CellOffsetY="1"
-	CellStrideY="16"
-    CellCountX="16"
-    CellCountY="6"
-    CellWidth="16"
-    CellHeight="14" />

BIN
tutorials/starterProject/modules/BlankGame/1/assets/images/font.png


+ 0 - 72
tutorials/starterProject/modules/BlankGame/1/main.cs

@@ -1,72 +0,0 @@
-//-----------------------------------------------------------------------------
-// Copyright (c) 2013 GarageGames, LLC
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to
-// deal in the Software without restriction, including without limitation the
-// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
-// sell copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
-// IN THE SOFTWARE.
-//-----------------------------------------------------------------------------
-
-function BlankGame::create( %this )
-{
-    // We need a main "Scene" we can use as our game world.  The place where sceneObjects play.
-    // Give it a global name "mainScene" since we may want to access it directly in our scripts.
-    new Scene(mainScene);
-
-    // Without a system window or "Canvas", we can't see or interact with our scene.
-    // AppCore initialized the Canvas already
-
-    // Now that we have a Canvas, we need a viewport into the scene.
-    // Give it a global name "mainWindow" since we may want to access it directly in our scripts.
-    new SceneWindow(mainWindow);
-    mainWindow.profile = new GuiControlProfile();
-    Canvas.setContent(mainWindow);
-
-    // Finally, connect our scene into the viewport (or sceneWindow).
-    // Note that a viewport comes with a camera built-in.
-    mainWindow.setScene(mainScene);
-    mainWindow.setCameraPosition( 0, 0 );
-    mainWindow.setCameraSize( 100, 75 );
-
-    // load some scripts and variables
-    // exec("./scripts/someScript.cs");
-
-    // let's do a little something to make sure we are up and running.
-    // write "hello world!"  :)
-    %this.sayHello();
-}
-
-//-----------------------------------------------------------------------------
-
-function BlankGame::destroy( %this )
-{
-}
-
-//-----------------------------------------------------------------------------
-
-
-function BlankGame::sayHello( %this )
-{
-    %phrase = new ImageFont();
-    %phrase.Image = "BlankGame:Font";
-       
-    // Set the font size in both axis.  This is in world-units and not typicaly font "points".
-    %phrase.FontSize = "2 2";
-    
-    %phrase.TextAlignment = "Center";
-    %phrase.Text = "Hello, World!";
-    mainScene.add( %phrase );    
-}

+ 0 - 13
tutorials/starterProject/modules/BlankGame/1/module.taml

@@ -1,13 +0,0 @@
-<ModuleDefinition
-	ModuleId="blankGame"
-	VersionId="1"
-	Description="Blank Project as a Template.  You should probably rename this module!"
-	Dependencies="AppCore=1"
-	ScriptFile="main.cs"
-	CreateFunction="create"
-	DestroyFunction="destroy">
-		<DeclaredAssets
-			Path="assets"
-			Extension="asset.taml"
-			Recurse="true"/>
-</ModuleDefinition>

+ 0 - 34
tutorials/starterProject/starterProject.torsion

@@ -1,34 +0,0 @@
-<TorsionProject>
-<Name>starterProject</Name>
-<WorkingDir/>
-<EntryScript>main.cs</EntryScript>
-<DebugHook>dbgSetParameters( #port#, "#password#", true );</DebugHook>
-<Mods>
-<Folder>modules</Folder>
-</Mods>
-<ScannerExts>cs; gui</ScannerExts>
-<Configs>
-<Config>
-<Name>Release</Name>
-<Executable>Torque2D.exe</Executable>
-<Arguments/>
-<HasExports>true</HasExports>
-<Precompile>false</Precompile>
-<InjectDebugger>true</InjectDebugger>
-<UseSetModPaths>false</UseSetModPaths>
-</Config>
-<Config>
-<Name>Debug</Name>
-<Executable>Torque2D_DEBUG.exe</Executable>
-<Arguments/>
-<HasExports>false</HasExports>
-<Precompile>false</Precompile>
-<InjectDebugger>true</InjectDebugger>
-<UseSetModPaths>false</UseSetModPaths>
-</Config>
-</Configs>
-<SearchURL/>
-<SearchProduct>baseProject</SearchProduct>
-<SearchVersion>HEAD</SearchVersion>
-<ExecModifiedScripts>true</ExecModifiedScripts>
-</TorsionProject>