2
0
Эх сурвалжийг харах

Merge pull request #1700 from gameplay3d/master

Merge master to next
Sean Taylor 11 жил өмнө
parent
commit
af71256a5e

+ 1 - 1
README.md

@@ -1,6 +1,6 @@
 ## GamePlay v3.0.0
 
-GamePlay is an open-source, cross-platform native C++ game framework making it easy to learn and write mobile and desktop games. 
+GamePlay is an open-source, cross-platform native C++ game framework for creating 2D/3D mobile and desktop games.
 
 <img align="right" src="https://raw.github.com/wiki/gameplay3d/GamePlay/img/logo.png" alt="gameplay3d" />
 

+ 34 - 34
api/header.html

@@ -1,34 +1,34 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<title>gameplay: Main Page</title>
-
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-<link href="custom.css" rel="stylesheet" type="text/css" />
-
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { searchBox.OnSelectItem(0); });
-</script>
-
-</head>
-<body>
-<div id="top"><!-- do not remove this div! -->
-<table class="header" border="0">
-<tbody>
-<tr>
-<td id="logo"><a href="http://gameplay3d.org/"><img src="images/logo.png" alt="gameplay" border="0" height="64px"/></a></td>
-<td width="100%"/>
-<td><a href="http://gameplay3d.org/"><span class="button">overview</span></a></td><td width="12px"/>
-<td><a href="https://github.com/gameplay3d/GamePlay/wiki"><span class="button">wiki</span></a></td><td width="12px"/>
-<td><a href="http://gameplay3d.github.com/GamePlay/api/index.html"><span class="button">api&nbsp;reference</span></a></td><td width="12px"/>
-<td><a href="http://www.gameplay3d.org/forums"><span class="button">forums</span></a></td>
-<td><a href="https://github.com/gameplay3d/GamePlay"><span class="button">download</span></a></td>
-</tr>
-</tbody>
-</table>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<title>gameplay: Main Page</title>
+
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+<link href="custom.css" rel="stylesheet" type="text/css" />
+
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<script type="text/javascript">
+  $(document).ready(function() { searchBox.OnSelectItem(0); });
+</script>
+
+</head>
+<body>
+<div id="top"><!-- do not remove this div! -->
+<table class="header" border="0">
+<tbody>
+<tr>
+<td id="logo"><a href="http://gameplay3d.org/"><img src="images/logo.png" alt="gameplay" border="0" height="64px"/></a></td>
+<td width="100%"/>
+<td><a href="http://gameplay3d.org/"><span class="button">overview</span></a></td><td width="12px"/>
+<td><a href="https://github.com/gameplay3d/GamePlay/wiki"><span class="button">wiki</span></a></td><td width="12px"/>
+<td><a href="http://gameplay3d.github.com/GamePlay/api/index.html"><span class="button">api&nbsp;reference</span></a></td><td width="12px"/>
+<td><a href="http://www.gameplay3d.org/forums"><span class="button">forums</span></a></td>
+<td><a href="https://github.com/gameplay3d/GamePlay"><span class="button">download</span></a></td>
+</tr>
+</tbody>
+</table>

+ 2 - 2
gameplay/src/Control.h

@@ -1348,10 +1348,10 @@ protected:
      *
      * @param s A string in the format of either 'N, N' or 'N%, N%' (where N is a number)
      * @param v1 Set to the value of the first number in the string
-     * @param v1 Set to the value of the second number in the string
+     * @param v2 Set to the value of the second number in the string
      * @param v1Percentage Set to true if the first number should be treated as a percentage
      * @param v2Percentage Set to true if the second number should be treated as a percentage
-     * @return True if the string was parsed
+     * @return true if the string was parsed
      */
     static bool parseCoordPair(const char* s, float* v1, float* v2, bool* v1Percentage, bool* v2Percentage);
 

+ 4 - 2
gameplay/src/Curve.h

@@ -339,8 +339,10 @@ public:
      * Sets the tangents for a point on the curve specified by the index.
      *
      * @param index The index of the point.
-     *
-     *
+     * @param type The interpolation type.
+     * @param type The curve interpolation type.
+     * @param inValue The tangent approaching the point.
+     * @param outValue The tangent leaving the point.
      */
     void setTangent(unsigned int index, InterpolationType type, float* inValue, float* outValue);
     

+ 5 - 2
gameplay/src/Drawable.h

@@ -12,10 +12,10 @@ class NodeCloneContext;
  */
 class Drawable
 {
-public:
-
     friend class Node;
 
+public:
+
     /**
      * Constructor.
      */
@@ -59,6 +59,9 @@ protected:
      */
     virtual void setNode(Node* node);
 
+    /**
+     * Node this drawable is attached to.
+     */
     Node* _node;
 };
 

+ 1 - 0
gameplay/src/JoystickControl.h

@@ -131,6 +131,7 @@ public:
     /**
      * Sets the radius of joystick motion
      *
+     * @param radius The radius to be set.
      * @param isPercentage If the radius value is a percentage value of the relative size of this control
      */
     void setRadius(float radius, bool isPercentage = false);

+ 25 - 5
gameplay/src/Node.h

@@ -416,18 +416,19 @@ public:
     /**
      * Gets the drawable object attached to this node.
      *
-     *
-     * @return The model attached to this node.
+     * @return The drawable component attached to this node.
      */
     Drawable* getDrawable() const;
 
     /**
-     * Set the drawable object to be attached to this node.
+     * Set the drawable object to be attached to this node
+     *
+     * This is typically a Model, ParticleEmiiter, Form, Terrrain, Sprite, TileSet or Text.
      *
      * This will increase the reference count of the new drawble and decrease
      * the reference count of the old drawable.
      *
-     * @param model The new model. May be NULL.
+     * @param drawable The new drawable component. May be NULL.
      */
     void setDrawable(Drawable* drawable);
 
@@ -680,25 +681,44 @@ private:
 
 protected:
 
+    /** The scene this node is attached to. */
     Scene* _scene;
+    /** The nodes id. */
     std::string _id;
+    /** The nodes first child. */
     Node* _firstChild;
+    /** The nodes next sibiling. */
     Node* _nextSibling;
+    /** The nodes previous sibiling. */
     Node* _prevSibling;
+    /** The nodes parent. */
     Node* _parent;
+    /** The number of child nodes. */
     unsigned int _childCount;
+    /** If this node is enabled. Maybe different if parent is enabled/disabled. */
     bool _enabled; 
+    /** Tags assigned to this node. */
     std::map<std::string, std::string>* _tags;
