Procházet zdrojové kódy

Merge pull request #515 from blackberry/master

Rebase from master
Sean Paul Taylor před 13 roky
rodič
revize
a2c46afeca
50 změnil soubory, kde provedl 211 přidání a 98 odebrání
  1. 11 11
      CHANGES.md
  2. 1 1
      README.md
  3. 1 1
      gameplay-encoder/README.md
  4. 3 3
      gameplay-encoder/gameplay-bundle.txt
  5. 1 1
      gameplay-encoder/src/Animation.cpp
  6. 2 2
      gameplay-encoder/src/AnimationChannel.cpp
  7. 1 1
      gameplay-encoder/src/Animations.cpp
  8. 1 7
      gameplay-encoder/src/FileIO.cpp
  9. 2 3
      gameplay-encoder/src/FileIO.h
  10. 3 3
      gameplay-encoder/src/GPBFile.cpp
  11. 2 2
      gameplay-encoder/src/Mesh.cpp
  12. 2 2
      gameplay-encoder/src/MeshSkin.cpp
  13. 2 2
      gameplay-encoder/src/Object.h
  14. 1 1
      gameplay-encoder/src/ReferenceTable.cpp
  15. 1 1
      gameplay/src/AnimationClip.cpp
  16. 1 1
      gameplay/src/AnimationTarget.h
  17. 1 1
      gameplay/src/Bundle.h
  18. 1 1
      gameplay/src/Button.h
  19. 1 1
      gameplay/src/CheckBox.h
  20. 16 14
      gameplay/src/Container.cpp
  21. 11 3
      gameplay/src/Container.h
  22. 2 2
      gameplay/src/Effect.cpp
  23. 1 4
      gameplay/src/FileSystem.cpp
  24. 8 1
      gameplay/src/FileSystem.h
  25. 1 1
      gameplay/src/Form.cpp
  26. 1 1
      gameplay/src/Form.h
  27. 1 1
      gameplay/src/Gamepad.h
  28. 1 1
      gameplay/src/Joystick.h
  29. 1 1
      gameplay/src/Label.h
  30. 1 1
      gameplay/src/Logger.cpp
  31. 1 1
      gameplay/src/Matrix.h
  32. 1 1
      gameplay/src/Node.cpp
  33. 1 1
      gameplay/src/Node.h
  34. 3 3
      gameplay/src/PhysicsCharacter.cpp
  35. 1 1
      gameplay/src/PhysicsCollisionObject.h
  36. 1 1
      gameplay/src/PhysicsController.cpp
  37. 1 1
      gameplay/src/PhysicsVehicleWheel.h
  38. 6 9
      gameplay/src/PlatformBlackBerry.cpp
  39. 1 1
      gameplay/src/Quaternion.cpp
  40. 1 1
      gameplay/src/RadioButton.h
  41. 1 1
      gameplay/src/RenderState.cpp
  42. 2 0
      gameplay/src/ScriptController.cpp
  43. 1 1
      gameplay/src/ScriptController.h
  44. 1 1
      gameplay/src/Slider.h
  45. 37 0
      gameplay/src/lua/lua_FileSystem.cpp
  46. 1 0
      gameplay/src/lua/lua_FileSystem.h
  47. 38 0
      gameplay/src/lua/lua_Game.cpp
  48. 1 0
      gameplay/src/lua/lua_Game.h
  49. 29 0
      gameplay/src/lua/lua_Platform.cpp
  50. 1 0
      gameplay/src/lua/lua_Platform.h

+ 11 - 11
CHANGES.md

@@ -5,22 +5,22 @@
 - CodeBlocks 10 IDE support for Linux.
 - CodeBlocks 10 IDE support for Linux.
 - Gamepad controllers support for desktops.
 - Gamepad controllers support for desktops.
 - Touch gesture support for tap, swipe and pinch.
 - Touch gesture support for tap, swipe and pinch.
-- Vehicle phyics support via new PhysicsVehicle and PhysicsVehicleWheel classes.
+- Vehicle physics support via new PhysicsVehicle and PhysicsVehicleWheel classes.
 - Adds new racer sample (sample06-racer).
 - Adds new racer sample (sample06-racer).
 - Adds gameplay-tests project as a test app for various basic engine features with some initial tests.
 - Adds gameplay-tests project as a test app for various basic engine features with some initial tests.
 - Adds support for Scene files for wildcard identifiers.
 - Adds support for Scene files for wildcard identifiers.
 - Adds Visual Studio Plug-in support for BlackBerry PlayBook and BlackBerry 10.
 - Adds Visual Studio Plug-in support for BlackBerry PlayBook and BlackBerry 10.
 - Adds configurable multi-sampling anti-aliasing support. 
 - Adds configurable multi-sampling anti-aliasing support. 
 - Adds updates to latest FBX SDK 2013.3.
 - Adds updates to latest FBX SDK 2013.3.
-- Adds file formats documenation for game.config .scene, .material, .animation, .physics, .particle
+- Adds file formats documentation for game.config .scene, .material, .animation, .physics, .particle
 - Adds Game/Platform::canExit for testing device capabilities to quit. (only ios)
 - Adds Game/Platform::canExit for testing device capabilities to quit. (only ios)
 - Web community forums at http://www.gameplay3d.org/forums.
 - Web community forums at http://www.gameplay3d.org/forums.
 - Changed keyTimes from unsigned long[]  to unsigned int[]. (breaks compat. in AnimationTarget and Animation::Channel)
 - Changed keyTimes from unsigned long[]  to unsigned int[]. (breaks compat. in AnimationTarget and Animation::Channel)
 - Fixed inconsistencies from Bundle::getObjectID() to Bundle::getObjectId() (breaks compat. in Bundle)
 - Fixed inconsistencies from Bundle::getObjectID() to Bundle::getObjectId() (breaks compat. in Bundle)
 - Fixes the texture coordinates of Mesh::createQuad(float x, float y, float width, float height).
 - Fixes the texture coordinates of Mesh::createQuad(float x, float y, float width, float height).
-- Fixes line-wise distortion when loading RGB png's into texture that are non-power of two.
-- Fixes inconsitencies in createXXXX methods.  (breaks compat. in Scene)
-- Fixes Rectanngle::contains.
+- Fixes line-wise distortion when loading RGB png's into textures that are non-power of two.
+- Fixes inconsistencies in createXXXX methods.  (breaks compat. in Scene)
+- Fixes Rectangle::contains.
 - Fixes Lua print logging.
 - Fixes Lua print logging.
 - Fixes Lua errors to be treated as runtime warnings.
 - Fixes Lua errors to be treated as runtime warnings.
 - Fixes setVertexData to pointers instead of constant data.
 - Fixes setVertexData to pointers instead of constant data.
@@ -31,7 +31,7 @@
 
 
 - Lua script bindings for all gameplay interfaces.
 - Lua script bindings for all gameplay interfaces.
 - Lua script binding generator tool (gameplay-luagen) for generating gameplay Lua bindings from doxygen xml output.
 - Lua script binding generator tool (gameplay-luagen) for generating gameplay Lua bindings from doxygen xml output.
-- AIController, AIAgent, AIStateMachine, AIState and AIMessage clases for scripted AI support.
+- AIController, AIAgent, AIStateMachine, AIState and AIMessage classes for scripted AI support.
 - Sample for sample05-lua to demonstrate basic Lua with AI scripting.
 - Sample for sample05-lua to demonstrate basic Lua with AI scripting.
 - Gamepad class with virtual gamepad support.
 - Gamepad class with virtual gamepad support.
 - Pre-built versions gameplay-encoder added to bin folder with TTF, DAE and FBX support built-in.
 - Pre-built versions gameplay-encoder added to bin folder with TTF, DAE and FBX support built-in.
@@ -76,10 +76,10 @@
 - BlackBerry 10 support.
 - BlackBerry 10 support.
 - iOS 5.1 support.
 - iOS 5.1 support.
 - Android 2.3+ support.
 - Android 2.3+ support.
-- User interface system with declaritive forms and themes.
+- User interface system with declarative forms and themes.
 - Bluetooth keyboard/mouse support on BlackBerry platform.
 - Bluetooth keyboard/mouse support on BlackBerry platform.
 - Developer guide.
 - Developer guide.
-- Sample/turorial for sample03-character.
+- Sample/tutorial for sample03-character.
 - Sample for sample04-particles to demonstrate particle emitters.
 - Sample for sample04-particles to demonstrate particle emitters.
 - Fixes for loading properties from URL.
 - Fixes for loading properties from URL.
 - Fixes on Win32/MacOSX for when mouse pointer leaves the window and returns.
 - Fixes on Win32/MacOSX for when mouse pointer leaves the window and returns.