+    /** The drawble component attached to this node. */
     Drawable* _drawable;
+    /** The camera component attached to this node. */
     Camera* _camera;
+    /** The light component attached to this node. */
     Light* _light;
+    /** The audio source component attached to this node. */
     AudioSource* _audioSource;
+    /** The collision object component attached to this node. */
     PhysicsCollisionObject* _collisionObject;
+    /** The AI agent component attached to this node. */
     mutable AIAgent* _agent;
+    /** The user object component attached to this node. */
     Ref* _userObject;
+    /** The world matrix for this node. */
     mutable Matrix _world;
-    mutable int _dirtyBits;
+    /** The bounding sphere for this node. */
     mutable BoundingSphere _bounds;
+    /** The dirty bits used for optimization. */
+    mutable int _dirtyBits;
 };
 
 /**

+ 55 - 24
gameplay/src/ScriptTarget.h

@@ -122,14 +122,14 @@ public:
     public:
 
         /**
-         * Returns the name of this event.
+         * Gets the name of this event.
          *
          * @return The event name.
          */
         const char* getName() const;
 
         /**
-         * Returns the argument string for this event.
+         * Gets the argument string for this event.
          *
          * @return The argument string.
          */
@@ -144,7 +144,6 @@ public:
 
         /**
          * The event arguments.
-         *
          * @see ScriptController::executeFunction
          */
         std::string args;
@@ -164,7 +163,7 @@ public:
     public:
 
         /**
-         * Creates an empty event registry.
+         * Constructor.
          */
         EventRegistry();
 
@@ -180,7 +179,6 @@ public:
          * @param args The argument string for the event.
          *
          * @return The added event.
-         *
          * @see ScriptController::executeFunction
          */
         const Event* addEvent(const char* name, const char* args = NULL);
@@ -196,7 +194,6 @@ public:
          * Returns the event with the given index.
          *
          * @param index The index of the event to retrieve.
-         *
          * @return The event for the given index.
          */
         const Event* getEvent(unsigned int index) const;
@@ -205,7 +202,6 @@ public:
          * Returns the event that matches the given name.
          *
          * @param name The name of the event to search for.
-         *
          * @return The matching event, or NULL if no such event exists.
          */
         const Event* getEvent(const char* name) const;
@@ -216,8 +212,7 @@ public:
     };
 
     /**
-     * Implemented by child classes to return the type name identifier for
-     * the class that extends ScriptTarget.
+     * Gets the type name identifier for the class that extends ScriptTarget.
      *
      * @return A string describing the type name of the ScriptTarget child
      *      class, as it is defined in the lua bindings (i.e. "Node").
@@ -232,7 +227,6 @@ public:
      * variables with the same name to be used without colliding with other scripts.
      *
      * @param path Path to the script.
-     *
      * @return A pointer to the successfully loaded script, or NULL if unsuccessful.
      */
     Script* addScript(const char* path);
@@ -241,7 +235,6 @@ public:
      * Removes a previously attached script from this object.
      *
      * @param path The same path that was used to load the script being removed.
-     *
      * @return True if a script is successfully removed, false otherwise.
      */
     bool removeScript(const char* path);
@@ -279,7 +272,6 @@ public:
      * event (i.e. has a function callback defined for the given event).
      *
      * @param eventName The script event to check.
-     *
      * @return True if there is a listener for the specified event, false otherwise.
      */
     bool hasScriptListener(const char* eventName) const;
@@ -289,16 +281,14 @@ public:
      * event (i.e. has a function callback defined for the given event).
      *
      * @param event The script event to check.
-     *
      * @return True if there is a listener for the specified event, false otherwise.
      */
     bool hasScriptListener(const Event* event) const;
 
     /**
-     * Returns the event object for the given event name, if it exists.
+     * Gets the event object for the given event name, if it exists.
      *
      * @param eventName Name of the event.
-     *
      * @return The event object for the given name, or NULL if no such event exists.
      */
     const Event* getScriptEvent(const char* eventName) const;
@@ -326,10 +316,17 @@ protected:
      */
     struct RegistryEntry
     {
+        /** The event registry. */
         EventRegistry* registry;
+        /** The next entry in the registry. */
         RegistryEntry* next;
+        /** The previous entry in the registry. */
         RegistryEntry* prev;
 
+        /**
+         * Constructor.
+         * @param registry The event registry.
+         */
         RegistryEntry(EventRegistry* registry) : registry(registry), next(NULL), prev(NULL) { }
     };
 
@@ -338,9 +335,18 @@ protected:
      */
     struct ScriptEntry
     {
+        /** The script. */
         Script* script;
+        /** The next script entry. */
         ScriptEntry* next;
+        /** The previous script entry. */
         ScriptEntry* prev;
+
+        /**
+         * Constructor.
+         *
+         * @param script The script to create an entry for.
+         */
         ScriptEntry(Script* script) : script(script), next(NULL), prev(NULL) { }
     };
 
@@ -349,12 +355,16 @@ protected:
      */
     struct CallbackFunction
     {
-        // The script the callback belongs to (or NULL if the callback is a global function)
+        /** The script the callback belongs to (or NULL if the callback is a global function) */
         Script* script;
-
-        // The function within the script to call
+        /** The function within the script to call. */
         std::string function;
 
+        /**
+         * The callback function to registry script function to.
+         * @param script The script.
+         * @param function The script function.
+         */
         CallbackFunction(Script* script, const char* function) : script(script), function(function) { }
     };
 
@@ -370,8 +380,10 @@ protected:
 
     /**
      * Removes the specified script.
+     *
+     * @param entry The script entry to be removed.
      */
-    void removeScript(ScriptEntry* se);
+    void removeScript(ScriptEntry* entry);
 
     /**
      * Registers a set of supported script events and event arguments for this ScriptTarget. 
@@ -396,15 +408,34 @@ protected:
     std::map<const Event*, std::vector<CallbackFunction> >* _scriptCallbacks;
 };
 
-template<typename T> T ScriptTarget::fireScriptEvent(const Event* evt, ...)
+/**
+ * The fire script event template specialization.
+ *
+ * @param event The event fired.
+ * @param ... Optional list of arguments to pass to the script event.
+ */
+template<typename T> T ScriptTarget::fireScriptEvent(const Event* event, ...)
 {
     GP_ERROR("Unsupported return type for template function ScriptTarget::fireScriptEvent.");
 }
 
-/** Template specialization. */
-template<> void ScriptTarget::fireScriptEvent<void>(const Event* event, ...);
-/** Template specialization. */
-template<> bool ScriptTarget::fireScriptEvent<bool>(const Event* event, ...);
+/** 
+ * Template specialization. 
+ *
+ * @param evt The event fired.
+ * @param ... Optional list of arguments to pass to the script event (should match the
+ *      script event argument definition).
+ */
+template<> void ScriptTarget::fireScriptEvent<void>(const Event* evt, ...);
+
+/** 
+ * Template specialization.
+ *
+ * @param evt The event fired.
+ * @param ... Optional list of arguments to pass to the script event (should match the
+ *      script event argument definition).
+ */
+template<> bool ScriptTarget::fireScriptEvent<bool>(const Event* evt, ...);
 
 }
 

+ 3 - 1
gameplay/src/Sprite.cpp

@@ -246,12 +246,14 @@ Sprite* Sprite::create(Properties* properties)
     float heightPercentage = 0.0f;
     if (properties->exists("width"))
     {
-        if (properties->getType("width") == Properties::NUMBER) //TODO: Verify that this works for "100" but fails for "100%"
+        if (properties->getType("width") == Properties::NUMBER)
         {
+			// Number only (200)
             width = properties->getFloat("width");
         }
         else
         {
+			// Number and something else (200%)
             widthPercentage = properties->getFloat("width") / 100.0f;
         }
     }

+ 14 - 9
gameplay/src/Sprite.h

@@ -124,6 +124,7 @@ public:
     /**
      * Creates a sprite from properties.
      *
+     * @param properties The properties object to create from.
      * @return The new Sprite.
      */
     static Sprite* create(Properties* properties);
@@ -193,13 +194,15 @@ public:
     /**
      * Sets the source region from the source image.
      *
-     * @param sourceClip The source clip region from the source image.
+     * @param frameIndex The frame index to specify the source region for.
+     * @param source The source clip region from the source image.
      */
     void setFrameSource(unsigned int frameIndex, const Rectangle& source);
     
     /**
      * Gets the source region from the source image.
      *
+     * @param frameIndex The frame index to get the source region from.
      * @return The source clip region from the source image.
      */
     const Rectangle& getFrameSource(unsigned int frameIndex) const;
@@ -244,7 +247,7 @@ public:
      *
      * @param index The current frame index to be rendered.
      */
-    void setFrameIndex(unsigned int frameIndex);
+    void setFrameIndex(unsigned int index);
     
     /**
      * Gets the current frame index to be rendered.
@@ -267,7 +270,7 @@ public:
      *
      * The range is from full transparent to opaque [0.0,1.0].
      *
-     * @preturn The opacity for the sprite.
+     * @return The opacity for the sprite.
      */
     float getOpacity() const;
     
@@ -302,11 +305,11 @@ public:
     BlendMode getBlendMode() const;
     
     /**
-     * Gets the texture sampler.
-     *
-     * This return texture sampler is used when sampling the texture in the
-     * effect. This can be modified for controlling sampler setting such as
+     * Gets the texture sampler used when sampling the texture.
+     * This can be modified for controlling sampler setting such as
      * filtering modes.
+     *
+     * @return The texture sampler used when sampling the texture.
      */
     Texture::Sampler* getSampler() const;
     
@@ -322,9 +325,9 @@ public:
     RenderState::StateBlock* getStateBlock() const;
     
     /**
-     * Gets the material used by this batch.
+     * Gets the material used by sprite batch.
      *
-     * @return The material.
+     * @return The material used by the sprite batch.
      */
     Material* getMaterial() const;
 
@@ -375,6 +378,8 @@ protected:
      */
     void setAnimationPropertyValue(int propertyId, AnimationValue* value, float blendWeight = 1.0f);
 
+private:
+
     float _width;
     float _height;
     Offset _offset;

+ 9 - 5
gameplay/src/SpriteBatch.h

@@ -267,14 +267,23 @@ public:
      */
     struct SpriteVertex
     {
+        /** Vertex position x */
         float x;
+        /** Vertex position y */
         float y;
+        /** Vertex position z */
         float z;
+        /** Vertex texture u */
         float u;
+        /** Vertex texture v */
         float v;
+        /** Vertex color red component */
         float r;
+        /** Vertex color green component */
         float g;
+        /** Vertex color blue component */
         float b;
+        /** Vertex color alpha component */
         float a;
     };
     
@@ -391,11 +400,6 @@ private:
      */
     void addSprite(float x, float y, float width, float height, float u1, float v1, float u2, float v2, const Vector4& color, const Rectangle& clip, SpriteBatch::SpriteVertex* vertices);
 
-    /**
-     * Clip position and size to fit within clip region.
-     *
-     * @return true if any part of sprite intersects with the clip region and therefore needs drawing, false otherwise.
-     */
     bool clipSprite(const Rectangle& clip, float& x, float& y, float& width, float& height, float& u1, float& v1, float& u2, float& v2);
 
     MeshBatch* _batch;

+ 5 - 2
gameplay/src/Text.h

@@ -133,6 +133,7 @@ public:
      * Sets if the text is rendered right-to-left.
      *
      * Default is false (left-to-right)
+     *
      * @return rightToLeft true if the text is rendered right-to-left, false if left-to-right.
      */
     bool getRightToLeft() const;
@@ -167,7 +168,7 @@ public:
      *
      * Default is Rectangle(0, 0, 0, 0) which means no clipping region is applied.
      *
-     * @param clip The clipping region for this text.
+     * @return clip The clipping region for this text.
      */
     const Rectangle& getClip() const;
     
@@ -185,7 +186,7 @@ public:
      *
      * The range is from full transparent to opaque [0.0,1.0].
      *
-     * @preturn The opacity for the sprite.
+     * @return The opacity for the sprite.
      */
     float getOpacity() const;
     
@@ -250,6 +251,8 @@ protected:
      */
     void setAnimationPropertyValue(int propertyId, AnimationValue* value, float blendWeight = 1.0f);
     
+private:
+
     Font* _font;
     std::string _text;
     unsigned int _size;

+ 1 - 1
gameplay/src/TileSet.cpp

@@ -136,7 +136,7 @@ TileSet* TileSet::create(Properties* properties)
             Vector2 cell;
             Vector2 source;
             if (tileProperties->getVector2("cell", &cell) && tileProperties->getVector2("source", &source) &&
-                (cell.x > 0 && cell.y > 0 && cell.x < set->_columnCount && cell.y < set->_rowCount))
+                (cell.x >= 0 && cell.y >= 0 && cell.x < set->_columnCount && cell.y < set->_rowCount))
             {
                 set->_tiles[(int)cell.y * set->_columnCount + (int)cell.x] = source;
             }