@@ -91,8 +91,8 @@
 
 
 - FBX support in gameplay-encoder.
 - FBX support in gameplay-encoder.
 - MacOSX platform support using XCode.
 - MacOSX platform support using XCode.
-- Offscreen rendering functionality using FrameBuffer.
-- Loading 3D scences using declaritive .scene files.
+- Off-screen rendering functionality using FrameBuffer.
+- Loading 3D scenes using declarative  .scene files.
 - Loading audio from .ogg files using vorbis.
 - Loading audio from .ogg files using vorbis.
 - Loading AudioSources from .audio files.
 - Loading AudioSources from .audio files.
 - Loading Animations from .animation files.
 - Loading Animations from .animation files.
@@ -103,7 +103,7 @@
 - Font improvements for justify, clip, wrap and scaling.
 - Font improvements for justify, clip, wrap and scaling.
 - Fixes for Font::drawText to use point size and not float scalar.
 - Fixes for Font::drawText to use point size and not float scalar.
 - Fixes for memory leaks in and fixes to AnimationTarget.
 - Fixes for memory leaks in and fixes to AnimationTarget.
-- Fixes for bumped and paralax shaders.
+- Fixes for bumped and parallax shaders.
 - Fixes to simplify folders for resources in samples.
 - Fixes to simplify folders for resources in samples.
 - Fixes to the material/shader system.
 - Fixes to the material/shader system.
 - Fixes to the ParticleEmitter.
 - Fixes to the ParticleEmitter.

+ 1 - 1
README.md

@@ -16,7 +16,7 @@ An open-source, cross-platform 3D native C++ game framework making it easy to le
 - Terrain and Water
 - Terrain and Water
 - Asset Pipeline improvements
 - Asset Pipeline improvements
 
 
-## Licence
+## License
 The project is open sourced under the Apache 2.0 license.
 The project is open sourced under the Apache 2.0 license.
 
 
 ## Bug Reporting and Feature Requests
 ## Bug Reporting and Feature Requests

+ 1 - 1
gameplay-encoder/README.md

@@ -22,7 +22,7 @@ For more information goto "http://www.autodesk.com/fbx".
 
 
 ## Building gameplay-encoder
 ## Building gameplay-encoder
 The gameplay-encoder comes pre-built for Windows 7, MacOS X and Linux x64 in the 'bin' folder.
 The gameplay-encoder comes pre-built for Windows 7, MacOS X and Linux x64 in the 'bin' folder.
-However, to build the gameplay-ecoder yourself just open either the 
+However, to build the gameplay-encoder yourself just open either the 
 Visual Studio 2010 project "gameplay-encoder.vccproj" on Windows 7 or
 Visual Studio 2010 project "gameplay-encoder.vccproj" on Windows 7 or
 XCode project "gameplay-encoder.xcodeproj" on MacOSX.
 XCode project "gameplay-encoder.xcodeproj" on MacOSX.
 Uncomment the root CMakeList.txt for the gameplay-encoder and run standard cmake .. from build then make.
 Uncomment the root CMakeList.txt for the gameplay-encoder and run standard cmake .. from build then make.

+ 3 - 3
gameplay-encoder/gameplay-bundle.txt

@@ -3,7 +3,7 @@ gameplay Bundle File Format (.gpb)
 
 
 File Description
 File Description
 ================
 ================
-A simple binary bundle file format supporting definition of primitve and builtin objects.
+A simple binary bundle file format supporting definition of primitive and built-in objects.
 
 
 File Extension and Mime Type
 File Extension and Mime Type
 ============================
 ============================
@@ -15,7 +15,7 @@ File Structure
 Section      Name            Type
 Section      Name            Type
 ------------------------------------------------------------------------------------------------------
 ------------------------------------------------------------------------------------------------------
 Header
 Header
-             Identifier      byte[9]     = { '«', 'G', 'P', 'B', '»', '\r', '\n', '\x1A', '\n' } 
+             Identifier      byte[9]     = { '\xAB', 'G', 'P', 'B', '\xBB', '\r', '\n', '\x1A', '\n' } 
              Version         byte[2]     = { 1, 1 }
              Version         byte[2]     = { 1, 1 }
              References      Reference[]
              References      Reference[]
 Data
 Data
@@ -42,7 +42,7 @@ Xrefs
 Xrefs are string with a specific format used for referencing objects internal and external to
 Xrefs are string with a specific format used for referencing objects internal and external to
 a package. An xref with the format "#id" references an object within the current package with
 a package. An xref with the format "#id" references an object within the current package with
 the given ID. Xrefs can also have the format "file#id", where "file" is the name of package file
 the given ID. Xrefs can also have the format "file#id", where "file" is the name of package file
-(relative to the locaiton of the current package) and "id" is the unique identifier of an object
+(relative to the location of the current package) and "id" is the unique identifier of an object
 in that bundle.
 in that bundle.
 
 
 Primitives
 Primitives

+ 1 - 1
gameplay-encoder/src/Animation.cpp

@@ -26,7 +26,7 @@ void Animation::writeBinary(FILE* file)
     Object::writeBinary(file);
     Object::writeBinary(file);
     // Animation writes its ID because it is not listed in the ref table.
     // Animation writes its ID because it is not listed in the ref table.
     write(getId(), file);
     write(getId(), file);