+ 5 - 2
gameplay/src/TileSet.h

@@ -41,6 +41,7 @@ public:
      * @param tileHeight The height of each tile in the tile set.
      * @param rowCount The number of tile rows.
      * @param columnCount The number of tile columns.
+     *
      * @return The tile set created.
      */
     static TileSet* create(const char* imagePath, float tileWidth, float tileHeight,
@@ -129,7 +130,7 @@ public:
      *
      * The range is from full transparent to opaque [0.0,1.0].
      *
-     * @preturn The opacity for the sprite.
+     * @return The opacity for the sprite.
      */
     float getOpacity() const;
     
@@ -172,7 +173,9 @@ protected:
      * @see Drawable::clone
      */
     Drawable* clone(NodeCloneContext &context);
-    
+
+private:
+
     Vector2* _tiles;
     float _tileWidth;
     float _tileHeight;

+ 193 - 0
samples/browser/res/common/sprites/sprite.scene

@@ -0,0 +1,193 @@
+scene spriteSample
+{
+	// Width and height are expected to be 1280x720
+	node camera
+	{
+		camera
+		{
+			type = ORTHOGRAPHIC
+			nearPlane = 0
+			farPlane = 100
+
+			// zoomX default is game width
+			// zoomY default is game height
+			// aspectRatio default is game width / game height
+		}
+		// width and height are divided in half
+		translate = 640, 360, 0
+	}
+
+	// Background sprite
+	node background
+	{
+		sprite
+		{
+			path = res/common/sprites/background.png
+
+			// game width * 5
+			width = 6400
+			height = 720
+		}
+	}
+
+	// Level floor
+	node floor
+	{
+		tileset
+		{
+			path = res/common/sprites/level.png
+
+			tileWidth = 70
+			tileHeight = 70
+			rows = 3
+			columns = 7
+
+			tile
+			{
+				cell = 0, 0
+				source = 568, 284
+			}
+			tile
+			{
+				cell = 1, 0
+				source = 568, 284
+			}
+			tile
+			{
+				cell = 2, 0
+				source = 568, 284
+			}
+			tile
+			{
+				cell = 3, 0
+				source = 568, 284
+			}
+			tile
+			{
+				cell = 4, 0
+				source = 497, 284
+			}
+
+			tile
+			{
+				cell = 0, 1
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 1, 1
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 2, 1
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 3, 1
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 4, 1
+				source = 710, 142
+			}
+			tile
+			{
+				cell = 5, 1
+				source = 497, 284
+			}
+
+			tile
+			{
+				cell = 0, 2
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 1, 2
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 2, 2
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 3, 2
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 4, 2
+				source = 568, 0
+			}
+			tile
+			{
+				cell = 5, 2
+				source = 710, 142
+			}
+			tile
+			{
+				cell = 6, 2
+				source = 497, 284
+			}
+		}
+	}
+
+	node player
+	{
+		sprite
+		{
+			path = res/common/sprites/player1.png
+
+			width = 72
+			height = 97
+			source = 67, 196, 66, 92
+			frameCount = 13
+		}
+
+		// Position player at lower-left. Y position is floor's tileset height (tileHeight * rows)
+		translate = 0, 210, 0
+	}
+
+	node rocket
+	{
+		sprite
+		{
+			path = res/common/sprites/rocket.png
+
+			width = 128
+			height = 128
+			blendMode = BLEND_ADDITIVE
+			anchor = 0.5, 0.3
+			offset = OFFSET_ANCHOR
+		}
+
+		translate = 1280, 0, 0
+		rotate = 0, 0, 1, -45
+	}
+
+	node water
+	{
+		// Sprite drawable set in code because Effect isn't supported
+		translate = 0, -50, 0
+	}
+
+	node text
+	{
+		text
+		{
+			font = res/ui/arial.gpb
+
+			text = P1
+			size = 18
+			color = 0, 0, 1, 1
+		}
+	}
+
+	// Set active camera
+	activeCamera = camera
+}

+ 16 - 4
samples/browser/sample-browser.vcxproj

@@ -161,9 +161,6 @@ copy ..\..\gameplay\res\logo_powered_white.png res</Command>
     </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <None Include="bar-descriptor.xml">
-      <SubType>Designer</SubType>
-    </None>
     <None Include="game.config">
       <SubType>Designer</SubType>
     </None>
@@ -196,7 +193,6 @@ copy ..\..\gameplay\res\logo_powered_white.png res</Command>
     <None Include="res\common\forms\formZOrder.form" />
     <None Include="res\common\gamepad.form" />
     <None Include="res\common\gamepad.theme" />
-    <None Include="res\common\grid.material" />
     <None Include="res\common\inputs.form" />
     <None Include="res\common\light.form" />
     <None Include="res\common\light.material" />
@@ -225,6 +221,8 @@ copy ..\..\gameplay\res\logo_powered_white.png res</Command>
     <None Include="res\common\sample.material" />
     <None Include="res\common\sample.scene" />
     <None Include="res\common\sphere.gpb" />
+    <None Include="res\common\sprites\sprite.scene" />
+    <None Include="res\common\sprites\water2d.frag" />
     <None Include="res\common\terrain\encode.bat" />
     <None Include="res\common\terrain\heightmap.r16" />
     <None Include="res\common\terrain\sample.scene" />
@@ -319,6 +317,14 @@ copy ..\..\gameplay\res\logo_powered_white.png res</Command>
     <Image Include="res\common\particles\explosion.png" />
     <Image Include="res\common\particles\fire.png" />
     <Image Include="res\common\particles\smoke.png" />
+    <Image Include="res\common\sprites\background.png" />
+    <Image Include="res\common\sprites\level.png" />
+    <Image Include="res\common\sprites\player1.png" />
+    <Image Include="res\common\sprites\player2.png" />
+    <Image Include="res\common\sprites\player3.png" />
+    <Image Include="res\common\sprites\rocket.png" />
+    <Image Include="res\common\sprites\water2d-noise.png" />
+    <Image Include="res\common\sprites\water2d.png" />
     <Image Include="res\common\terrain\dirt.dds" />
     <Image Include="res\common\terrain\grass.dds" />
     <Image Include="res\common\terrain\normalmap.dds" />
@@ -345,6 +351,12 @@ copy ..\..\gameplay\res\logo_powered_white.png res</Command>
     <Media Include="res\common\audio\braking.wav" />
     <Media Include="res\common\footsteps.wav" />
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="res\common\sprites\level.txt" />
+    <Text Include="res\common\sprites\player1.txt" />
+    <Text Include="res\common\sprites\player2.txt" />
+    <Text Include="res\common\sprites\player3.txt" />
+  </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   </ImportGroup>

+ 122 - 27
samples/browser/sample-browser.vcxproj.filters

@@ -33,11 +33,19 @@
     <Filter Include="res\common\audio">
       <UniqueIdentifier>{7da0c58a-d770-4181-8781-f9948df5bdd3}</UniqueIdentifier>
     </Filter>
+    <Filter Include="res\common\water">
+      <UniqueIdentifier>{e6d4de4b-95e9-4893-a8a9-ce00291995cb}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="res\common\particles">
+      <UniqueIdentifier>{98333a4d-224e-4f83-ac60-baca4885bf82}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="res\common\sprites">
+      <UniqueIdentifier>{5f9e3afc-ab2a-463d-9376-9d9df3e9fed4}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   <ItemGroup>
     <None Include="game.config" />
     <None Include="icon.png" />
-    <None Include="bar-descriptor.xml" />
     <None Include="res\common\forms\formBasicControls.form">
       <Filter>res\common\forms</Filter>
     </None>
@@ -143,9 +151,6 @@
     <None Include="res\common\gamepad.theme">
       <Filter>res\common</Filter>
     </None>
-    <None Include="res\common\grid.material">
-      <Filter>res\common</Filter>
-    </None>
     <None Include="res\common\inputs.form">
       <Filter>res\common</Filter>
     </None>
@@ -254,17 +259,6 @@
     <None Include="res\common\fonts\neuropol.gpb">
       <Filter>res\common\fonts</Filter>
     </None>
-    <None Include="res\common\particles\editor.form" />
-    <None Include="res\common\particles\editor.theme" />
-    <None Include="res\common\particles\explosion.particle" />
-    <None Include="res\common\particles\fire.particle" />
-    <None Include="res\common\particles\grid.material" />
-    <None Include="res\common\particles\smoke.particle" />
-    <None Include="res\common\water\pond.gpb" />
-    <None Include="res\common\water\watersample.frag" />
-    <None Include="res\common\water\watersample.material" />
-    <None Include="res\common\water\watersample.scene" />
-    <None Include="res\common\water\watersample.vert" />
     <None Include="res\common\audio\background.form">
       <Filter>res\common\audio</Filter>
     </None>
@@ -283,6 +277,45 @@
     <None Include="res\common\audio\sample.audio">
       <Filter>res\common\audio</Filter>
     </None>
+    <None Include="res\common\water\watersample.vert">
+      <Filter>res\common\water</Filter>
+    </None>
+    <None Include="res\common\water\watersample.frag">
+      <Filter>res\common\water</Filter>
+    </None>
+    <None Include="res\common\water\watersample.material">
+      <Filter>res\common\water</Filter>
+    </None>
+    <None Include="res\common\water\watersample.scene">
+      <Filter>res\common\water</Filter>
+    </None>
+    <None Include="res\common\particles\editor.form">
+      <Filter>res\common\particles</Filter>
+    </None>
+    <None Include="res\common\particles\editor.theme">
+      <Filter>res\common\particles</Filter>
+    </None>
+    <None Include="res\common\particles\explosion.particle">
+      <Filter>res\common\particles</Filter>
+    </None>
+    <None Include="res\common\particles\fire.particle">
+      <Filter>res\common\particles</Filter>
+    </None>
+    <None Include="res\common\particles\smoke.particle">
+      <Filter>res\common\particles</Filter>
+    </None>
+    <None Include="res\common\water\pond.gpb">
+      <Filter>res\common\water</Filter>
+    </None>
+    <None Include="res\common\particles\grid.material">
+      <Filter>res\common</Filter>
+    </None>
+    <None Include="res\common\sprites\sprite.scene">
+      <Filter>res\common\sprites</Filter>
+    </None>
+    <None Include="res\common\sprites\water2d.frag">
+      <Filter>res\common\sprites</Filter>
+    </None>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="src\MeshPrimitiveSample.h">
@@ -345,9 +378,6 @@
     <ClInclude Include="src\WaterSample.h">
       <Filter>src</Filter>
     </ClInclude>
-    <ClInclude Include="src\ParticlesSample.h" />
-    <ClInclude Include="src\FontSample.h" />
-    <ClInclude Include="src\SpriteSample.h" />
     <ClInclude Include="src\SceneCreateSample.h">
       <Filter>src</Filter>
     </ClInclude>
@@ -357,6 +387,15 @@
     <ClInclude Include="src\AudioSample.h">
       <Filter>src</Filter>
     </ClInclude>
+    <ClInclude Include="src\ParticlesSample.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="src\SpriteSample.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="src\FontSample.h">
+      <Filter>src</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <ClCompile Include="src\MeshPrimitiveSample.cpp">
@@ -419,9 +458,6 @@
     <ClCompile Include="src\WaterSample.cpp">
       <Filter>src</Filter>
     </ClCompile>
-    <ClCompile Include="src\ParticlesSample.cpp" />
-    <ClCompile Include="src\FontSample.cpp" />
-    <ClCompile Include="src\SpriteSample.cpp" />
     <ClCompile Include="src\SceneCreateSample.cpp">
       <Filter>src</Filter>
     </ClCompile>
@@ -431,6 +467,15 @@
     <ClCompile Include="src\AudioSample.cpp">
       <Filter>src</Filter>
     </ClCompile>
+    <ClCompile Include="src\ParticlesSample.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\SpriteSample.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="src\FontSample.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <Image Include="res\common\terrain\dirt.dds">
@@ -490,12 +535,48 @@
     <Image Include="res\png\logo.png">
       <Filter>res\png</Filter>
     </Image>
-    <Image Include="res\common\particles\editor.png" />
-    <Image Include="res\common\particles\explosion.png" />
-    <Image Include="res\common\particles\fire.png" />
-    <Image Include="res\common\particles\smoke.png" />
-    <Image Include="res\common\water\water_normal.png" />
-    <Image Include="res\common\water\water_sample.png" />
+    <Image Include="res\common\water\water_normal.png">
+      <Filter>res\common\water</Filter>
+    </Image>
+    <Image Include="res\common\water\water_sample.png">
+      <Filter>res\common\water</Filter>
+    </Image>
+    <Image Include="res\common\particles\editor.png">
+      <Filter>res\common\particles</Filter>
+    </Image>
+    <Image Include="res\common\particles\explosion.png">
+      <Filter>res\common\particles</Filter>
+    </Image>
+    <Image Include="res\common\particles\fire.png">
+      <Filter>res\common\particles</Filter>
+    </Image>
+    <Image Include="res\common\particles\smoke.png">
+      <Filter>res\common\particles</Filter>
+    </Image>
+    <Image Include="res\common\sprites\background.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\level.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\player1.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\player2.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\player3.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\rocket.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\water2d.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
+    <Image Include="res\common\sprites\water2d-noise.png">
+      <Filter>res\common\sprites</Filter>
+    </Image>
   </ItemGroup>
   <ItemGroup>
     <Media Include="res\common\footsteps.wav">
@@ -505,4 +586,18 @@
       <Filter>res\common\audio</Filter>
     </Media>
   </ItemGroup>
+  <ItemGroup>
+    <Text Include="res\common\sprites\level.txt">
+      <Filter>res\common\sprites</Filter>
+    </Text>
+    <Text Include="res\common\sprites\player1.txt">
+      <Filter>res\common\sprites</Filter>
+    </Text>
+    <Text Include="res\common\sprites\player2.txt">
+      <Filter>res\common\sprites</Filter>
+    </Text>
+    <Text Include="res\common\sprites\player3.txt">
+      <Filter>res\common\sprites</Filter>
+    </Text>
+  </ItemGroup>
 </Project>

+ 60 - 116
samples/browser/src/SpriteSample.cpp

@@ -7,12 +7,7 @@
 
 SpriteSample::SpriteSample()
     : _font(NULL), _scene(NULL), _cameraNode(NULL),
-      _floorTileSet(NULL), _floorNode(NULL),
-      _backgroundSprite(NULL), _backgroundNode(NULL),
-      _playerSprite(NULL), _playerNode(NULL), _playerAnimation(NULL), _playerMovement(0),
-      _rocketSprite(NULL), _rocketNode(NULL),
-      _waterSprite(NULL), _waterNode(NULL),
-      _text(NULL), _textNode(NULL)
+      _playerSprite(NULL), _playerNode(NULL), _playerAnimation(NULL), _playerMovement(0)
 {
 }
 
@@ -21,121 +16,70 @@ void SpriteSample::initialize()
     // Create the font for drawing the framerate.
     _font = Font::create("res/ui/arial.gpb");
 
-    // Create an orthographic projection matrix.
-    float width = (float)getWidth();
-    float height = (float)getHeight();
-    float aspectRatio = width / height;
-    _scene = Scene::create();
-    _cameraNode = _scene->addNode("camera");
-    Camera* camera = Camera::createOrthographic(width, height, aspectRatio, 0, 100);
-    _cameraNode->setCamera(camera);
-    _scene->setActiveCamera(camera);
-    SAFE_RELEASE(camera);
-    _cameraNode->translateX(width / 2);
-    _cameraNode->translateY(height / 2);
+	// Load sprite scene
+	_scene = Scene::load("res/common/sprites/sprite.scene");
+	_cameraNode = _scene->findNode("camera");
 
-    // Background sprite image
-    _backgroundSprite = Sprite::create("res/common/sprites/background.png", getWidth() * 5, getHeight());
-    _backgroundNode = _scene->addNode("background");
-    _backgroundNode->setDrawable(_backgroundSprite);
-    
-    // Level floor tile set
-    _floorTileSet = TileSet::create("res/common/sprites/level.png", 70, 70, 3, 7);
-    _floorTileSet->setTileSource(0, 0, Vector2(568, 284));
-    _floorTileSet->setTileSource(1, 0, Vector2(568, 284));
-    _floorTileSet->setTileSource(2, 0, Vector2(568, 284));
-    _floorTileSet->setTileSource(3, 0, Vector2(568, 284));
-    _floorTileSet->setTileSource(4, 0, Vector2(497, 284));
-    
-    _floorTileSet->setTileSource(0, 1, Vector2(568, 0));
-    _floorTileSet->setTileSource(1, 1, Vector2(568, 0));
-    _floorTileSet->setTileSource(2, 1, Vector2(568, 0));
-    _floorTileSet->setTileSource(3, 1, Vector2(568, 0));
-    _floorTileSet->setTileSource(4, 1, Vector2(710, 142));
-    _floorTileSet->setTileSource(5, 1, Vector2(497, 284));
-    
-    _floorTileSet->setTileSource(0, 2, Vector2(568, 0));
-    _floorTileSet->setTileSource(1, 2, Vector2(568, 0));
-    _floorTileSet->setTileSource(2, 2, Vector2(568, 0));
-    _floorTileSet->setTileSource(3, 2, Vector2(568, 0));
-    _floorTileSet->setTileSource(4, 2, Vector2(568, 0));
-    _floorTileSet->setTileSource(5, 2, Vector2(710, 142));
-    _floorTileSet->setTileSource(6, 2, Vector2(497, 284));
-    
-    _floorNode = _scene->addNode("floor");
-    _floorNode->setDrawable(_floorTileSet);
-    
-    // Idle[0]
-    _playerSprite = Sprite::create("res/common/sprites/player1.png", 72.0f, 97.0f, Rectangle(67, 196, 66, 92), 13);
-    //_playerSprite->computeFrames(3, 1);
-    // Walk [1 - 11]
-    _playerSprite->setFrameSource(1, Rectangle( 0, 0, 72, 92));
-    _playerSprite->setFrameSource(2, Rectangle(73, 0, 72, 97));
-    _playerSprite->setFrameSource(3, Rectangle(146, 0, 72, 97));
-    _playerSprite->setFrameSource(4, Rectangle(0, 98, 72, 97));
-    _playerSprite->setFrameSource(5, Rectangle(73, 98, 72, 97));
-    _playerSprite->setFrameSource(6, Rectangle(146, 98, 72, 97));
-    _playerSprite->setFrameSource(7, Rectangle(219, 0, 72, 97));
-    _playerSprite->setFrameSource(8, Rectangle(292, 0, 72, 97));
-    _playerSprite->setFrameSource(9, Rectangle(219, 98, 72, 97));
-    _playerSprite->setFrameSource(10, Rectangle(365, 0, 72, 97));
-    _playerSprite->setFrameSource(11, Rectangle(292, 98, 72, 97));
-    // Jump[12]
-    _playerSprite->setFrameSource(12, Rectangle(438, 93, 67, 94));
-    _playerNode = _scene->addNode("player");
-    _playerNode->setDrawable(_playerSprite);
-    _playerNode->translateY(_floorTileSet->getHeight());
-    
-    // The player animation clips
-    unsigned int keyTimes[4] = {0, 1, 11, 12};
-    float keyValues[4] =  { 0, 1, 11, 12 };
-    _playerAnimation = _playerSprite->createAnimation("player-animations", Sprite::ANIMATE_KEYFRAME, 4, keyTimes, keyValues,
-                                                Curve::LINEAR);
-    _playerAnimation->createClip("idle", 0, 0);
-    _playerAnimation->createClip("walk", 1, 11)->setRepeatCount(AnimationClip::REPEAT_INDEFINITE);
-    // Set the speed to 24 FPS
-    _playerAnimation->getClip("walk")->setSpeed(24.0f/1000.0f);
-    _playerAnimation->play("idle");
-    
-    // Rocket
-    _rocketSprite = Sprite::create("res/common/sprites/rocket.png", 128, 128);
-    _rocketSprite->setBlendMode(Sprite::BLEND_ADDITIVE);
-    _rocketSprite->setAnchor(Vector2(0.5f, 0.3f));
-    _rocketSprite->setOffset(Sprite::OFFSET_ANCHOR);
-    _rocketNode = _scene->addNode("rocket");
-    _rocketNode->setDrawable(_rocketSprite);
-    _rocketNode->translate(Vector3(getWidth(), 0,  0));
-    _rocketNode->rotateZ(MATH_DEG_TO_RAD(-45));
-    
-    // Custom Effect in sprite
-    Effect* waterEffect = Effect::createFromFile("res/shaders/sprite.vert", "res/common/sprites/water2d.frag");
-    _waterSprite = Sprite::create("res/common/sprites/water2d.png", getWidth() * 5, getHeight() / 3, waterEffect);
-    _waterSprite->setAnchor(Vector2::zero());
-    _waterSprite->setOpacity(0.5f);
-    _waterNode = _scene->addNode("water");
-    _waterNode->setDrawable(_waterSprite);
-    Material* waterMaterial = _waterSprite->getMaterial();
-    Texture::Sampler* noiseSampler = Texture::Sampler::create("res/common/sprites/water2d-noise.png");
-    waterMaterial->getParameter("u_texture_noise")->setValue(noiseSampler);
-    SAFE_RELEASE(noiseSampler);
-    waterMaterial->getParameter("u_time")->bindValue(this, &SpriteSample::getTime);
-    _waterNode->translateY(-50);
-    
-    // Text node.
-    _text = Text::create("res/ui/arial.gpb", "P1", Vector4(0, 0, 1, 1), 18);
-    _textNode = Node::create("text");
-    _playerNode->addChild(_textNode);
-    _text->setWidth(dynamic_cast<Sprite*>(_playerNode->getDrawable())->getWidth());
-    _textNode->setDrawable(_text);
-    _text->setJustify(Font::ALIGN_TOP_HCENTER);
-    _textNode->translateY(dynamic_cast<Sprite*>(_playerNode->getDrawable())->getHeight());
+	// Setup the player
+	_playerNode = _scene->findNode("player");
+	_playerSprite = dynamic_cast<Sprite*>(_playerNode->getDrawable());
+
+	// Idle [0] - Set at load time
+	// Walk [1 - 11]
+	_playerSprite->setFrameSource(1, Rectangle( 0, 0, 72, 92));
+	_playerSprite->setFrameSource(2, Rectangle(73, 0, 72, 97));
+	_playerSprite->setFrameSource(3, Rectangle(146, 0, 72, 97));
+	_playerSprite->setFrameSource(4, Rectangle(0, 98, 72, 97));
+	_playerSprite->setFrameSource(5, Rectangle(73, 98, 72, 97));
+	_playerSprite->setFrameSource(6, Rectangle(146, 98, 72, 97));
+	_playerSprite->setFrameSource(7, Rectangle(219, 0, 72, 97));
+	_playerSprite->setFrameSource(8, Rectangle(292, 0, 72, 97));
+	_playerSprite->setFrameSource(9, Rectangle(219, 98, 72, 97));
+	_playerSprite->setFrameSource(10, Rectangle(365, 0, 72, 97));
+	_playerSprite->setFrameSource(11, Rectangle(292, 98, 72, 97));
+	// Jump[12]
+	_playerSprite->setFrameSource(12, Rectangle(438, 93, 67, 94));
+
+	// The player animation clips
+	unsigned int keyTimes[4] = {0, 1, 11, 12};
+	float keyValues[4] =  { 0, 1, 11, 12 };
+	_playerAnimation = _playerSprite->createAnimation("player-animations", Sprite::ANIMATE_KEYFRAME, 4, keyTimes, keyValues, Curve::LINEAR);
+	_playerAnimation->createClip("idle", 0, 0);
+	_playerAnimation->createClip("walk", 1, 11)->setRepeatCount(AnimationClip::REPEAT_INDEFINITE);
+	// Set the speed to 24 FPS
+	_playerAnimation->getClip("walk")->setSpeed(24.0f/1000.0f);
+	_playerAnimation->play("idle");
+
+	// Setup player text
+	Node* playerTextNode = _scene->findNode("text");
+	playerTextNode->addRef();
+	_scene->removeNode(playerTextNode); //XXX This is because SceneLoader doesn't support loading child nodes for other nodes
+	_playerNode->addChild(playerTextNode);
+
+	playerTextNode->translateY(_playerSprite->getHeight());
+	Text* playerText = dynamic_cast<Text*>(playerTextNode->getDrawable());
+	playerText->setJustify(Font::ALIGN_TOP_HCENTER);
+	playerText->setWidth(_playerSprite->getWidth());
+	SAFE_RELEASE(playerTextNode);
+
+	// Custom Effect in sprite
+	Effect* waterEffect = Effect::createFromFile("res/shaders/sprite.vert", "res/common/sprites/water2d.frag");
+	Sprite* waterSprite = Sprite::create("res/common/sprites/water2d.png", getWidth() * 5, getHeight() / 3, waterEffect);
+	SAFE_RELEASE(waterEffect);
+	waterSprite->setAnchor(Vector2::zero());
+	waterSprite->setOpacity(0.5f);
+	_scene->findNode("water")->setDrawable(waterSprite);
+	Material* waterMaterial = waterSprite->getMaterial();
+	SAFE_RELEASE(waterSprite);
+	Texture::Sampler* noiseSampler = Texture::Sampler::create("res/common/sprites/water2d-noise.png");
+	waterMaterial->getParameter("u_texture_noise")->setValue(noiseSampler);
+	SAFE_RELEASE(noiseSampler);
+	waterMaterial->getParameter("u_time")->bindValue(this, &SpriteSample::getTime);
 }
 
 void SpriteSample::finalize()
 {
-    SAFE_RELEASE(_playerSprite);
-    SAFE_RELEASE(_rocketSprite);
-    SAFE_RELEASE(_waterSprite);
+	SAFE_RELEASE(_scene);
 }
 
 void SpriteSample::update(float elapsedTime)

+ 0 - 10
samples/browser/src/SpriteSample.h

@@ -44,20 +44,10 @@ private:
     Font* _font;
     Scene* _scene;
     Node* _cameraNode;
-    TileSet* _floorTileSet;
-    Node* _floorNode;
-    Sprite* _backgroundSprite;
-    Node* _backgroundNode;
     Sprite* _playerSprite;
     Node* _playerNode;
     Animation* _playerAnimation;
     int _playerMovement;
-    Sprite* _rocketSprite;
-    Node* _rocketNode;
-    Sprite* _waterSprite;
-    Node* _waterNode;
-    Text* _text;
-    Node* _textNode;
     
 };
 

+ 0 - 3
samples/character/sample-character.vcxproj

@@ -164,9 +164,6 @@ copy .\game.dxt.config .\game.config</Command>
     </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <None Include="bar-descriptor.xml">
-      <SubType>Designer</SubType>
-    </None>
     <None Include="game.config">
       <SubType>Designer</SubType>
     </None>

+ 0 - 1
samples/character/sample-character.vcxproj.filters

@@ -16,7 +16,6 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="icon.png" />
-    <None Include="bar-descriptor.xml" />
     <None Include="game.config" />
     <None Include="game.dxt.config" />
     <None Include="res\common\arial.gpb">