-    write(_channels.size(), file);
+    write((unsigned int)_channels.size(), file);
     for (std::vector<AnimationChannel*>::iterator i = _channels.begin(); i != _channels.end(); ++i)
     for (std::vector<AnimationChannel*>::iterator i = _channels.begin(); i != _channels.end(); ++i)
     {
     {
         (*i)->writeBinary(file);
         (*i)->writeBinary(file);

+ 2 - 2
gameplay-encoder/src/AnimationChannel.cpp

@@ -28,10 +28,10 @@ void AnimationChannel::writeBinary(FILE* file)
     Object::writeBinary(file);
     Object::writeBinary(file);
     write(_targetId, file);
     write(_targetId, file);
     write(_targetAttrib, file);
     write(_targetAttrib, file);
-    write(_keytimes.size(), file);
+    write((unsigned int)_keytimes.size(), file);
     for (std::vector<float>::const_iterator i = _keytimes.begin(); i != _keytimes.end(); ++i)
     for (std::vector<float>::const_iterator i = _keytimes.begin(); i != _keytimes.end(); ++i)
     {
     {
-        write((unsigned long)*i, file);
+        write((unsigned int)*i, file);
     }
     }
     write(_keyValues, file);
     write(_keyValues, file);
     write(_tangentsIn, file);
     write(_tangentsIn, file);

+ 1 - 1
gameplay-encoder/src/Animations.cpp

@@ -27,7 +27,7 @@ const char* Animations::getElementName(void) const
 void Animations::writeBinary(FILE* file)
 void Animations::writeBinary(FILE* file)
 {
 {
     Object::writeBinary(file);
     Object::writeBinary(file);
-    write(_animations.size(), file);
+    write((unsigned int)_animations.size(), file);
     for (std::vector<Animation*>::iterator i = _animations.begin(); i != _animations.end(); ++i)
     for (std::vector<Animation*>::iterator i = _animations.begin(); i != _animations.end(); ++i)
     {
     {
         (*i)->writeBinary(file);
         (*i)->writeBinary(file);

+ 1 - 7
gameplay-encoder/src/FileIO.cpp

@@ -31,12 +31,6 @@ void write(unsigned int value, FILE* file)
     assert(r == 1);
     assert(r == 1);
 }
 }
 
 
-void write(unsigned long value, FILE* file)
-{
-    size_t r = fwrite(&value, sizeof(unsigned long), 1, file);
-    assert(r == 1);
-}
-
 void write(unsigned short value, FILE* file)
 void write(unsigned short value, FILE* file)
 {
 {
     size_t r = fwrite(&value, sizeof(unsigned short), 1, file);
     size_t r = fwrite(&value, sizeof(unsigned short), 1, file);
@@ -63,7 +57,7 @@ void write(const float* values, int length, FILE* file)
 void write(const std::string& str, FILE* file)
 void write(const std::string& str, FILE* file)
 {
 {
     // Write the length of the string
     // Write the length of the string
-    write(str.size(), file);
+    write((unsigned int)str.size(), file);
     
     
     if (str.size() > 0)
     if (str.size() > 0)
     {
     {

+ 2 - 3
gameplay-encoder/src/FileIO.h

@@ -64,7 +64,6 @@ void write(unsigned char value, FILE* file);
 void write(char value, FILE* file);
 void write(char value, FILE* file);
 void write(const char* str, FILE* file);
 void write(const char* str, FILE* file);
 void write(unsigned int value, FILE* file);
 void write(unsigned int value, FILE* file);
-void write(unsigned long value, FILE* file);
 void write(unsigned short value, FILE* file);
 void write(unsigned short value, FILE* file);
 void write(bool value, FILE* file);
 void write(bool value, FILE* file);
 void write(float value, FILE* file);
 void write(float value, FILE* file);
@@ -87,7 +86,7 @@ template <class T>
 void write(std::list<T> list, FILE* file)
 void write(std::list<T> list, FILE* file)
 {
 {
     // First write the size of the list
     // First write the size of the list
-    write(list.size(), file);
+    write((unsigned int)list.size(), file);
     // Then write each element
     // Then write each element
     typename std::list<T>::const_iterator i;
     typename std::list<T>::const_iterator i;
     for (i = list.begin(); i != list.end(); ++i)
     for (i = list.begin(); i != list.end(); ++i)
@@ -106,7 +105,7 @@ template <class T>
 void write(std::vector<T> vector, FILE* file)
 void write(std::vector<T> vector, FILE* file)
 {
 {
     // First write the size of the vector
     // First write the size of the vector
-    write(vector.size(), file);
+    write((unsigned int)vector.size(), file);
     // Then write each element
     // Then write each element
     typename std::vector<T>::const_iterator i;
     typename std::vector<T>::const_iterator i;
     for (i = vector.begin(); i != vector.end(); ++i)
     for (i = vector.begin(); i != vector.end(); ++i)

+ 3 - 3
gameplay-encoder/src/GPBFile.cpp

@@ -67,7 +67,7 @@ bool GPBFile::saveBinary(const std::string& filepath)
     size_t n = 0;
     size_t n = 0;
 
 
     // identifier
     // identifier
-    char identifier[] = { '�', 'G', 'P', 'B', '�', '\r', '\n', '\x1A', '\n' };
+    char identifier[] = { '\xAB', 'G', 'P', 'B', '\xBB', '\r', '\n', '\x1A', '\n' };
     n = fwrite(identifier, 1, sizeof(identifier), _file);
     n = fwrite(identifier, 1, sizeof(identifier), _file);
     if (n != sizeof(identifier))
     if (n != sizeof(identifier))
     {
     {
@@ -89,14 +89,14 @@ bool GPBFile::saveBinary(const std::string& filepath)
     _refTable.writeBinary(_file);
     _refTable.writeBinary(_file);
 
 
     // meshes
     // meshes
-    write(_geometry.size(), _file);
+    write((unsigned int)_geometry.size(), _file);
     for (std::list<Mesh*>::const_iterator i = _geometry.begin(); i != _geometry.end(); ++i)
     for (std::list<Mesh*>::const_iterator i = _geometry.begin(); i != _geometry.end(); ++i)
     {
     {
         (*i)->writeBinary(_file);
         (*i)->writeBinary(_file);
     }
     }
 
 
     // Objects
     // Objects
-    write(_objects.size(), _file);
+    write((unsigned int)_objects.size(), _file);
     for (std::list<Object*>::const_iterator i = _objects.begin(); i != _objects.end(); ++i)
     for (std::list<Object*>::const_iterator i = _objects.begin(); i != _objects.end(); ++i)
     {
     {
         (*i)->writeBinary(_file);
         (*i)->writeBinary(_file);

+ 2 - 2
gameplay-encoder/src/Mesh.cpp

@@ -27,7 +27,7 @@ void Mesh::writeBinary(FILE* file)
 {
 {
     Object::writeBinary(file);
     Object::writeBinary(file);
     // vertex formats
     // vertex formats
-    write(_vertexFormat.size(), file);
+    write((unsigned int)_vertexFormat.size(), file);
     for (std::vector<VertexElement>::iterator i = _vertexFormat.begin(); i != _vertexFormat.end(); ++i)
     for (std::vector<VertexElement>::iterator i = _vertexFormat.begin(); i != _vertexFormat.end(); ++i)
     {
     {
         i->writeBinary(file);
         i->writeBinary(file);
@@ -45,7 +45,7 @@ void Mesh::writeBinaryVertices(FILE* file)
         // Assumes that all vertices are the same size.
         // Assumes that all vertices are the same size.
         // Write the number of bytes for the vertex data
         // Write the number of bytes for the vertex data
         const Vertex& vertex = vertices.front();
         const Vertex& vertex = vertices.front();
-        write(vertices.size() * vertex.byteSize(), file); // (vertex count) * (vertex size)
+        write((unsigned int)(vertices.size() * vertex.byteSize()), file); // (vertex count) * (vertex size)
 
 
         // for each vertex
         // for each vertex
         for (std::vector<Vertex>::const_iterator i = vertices.begin(); i != vertices.end(); ++i)
         for (std::vector<Vertex>::const_iterator i = vertices.begin(); i != vertices.end(); ++i)

+ 2 - 2
gameplay-encoder/src/MeshSkin.cpp

@@ -36,12 +36,12 @@ void MeshSkin::writeBinary(FILE* file)
 {
 {
     Object::writeBinary(file);
     Object::writeBinary(file);
     write(_bindShape, 16, file);
     write(_bindShape, 16, file);
-    write(_joints.size(), file);
+    write((unsigned int)_joints.size(), file);
     for (std::vector<Node*>::const_iterator i = _joints.begin(); i != _joints.end(); ++i)
     for (std::vector<Node*>::const_iterator i = _joints.begin(); i != _joints.end(); ++i)
     {
     {
         (*i)->writeBinaryXref(file);
         (*i)->writeBinaryXref(file);
     }
     }
-    write(_bindPoses.size() * 16, file);
+    write((unsigned int)_bindPoses.size() * 16, file);
     for (std::vector<Matrix>::const_iterator i = _bindPoses.begin(); i != _bindPoses.end(); ++i)
     for (std::vector<Matrix>::const_iterator i = _bindPoses.begin(); i != _bindPoses.end(); ++i)
     {
     {
         write(i->m, 16, file);
         write(i->m, 16, file);

+ 2 - 2
gameplay-encoder/src/Object.h

@@ -109,7 +109,7 @@ public:
     static void writeBinaryObjects(std::list<T> list, FILE* file)
     static void writeBinaryObjects(std::list<T> list, FILE* file)
     {
     {
         // First write the size of the list
         // First write the size of the list
-        write(list.size(), file);
+        write((unsigned int)list.size(), file);
         // Then write each element
         // Then write each element
         typename std::list<T>::const_iterator i;
         typename std::list<T>::const_iterator i;
         for (i = list.begin(); i != list.end(); ++i)
         for (i = list.begin(); i != list.end(); ++i)
@@ -125,7 +125,7 @@ public:
     static void writeBinaryObjects(std::vector<T> vector, FILE* file)
     static void writeBinaryObjects(std::vector<T> vector, FILE* file)
     {
     {
         // First write the size of the vector
         // First write the size of the vector
-        write(vector.size(), file);
+        write((unsigned int)vector.size(), file);
         // Then write each element
         // Then write each element
         typename std::vector<T>::const_iterator i;
         typename std::vector<T>::const_iterator i;
         for (i = vector.begin(); i != vector.end(); ++i)
         for (i = vector.begin(); i != vector.end(); ++i)

+ 1 - 1
gameplay-encoder/src/ReferenceTable.cpp

@@ -30,7 +30,7 @@ Object* ReferenceTable::get(const std::string& xref)
 
 
 void ReferenceTable::writeBinary(FILE* file)
 void ReferenceTable::writeBinary(FILE* file)
 {
 {
-    write(_table.size(), file);
+    write((unsigned int)_table.size(), file);
     for ( std::map<std::string, Reference>::iterator i=_table.begin() ; i != _table.end(); ++i)
     for ( std::map<std::string, Reference>::iterator i=_table.begin() ; i != _table.end(); ++i)
     {
     {
         i->second.writeBinary(file);
         i->second.writeBinary(file);

+ 1 - 1
gameplay/src/AnimationClip.cpp

@@ -249,7 +249,7 @@ void AnimationClip::crossFade(AnimationClip* clip, unsigned long duration)
     _crossFadeToClip->setClipStateBit(CLIP_IS_FADING_IN_BIT);
     _crossFadeToClip->setClipStateBit(CLIP_IS_FADING_IN_BIT);
     _crossFadeToClip->_blendWeight = 0.0f;
     _crossFadeToClip->_blendWeight = 0.0f;
     
     
-    // Set and intiliaze this clip to fade out
+    // Set and initialize this clip to fade out
     setClipStateBit(CLIP_IS_FADING_OUT_STARTED_BIT);
     setClipStateBit(CLIP_IS_FADING_OUT_STARTED_BIT);
     setClipStateBit(CLIP_IS_FADING_OUT_BIT);
     setClipStateBit(CLIP_IS_FADING_OUT_BIT);
     _crossFadeOutElapsed = 0.0f;
     _crossFadeOutElapsed = 0.0f;

+ 1 - 1
gameplay/src/AnimationTarget.h

@@ -215,7 +215,7 @@ private:
      *
      *
      * @param type The TargetType of the AnimationTarget.
      * @param type The TargetType of the AnimationTarget.
      * @param propertyIdStr The property ID string.
      * @param propertyIdStr The property ID string.
-     * @return The property ID value for teh property ID string; -1 if the propertyIdStr does not exist
+     * @return The property ID value for the property ID string; -1 if the propertyIdStr does not exist
      *    for the TargetType.
      *    for the TargetType.
      */
      */
     static int getPropertyId(TargetType type, const char* propertyIdStr);
     static int getPropertyId(TargetType type, const char* propertyIdStr);

+ 1 - 1
gameplay/src/Bundle.h

@@ -285,7 +285,7 @@ private:
      * 
      * 
      * @param length A pointer to where the length of the array will be copied to.
      * @param length A pointer to where the length of the array will be copied to.
      * @param values A pointer to the vector to copy the values to. The vector will be resized if it is smaller than length.
      * @param values A pointer to the vector to copy the values to. The vector will be resized if it is smaller than length.
-     * @param readSize The size that reads will be preformed at, size must be the same as or smaller then the sizeof(T)
+     * @param readSize The size that reads will be performed at, size must be the same as or smaller then the sizeof(T)
      * 
      * 
      * @return True if successful, false if an error occurred.
      * @return True if successful, false if an error occurred.
      */
      */

+ 1 - 1
gameplay/src/Button.h

@@ -27,7 +27,7 @@ namespace gameplay
          width       = <width>   // Can be used in place of 'size', e.g. with 'autoHeight = true'
          width       = <width>   // Can be used in place of 'size', e.g. with 'autoHeight = true'
          height      = <height>  // Can be used in place of 'size', e.g. with 'autoWidth = true'
          height      = <height>  // Can be used in place of 'size', e.g. with 'autoWidth = true'
          text        = <string>
          text        = <string>
-         consumeEvents = <bool>  // Whether the button propogates input events to the Game's input event handler. Defualt is true.
+         consumeEvents = <bool>  // Whether the button propagates input events to the Game's input event handler. Default is true.
     }
     }
  @endverbatim
  @endverbatim
  */
  */

+ 1 - 1
gameplay/src/CheckBox.h

@@ -28,7 +28,7 @@ namespace gameplay
          text        = <string>
          text        = <string>
          checked     = <bool>
          checked     = <bool>
          iconSize    = <width, height>   // The size to draw the checkbox icon, if different from its size in the texture.
          iconSize    = <width, height>   // The size to draw the checkbox icon, if different from its size in the texture.
-         consumeEvents = <bool>  // Whether the checkbox propogates input events to the Game's input event handler. Default is true.
+         consumeEvents = <bool>  // Whether the checkbox propagates input events to the Game's input event handler. Default is true.
     }
     }
  @endverbatim
  @endverbatim
  */
  */

+ 16 - 14
gameplay/src/Container.cpp

@@ -37,7 +37,7 @@ Container::Container()
       _scrollBarLeftCap(NULL), _scrollBarHorizontal(NULL), _scrollBarRightCap(NULL),
       _scrollBarLeftCap(NULL), _scrollBarHorizontal(NULL), _scrollBarRightCap(NULL),
       _scroll(SCROLL_NONE), _scrollBarBounds(Rectangle::empty()), _scrollPosition(Vector2::zero()),
       _scroll(SCROLL_NONE), _scrollBarBounds(Rectangle::empty()), _scrollPosition(Vector2::zero()),
       _scrollBarsAutoHide(false), _scrollBarOpacity(1.0f), _scrolling(false),
       _scrollBarsAutoHide(false), _scrollBarOpacity(1.0f), _scrolling(false),
-       _scrollingFirstX(0), _scrollingFirstY(0), _scrollingLastX(0), _scrollingLastY(0),
+      _scrollingVeryFirstX(0), _scrollingVeryFirstY(0), _scrollingFirstX(0), _scrollingFirstY(0), _scrollingLastX(0), _scrollingLastY(0),
       _scrollingStartTimeX(0), _scrollingStartTimeY(0), _scrollingLastTime(0),
       _scrollingStartTimeX(0), _scrollingStartTimeY(0), _scrollingLastTime(0),
       _scrollingVelocity(Vector2::zero()), _scrollingFriction(1.0f),
       _scrollingVelocity(Vector2::zero()), _scrollingFriction(1.0f),
       _scrollingRight(false), _scrollingDown(false),
       _scrollingRight(false), _scrollingDown(false),
@@ -369,8 +369,8 @@ bool Container::isScrolling() const
         return true;
         return true;
 
 
     return (_scrolling &&
     return (_scrolling &&
-            (abs(_scrollingLastX - _scrollingFirstX) > SCROLL_THRESHOLD ||
-             abs(_scrollingLastY - _scrollingFirstY) > SCROLL_THRESHOLD));
+            (abs(_scrollingLastX - _scrollingVeryFirstX) > SCROLL_THRESHOLD ||
+             abs(_scrollingLastY - _scrollingVeryFirstY) > SCROLL_THRESHOLD));
 }
 }
 
 
 Animation* Container::getAnimation(const char* id) const
 Animation* Container::getAnimation(const char* id) const
@@ -804,8 +804,8 @@ bool Container::touchEventScroll(Touch::TouchEvent evt, int x, int y, unsigned i
         {
         {
             _contactIndex = (int) contactIndex;
             _contactIndex = (int) contactIndex;
             _contactIndices++;
             _contactIndices++;
-            _scrollingLastX = _scrollingFirstX = x;
-            _scrollingLastY = _scrollingFirstY = y;
+            _scrollingLastX = _scrollingFirstX = _scrollingVeryFirstX = x;
+            _scrollingLastY = _scrollingFirstY = _scrollingVeryFirstY = y;
             _scrollingVelocity.set(0, 0);
             _scrollingVelocity.set(0, 0);
             _scrolling = true;
             _scrolling = true;
             _scrollingStartTimeX = _scrollingStartTimeY = 0;
             _scrollingStartTimeX = _scrollingStartTimeY = 0;
@@ -957,7 +957,7 @@ bool Container::mouseEventScroll(Mouse::MouseEvent evt, int x, int y, int wheelD
                 if (x + _viewportBounds.x >= vBounds.x &&
                 if (x + _viewportBounds.x >= vBounds.x &&
                     x + _viewportBounds.x <= vBounds.x + vBounds.width)
                     x + _viewportBounds.x <= vBounds.x + vBounds.width)
                 {
                 {
-                    // Then we're within the horizontal bounds of the verticle scrollbar.
+                    // Then we're within the horizontal bounds of the vertical scrollbar.
                     // We want to either jump up or down, or drag the scrollbar itself.
                     // We want to either jump up or down, or drag the scrollbar itself.
                     if (y < vBounds.y)
                     if (y < vBounds.y)
                     {
                     {
@@ -1108,13 +1108,11 @@ bool Container::pointerEvent(bool mouse, char evt, int x, int y, int data)
         }
         }
         break;
         break;
     case Touch::TOUCH_RELEASE:
     case Touch::TOUCH_RELEASE:
-        {
-            if (eventConsumed)
-            {
-                if (_contactIndices > 0)
-                    _contactIndices--;
-            }
-        }
+		if (eventConsumed)
+		{
+			if (_contactIndices > 0)
+				_contactIndices--;
+		}
         break;
         break;
     }
     }
 
 
@@ -1128,7 +1126,11 @@ bool Container::pointerEvent(bool mouse, char evt, int x, int y, int data)
     }
     }
 
 
     release();
     release();
-    return (_consumeInputEvents | eventConsumed);
+    if (x > _clipBounds.x && x <= _clipBounds.x + _clipBounds.width &&
+		y > _clipBounds.y && y <= _clipBounds.y + _clipBounds.height)
+    	return (_consumeInputEvents | eventConsumed);
+    else
+    	return eventConsumed;
 }
 }
 
 
 Container::Scroll Container::getScroll(const char* scroll)
 Container::Scroll Container::getScroll(const char* scroll)

+ 11 - 3
gameplay/src/Container.h

@@ -27,7 +27,7 @@ namespace gameplay
          height      = <height>  // Can be used in place of 'size', e.g. with 'autoWidth = true'
          height      = <height>  // Can be used in place of 'size', e.g. with 'autoWidth = true'
          scroll      = <Container::Scroll constant> // Whether scrolling is allowed and in which directions.
          scroll      = <Container::Scroll constant> // Whether scrolling is allowed and in which directions.
          scrollBarsAutoHide = <bool>    // Whether scrollbars fade out when not in use.
          scrollBarsAutoHide = <bool>    // Whether scrollbars fade out when not in use.
-         consumeEvents = <bool>             // Whether the container propogates input events to the Game's input event handler. Default is true.
+         consumeEvents = <bool>             // Whether the container propagates input events to the Game's input event handler. Default is true.
 
 
          // All the nested controls within this container.
          // All the nested controls within this container.
          container 
          container 
@@ -444,11 +444,19 @@ protected:
      */
      */
     bool _scrolling;
     bool _scrolling;
     /** 
     /** 
-     * First scrolling touch x position
+	 * First scrolling touch x position
+	 */
+	int _scrollingVeryFirstX;
+	/**
+	 * First scrolling touch y position
+	 */
+	int _scrollingVeryFirstY;
+    /**
+     * First scrolling touch x position since last change in direction.
      */ 
      */ 
     int _scrollingFirstX;
     int _scrollingFirstX;
     /** 
     /** 
-     * First scrolling touch y position
+     * First scrolling touch y position since last change in direction.
      */ 
      */ 
     int _scrollingFirstY;
     int _scrollingFirstY;
     /** 
     /** 

+ 2 - 2
gameplay/src/Effect.cpp

@@ -220,7 +220,7 @@ Effect* Effect::createFromSource(const char* vshPath, const char* vshSource, con
     GLint length;
     GLint length;
     GLint success;
     GLint success;
 
 
-    // Replace all comma seperated definitions with #define prefix and \n suffix
+    // Replace all comma separated definitions with #define prefix and \n suffix
     std::string definesStr = "";
     std::string definesStr = "";
     replaceDefines(defines, definesStr);
     replaceDefines(defines, definesStr);
     
     
@@ -355,7 +355,7 @@ Effect* Effect::createFromSource(const char* vshPath, const char* vshSource, con
     // preferred attribute locations, we're going to query the locations that were
     // preferred attribute locations, we're going to query the locations that were
     // automatically bound by the GPU. While it can sometimes be convenient to use
     // automatically bound by the GPU. While it can sometimes be convenient to use
     // glBindAttribLocation, some vendors actually reserve certain attribute indices
     // glBindAttribLocation, some vendors actually reserve certain attribute indices
-    // and thereore using this function can create compatibility issues between
+    // and therefore using this function can create compatibility issues between
     // different hardware vendors.
     // different hardware vendors.
     GLint activeAttributes;
     GLint activeAttributes;
     GL_ASSERT( glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &activeAttributes) );
     GL_ASSERT( glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &activeAttributes) );

+ 1 - 4
gameplay/src/FileSystem.cpp

@@ -25,9 +25,6 @@ extern AAssetManager* __assetManager;
 namespace gameplay
 namespace gameplay
 {
 {
 
 
-// Creates a file on the file system from the specified asset (Android-specific).
-static void createFileFromAsset(const char* path);
-
 #ifdef __ANDROID__
 #ifdef __ANDROID__
 #include <unistd.h>
 #include <unistd.h>
 
 
@@ -334,7 +331,7 @@ bool FileSystem::isAbsolutePath(const char* filePath)
 #endif
 #endif
 }
 }
 
 
-void createFileFromAsset(const char* path)
+void FileSystem::createFileFromAsset(const char* path)
 {
 {
 #ifdef __ANDROID__
 #ifdef __ANDROID__
     static std::set<std::string> upToDateAssets;
     static std::set<std::string> upToDateAssets;

+ 8 - 1
gameplay/src/FileSystem.h

@@ -39,7 +39,7 @@ public:
      * Loads a properties file containing a list of filesystem aliases.
      * Loads a properties file containing a list of filesystem aliases.
      *
      *
      * The specified aliases file is a valid properties file that contains one
      * The specified aliases file is a valid properties file that contains one
-     * or more namespaces with a list of fielsystem aliases that will be used
+     * or more namespaces with a list of filesystem aliases that will be used
      * to establish soft links to files when reading files through this class.
      * to establish soft links to files when reading files through this class.
      *
      *
      * This can be helpful for managing loading of resources that may change
      * This can be helpful for managing loading of resources that may change
@@ -146,6 +146,13 @@ public:
      */
      */
     static bool isAbsolutePath(const char* filePath);
     static bool isAbsolutePath(const char* filePath);
 
 
+    /**
+     * Creates a file on the file system from the specified asset (Android-specific).
+     * 
+     * @param path The path to the file.
+     */
+    static void createFileFromAsset(const char* path);
+
 private:
 private:
 
 
     /**
     /**

+ 1 - 1
gameplay/src/Form.cpp

@@ -538,7 +538,7 @@ void Form::draw()
     // to texture a quad.  The quad will be given the same dimensions as the form and
     // to texture a quad.  The quad will be given the same dimensions as the form and
     // must be transformed appropriately by the user, unless they call setQuad() themselves.
     // must be transformed appropriately by the user, unless they call setQuad() themselves.
     // On the other hand, if this form has not been set on a node, SpriteBatch will be used
     // On the other hand, if this form has not been set on a node, SpriteBatch will be used
-    // to render the contents of the frambuffer directly to the display.
+    // to render the contents of the framebuffer directly to the display.
 
 
     // Check whether this form has changed since the last call to draw() and if so, render into the framebuffer.
     // Check whether this form has changed since the last call to draw() and if so, render into the framebuffer.
     if (isDirty())
     if (isDirty())

+ 1 - 1
gameplay/src/Form.h

@@ -32,7 +32,7 @@ class Theme;
         size       = <width, height>       // Size of the form, measured in pixels.
         size       = <width, height>       // Size of the form, measured in pixels.
         width      = <width>               // Can be used in place of 'size', e.g. with 'autoHeight = true'
         width      = <width>               // Can be used in place of 'size', e.g. with 'autoHeight = true'
         height     = <height>              // Can be used in place of 'size', e.g. with 'autoWidth = true'
         height     = <height>              // Can be used in place of 'size', e.g. with 'autoWidth = true'
-        consumeEvents = <bool>             // Whether the form propogates input events to the Game's input event handler. Default is false
+        consumeEvents = <bool>             // Whether the form propagates input events to the Game's input event handler. Default is false
       
       
         // All the nested controls within this form.
         // All the nested controls within this form.
         container { }
         container { }

+ 1 - 1
gameplay/src/Gamepad.h

@@ -111,7 +111,7 @@ public:
      *
      *
      * Note: What if the user decides to add gamepad controls (joysticks, buttons) to the gamepad form? How do we handle new/deleted controls?
      * Note: What if the user decides to add gamepad controls (joysticks, buttons) to the gamepad form? How do we handle new/deleted controls?
      *
      *
-     * @return the Form used to represent this gamepad. NULL if the gamepad is not reprented with a Form.
+     * @return the Form used to represent this gamepad. NULL if the gamepad is not represented with a Form.
      */
      */
     Form* getForm() const;
     Form* getForm() const;
 
 

+ 1 - 1
gameplay/src/Joystick.h

@@ -17,7 +17,7 @@ namespace gameplay
         alignment   = <Control::Alignment constant> // Note: 'position' will be ignored.
         alignment   = <Control::Alignment constant> // Note: 'position' will be ignored.
         size        = <width, height>           // Size of the Control, measured in pixels.
         size        = <width, height>           // Size of the Control, measured in pixels.
         radius      = <float>                   // The value of the left- / bottom-most point on the slider.
         radius      = <float>                   // The value of the left- / bottom-most point on the slider.
-        consumeEvents = <bool>                  // Whether the slider propogates input events to the Game's input event handler. Default is true.
+        consumeEvents = <bool>                  // Whether the slider propagates input events to the Game's input event handler. Default is true.
         
         
     }
     }
  @endverbatim
  @endverbatim

+ 1 - 1
gameplay/src/Label.h

@@ -24,7 +24,7 @@ namespace gameplay
          width       = <width>   // Can be used in place of 'size', e.g. with 'autoHeight = true'
          width       = <width>   // Can be used in place of 'size', e.g. with 'autoHeight = true'
          height      = <height>  // Can be used in place of 'size', e.g. with 'autoWidth = true'
          height      = <height>  // Can be used in place of 'size', e.g. with 'autoWidth = true'
          text        = <string>
          text        = <string>
-         consumeEvents = <bool>  // Whether the label propogates input events to the Game's input event handler. Default is true.
+         consumeEvents = <bool>  // Whether the label propagates input events to the Game's input event handler. Default is true.
     }
     }
  @endverbatim
  @endverbatim
  */
  */

+ 1 - 1
gameplay/src/Logger.cpp

@@ -29,7 +29,7 @@ void Logger::log(Level level, const char* message, ...)
     va_start(args, message);
     va_start(args, message);
 
 
     // Declare a moderately sized buffer on the stack that should be
     // Declare a moderately sized buffer on the stack that should be
-    // large enough to accomodate most log requests.
+    // large enough to accommodate most log requests.
     int size = 1024;
     int size = 1024;
     char stackBuffer[1024];
     char stackBuffer[1024];
     std::vector<char> dynamicBuffer;
     std::vector<char> dynamicBuffer;

+ 1 - 1
gameplay/src/Matrix.h

@@ -129,7 +129,7 @@ public:
      * Creates a view matrix based on the specified input parameters.
      * Creates a view matrix based on the specified input parameters.
      *
      *
      * @param eyePosition The eye position.
      * @param eyePosition The eye position.
-     * @param targetPosition The target's cener position.
+     * @param targetPosition The target's center position.
      * @param up The up vector.
      * @param up The up vector.
      * @param dst A matrix to store the result in.
      * @param dst A matrix to store the result in.
      */
      */

+ 1 - 1
gameplay/src/Node.cpp

@@ -839,7 +839,7 @@ const BoundingSphere& Node::getBoundingSphere() const
                 // world matrix. This computes a final world matrix used for transforming this
                 // world matrix. This computes a final world matrix used for transforming this
                 // node's bounding volume. This allows us to store a much smaller bounding
                 // node's bounding volume. This allows us to store a much smaller bounding
                 // volume approximation than would otherwise be possible for skinned meshes,
                 // volume approximation than would otherwise be possible for skinned meshes,
-                // since joint parent nodes that are not in the matrix pallette do not need to
+                // since joint parent nodes that are not in the matrix palette do not need to
                 // be considered as directly transforming vertices on the GPU (they can instead
                 // be considered as directly transforming vertices on the GPU (they can instead
                 // be applied directly to the bounding volume transformation below).
                 // be applied directly to the bounding volume transformation below).
                 GP_ASSERT(_model->getSkin()->getRootJoint());
                 GP_ASSERT(_model->getSkin()->getRootJoint());

+ 1 - 1
gameplay/src/Node.h

@@ -539,7 +539,7 @@ public:
     /**
     /**
      * Sets the physics collision object for this node from the given properties object.
      * Sets the physics collision object for this node from the given properties object.
      * 
      * 
-     * @param properties The properties object defining the collision ojbect.
+     * @param properties The properties object defining the collision object.
      */
      */
     PhysicsCollisionObject* setCollisionObject(Properties* properties);
     PhysicsCollisionObject* setCollisionObject(Properties* properties);
 
 

+ 3 - 3
gameplay/src/PhysicsCharacter.cpp

@@ -309,7 +309,7 @@ void PhysicsCharacter::stepUp(btCollisionWorld* collisionWorld, btScalar time)
 
 
     if (_verticalVelocity.isZero())
     if (_verticalVelocity.isZero())
     {
     {
-        // Simply increase our poisiton by step height to enable us
+        // Simply increase our position by step height to enable us
         // to smoothly move over steps.
         // to smoothly move over steps.
         targetPosition += btVector3(0, _stepHeight, 0);
         targetPosition += btVector3(0, _stepHeight, 0);
     }
     }
@@ -521,7 +521,7 @@ static btVector3 parallelComponent(const btVector3& direction, const btVector3&
 }
 }
 
 
 /*
 /*
- * Returns the portion of 'direction' that is perpindicular to 'normal'.
+ * Returns the portion of 'direction' that is perpendicular to 'normal'.
  */
  */
 static btVector3 perpindicularComponent(const btVector3& direction, const btVector3& normal)
 static btVector3 perpindicularComponent(const btVector3& direction, const btVector3& normal)
 {
 {
@@ -572,7 +572,7 @@ bool PhysicsCharacter::fixCollision(btCollisionWorld* world)
     _node->getWorldMatrix().getTranslation(&startPosition);
     _node->getWorldMatrix().getTranslation(&startPosition);
     btVector3 currentPosition = BV(startPosition);
     btVector3 currentPosition = BV(startPosition);
 
 
-    // Handle all collisions/overlappign pairs.
+    // Handle all collisions/overlapping pairs.
     btScalar maxPenetration = btScalar(0.0);
     btScalar maxPenetration = btScalar(0.0);
     for (int i = 0, count = pairCache->getNumOverlappingPairs(); i < count; ++i)
     for (int i = 0, count = pairCache->getNumOverlappingPairs(); i < count; ++i)
     {
     {

+ 1 - 1
gameplay/src/PhysicsCollisionObject.h

@@ -251,7 +251,7 @@ protected:
         ScriptListener(const char* url);
         ScriptListener(const char* url);
 
 
         /**
         /**
-         * @see PhysicsColliionObject::CollisionListener
+         * @see PhysicsCollisionObject::CollisionListener
          */
          */
         void collisionEvent(PhysicsCollisionObject::CollisionListener::EventType type, const PhysicsCollisionObject::CollisionPair& collisionPair,
         void collisionEvent(PhysicsCollisionObject::CollisionListener::EventType type, const PhysicsCollisionObject::CollisionPair& collisionPair,
                                     const Vector3& contactPointA, const Vector3& contactPointB);
                                     const Vector3& contactPointA, const Vector3& contactPointB);

+ 1 - 1
gameplay/src/PhysicsController.cpp

@@ -1027,7 +1027,7 @@ PhysicsCollisionShape* PhysicsController::createHeightfield(Node* node, Image* i
         for (unsigned int y = 0, h = image->getHeight(); y < h; ++y)
         for (unsigned int y = 0, h = image->getHeight(); y < h; ++y)
         {
         {
             //
             //
-            // Orignially in GamePlay this was normalizedHeightGrayscale which generally yielded
+            // Originally in GamePlay this was normalizedHeightGrayscale which generally yielded
             // only 8-bit precision. This has been replaced by normalizedHeightPacked (with a
             // only 8-bit precision. This has been replaced by normalizedHeightPacked (with a
             // corresponding change in gameplay-encoder).
             // corresponding change in gameplay-encoder).
             //
             //

+ 1 - 1
gameplay/src/PhysicsVehicleWheel.h

@@ -326,7 +326,7 @@ private:
 
 
     /**
     /**
      * Traverse up the visual scene graph. Upon finding the first ancestor node with an
      * Traverse up the visual scene graph. Upon finding the first ancestor node with an
-     * advertised descendant of collsion type VEHICLE, add this wheel onto the vehicle.
+     * advertised descendant of collision type VEHICLE, add this wheel onto the vehicle.
      */
      */
     // Note: Currently this method is silent on failure to find a host.
     // Note: Currently this method is silent on failure to find a host.
     void findAncestorAndBind();
     void findAncestorAndBind();

+ 6 - 9
gameplay/src/PlatformBlackBerry.cpp

@@ -566,8 +566,7 @@ Platform* Platform::create(Game* game, void* attachToWindow)
     sensor_request_events(SENSOR_TYPE_AZIMUTH_PITCH_ROLL);
     sensor_request_events(SENSOR_TYPE_AZIMUTH_PITCH_ROLL);
     navigator_request_events(0);
     navigator_request_events(0);
     navigator_rotation_lock(true);
     navigator_rotation_lock(true);
-    orientation_direction_t direction;
-    orientation_get(&direction, &__orientationAngle);
+    __orientationAngle = atoi(getenv("ORIENTATION"));
 
 
     int rc = 0;
     int rc = 0;
     int screenFormat = SCREEN_FORMAT_RGBA8888;
     int screenFormat = SCREEN_FORMAT_RGBA8888;
@@ -636,7 +635,7 @@ Platform* Platform::create(Game* game, void* attachToWindow)
         goto error;
         goto error;
     }
     }
 
 
-    // Set/get any window prooperties.
+    // Set/get any window properties.
     rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_FORMAT, &screenFormat);
     rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_FORMAT, &screenFormat);
     if (rc)
     if (rc)
     {
     {
@@ -658,8 +657,6 @@ Platform* Platform::create(Game* game, void* attachToWindow)
     }
     }
     else
     else
     {
     {
-        int angle = atoi(getenv("ORIENTATION"));
-
         screen_display_t screen_display;
         screen_display_t screen_display;
         rc = screen_get_window_property_pv(__screenWindow, SCREEN_PROPERTY_DISPLAY, (void **)&screen_display);
         rc = screen_get_window_property_pv(__screenWindow, SCREEN_PROPERTY_DISPLAY, (void **)&screen_display);
         if (rc)
         if (rc)
@@ -687,7 +684,7 @@ Platform* Platform::create(Game* game, void* attachToWindow)
         __screenWindowSize[0] = size[0];
         __screenWindowSize[0] = size[0];
         __screenWindowSize[1] = size[1];
         __screenWindowSize[1] = size[1];
 
 
-        if ((angle == 0) || (angle == 180))
+        if ((__orientationAngle == 0) || (__orientationAngle == 180))
         {
         {
             if (((screen_mode.width > screen_mode.height) && (size[0] < size[1])) ||
             if (((screen_mode.width > screen_mode.height) && (size[0] < size[1])) ||
                 ((screen_mode.width < screen_mode.height) && (size[0] > size[1])))
                 ((screen_mode.width < screen_mode.height) && (size[0] > size[1])))
@@ -696,7 +693,7 @@ Platform* Platform::create(Game* game, void* attachToWindow)
                 __screenWindowSize[0] = size[1];
                 __screenWindowSize[0] = size[1];
             }
             }
         }
         }
-        else if ((angle == 90) || (angle == 270))
+        else if ((__orientationAngle == 90) || (__orientationAngle == 270))
         {
         {
             if (((screen_mode.width > screen_mode.height) && (size[0] > size[1])) ||
             if (((screen_mode.width > screen_mode.height) && (size[0] > size[1])) ||
                 ((screen_mode.width < screen_mode.height) && (size[0] < size[1])))
                 ((screen_mode.width < screen_mode.height) && (size[0] < size[1])))
@@ -712,7 +709,7 @@ Platform* Platform::create(Game* game, void* attachToWindow)
         }
         }
 
 
 
 
-        rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_ROTATION, &angle);
+        rc = screen_set_window_property_iv(__screenWindow, SCREEN_PROPERTY_ROTATION, &__orientationAngle);
         if (rc)
         if (rc)
         {
         {
             perror("screen_set_window_property_iv(SCREEN_PROPERTY_ROTATION)");
             perror("screen_set_window_property_iv(SCREEN_PROPERTY_ROTATION)");
@@ -1316,7 +1313,7 @@ bool Platform::mouseEventInternal(Mouse::MouseEvent evt, int x, int y, int wheel
 
 
 bool Platform::isGestureSupported(Gesture::GestureEvent evt)
 bool Platform::isGestureSupported(Gesture::GestureEvent evt)
 {
 {
-    // All are supported no need to test th bitset
+    // All are supported no need to test the bitset
     return true;
     return true;
 }
 }
 
 

+ 1 - 1
gameplay/src/Quaternion.cpp

@@ -389,7 +389,7 @@ void Quaternion::slerpForSquad(const Quaternion& q1, const Quaternion& q2, float
     // cos(omega) = q1 * q2;
     // cos(omega) = q1 * q2;
     // slerp(q1, q2, t) = (q1*sin((1-t)*omega) + q2*sin(t*omega))/sin(omega);
     // slerp(q1, q2, t) = (q1*sin((1-t)*omega) + q2*sin(t*omega))/sin(omega);
     // q1 = +- q2, slerp(q1,q2,t) = q1.
     // q1 = +- q2, slerp(q1,q2,t) = q1.
-    // This is a straight-foward implementation of the formula of slerp. It does not do any sign switching.
+    // This is a straight-forward implementation of the formula of slerp. It does not do any sign switching.
     float c = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
     float c = q1.x * q2.x + q1.y * q2.y + q1.z * q2.z + q1.w * q2.w;
 
 
     if (fabs(c) >= 1.0f)
     if (fabs(c) >= 1.0f)

+ 1 - 1
gameplay/src/RadioButton.h

@@ -30,7 +30,7 @@ namespace gameplay
          text        = <string>
          text        = <string>
          group       = <string>
          group       = <string>
          iconSize    = <width, height>   // The size to draw the radio button icon, if different from its size in the texture.
          iconSize    = <width, height>   // The size to draw the radio button icon, if different from its size in the texture.
-         consumeEvents = <bool>          // Whether the radio button propogates input events to the Game's input event handler. Default is true.
+         consumeEvents = <bool>          // Whether the radio button propagates input events to the Game's input event handler. Default is true.
     }
     }
  @endverbatim
  @endverbatim
  */
  */

+ 1 - 1
gameplay/src/RenderState.cpp

@@ -475,7 +475,7 @@ void RenderState::StateBlock::enableDepthWrite()
     GP_ASSERT(_defaultState);
     GP_ASSERT(_defaultState);
 
 
     // Internal method used by Game::clear() to restore depth writing before a
     // Internal method used by Game::clear() to restore depth writing before a
-    // clear operation. This is neccessary if the last code to draw before the
+    // clear operation. This is necessary if the last code to draw before the
     // next frame leaves depth writing disabled.
     // next frame leaves depth writing disabled.
     if (!_defaultState->_depthWriteEnabled)
     if (!_defaultState->_depthWriteEnabled)
     {
     {

+ 2 - 0
gameplay/src/ScriptController.cpp

@@ -550,6 +550,7 @@ static const char* lua_loadfile_function =
     "    local oldLoadfile = loadfile\n"
     "    local oldLoadfile = loadfile\n"
     "    loadfile = function(filename)\n"
     "    loadfile = function(filename)\n"
     "        if filename ~= nil and not FileSystem.isAbsolutePath(filename) then\n"
     "        if filename ~= nil and not FileSystem.isAbsolutePath(filename) then\n"
+    "            FileSystem.createFileFromAsset(filename)\n"
     "            filename = FileSystem.getResourcePath() .. filename\n"
     "            filename = FileSystem.getResourcePath() .. filename\n"
     "        end\n"
     "        end\n"
     "        return oldLoadfile(filename)\n"
     "        return oldLoadfile(filename)\n"
@@ -561,6 +562,7 @@ static const char* lua_dofile_function =
     "    local oldDofile = dofile\n"
     "    local oldDofile = dofile\n"
     "    dofile = function(filename)\n"
     "    dofile = function(filename)\n"
     "        if filename ~= nil and not FileSystem.isAbsolutePath(filename) then\n"
     "        if filename ~= nil and not FileSystem.isAbsolutePath(filename) then\n"
+    "            FileSystem.createFileFromAsset(filename)\n"
     "            filename = FileSystem.getResourcePath() .. filename\n"
     "            filename = FileSystem.getResourcePath() .. filename\n"
     "        end\n"
     "        end\n"
     "        return oldDofile(filename)\n"
     "        return oldDofile(filename)\n"

+ 1 - 1
gameplay/src/ScriptController.h

@@ -81,7 +81,7 @@ public:
     operator T* () const;
     operator T* () const;
 
 
     /**
     /**
-     * Overloades [] operator to get/set item value at index.
+     * Overloads [] operator to get/set item value at index.
      */
      */
     T& operator[] (int index);
     T& operator[] (int index);
 
 

+ 1 - 1
gameplay/src/Slider.h

@@ -25,7 +25,7 @@ namespace gameplay
         value       = <float>                   // The default position of the marker.
         value       = <float>                   // The default position of the marker.
         step        = <float>                   // If greater than 0, force the marker to snap to discrete multiples of 'step'.
         step        = <float>                   // If greater than 0, force the marker to snap to discrete multiples of 'step'.
         text        = <string>                  // Text to display above, below or alongside the slider (depending on the style).
         text        = <string>                  // Text to display above, below or alongside the slider (depending on the style).
-        consumeEvents = <bool>                  // Whether the slider propogates input events to the Game's input event handler. Default is true.
+        consumeEvents = <bool>                  // Whether the slider propagates input events to the Game's input event handler. Default is true.
         // TODO: orientation = <HORIZONTAL or VERTICAL>  // Determines whether a slider is stretched along its width or its height
         // TODO: orientation = <HORIZONTAL or VERTICAL>  // Determines whether a slider is stretched along its width or its height
     }
     }
  @endverbatim
  @endverbatim

+ 37 - 0
gameplay/src/lua/lua_FileSystem.cpp

@@ -16,6 +16,7 @@ void luaRegister_FileSystem()
     };
     };
     const luaL_Reg lua_statics[] = 
     const luaL_Reg lua_statics[] = 
     {
     {
+        {"createFileFromAsset", lua_FileSystem_static_createFileFromAsset},
         {"fileExists", lua_FileSystem_static_fileExists},
         {"fileExists", lua_FileSystem_static_fileExists},
         {"getResourcePath", lua_FileSystem_static_getResourcePath},
         {"getResourcePath", lua_FileSystem_static_getResourcePath},
         {"isAbsolutePath", lua_FileSystem_static_isAbsolutePath},
         {"isAbsolutePath", lua_FileSystem_static_isAbsolutePath},
@@ -77,6 +78,42 @@ int lua_FileSystem__gc(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_FileSystem_static_createFileFromAsset(lua_State* state)
+{
+    // Get the number of parameters.
+    int paramCount = lua_gettop(state);
+
+    // Attempt to match the parameters to a valid binding.
+    switch (paramCount)
+    {
+        case 1:
+        {
+            if ((lua_type(state, 1) == LUA_TSTRING || lua_type(state, 1) == LUA_TNIL))
+            {
+                // Get parameter 1 off the stack.
+                ScriptUtil::LuaArray<const char> param1 = ScriptUtil::getString(1, false);
+
+                FileSystem::createFileFromAsset(param1);
+                
+                return 0;
+            }
+            else
+            {
+                lua_pushstring(state, "lua_FileSystem_static_createFileFromAsset - Failed to match the given parameters to a valid function signature.");
+                lua_error(state);
+            }
+            break;
+        }
+        default:
+        {
+            lua_pushstring(state, "Invalid number of parameters (expected 1).");
+            lua_error(state);
+            break;
+        }
+    }
+    return 0;
+}
+
 int lua_FileSystem_static_fileExists(lua_State* state)
 int lua_FileSystem_static_fileExists(lua_State* state)
 {
 {
     // Get the number of parameters.
     // Get the number of parameters.

+ 1 - 0
gameplay/src/lua/lua_FileSystem.h

@@ -6,6 +6,7 @@ namespace gameplay
 
 
 // Lua bindings for FileSystem.
 // Lua bindings for FileSystem.
 int lua_FileSystem__gc(lua_State* state);
 int lua_FileSystem__gc(lua_State* state);
+int lua_FileSystem_static_createFileFromAsset(lua_State* state);
 int lua_FileSystem_static_fileExists(lua_State* state);
 int lua_FileSystem_static_fileExists(lua_State* state);
 int lua_FileSystem_static_getResourcePath(lua_State* state);
 int lua_FileSystem_static_getResourcePath(lua_State* state);
 int lua_FileSystem_static_isAbsolutePath(lua_State* state);
 int lua_FileSystem_static_isAbsolutePath(lua_State* state);

+ 38 - 0
gameplay/src/lua/lua_Game.cpp

@@ -23,6 +23,7 @@ void luaRegister_Game()
 {
 {
     const luaL_Reg lua_members[] = 
     const luaL_Reg lua_members[] = 
     {
     {
+        {"canExit", lua_Game_canExit},
         {"clear", lua_Game_clear},
         {"clear", lua_Game_clear},
         {"displayKeyboard", lua_Game_displayKeyboard},
         {"displayKeyboard", lua_Game_displayKeyboard},
         {"exit", lua_Game_exit},
         {"exit", lua_Game_exit},
@@ -132,6 +133,43 @@ int lua_Game__gc(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_Game_canExit(lua_State* state)
+{
+    // Get the number of parameters.
+    int paramCount = lua_gettop(state);
+
+    // Attempt to match the parameters to a valid binding.
+    switch (paramCount)
+    {
+        case 1:
+        {
+            if ((lua_type(state, 1) == LUA_TUSERDATA))
+            {
+                Game* instance = getInstance(state);
+                bool result = instance->canExit();
+
+                // Push the return value onto the stack.
+                lua_pushboolean(state, result);
+
+                return 1;
+            }
+            else
+            {
+                lua_pushstring(state, "lua_Game_canExit - Failed to match the given parameters to a valid function signature.");
+                lua_error(state);
+            }
+            break;
+        }
+        default:
+        {
+            lua_pushstring(state, "Invalid number of parameters (expected 1).");
+            lua_error(state);
+            break;
+        }
+    }
+    return 0;
+}
+
 int lua_Game_clear(lua_State* state)
 int lua_Game_clear(lua_State* state)
 {
 {
     // Get the number of parameters.
     // Get the number of parameters.

+ 1 - 0
gameplay/src/lua/lua_Game.h

@@ -6,6 +6,7 @@ namespace gameplay
 
 
 // Lua bindings for Game.
 // Lua bindings for Game.
 int lua_Game__gc(lua_State* state);
 int lua_Game__gc(lua_State* state);
+int lua_Game_canExit(lua_State* state);
 int lua_Game_clear(lua_State* state);
 int lua_Game_clear(lua_State* state);
 int lua_Game_displayKeyboard(lua_State* state);
 int lua_Game_displayKeyboard(lua_State* state);
 int lua_Game_exit(lua_State* state);
 int lua_Game_exit(lua_State* state);

+ 29 - 0
gameplay/src/lua/lua_Platform.cpp

@@ -19,6 +19,7 @@ void luaRegister_Platform()
     };
     };
     const luaL_Reg lua_statics[] = 
     const luaL_Reg lua_statics[] = 
     {
     {
+        {"canExit", lua_Platform_static_canExit},
         {"displayKeyboard", lua_Platform_static_displayKeyboard},
         {"displayKeyboard", lua_Platform_static_displayKeyboard},
         {"getAbsoluteTime", lua_Platform_static_getAbsoluteTime},
         {"getAbsoluteTime", lua_Platform_static_getAbsoluteTime},
         {"getAccelerometerValues", lua_Platform_static_getAccelerometerValues},
         {"getAccelerometerValues", lua_Platform_static_getAccelerometerValues},
@@ -147,6 +148,34 @@ int lua_Platform_enterMessagePump(lua_State* state)
     return 0;
     return 0;
 }
 }
 
 
+int lua_Platform_static_canExit(lua_State* state)
+{
+    // Get the number of parameters.
+    int paramCount = lua_gettop(state);
+
+    // Attempt to match the parameters to a valid binding.
+    switch (paramCount)
+    {
+        case 0:
+        {
+            bool result = Platform::canExit();
+
+            // Push the return value onto the stack.
+            lua_pushboolean(state, result);
+
+            return 1;
+            break;
+        }
+        default:
+        {
+            lua_pushstring(state, "Invalid number of parameters (expected 0).");
+            lua_error(state);
+            break;
+        }
+    }
+    return 0;
+}
+
 int lua_Platform_static_displayKeyboard(lua_State* state)
 int lua_Platform_static_displayKeyboard(lua_State* state)
 {
 {
     // Get the number of parameters.
     // Get the number of parameters.

+ 1 - 0
gameplay/src/lua/lua_Platform.h

@@ -7,6 +7,7 @@ namespace gameplay
 // Lua bindings for Platform.
 // Lua bindings for Platform.
 int lua_Platform__gc(lua_State* state);
 int lua_Platform__gc(lua_State* state);
 int lua_Platform_enterMessagePump(lua_State* state);
 int lua_Platform_enterMessagePump(lua_State* state);
+int lua_Platform_static_canExit(lua_State* state);
 int lua_Platform_static_displayKeyboard(lua_State* state);
 int lua_Platform_static_displayKeyboard(lua_State* state);
 int lua_Platform_static_getAbsoluteTime(lua_State* state);
 int lua_Platform_static_getAbsoluteTime(lua_State* state);
 int lua_Platform_static_getAccelerometerValues(lua_State* state);
 int lua_Platform_static_getAccelerometerValues(lua_State* state);