+ 4 - 3
samples/racer/sample-racer.vcxproj

@@ -158,9 +158,10 @@ copy .\game.dxt.config .\game.config</Command>
     </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <None Include="bar-descriptor.xml">
-      <SubType>Designer</SubType>
-    </None>
+    <None Include="game.atc.config" />
+    <None Include="game.dxt.config" />
+    <None Include="game.png.config" />
+    <None Include="game.pvr.config" />
     <None Include="icon.png" />
     <None Include="res\common\background_track.ogg" />
     <None Include="res\common\engine_loop.ogg" />

+ 4 - 1
samples/racer/sample-racer.vcxproj.filters

@@ -14,7 +14,6 @@
   </ItemGroup>
   <ItemGroup>
     <None Include="icon.png" />
-    <None Include="bar-descriptor.xml" />
     <None Include="res\shaders\colored.frag">
       <Filter>res\shaders</Filter>
     </None>
@@ -99,6 +98,10 @@
     <None Include="res\common\racer.scene">
       <Filter>res\common</Filter>
     </None>
+    <None Include="game.atc.config" />
+    <None Include="game.dxt.config" />
+    <None Include="game.png.config" />
+    <None Include="game.pvr.config" />
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="src\RacerGame.h">

+ 0 - 1
samples/spaceship/sample-spaceship.vcxproj

@@ -165,7 +165,6 @@ copy ..\..\gameplay\res\logo_powered_white.png res</Command>
     </PreBuildEvent>
   </ItemDefinitionGroup>
   <ItemGroup>
-    <None Include="bar-descriptor.xml" />
     <None Include="game.config" />
     <None Include="icon.png" />
     <None Include="res\airstrip.gpb" />

+ 0 - 1
samples/spaceship/sample-spaceship.vcxproj.filters

@@ -12,7 +12,6 @@
     </Filter>
   </ItemGroup>
   <ItemGroup>
-    <None Include="bar-descriptor.xml" />
     <None Include="icon.png" />
     <None Include="game.config" />
     <None Include="res\airstrip.gpb">

+ 6 - 4
tools/encoder/README.md

@@ -1,6 +1,6 @@
 ## gameplay-encoder
 Command-line tool for encoding games assets like true-type fonts and 3D scene files
-into a simple binary-based bundle file format for the gameplay 3D game framework runtime. 
+into a simple binary-based bundle file format for the GamePlay game framework runtime. 
 The 'bin' folder contains pre-built 64-bit versions of the gameplay-encoder executables for 
 Windows, MacOS X and Linux Ubuntu with support built-in support for:
 
@@ -12,7 +12,8 @@ representation.
 
 ## FBX Scene
 Autodesk® FBX® asset exchange technology facilitates higher-fidelity data exchange between several Autodesk content creation packages
-Autodesk® Maya®, Autodesk® 3ds Max®, Autodesk® MotionBuilder®, Autodesk® Mudbox®, and Autodesk® Softimage®
+Autodesk® Maya®, Autodesk® 3ds Max®, Autodesk® MotionBuilder®, Autodesk® Mudbox®, Autodesk® Softimage®
+It is also supported on many other major 3D CAD software tools such as Blender, Sketchup, Daz, Lightwave, MODO, etc.
 For more information goto: "http://www.autodesk.com/fbx".
 
 ## Running gameplay-encoder
@@ -21,8 +22,9 @@ Simply execute the gameplay-encoder command-line executable:
 `Usage: gameplay-encoder [options] <file(s)>`
 
 ## Building gameplay-encoder
-
-See [Building gameplay-encoder](https://github.com/blackberry/GamePlay/wiki/Building-gameplay-encoder) on the wiki.
+The tools come pre-built and are part of the install.bat/install.sh script. 
+If you need to build them yourself:
+See [Building gameplay-encoder](https://github.com/gameplay3d/GamePlay/wiki/Building-gameplay-encoder) on the wiki.
 
 ## Bundle File Format
 The gameplay bundle file format is defined in the [tools/encoder/gameplay-bundle.txt](gameplay-bundle.txt) file.

+ 3 - 1
tools/luagen/README.md

@@ -1,7 +1,9 @@
 ## Usage
 Make sure that you have [doxygen](http://www.doxygen.org/) installed.
 
-To generate the Lua script bindings for gameplay, run the generate-doxygen-xml.bat (or .sh) script. Then, on Windows, open the gameplay-luagen Visual Studio solution and build and run the gameplay-luagen project. On Mac, open the gameplay-luagen XCode workspace and build and run the gameplay-luagen project.
+To generate the Lua script bindings for gameplay, run the generate-doxygen-xml.bat (or .sh) script. 
+Then, on Windows, open the gameplay-luagen Visual Studio solution and build and run the gameplay-luagen project. 
+On Mac, open the gameplay-luagen XCode workspace and build and run the gameplay-luagen project.
 
 There are also prebuilt binaries in the gameplay/bin folder.