Browse Source

Starting 'super' fresh

Sean Taylor 5 years ago
parent
commit
c73b5cbc94
100 changed files with 41 additions and 21476 deletions
  1. 2 47
      .gitattributes
  2. 38 142
      .gitignore
  3. 0 23
      .travis.yml
  4. 0 290
      CHANGES.md
  5. 0 30
      CMakeLists.txt
  6. 1 32
      README.md
  7. 0 3
      api/README.md
  8. 0 34
      api/header.html
  9. 0 1783
      gameplay.doxyfile
  10. 0 69
      gameplay.sln
  11. 0 19
      gameplay.xcworkspace/contents.xcworkspacedata
  12. 0 8
      gameplay.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
  13. 0 185
      gameplay/.cproject
  14. 0 83
      gameplay/.project
  15. 0 591
      gameplay/CMakeLists.txt
  16. 0 13
      gameplay/android/.classpath
  17. 0 57
      gameplay/android/.cproject
  18. 0 104
      gameplay/android/.project
  19. 0 9
      gameplay/android/AndroidManifest.xml
  20. 0 40
      gameplay/android/build.xml
  21. 0 270
      gameplay/android/jni/Android.mk
  22. 0 7
      gameplay/android/jni/Application.mk
  23. 0 3
      gameplay/android/project.properties
  24. BIN
      gameplay/android/res/drawable/icon.png
  25. 0 565
      gameplay/gameplay.pro
  26. 0 680
      gameplay/gameplay.vcxproj
  27. 0 1638
      gameplay/gameplay.vcxproj.filters
  28. 0 2479
      gameplay/gameplay.xcodeproj/project.pbxproj
  29. 0 68
      gameplay/gameplay.xcodeproj/xcshareddata/xcschemes/gameplay-ios.xcscheme
  30. 0 68
      gameplay/gameplay.xcodeproj/xcshareddata/xcschemes/gameplay-macosx.xcscheme
  31. BIN
      gameplay/res/design/arial.ttf
  32. BIN
      gameplay/res/design/default-theme.psd
  33. BIN
      gameplay/res/design/icon_128.ico
  34. BIN
      gameplay/res/design/icon_16.ico
  35. BIN
      gameplay/res/design/icon_32.ico
  36. BIN
      gameplay/res/design/icon_64.ico
  37. 0 27
      gameplay/res/design/logo.ai
  38. BIN
      gameplay/res/icon.png
  39. BIN
      gameplay/res/icon_tray.png
  40. BIN
      gameplay/res/logo_black.png
  41. BIN
      gameplay/res/logo_powered_black.png
  42. BIN
      gameplay/res/logo_powered_white.png
  43. BIN
      gameplay/res/logo_white.png
  44. 0 41
      gameplay/res/materials/terrain.material
  45. 0 144
      gameplay/res/shaders/colored.frag
  46. 0 149
      gameplay/res/shaders/colored.vert
  47. 0 40
      gameplay/res/shaders/font.frag
  48. 0 22
      gameplay/res/shaders/font.vert
  49. 0 92
      gameplay/res/shaders/lighting.frag
  50. 0 67
      gameplay/res/shaders/lighting.vert
  51. 0 25
      gameplay/res/shaders/skinning-none.vert
  52. 0 84
      gameplay/res/shaders/skinning.vert
  53. 0 22
      gameplay/res/shaders/sprite.frag
  54. 0 22
      gameplay/res/shaders/sprite.vert
  55. 0 152
      gameplay/res/shaders/terrain.frag
  56. 0 114
      gameplay/res/shaders/terrain.vert
  57. 0 155
      gameplay/res/shaders/textured.frag
  58. 0 180
      gameplay/res/shaders/textured.vert
  59. BIN
      gameplay/res/ui/arial.gpb
  60. BIN
      gameplay/res/ui/default-theme.png
  61. 0 474
      gameplay/res/ui/default.theme
  62. 0 98
      gameplay/src/AIAgent.cpp
  63. 0 174
      gameplay/src/AIAgent.h
  64. 0 188
      gameplay/src/AIController.cpp
  65. 0 107
      gameplay/src/AIController.h
  66. 0 204
      gameplay/src/AIMessage.cpp
  67. 0 283
      gameplay/src/AIMessage.h
  68. 0 82
      gameplay/src/AIState.cpp
  69. 0 136
      gameplay/src/AIState.h
  70. 0 143
      gameplay/src/AIStateMachine.cpp
  71. 0 161
      gameplay/src/AIStateMachine.h
  72. 0 44
      gameplay/src/AbsoluteLayout.cpp
  73. 0 67
      gameplay/src/AbsoluteLayout.h
  74. 0 478
      gameplay/src/Animation.cpp
  75. 0 241
      gameplay/src/Animation.h
  76. 0 692
      gameplay/src/AnimationClip.cpp
  77. 0 414
      gameplay/src/AnimationClip.h
  78. 0 136
      gameplay/src/AnimationController.cpp
  79. 0 106
      gameplay/src/AnimationController.h
  80. 0 561
      gameplay/src/AnimationTarget.cpp
  81. 0 248
      gameplay/src/AnimationTarget.h
  82. 0 73
      gameplay/src/AnimationValue.cpp
  83. 0 88
      gameplay/src/AnimationValue.h
  84. 0 516
      gameplay/src/AudioBuffer.cpp
  85. 0 84
      gameplay/src/AudioBuffer.h
  86. 0 177
      gameplay/src/AudioController.cpp
  87. 0 76
      gameplay/src/AudioController.h
  88. 0 147
      gameplay/src/AudioListener.cpp
  89. 0 176
      gameplay/src/AudioListener.h
  90. 0 364
      gameplay/src/AudioSource.cpp
  91. 0 220
      gameplay/src/AudioSource.h
  92. 0 350
      gameplay/src/Base.h
  93. 0 349
      gameplay/src/BoundingBox.cpp
  94. 0 233
      gameplay/src/BoundingBox.h
  95. 0 19
      gameplay/src/BoundingBox.inl
  96. 0 324
      gameplay/src/BoundingSphere.cpp
  97. 0 184
      gameplay/src/BoundingSphere.h
  98. 0 19
      gameplay/src/BoundingSphere.inl
  99. 0 1898
      gameplay/src/Bundle.cpp
  100. 0 466
      gameplay/src/Bundle.h

+ 2 - 47
.gitattributes

@@ -1,49 +1,4 @@
-# Set default behaviour, in case users don't have core.autocrlf set.
 * text=auto
-
-# Explicitly declare text files we want to always be normalized and converted to native line endings on checkout.
-*.cpp text
-*.c text
-*.mm text
-*.m text
-*.h text
-*.inl text
-*.lua text
-*.vert text
-*.frag text
-*.material text
-*.form text
-*.theme text
-*.particle text
-*.animation text
-*.audio text
-*.terrain text
-*.config text
-*.txt text
-*.xml text
-*.md text
-*.sh text
-*.project text
-*.cproject text
-
-# Declare windows files that will always have CRLF line endings on checkout.
-*.sln text eol=crlf
-*.vcxproj text eol=crlf
-*.vcxproj.filters text eol=crlf
-.vsxproj.user text eol=crlf
 *.bat text eol=crlf
-
-# Denote all files that are truly binary and should not be modified.
-*.png binary
-*.jpg binary
-*.psd binary
-*.dds binary
-*.pvr binary
-*.r16 binary
-*.fbx binary
-*.mb binary
-*.ogg binary
-*.wav binary
-*.raw binary
-*.ttf binary
-*.gpb binary
+*.cmd text eol=crlf
+*.sh text eol=lf

+ 38 - 142
.gitignore

@@ -1,143 +1,39 @@
+_*/
+.lastrun
+.lastformat
+.lastverify
+.DS_Store
+.cache
+.vscode/ipch
+/.vs
+
+*.py[cod]
+*.swp
+*.diff
+*.patch
+
+*.ico
+*.bmp
+*.png
+*.gif
+*.jpg
+*.jpeg
+*.tga
+*.psd
+*.raw
+*.exr
+*.hdr
+*.dds
+*.ktx
+*.spv
+*.dxbc
+*.dxil
+*.gltf
+*.glb
+*.fbx
+*.usd
+*.usda
+*.usdz
+*.obj
+*.mat
 *.suo
-*.sdf
-*.opensdf
-*.layout
-*.depend
-*.pro.user
-.DS_Store*
-ehthumbs.db
-Icon?
-Thumbs.db
-.metadata
-.settings
-/ipch
-/build
-/cmake
-/Debug
-/Release
-/api/xml
-/bin
-/external-deps
-/api/html
-Makefile
-Makefile.Debug
-Makefile.Release
-gameplay.xcworkspace/xcshareddata/gameplay.xccheckout
-
-/gameplay/Debug
-/gameplay/DebugMem
-/gameplay/Release
-/gameplay/android/NUL
-/gameplay/android/proguard.cfg
-/gameplay/android/proguard-project.txt
-/gameplay/android/local.properties
-/gameplay/android/bin
-/gameplay/android/gen
-/gameplay/android/libs
-/gameplay/android/obj
-/gameplay.xcworkspace/xcuserdata
-/gameplay/gameplay.xcodeproj/xcuserdata
-/gameplay/gameplay.vcxproj.user
-
-/tools/encoder
-/tools/encoder/Debug
-/tools/encoder/Release
-/tools/encoder/gameplay-encoder.xcodeproj/xcuserdata
-/tools/encoder/gameplay-encoder.xcodeproj/project.xcworkspace/
-/tools/encoder/gameplay-encoder.vcxproj.user
-
-/tools/luagen
-/tools/luagen/Release
-/tools/luagen/Debug
-/tools/luagen/gameplay-luagen.xcodeproj/xcuserdata
-/tools/luagen/gameplay-luagen.xcodeproj/project.xcworkspace/
-/tools/luagen/doxygen_entrydb_680.tmp
-/tools/luagen/doxygen_objdb_680.tmp
-/tools/luagen/xml
-
-/tools/editor
-/tools/editor/src
-/tools/editor/Debug
-/tools/editor/Release
-
-/samples/browser/Debug
-/samples/browser/DebugMem
-/samples/browser/Release
-/samples/browser/res/shaders
-/samples/browser/res/ui
-/samples/browser/res/logo_powered_white.png
-/samples/browser/src/org
-/samples/browser/android/src
-/samples/browser/android/assets
-/samples/browser/android/bin
-/samples/browser/android/gen
-/samples/browser/android/libs
-/samples/browser/android/obj
-/samples/browser/android/NUL
-/samples/browser/android/local.properties
-/samples/browser/android/proguard-project.txt
-/samples/browser/sample-browser.xcodeproj/xcuserdata
-/samples/browser/sample-browser.vcxproj.user
-
-/samples/character/Debug
-/samples/character/DebugMem
-/samples/character/Release
-/samples/character/res/shaders
-/samples/character/res/ui
-/samples/character/res/logo_powered_white.png
-/samples/character/src/org
-/samples/character/android/src
-/samples/character/android/assets
-/samples/character/android/bin
-/samples/character/android/gen
-/samples/character/android/libs
-/samples/character/android/obj
-/samples/character/android/NUL
-/samples/character/android/local.properties
-/samples/character/android/proguard-project.txt
-/samples/character/android/proguard.cfg
-/samples/character/res/gamepad.xcf
-/samples/character/sample-character.xcodeproj/xcuserdata
-/samples/character/sample-character.vcxproj.user
-/samples/character/game.config
-
-/samples/racer/Debug
-/samples/racer/DebugMem
-/samples/racer/Release
-/samples/racer/res/shaders
-/samples/racer/res/ui
-/samples/racer/res/logo_powered_white.png
-/samples/racer/src/org
-/samples/racer/android/src
-/samples/racer/android/assets
-/samples/racer/android/bin
-/samples/racer/android/gen
-/samples/racer/android/libs
-/samples/racer/android/obj
-/samples/racer/android/NUL
-/samples/racer/android/local.properties
-/samples/racer/android/proguard-project.txt
-/samples/racer/android/proguard.cfg
-/samples/racer/sample-racer.xcodeproj/xcuserdata
-/samples/racer/sample-racer.vcxproj.user
-/samples/racer/game.config
-
-/samples/spaceship/Debug
-/samples/spaceship/DebugMem
-/samples/spaceship/Release
-/samples/spaceship/res/shaders
-/samples/spaceship/res/ui
-/samples/spaceship/res/logo_powered_white.png
-/samples/spaceship/src/org
-/samples/spaceship/android/src
-/samples/spaceship/android/assets
-/samples/spaceship/android/bin
-/samples/spaceship/android/gen
-/samples/spaceship/android/libs
-/samples/spaceship/android/obj
-/samples/spaceship/android/NUL
-/samples/spaceship/android/local.properties
-/samples/spaceship/android/proguard.cfg
-/samples/spaceship/android/proguard-project.txt
-/samples/spaceship/sample-spaceship.xcodeproj/xcuserdata
-/samples/spaceship/sample-spaceship.vcxproj.user

+ 0 - 23
.travis.yml

@@ -1,23 +0,0 @@
-language: cpp
-before_script:
-  - ./install.sh
-  - mkdir build
-  - cd build
-  - cmake ..
-script: make
-compiler:
-  - gcc
-addons:
-  apt:
-    sources:
-    - ubuntu-toolchain-r-test
-    packages:
-    - libglu1-mesa-dev
-    - libogg-dev
-    - libopenal-dev
-    - lib32z1-dev
-    - libgtk2.0-dev
-notifications:
-  email: false
-sudo: required
-dist: trusty

+ 0 - 290
CHANGES.md

@@ -1,290 +0,0 @@
-## v3.0.0
-
-- Adds support for Visual Studio 2015.
-- Adds support for FBX SDK 2016.1.2
-- Adds support for 2D Sprite, TileSet and Text.
-- Adds support for node instance scripts.
-- Adds support for C++11.
-- Adds support for MacOSX 64-bit.
-- Adds support for iOS 8+.
-- Adds support for XCode 6+.
-- Adds support for QTCreator for Linux and MacOSX.
-- Adds support for Eclipse for Linux.
-- Adds support for Eclipse for Android.
-- Adds support for Bullet Physics 2.82
-- Adds support for cubemap textures.
-- Adds support for font kerning.
-- Adds support for Android x86.
-- Adds support for CMake on MacOSX.
-- Adds support for gamepads on Android.
-- Adds supoprt for Android extensions through custom native activity.
-- Adds water sample to browser.
-- Adds audio player sample to browser. 
-- Adds GamePlay-deps repository for cross-platform Cmake dependency builds.
-- Adds map/unmap buffer for Mesh and MeshPart.
-- Fixes to Scene Graph for merging Drawables on Node.
-- Fixes from setUserPointer to setUserObject(Ref*)
-- Fixes for virtual gamepad scaling.
-- Fixes Image to support grayscale PNGs.
-- Fixes Android to build with arm instead of thumb.
-- Fixes Android crash when gamepads disconnected.
-- Fixes for lua script bindings.
-
-## v2.0.0
-
-- Adds support for Visual Studio 2013.
-- Adds support for iOS 7, MacOS X 10.9 and XCode 5.
-- Adds support for BlackBerry NDK 10.2.
-- Adds support for CollisionObject group mask filtering.
-- Adds support in shaders for multiple lights using shader defines.
-- Adds various improvements to Material binding support.
-- Adds support for array MaterialParameter's.
-- Adds support for encoding distance field based fonts.
-- Adds support for multiple sizes of fonts encoded into single bundle.
-- Adds improvements for simplified layout for forms and theming.
-- Adds ControlFactory to instantiate core controls and support users registering custom controls.
-- Adds support for percentage based layout definitions for controls in forms.
-- Adds password mode on Textbox controls.
-- Adds improvements to Textbox key repeat and cursor jump modifiers.
-- Adds FileSystem::displayFileDialog on all desktop platforms.
-- Adds Terrain support for material definition for user customization.
-- Adds support to RenderState FrontFace.
-- Adds Node::setActive, getActive and getActiveInHierachy.
-- Adds ETC compressed texture support.
-- Adds gameplay::strcmpnocase as a platform-independent case-insensitive string compare function.
-- Adds new gestures for Long Tap, Drag and Drop.
-- Adds support for Android pinch gestures.
-- Adds version number to encoder output files.
-- Adds support for variables like ${my_variable} in any Properties file formats.
-- Fixes to specular and bumped shader for spot lights.
-- Fixes to UI rendering quality from FrameBuffer usage which is no longer used.
-- Fixes to Texbox focus related issues.
-- Fixes to Label clipping and Labels to automatically re-size around their text.
-- Fixes in Camera related to invalid project() and setActiveCamera() issues.
-- Fixes for Linux VSYNC and mouse capture and mouse wheel values.
-- Fixes various logging and warning problems and annoyances.
-- Fixes bitmap font rendering quality in gameplay-encoder and Font class.
-- Fixes Mesh CollisionShape's.
-- Fixes for destroying CollisionObject that does not notify CollisionListener.
-- Fixes to PhysicsVehicle where wheels detach and may collide with body.
-- Fixes to encoder spotlight for properly extracting inner and outer angle from FBX.
-- Fixes encoder computed Light falloff attenuation values.
-- Fixes to invalid assertion in AnimationClip.
-- Fixes for FrameBuffer width/height goeing out of date.
-- Fixes for incorrect RenderState Type specifier.
-- Fixes to FileSystem for Windows file paths.
-- Fixes to improve speed of installation of binaries via install.sh/.bat scripts.
-- Fixes related to disable and non-visible controls not receiving input.
-- Fixes to Bundle, Font, Properties and SceneLoader to use GP_WARN and improve locations of errors.
-- Fixes to encoder related to Material generation.
-
-## v1.7.0
-
-- Adds -m parameter to encoder to support exporting Material from FBX scenes.
-- Adds encoder animation grouping arguments for auto grouping and disabling grouping via -g:auto and -g:off
-- Adds UI ImageControl
-- Adds UI control events for enter and leave.
-- Adds UI and theme support for focus state on controls.
-- Adds Gamepad support in UI.
-- Adds smooth interial mouse scrolling.
-- Adds keyboard event handling code that was missed on some UI containers and controls.
-- Adds Game accelerometer and gyro improvements.
-- Adds XBox 360 controller support to MacOS X.
-- Adds RenderState enum for supporting cull side definition for front, back and front-back culling.
-- Adds a lua function "convert(object, className)" that will convert a gameplay userdata object to another class type by changing the metatable. (For example: This lets you convert Control to Button in lua)
-- Adds gesture events to script.
-- Adds script friendly verions of Camera:project(..)
-- Adds support for defining lights in .scene file.
-- Adds MaterialParameter setter that are script friendly.
-- Adds methods to FrameBuffer for querying render target info.
-- Adds FileSystem::getDirectoryName()
-- Adds support so that Properties can be loaded relative to .property files.
-- Adds methods on ScriptController for registering and unregisering global script callback functions.
-- Adds Game::resizeEvent(..)
-- Adds Game::getArguments()
-- Adds Scene::load() so it can load from ".gpb" files.
-- Adds some additional operators overloads for Vector classes.
-- Adds RenderState::clearParameter method to allow existing material parameter values/bindings to be cleared.
-- Adds loopBlendTime property for animation clips to support interpolating between the end points of an animation clip when looping.
-- Fixes Xcode support to be up to date to version 6.1
-- Fixes Form::projectPoint for forms that are scaled.
-- Fixes Bullet NEON build problems.
-- Fixes problem with static rigid bodies attached to nodes.
-- Fixes problems with ghost objects and kinimatic rigid bodies.
-- Fixes userData pointer that was not cloned properly when cloning a node.
-- Fixes bug in createChannel with keyCount = 1.
-- Fixes encoder to ignore 1 frame animations caused by FBX export on Blender.
-- Fixes buggy tab order in UI.
-- Fixes touch event problems not propagating up on mobile touch platforms.
-- Fixes parent relationship on cloned Technique and Pass.
-- Fixes Node to include light contribution for bounding volume computations.
-- Fixed issue where multiple samplers pointing to the same texture would share the same state instead of using sampler-specific filter and wrap state.
-- Fixes calculation of the transform matrix in FBX encoder for lights properly considering vectors like pre and post rotation scenarios.
-- Fixes blurry borders on UI forms by using proper texture filtering.
-- Fixes lua dofile on Windows.
-- Fixes in colored shader when using spot ligts.
-- Fixes issue in encoder which was converting point lights into ambient lights when they had no decay.
-- Fixes to CMake projects on different platforms.
-- Cleans up Platform by moving commong platform code to Platform.cpp
-- Cleans up and changes Gamepad APIs.
-- Cleans repo directory restructure dropping gameplay- prefix on many folders and files.
-- Removes bin and external-deps folder/contents to external server with new install scripts that are now required to be run after cloning the repo.
-- Removes pre-compiled api/html docs to reduce repository bloat.
-- Removes support for COLLADA DAE and now support FBX.
-- Removes middle mouse button simulated desktop accelerometer.
-
-## v1.6.0
-
-- Adds file Stream interface for reading/writing files instead of using fread/fwrite. 
-- Adds Terrain class to support for heightmap based terrains featuring LOD, multiple surface layers, loading from PNG, RAW8/16, full transform, physics, patch culling and verticle skirt for cracks.
-- Adds object-space normal map generation to gameplay-encoder for terrain normal map generation.
-- Adds scene support for loading .terrain files in .scene files.
-- Adds scene support for inline cameras to .scene files.
-- Adds suppoft for defining .scene files without 'path' to gpb. New node can not be create in .scene file.
-- Adds static Scene::getScene(const char*) to query currently active scenes in a game, helpful for script access.
-- Adds support for multiple translate, rotate and scale commands in a single node entity within .scene files, processed in-order they are defined.
-- Adds scene support for material auto binding scene ambient color, light color and light direction.
-- Adds support for setting the depth compare function on materials.
-- Adds support for texture/sampler arrays being passed to materials.
-- Adds support for loading uncompressed DDS textures for the following formats: R8G8B8, A8R8G8B8, A8B8G8R8, X8R8G8B8, X8B8G8R8
-- Adds improvments to prefer higher quality mipmap generation.
-- Adds improved Gamepad API support for button enumeration, triggers and some mobile Gamepad support on BlackBerry.
-- Adds additional gameplay-tests for billboards, forms, gamepads and lights.
-- Adds support for launching the browser via launchURL(const char*).
-- Adds physics support for setLinearFactor and setAngularFactor  on rigid bodies.
-- Adds methods to PhysicsCollisionObject to allow conversion to subclass types (i.e. PhysicsRigidBody, PhysicsCharacter, etc) from script.
-- Adds option for fullscreen without width/height config to use native desktop resolution.
-- Adds Linux support for OpenAL PulseAudio back-end.
-- Adds support for latest Bullet Physics 2.81 with NEON optimizations for mobile targets.
-- Adds support for preprocessor directive NO_LUA_BINDINGS in the gameplay project to omit inclusion of generated lua bindings in compilation for developer mode value. 
-- Adds optimizations to Lua generator to only write generated files if they differ from existing files, reducing both build times and committing of unchanged script binding files.
-- Adds changes to Slider for setValueTextVisible, setValueTextAlignment, setValueTextPrecision and getters.
-- Adds Microsoft Windows 7 64-bit support.
-- Adds Apple iOS 6 support.
-- Fixes to external-deps to reduce the size of the libraries on Windows.
-- Fixes for Android to no longer need to copy files to the SD card before reading them. None of the Android samples require an SD card.
-- Fixes for animation of opacity on UI and fonts.
-- Fixes in UI for removing controls and also setVisible(bool).
-- Fixes for UI controls missing on MacOSX.
-- Fixes for setting UI alignment programmatically.
-- Fixes for lighting shaders.
-- Fixes to the texture minification mode from GL_LINEAR_MIPMAP_LINEAR to GL_NEAREST_MIPMAP_LINEAR for newly created textures with mipmaps.
-- Fixes minor memory leaks and possible access violations when calling Game::exit() from script.
-- Fixes physics debug drawing for large scenes causing the internal MeshBatch to grow to an enormous size.
-
-## v1.5.0
-
-- Linux support. (tested on Ubuntu 12)
-- CMake support for makefile generation for Linux.
-- Gamepad API support for desktops.
-- Touch gesture support for tap, swipe and pinch.
-- Vehicle physics support via new PhysicsVehicle and PhysicsVehicleWheel classes.
-- Adds new racer sample (sample06-racer).
-- 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 Visual Studio Plug-in support for BlackBerry PlayBook and BlackBerry 10.
-- Adds configurable multi-sampling anti-aliasing support. 
-- Adds updates to latest FBX SDK 2013.3.
-- Adds file formats documentation for game.config .scene, .material, .animation, .physics, .particle
-- Adds Game/Platform::canExit for testing device capabilities to quit. (only ios)
-- Web community forums at http://www.gameplay3d.org/forums.
-- Changed keyTimes from unsigned long[]  to unsigned int[]. (breaks compat. in AnimationTarget and Animation::Channel)
-- Fixes 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 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 errors to be treated as runtime warnings.
-- Fixes setVertexData to pointers instead of constant data.
-- Fixes AudioSource so that it doesn't loop by default.
-- Fixes minor UI scrolling issues.
-
-## v1.4.0
-
-- Lua script bindings for all gameplay interfaces.
-- Lua script binding generator tool (gameplay-luagen) for generating gameplay Lua bindings from doxygen xml output.
-- AIController, AIAgent, AIStateMachine, AIState and AIMessage classes for scripted AI support.
-- Sample for sample05-lua to demonstrate basic Lua with AI scripting.
-- Gamepad class with virtual gamepad support.
-- Pre-built versions gameplay-encoder added to bin folder with TTF, DAE and FBX support built-in.
-- Improved modular shaders with support for #include in shaders. (breaks compat. for shaders)
-- LightMap support into colored-unlit.frag and textured-unlit.frag shaders.
-- Adds cloning and wireframing features to sample03-character.
-- Adds kick the ball on the sample03-character to demonstrate 2 buttons and more physics.
-- Fixes missing mouse events on UI controls.
-- Fixes to gameplay-encoder to prompt user for font size if not specified.
-- Fixes to add "-g" as short form argument for grouping animations.
-- Fixes node cloning.
-- Fixes to gameplay-encoder for output file path when encoding fonts.
-- Fixes to FrameBuffer, RenderTarget and DepthStencilTarget.
-- Fixes user switching in MacOSX to other applications with Apple-Tab.
-- Fixes measureText with empty string to be proper size.
-- Fixes for aliased text by applying linear filtering by default on Fonts.
-- Fixes RenderState::StateBlock::bindNoRestore() issue where blend function was not restored to the proper defaults.
-- Fixes some inconsistencies in Game event method names for menuEvent. (breaks compat. in Game)
-- Fixes some inconsistencies with AnimationClip::getID() to be same as Node::getId() and other classes. (breaks compat. in AnimationClip)
-- Fixes to gameplay-encoder and PhysicsRigidBody for heightmaps which adds height precision into generated heightmap png's.
-
-## v1.3.0
-
-- Portrait mode games on mobile platforms.
-- Fullscreen and configurable game resolutions on desktop platforms.
-- User Interface support for scrolling with scrollbars on Container.
-- PVRTC, ATC and DXT texture compression support.
-- Performance improvements in user interface forms and text.
-- Performance improvements in animations on transforms.
-- Performance improvements using NEON math for BlackBerry and iOS.
-- Fixes for improvements in error handling throughout all systems.
-- Fixes supporting built-in Maya COLLADA exporter via DAE_FBX export.
-- Fixes for latest FBX SDK 2013 support.
-- Fixes for loading from some WAV files that were crashing.
-- Fixes for From/By animations.
-- Fixes allowing all inline properties loaded within .scene files. (breaks compat. for .scene)
-- Fixes in .scene files for collisionObject definitions (breaks compat. for .scene)
-- Fixes for depth/z-ordering of controls.
-
-## v1.2.0
-
-- BlackBerry 10 support.
-- iOS 5.1 support.
-- Android 2.3+ support.
-- User interface system with declarative forms and themes.
-- Bluetooth keyboard/mouse support on BlackBerry platform.
-- Developer guide.
-- Sample/tutorial for sample03-character.
-- Sample for sample04-particles to demonstrate particle emitters.
-- Fixes for loading properties from URL.
-- Fixes on Win32/MacOSX for when mouse pointer leaves the window and returns.
-- Fixes to accelerometer for Android.
-- Fixes in animation blending.
-- Fixes to GPB for loading from single node and parent node. (breaks compat. for .gpb)
-
-## v1.1.0
-
-- FBX support in gameplay-encoder.
-- MacOSX platform support using XCode.
-- Off-screen rendering functionality using FrameBuffer.
-- Loading 3D scenes using declarative  .scene files.
-- Loading audio from .ogg files using vorbis.
-- Loading AudioSources from .audio files.
-- Loading Animations from .animation files.
-- AnimationClip support for cross fading.
-- Physics support using Bullet Physics.
-- Cross-platform new project generator.
-- Overloaded operators in Math classes.
-- Font improvements for justify, clip, wrap and scaling.
-- Fixes for Font::drawText to use point size and not float scalar.
-- Fixes for memory leaks in and fixes to AnimationTarget.
-- Fixes for bumped and parallax shaders.
-- Fixes to simplify folders for resources in samples.
-- Fixes to the material/shader system.
-- Fixes to the ParticleEmitter.
-
-## v1.0.0
-
-- Initial release.
-
-
-
-

+ 0 - 30
CMakeLists.txt

@@ -1,30 +0,0 @@
-cmake_minimum_required(VERSION 2.8)
-
-project(GamePlay)
-
-set(GAMEPLAY_VERSION 3.0.0)
-set(CMAKE_C_COMPILER_INIT g++)
-
-# debug
-message( "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}" )
-if ( "${CMAKE_BUILD_TYPE}" STREQUAL "DEBUG" )
-    add_definitions(-D_DEBUG)
-endif()
-
-# architecture
-if ( CMAKE_SIZEOF_VOID_P EQUAL 8 )
-set(ARCH_DIR "x64")
-else()
-set(ARCH_DIR "x86")
-endif()
-
-# gameplay library
-add_subdirectory(gameplay)
-
-# gameplay samples
-add_subdirectory(samples)
-
-# gameplay encoder
-# A pre-compiled executable can be found in 'gameplay/bin'. Uncomment to build yourself.
-#add_subdirectory(tools/encoder)
-#add_subdirectory(tools/luagen)

+ 1 - 32
README.md

@@ -1,32 +1 @@
-<img src="https://raw.githubusercontent.com/gameplay3d/GamePlay/master/gameplay/res/icon.png" width=100/>
-
-## GamePlay v3.0.0
-
-GamePlay is an open-source, cross-platform, C++ game framework/engine for creating 2D/3D mobile and desktop games.
-
-- [Website](http://www.gameplay3d.io/)
-- [Wiki](https://github.com/gameplay3d/GamePlay/wiki)
-- [API](http://gameplay3d.github.io/GamePlay/api/index.html)
-- [Development Guide](https://github.com/gameplay3d/GamePlay/wiki#wiki-Development_Guide)
-- [Community Group](https://groups.google.com/d/forum/gameplay3d-developers)
-
-## Supported Platforms
-- [Windows](https://github.com/gameplay3d/GamePlay/wiki/Visual-Studio-Setup)
-- [MacOSX](https://github.com/gameplay3d/GamePlay/wiki/Xcode-Setup)
-- [Linux](https://github.com/gameplay3d/GamePlay/wiki/CMake-Linux-Setup)
-- [iOS](https://github.com/gameplay3d/GamePlay/wiki/Xcode-Setup)
-- [Android](https://github.com/gameplay3d/GamePlay/wiki/Android-NDK-Setup)
-
-## License
-Open-source under [Apache 2.0 license](http://www.tldrlegal.com/license/apache-license-2.0-%28apache-2.0%29).
-
-## Bug Reporting
-Please log bugs under [Issues](https://github.com/gameplay3d/GamePlay/issues) on github.
-
-## Disclaimer
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, 
-INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A 
-PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 
-TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 
-OTHER DEALINGS IN THE SOFTWARE.
+## Gameplay v4.0.0

+ 0 - 3
api/README.md

@@ -1,3 +0,0 @@
-This folder is used to generate the doxygen api docs.
-
-

+ 0 - 34
api/header.html

@@ -1,34 +0,0 @@
-<!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>

+ 0 - 1783
gameplay.doxyfile

@@ -1,1783 +0,0 @@
-# Doxyfile 1.7.6.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-#       TAG = value [value, ...]
-# For lists items can also be appended using:
-#       TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file 
-# that follow. The default is UTF-8 which is also the encoding used for all 
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the 
-# iconv built into libc) for the transcoding. See 
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING      = UTF-8
-
-# The PROJECT_NAME tag is a single word (or sequence of words) that should 
-# identify the project. Note that if you do not use Doxywizard you need 
-# to put quotes around the project name if it contains spaces.
-
-PROJECT_NAME           = gameplay
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. 
-# This could be handy for archiving the generated documentation or 
-# if some version control system is used.
-
-PROJECT_NUMBER         = 3.0.0
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description 
-# for a project that appears at the top of each page and should give viewer 
-# a quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF          = 
-
-# With the PROJECT_LOGO tag one can specify an logo or icon that is 
-# included in the documentation. The maximum height of the logo should not 
-# exceed 55 pixels and the maximum width should not exceed 200 pixels. 
-# Doxygen will copy the logo to the output directory.
-
-PROJECT_LOGO           = 
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) 
-# base path where the generated documentation will be put. 
-# If a relative path is entered, it will be relative to the location 
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY       = ./api
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 
-# 4096 sub-directories (in 2 levels) under the output directory of each output 
-# format and will distribute the generated files over these directories. 
-# Enabling this option can be useful when feeding doxygen a huge amount of 
-# source files, where putting all generated files in the same directory would 
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS         = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all 
-# documentation generated by doxygen is written. Doxygen will use this 
-# information to generate all constant output in the proper language. 
-# The default language is English, other supported languages are: 
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, 
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, 
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English 
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, 
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, 
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE        = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will 
-# include brief member descriptions after the members that are listed in 
-# the file and class documentation (similar to JavaDoc). 
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC      = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend 
-# the brief description of a member or function before the detailed description. 
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the 
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF           = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator 
-# that is used to form the text in various listings. Each string 
-# in this list, if found as the leading text of the brief description, will be 
-# stripped from the text and the result after processing the whole list, is 
-# used as the annotated text. Otherwise, the brief description is used as-is. 
-# If left blank, the following values are used ("$name" is automatically 
-# replaced with the name of the entity): "The $name class" "The $name widget" 
-# "The $name file" "is" "provides" "specifies" "contains" 
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF       = "The $name class" \
-                         "The $name widget" \
-                         "The $name file" \
-                         is \
-                         provides \
-                         specifies \
-                         contains \
-                         represents \
-                         a \
-                         an \
-                         the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then 
-# Doxygen will generate a detailed section even if there is only a brief 
-# description.
-
-ALWAYS_DETAILED_SEC    = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all 
-# inherited members of a class in the documentation of that class as if those 
-# members were ordinary class members. Constructors, destructors and assignment 
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB  = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full 
-# path before files name in the file list and in the header files. If set 
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES        = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag 
-# can be used to strip a user-defined part of the path. Stripping is 
-# only done if one of the specified strings matches the left-hand part of 
-# the path. The tag can be used to show relative paths in the file list. 
-# If left blank the directory from which doxygen is run is used as the 
-# path to strip.
-
-STRIP_FROM_PATH        = 
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of 
-# the path mentioned in the documentation of a class, which tells 
-# the reader which header file to include in order to use a class. 
-# If left blank only the name of the header file containing the class 
-# definition is used. Otherwise one should specify the include paths that 
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH    = 
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter 
-# (but less readable) file names. This can be useful if your file system 
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES            = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen 
-# will interpret the first line (until the first dot) of a JavaDoc-style 
-# comment as the brief description. If set to NO, the JavaDoc 
-# comments will behave just like regular Qt-style comments 
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF      = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will 
-# interpret the first line (until the first dot) of a Qt-style 
-# comment as the brief description. If set to NO, the comments 
-# will behave just like regular Qt-style comments (thus requiring 
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF           = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen 
-# treat a multi-line C++ special comment block (i.e. a block of //! or /// 
-# comments) as a brief description. This used to be the default behaviour. 
-# The new default is to treat a multi-line C++ comment block as a detailed 
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented 
-# member inherits the documentation from any documented member that it 
-# re-implements.
-
-INHERIT_DOCS           = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce 
-# a new page for each member. If set to NO, the documentation of a member will 
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES  = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. 
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE               = 4
-
-# This tag can be used to specify a number of aliases that acts 
-# as commands in the documentation. An alias has the form "name=value". 
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to 
-# put the command \sideeffect (or @sideeffect) in the documentation, which 
-# will result in a user-defined paragraph with heading "Side Effects:". 
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES                = "script{1} = \xmlonly <xmlonly>\1</xmlonly> \endxmlonly"
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only). 
-# A mapping has the form "name=value". For example adding 
-# "class=itcl::class" will allow you to use the command class in the 
-# itcl::class meaning.
-
-TCL_SUBST              = 
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C 
-# sources only. Doxygen will then generate output that is more tailored for C. 
-# For instance, some of the names that are used will be different. The list 
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C  = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Java. For instance, namespaces will be presented as packages, qualified 
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA   = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran 
-# sources only. Doxygen will then generate output that is more tailored for 
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN   = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL 
-# sources. Doxygen will then generate output that is tailored for 
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL   = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it 
-# parses. With this tag you can assign which parser to use for a given extension. 
-# Doxygen has a built-in mapping, but you can override or extend it using this 
-# tag. The format is ext=language, where ext is a file extension, and language 
-# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, 
-# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make 
-# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C 
-# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions 
-# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING      = 
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want 
-# to include (a tag file for) the STL sources as input, then you should 
-# set this tag to YES in order to let doxygen match functions declarations and 
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. 
-# func(std::string) {}). This also makes the inheritance and collaboration 
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT    = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to 
-# enable parsing support.
-
-CPP_CLI_SUPPORT        = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. 
-# Doxygen will parse them like normal C++ but will assume all classes use public 
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT            = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter 
-# and setter methods for a property. Setting this option to YES (the default) 
-# will make doxygen replace the get and set methods by a property in the 
-# documentation. This will only work if the methods are indeed getting or 
-# setting a simple type. If this is not the case, or you want to show the 
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT   = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC 
-# tag is set to YES, then doxygen will reuse the documentation of the first 
-# member in the group (if any) for the other members of the group. By default 
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC   = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of 
-# the same type (for instance a group of public functions) to be put as a 
-# subgroup of that type (e.g. under the Public Functions section). Set it to 
-# NO to prevent subgrouping. Alternatively, this can be done per class using 
-# the \nosubgrouping command.
-
-SUBGROUPING            = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and 
-# unions are shown inside the group in which they are included (e.g. using 
-# @ingroup) instead of on a separate page (for HTML and Man pages) or 
-# section (for LaTeX and RTF).
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and 
-# unions with only public data fields will be shown inline in the documentation 
-# of the scope in which they are defined (i.e. file, namespace, or group 
-# documentation), provided this scope is documented. If set to NO (the default), 
-# structs, classes, and unions are shown on a separate page (for HTML and Man 
-# pages) or section (for LaTeX and RTF).
-
-INLINE_SIMPLE_STRUCTS  = NO
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum 
-# is documented as struct, union, or enum with the name of the typedef. So 
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct 
-# with name TypeT. When disabled the typedef will appear as a member of a file, 
-# namespace, or class. And the struct will be named TypeS. This can typically 
-# be useful for C code in case the coding convention dictates that all compound 
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT   = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to 
-# determine which symbols to keep in memory and which to flush to disk. 
-# When the cache is full, less often used symbols will be written to disk. 
-# For small to medium size projects (<1000 input files) the default value is 
-# probably good enough. For larger projects a too small cache size can cause 
-# doxygen to be busy swapping symbols to and from disk most of the time 
-# causing a significant performance penalty. 
-# If the system has enough physical memory increasing the cache will improve the 
-# performance by keeping more symbols in memory. Note that the value works on 
-# a logarithmic scale so increasing the size by one will roughly double the 
-# memory usage. The cache size is given by this formula: 
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, 
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-SYMBOL_CACHE_SIZE      = 0
-
-# Similar to the SYMBOL_CACHE_SIZE the size of the symbol lookup cache can be 
-# set using LOOKUP_CACHE_SIZE. This cache is used to resolve symbols given 
-# their name and scope. Since this can be an expensive process and often the 
-# same symbol appear multiple times in the code, doxygen keeps a cache of 
-# pre-resolved symbols. If the cache is too small doxygen will become slower. 
-# If the cache is too large, memory is wasted. The cache size is given by this 
-# formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range is 0..9, the default is 0, 
-# corresponding to a cache size of 2^16 = 65536 symbols.
-
-LOOKUP_CACHE_SIZE      = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in 
-# documentation are documented, even if no documentation was available. 
-# Private class members and static file members will be hidden unless 
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL            = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class 
-# will be included in the documentation.
-
-EXTRACT_PRIVATE        = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file 
-# will be included in the documentation.
-
-EXTRACT_STATIC         = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) 
-# defined locally in source files will be included in the documentation. 
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES  = NO
-
-# This flag is only useful for Objective-C code. When set to YES local 
-# methods, which are defined in the implementation section but not in 
-# the interface are included in the documentation. 
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS  = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be 
-# extracted and appear in the documentation as a namespace called 
-# 'anonymous_namespace{file}', where file will be replaced with the base 
-# name of the file that contains the anonymous namespace. By default 
-# anonymous namespaces are hidden.
-
-EXTRACT_ANON_NSPACES   = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all 
-# undocumented members of documented classes, files or namespaces. 
-# If set to NO (the default) these members will be included in the 
-# various overviews, but no documentation section is generated. 
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS     = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all 
-# undocumented classes that are normally visible in the class hierarchy. 
-# If set to NO (the default) these classes will be included in the various 
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES     = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all 
-# friend (class|struct|union) declarations. 
-# If set to NO (the default) these declarations will be included in the 
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS  = YES
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any 
-# documentation blocks found inside the body of a function. 
-# If set to NO (the default) these blocks will be appended to the 
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS      = NO
-
-# The INTERNAL_DOCS tag determines if documentation 
-# that is typed after a \internal command is included. If the tag is set 
-# to NO (the default) then the documentation will be excluded. 
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS          = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate 
-# file names in lower-case letters. If set to YES upper-case letters are also 
-# allowed. This is useful if you have classes or files whose names only differ 
-# in case and if your file system supports case sensitive file names. Windows 
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES       = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen 
-# will show members with their full class and namespace scopes in the 
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES       = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen 
-# will put a list of the files that are included by a file in the documentation 
-# of that file.
-
-SHOW_INCLUDE_FILES     = YES
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen 
-# will list include files with double quotes in the documentation 
-# rather than with sharp brackets.
-
-FORCE_LOCAL_INCLUDES   = NO
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] 
-# is inserted in the documentation for inline members.
-
-INLINE_INFO            = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen 
-# will sort the (detailed) documentation of file and class members 
-# alphabetically by member name. If set to NO the members will appear in 
-# declaration order.
-
-SORT_MEMBER_DOCS       = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the 
-# brief documentation of file, namespace and class members alphabetically 
-# by member name. If set to NO (the default) the members will appear in 
-# declaration order.
-
-SORT_BRIEF_DOCS        = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen 
-# will sort the (brief and detailed) documentation of class members so that 
-# constructors and destructors are listed first. If set to NO (the default) 
-# the constructors will appear in the respective orders defined by 
-# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. 
-# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO 
-# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the 
-# hierarchy of group names into alphabetical order. If set to NO (the default) 
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES       = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be 
-# sorted by fully-qualified names, including namespaces. If set to 
-# NO (the default), the class list will be sorted only by class name, 
-# not including the namespace part. 
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. 
-# Note: This option applies only to the class list, not to the 
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME     = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to 
-# do proper type resolution of all parameters of a function it will reject a 
-# match between the prototype and the implementation of a member function even 
-# if there is only one candidate or it is obvious which candidate to choose 
-# by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen 
-# will still accept a match between prototype and implementation in such cases.
-
-STRICT_PROTO_MATCHING  = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or 
-# disable (NO) the todo list. This list is created by putting \todo 
-# commands in the documentation.
-
-GENERATE_TODOLIST      = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or 
-# disable (NO) the test list. This list is created by putting \test 
-# commands in the documentation.
-
-GENERATE_TESTLIST      = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or 
-# disable (NO) the bug list. This list is created by putting \bug 
-# commands in the documentation.
-
-GENERATE_BUGLIST       = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or 
-# disable (NO) the deprecated list. This list is created by putting 
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional 
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS       = 
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines 
-# the initial value of a variable or macro consists of for it to appear in 
-# the documentation. If the initializer consists of more lines than specified 
-# here it will be hidden. Use a value of 0 to hide initializers completely. 
-# The appearance of the initializer of individual variables and macros in the 
-# documentation can be controlled using \showinitializer or \hideinitializer 
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES  = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated 
-# at the bottom of the documentation of classes and structs. If set to YES the 
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES        = NO
-
-# If the sources in your project are distributed over multiple directories 
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy 
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES       = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. 
-# This will remove the Files entry from the Quick Index and from the 
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES             = NO
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the 
-# Namespaces page.  This will remove the Namespaces entry from the Quick Index 
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES        = NO
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that 
-# doxygen should invoke to get the current version for each file (typically from 
-# the version control system). Doxygen will invoke the program by executing (via 
-# popen()) the command <command> <input-file>, where <command> is the value of 
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file 
-# provided by doxygen. Whatever the program writes to standard output 
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER    = 
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed 
-# by doxygen. The layout file controls the global structure of the generated 
-# output files in an output format independent way. The create the layout file 
-# that represents doxygen's defaults, run doxygen with the -l option. 
-# You can optionally specify a file name after the option, if omitted 
-# DoxygenLayout.xml will be used as the name of the layout file.
-
-LAYOUT_FILE            = 
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files 
-# containing the references data. This must be a list of .bib files. The 
-# .bib extension is automatically appended if omitted. Using this command 
-# requires the bibtex tool to be installed. See also 
-# http://en.wikipedia.org/wiki/BibTeX for more info. For LaTeX the style 
-# of the bibliography can be controlled using LATEX_BIB_STYLE. To use this 
-# feature you need bibtex and perl available in the search path.
-
-CITE_BIB_FILES         = 
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated 
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET                  = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are 
-# generated by doxygen. Possible values are YES and NO. If left blank 
-# NO is used.
-
-WARNINGS               = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings 
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will 
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED   = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for 
-# potential errors in the documentation, such as not documenting some 
-# parameters in a documented function, or documenting parameters that 
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR      = YES
-
-# The WARN_NO_PARAMDOC option can be enabled to get warnings for 
-# functions that are documented, but have no documentation for their parameters 
-# or return value. If set to NO (the default) doxygen will only warn about 
-# wrong or incomplete parameter documentation, but not about the absence of 
-# documentation.
-
-WARN_NO_PARAMDOC       = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that 
-# doxygen can produce. The string should contain the $file, $line, and $text 
-# tags, which will be replaced by the file and line number from which the 
-# warning originated and the warning text. Optionally the format may contain 
-# $version, which will be replaced by the version of the file (if it could 
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT            = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning 
-# and error messages should be written. If left blank the output is written 
-# to stderr.
-
-WARN_LOGFILE           = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain 
-# documented source files. You may enter file names like "myfile.cpp" or 
-# directories like "/usr/src/myproject". Separate the files or directories 
-# with spaces.
-
-INPUT                  = ./gameplay/src
-
-# This tag can be used to specify the character encoding of the source files 
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
-# also the default input encoding. Doxygen uses libiconv (or the iconv built 
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for 
-# the list of possible encodings.
-
-INPUT_ENCODING         = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the 
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank the following patterns are tested: 
-# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh 
-# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py 
-# *.f90 *.f *.for *.vhd *.vhdl
-
-FILE_PATTERNS          = *.h \
-                         *.dox
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories 
-# should be searched for input files as well. Possible values are YES and NO. 
-# If left blank NO is used.
-
-RECURSIVE              = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be 
-# excluded from the INPUT source files. This way you can easily exclude a 
-# subdirectory from a directory tree whose root is specified with the INPUT tag. 
-# Note that relative paths are relative to the directory from which doxygen is 
-# run.
-
-EXCLUDE                = 
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or 
-# directories that are symbolic links (a Unix file system feature) are excluded 
-# from the input.
-
-EXCLUDE_SYMLINKS       = NO
-
-# If the value of the INPUT tag contains directories, you can use the 
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude 
-# certain files from those directories. Note that the wildcards are matched 
-# against the file with absolute path, so to exclude all test directories 
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS       = 
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names 
-# (namespaces, classes, functions, etc.) that should be excluded from the 
-# output. The symbol name can be a fully qualified name, a word, or if the 
-# wildcard * is used, a substring. Examples: ANamespace, AClass, 
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS        = 
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or 
-# directories that contain example code fragments that are included (see 
-# the \include command).
-
-EXAMPLE_PATH           = 
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the 
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
-# and *.h) to filter out the source-files in the directories. If left 
-# blank all files are included.
-
-EXAMPLE_PATTERNS       = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be 
-# searched for input files to be used with the \include or \dontinclude 
-# commands irrespective of the value of the RECURSIVE tag. 
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE      = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or 
-# directories that contain image that are included in the documentation (see 
-# the \image command).
-
-IMAGE_PATH             = 
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should 
-# invoke to filter for each input file. Doxygen will invoke the filter program 
-# by executing (via popen()) the command <filter> <input-file>, where <filter> 
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an 
-# input file. Doxygen will then use the output that the filter program writes 
-# to standard output.  If FILTER_PATTERNS is specified, this tag will be 
-# ignored.
-
-INPUT_FILTER           = 
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern 
-# basis.  Doxygen will compare the file name with each pattern and apply the 
-# filter if there is a match.  The filters are a list of the form: 
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further 
-# info on how filters are used. If FILTER_PATTERNS is empty or if 
-# non of the patterns match the file name, INPUT_FILTER is applied.
-
-FILTER_PATTERNS        = 
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using 
-# INPUT_FILTER) will be used to filter the input files when producing source 
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES    = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file 
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) 
-# and it is also possible to disable source filtering for a specific pattern 
-# using *.ext= (so without naming a filter). This option only has effect when 
-# FILTER_SOURCE_FILES is enabled.
-
-FILTER_SOURCE_PATTERNS = 
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will 
-# be generated. Documented entities will be cross-referenced with these sources. 
-# Note: To get rid of all source code in the generated output, make sure also 
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER         = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body 
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES         = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct 
-# doxygen to hide any special comment blocks from generated source code 
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS    = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES 
-# then for each documented function all documented 
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES 
-# then for each documented function all documented entities 
-# called/used by that function will be listed.
-
-REFERENCES_RELATION    = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) 
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from 
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will 
-# link to the source code.  Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code 
-# will point to the HTML generated by the htags(1) tool instead of doxygen 
-# built-in source browser. The htags tool is part of GNU's global source 
-# tagging system (see http://www.gnu.org/software/global/global.html). You 
-# will need version 4.8.6 or higher.
-
-USE_HTAGS              = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen 
-# will generate a verbatim copy of the header file for each class for 
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS       = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index 
-# of all compounds will be generated. Enable this if the project 
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX     = YES
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then 
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns 
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX    = 5
-
-# In case all classes in a project start with a common prefix, all 
-# classes will be put under the same header in the alphabetical index. 
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that 
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX          = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will 
-# generate HTML output.
-
-GENERATE_HTML          = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT            = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for 
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank 
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION    = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard header. Note that when using a custom header you are responsible  
-# for the proper inclusion of any scripts and style sheets that doxygen 
-# needs, which is dependent on the configuration options used. 
-# It is advised to generate a default header using "doxygen -w html 
-# header.html footer.html stylesheet.css YourConfigFile" and then modify 
-# that header. Note that the header is subject to change so you typically 
-# have to redo this when upgrading to a newer version of doxygen or when 
-# changing the value of configuration settings such as GENERATE_TREEVIEW!
-
-HTML_HEADER            = api/header.html
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for 
-# each generated HTML page. If it is left blank doxygen will generate a 
-# standard footer.
-
-HTML_FOOTER            = 
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
-# style sheet that is used by each HTML page. It can be used to 
-# fine-tune the look of the HTML output. If the tag is left blank doxygen 
-# will generate a default style sheet. Note that doxygen will try to copy 
-# the style sheet file to the HTML output directory, so don't put your own 
-# style sheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET        = 
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or 
-# other source files which should be copied to the HTML output directory. Note 
-# that these files will be copied to the base HTML output directory. Use the 
-# $relpath$ marker in the HTML_HEADER and/or HTML_FOOTER files to load these 
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that 
-# the files will be copied as-is; there are no commands or markers available.
-
-HTML_EXTRA_FILES       = 
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. 
-# Doxygen will adjust the colors in the style sheet and background images 
-# according to this color. Hue is specified as an angle on a colorwheel, 
-# see http://en.wikipedia.org/wiki/Hue for more information. 
-# For instance the value 0 represents red, 60 is yellow, 120 is green, 
-# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. 
-# The allowed range is 0 to 359.
-
-HTML_COLORSTYLE_HUE    = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of 
-# the colors in the HTML output. For a value of 0 the output will use 
-# grayscales only. A value of 255 will produce the most vivid colors.
-
-HTML_COLORSTYLE_SAT    = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to 
-# the luminance component of the colors in the HTML output. Values below 
-# 100 gradually make the output lighter, whereas values above 100 make 
-# the output darker. The value divided by 100 is the actual gamma applied, 
-# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, 
-# and 100 does not change the gamma.
-
-HTML_COLORSTYLE_GAMMA  = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML 
-# page will contain the date and time when the page was generated. Setting 
-# this to NO can help when comparing the output of multiple runs.
-
-HTML_TIMESTAMP         = YES
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, 
-# files or namespaces will be aligned in HTML using tables. If set to 
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS     = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML 
-# documentation will contain sections that can be hidden and shown after the 
-# page has loaded. For this to work a browser that supports 
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox 
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS  = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files 
-# will be generated that can be used as input for Apple's Xcode 3 
-# integrated development environment, introduced with OSX 10.5 (Leopard). 
-# To create a documentation set, doxygen will generate a Makefile in the 
-# HTML output directory. Running make will produce the docset in that 
-# directory and running "make install" will install the docset in 
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find 
-# it at startup. 
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html 
-# for more information.
-
-GENERATE_DOCSET        = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the 
-# feed. A documentation feed provides an umbrella under which multiple 
-# documentation sets from a single provider (such as a company or product suite) 
-# can be grouped.
-
-DOCSET_FEEDNAME        = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that 
-# should uniquely identify the documentation set bundle. This should be a 
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen 
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID       = org.doxygen.Project
-
-# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify 
-# the documentation publisher. This should be a reverse domain-name style 
-# string, e.g. com.mycompany.MyDocSet.documentation.
-
-DOCSET_PUBLISHER_ID    = org.doxygen.Publisher
-
-# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher.
-
-DOCSET_PUBLISHER_NAME  = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files 
-# will be generated that can be used as input for tools like the 
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) 
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP      = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can 
-# be used to specify the file name of the resulting .chm file. You 
-# can add a path in front of the file if the result should not be 
-# written to the html output directory.
-
-CHM_FILE               = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can 
-# be used to specify the location (absolute path including file name) of 
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run 
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION           = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag 
-# controls if a separate .chi index file is generated (YES) or that 
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI           = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING 
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file 
-# content.
-
-CHM_INDEX_ENCODING     = 
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag 
-# controls whether a binary table of contents is generated (YES) or a 
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC             = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members 
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND             = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and 
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated 
-# that can be used as input for Qt's qhelpgenerator to generate a 
-# Qt Compressed Help (.qch) of the generated HTML documentation.
-
-GENERATE_QHP           = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can 
-# be used to specify the file name of the resulting .qch file. 
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE               = 
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE          = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating 
-# Qt Help Project output. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER     = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to 
-# add. For more information please see 
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME   = 
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the 
-# custom filter to add. For more information please see 
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters"> 
-# Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS  = 
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this 
-# project's 
-# filter section matches. 
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes"> 
-# Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS  = 
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can 
-# be used to specify the location of Qt's qhelpgenerator. 
-# If non-empty doxygen will try to run qhelpgenerator on the generated 
-# .qhp file.
-
-QHG_LOCATION           = 
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files  
-# will be generated, which together with the HTML files, form an Eclipse help 
-# plugin. To install this plugin and make it available under the help contents 
-# menu in Eclipse, the contents of the directory containing the HTML and XML 
-# files needs to be copied into the plugins directory of eclipse. The name of 
-# the directory within the plugins directory should be the same as 
-# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before 
-# the help appears.
-
-GENERATE_ECLIPSEHELP   = NO
-
-# A unique identifier for the eclipse help plugin. When installing the plugin 
-# the directory name containing the HTML and XML files should also have 
-# this name.
-
-ECLIPSE_DOC_ID         = org.doxygen.Project
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) 
-# at top of each HTML page. The value NO (the default) enables the index and 
-# the value YES disables it. Since the tabs have the same information as the 
-# navigation tree you can set this option to NO if you already set 
-# GENERATE_TREEVIEW to YES.
-
-DISABLE_INDEX          = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index 
-# structure should be generated to display hierarchical information. 
-# If the tag value is set to YES, a side panel will be generated 
-# containing a tree-like index structure (just like the one that 
-# is generated for HTML Help). For this to work a browser that supports 
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). 
-# Windows users are probably better off using the HTML help feature. 
-# Since the tree basically has the same information as the tab index you 
-# could consider to set DISABLE_INDEX to NO when enabling this option.
-
-GENERATE_TREEVIEW      = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values 
-# (range [0,1..20]) that doxygen will group on one line in the generated HTML 
-# documentation. Note that a value of 0 will completely suppress the enum 
-# values from appearing in the overview section.
-
-ENUM_VALUES_PER_LINE   = 4
-
-# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, 
-# and Class Hierarchy pages using a tree view instead of an ordered list.
-
-USE_INLINE_TREES       = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be 
-# used to set the initial width (in pixels) of the frame in which the tree 
-# is shown.
-
-TREEVIEW_WIDTH         = 250
-
-# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open 
-# links to external symbols imported via tag files in a separate window.
-
-EXT_LINKS_IN_WINDOW    = NO
-
-# Use this tag to change the font size of Latex formulas included 
-# as images in the HTML documentation. The default is 10. Note that 
-# when you change the font size after a successful doxygen run you need 
-# to manually remove any form_*.png images from the HTML output directory 
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE       = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images 
-# generated for formulas are transparent PNGs. Transparent PNGs are 
-# not supported properly for IE 6.0, but are supported on all modern browsers. 
-# Note that when changing this option you need to delete any form_*.png files 
-# in the HTML output before the changes have effect.
-
-FORMULA_TRANSPARENT    = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax 
-# (see http://www.mathjax.org) which uses client side Javascript for the 
-# rendering instead of using prerendered bitmaps. Use this if you do not 
-# have LaTeX installed or if you want to formulas look prettier in the HTML 
-# output. When enabled you also need to install MathJax separately and 
-# configure the path to it using the MATHJAX_RELPATH option.
-
-USE_MATHJAX            = NO
-
-# When MathJax is enabled you need to specify the location relative to the 
-# HTML output directory using the MATHJAX_RELPATH option. The destination 
-# directory should contain the MathJax.js script. For instance, if the mathjax 
-# directory is located at the same level as the HTML output directory, then 
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the 
-# mathjax.org site, so you can quickly see the result without installing 
-# MathJax, but it is strongly recommended to install a local copy of MathJax 
-# before deployment.
-
-MATHJAX_RELPATH        = http://www.mathjax.org/mathjax
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or MathJax extension 
-# names that should be enabled during MathJax rendering.
-
-MATHJAX_EXTENSIONS     = 
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box 
-# for the HTML output. The underlying search engine uses javascript 
-# and DHTML and should work on any modern browser. Note that when using 
-# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets 
-# (GENERATE_DOCSET) there is already a search function so this one should 
-# typically be disabled. For large projects the javascript based search engine 
-# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
-
-SEARCHENGINE           = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be 
-# implemented using a PHP enabled web server instead of at the web client 
-# using Javascript. Doxygen will generate the search PHP script and index 
-# file to put on the web server. The advantage of the server 
-# based approach is that it scales better to large projects and allows 
-# full text search. The disadvantages are that it is more difficult to setup 
-# and does not have live searching capabilities.
-
-SERVER_BASED_SEARCH    = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will 
-# generate Latex output.
-
-GENERATE_LATEX         = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT           = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be 
-# invoked. If left blank `latex' will be used as the default command name. 
-# Note that when enabling USE_PDFLATEX this option is only used for 
-# generating bitmaps for formulas in the HTML output, but not in the 
-# Makefile that is written to the output directory.
-
-LATEX_CMD_NAME         = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to 
-# generate index for LaTeX. If left blank `makeindex' will be used as the 
-# default command name.
-
-MAKEINDEX_CMD_NAME     = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact 
-# LaTeX documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_LATEX          = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used 
-# by the printer. Possible values are: a4, letter, legal and 
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE             = a4
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX 
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES         = 
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for 
-# the generated latex document. The header should contain everything until 
-# the first chapter. If it is left blank doxygen will generate a 
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER           = 
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for 
-# the generated latex document. The footer should contain everything after 
-# the last chapter. If it is left blank doxygen will generate a 
-# standard footer. Notice: only use this tag if you know what you are doing!
-
-LATEX_FOOTER           = 
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated 
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will 
-# contain links (just like the HTML output) instead of page references 
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS         = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of 
-# plain latex in the generated Makefile. Set this option to YES to get a 
-# higher quality PDF documentation.
-
-USE_PDFLATEX           = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. 
-# command to the generated LaTeX files. This will instruct LaTeX to keep 
-# running if errors occur, instead of asking the user for help. 
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE        = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not 
-# include the index chapters (such as File Index, Compound Index, etc.) 
-# in the output.
-
-LATEX_HIDE_INDICES     = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include 
-# source code with syntax highlighting in the LaTeX output. 
-# Note that which sources are shown also depends on other settings 
-# such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE      = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the 
-# bibliography, e.g. plainnat, or ieeetr. The default style is "plain". See 
-# http://en.wikipedia.org/wiki/BibTeX for more info.
-
-LATEX_BIB_STYLE        = plain
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output 
-# The RTF output is optimized for Word 97 and may not look very pretty with 
-# other RTF readers or editors.
-
-GENERATE_RTF           = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT             = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact 
-# RTF documents. This may be useful for small projects and may help to 
-# save some trees in general.
-
-COMPACT_RTF            = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated 
-# will contain hyperlink fields. The RTF file will 
-# contain links (just like the HTML output) instead of page references. 
-# This makes the output suitable for online browsing using WORD or other 
-# programs which support those fields. 
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS         = NO
-
-# Load style sheet definitions from file. Syntax is similar to doxygen's 
-# config file, i.e. a series of assignments. You only have to provide 
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE    = 
-
-# Set optional variables used in the generation of an rtf document. 
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE    = 
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will 
-# generate man pages
-
-GENERATE_MAN           = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT             = man
-
-# The MAN_EXTENSION tag determines the extension that is added to 
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION          = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output, 
-# then it will generate one additional man file for each entity 
-# documented in the real man page(s). These additional files 
-# only source the real man page, but without them the man command 
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS              = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will 
-# generate an XML file that captures the structure of 
-# the code including all documentation.
-
-GENERATE_XML           = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. 
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be 
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT             = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_SCHEMA             = 
-
-# The XML_DTD tag can be used to specify an XML DTD, 
-# which can be used by a validating XML parser to check the 
-# syntax of the XML files.
-
-XML_DTD                = 
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will 
-# dump the program listings (including syntax highlighting 
-# and cross-referencing information) to the XML output. Note that 
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING     = NO
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will 
-# generate an AutoGen Definitions (see autogen.sf.net) file 
-# that captures the structure of the code including all 
-# documentation. Note that this feature is still experimental 
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF   = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will 
-# generate a Perl module file that captures the structure of 
-# the code including all documentation. Note that this 
-# feature is still experimental and incomplete at the 
-# moment.
-
-GENERATE_PERLMOD       = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate 
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able 
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX          = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be 
-# nicely formatted so it can be parsed by a human reader.  This is useful 
-# if you want to understand what is going on.  On the other hand, if this 
-# tag is set to NO the size of the Perl module output will be much smaller 
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY         = YES
-
-# The names of the make variables in the generated doxyrules.make file 
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. 
-# This is useful so different doxyrules.make files included by the same 
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX = 
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will 
-# evaluate all C-preprocessor directives found in the sources and include 
-# files.
-
-ENABLE_PREPROCESSING   = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro 
-# names in the source code. If set to NO (the default) only conditional 
-# compilation will be performed. Macro expansion can be done in a controlled 
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION        = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES 
-# then the macro expansion is limited to the macros specified with the 
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF     = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files 
-# pointed to by INCLUDE_PATH will be searched when a #include is found.
-
-SEARCH_INCLUDES        = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that 
-# contain include files that are not input files but should be processed by 
-# the preprocessor.
-
-INCLUDE_PATH           = 
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard 
-# patterns (like *.h and *.hpp) to filter out the header-files in the 
-# directories. If left blank, the patterns specified with FILE_PATTERNS will 
-# be used.
-
-INCLUDE_FILE_PATTERNS  = 
-
-# The PREDEFINED tag can be used to specify one or more macro names that 
-# are defined before the preprocessor is started (similar to the -D option of 
-# gcc). The argument of the tag is a list of macros of the form: name 
-# or name=definition (no spaces). If the definition and the = are 
-# omitted =1 is assumed. To prevent a macro definition from being 
-# undefined via #undef or recursively expanded use the := operator 
-# instead of the = operator.
-
-PREDEFINED             = 
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then 
-# this tag can be used to specify a list of macro names that should be expanded. 
-# The macro definition that is found in the sources will be used. 
-# Use the PREDEFINED tag if you want to use a different macro definition that 
-# overrules the definition found in the source code.
-
-EXPAND_AS_DEFINED      = 
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then 
-# doxygen's preprocessor will remove all references to function-like macros 
-# that are alone on a line, have an all uppercase name, and do not end with a 
-# semicolon, because these will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS   = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles. 
-# Optionally an initial location of the external documentation 
-# can be added for each tagfile. The format of a tag file without 
-# this location is as follows: 
-#   TAGFILES = file1 file2 ... 
-# Adding location for the tag files is done as follows: 
-#   TAGFILES = file1=loc1 "file2 = loc2" ... 
-# where "loc1" and "loc2" can be relative or absolute paths or 
-# URLs. If a location is present for each tag, the installdox tool 
-# does not have to be run to correct the links. 
-# Note that each tag file must have a unique name 
-# (where the name does NOT include the path) 
-# If a tag file is not located in the directory in which doxygen 
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES               = 
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create 
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE       = 
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed 
-# in the class index. If set to NO only the inherited external classes 
-# will be listed.
-
-ALLEXTERNALS           = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed 
-# in the modules index. If set to NO, only the current project's groups will 
-# be listed.
-
-EXTERNAL_GROUPS        = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script 
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH              = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will 
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base 
-# or super classes. Setting the tag to NO turns the diagrams off. Note that 
-# this option also works with HAVE_DOT disabled, but it is recommended to 
-# install and use dot, since it yields more powerful graphs.
-
-CLASS_DIAGRAMS         = YES
-
-# You can define message sequence charts within doxygen comments using the \msc 
-# command. Doxygen will then run the mscgen tool (see 
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the 
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where 
-# the mscgen tool resides. If left empty the tool is assumed to be found in the 
-# default search path.
-
-MSCGEN_PATH            = 
-
-# If set to YES, the inheritance and collaboration graphs will hide 
-# inheritance and usage relations if the target is undocumented 
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS   = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is 
-# available from the path. This tool is part of Graphviz, a graph visualization 
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section 
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT               = NO
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is 
-# allowed to run in parallel. When set to 0 (the default) doxygen will 
-# base this on the number of processors available in the system. You can set it 
-# explicitly to a value larger than 0 to get control over the balance 
-# between CPU load and processing speed.
-
-DOT_NUM_THREADS        = 0
-
-# By default doxygen will use the Helvetica font for all dot files that 
-# doxygen generates. When you want a differently looking font you can specify 
-# the font name using DOT_FONTNAME. You need to make sure dot is able to find 
-# the font, which can be done by putting it in a standard location or by setting 
-# the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the 
-# directory containing the font.
-
-DOT_FONTNAME           = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. 
-# The default size is 10pt.
-
-DOT_FONTSIZE           = 10
-
-# By default doxygen will tell dot to use the Helvetica font. 
-# If you specify a different font using DOT_FONTNAME you can use DOT_FONTPATH to 
-# set the path where dot can find it.
-
-DOT_FONTPATH           = 
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect inheritance relations. Setting this tag to YES will force the 
-# CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH            = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for each documented class showing the direct and 
-# indirect implementation dependencies (inheritance, containment, and 
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH    = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS           = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and 
-# collaboration diagrams in a style similar to the OMG's Unified Modeling 
-# Language.
-
-UML_LOOK               = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the 
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS     = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT 
-# tags are set to YES then doxygen will generate a graph for each documented 
-# file showing the direct and indirect include dependencies of the file with 
-# other documented files.
-
-INCLUDE_GRAPH          = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and 
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each 
-# documented header file showing the documented files that directly or 
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH      = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then 
-# doxygen will generate a call dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable call graphs 
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH             = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then 
-# doxygen will generate a caller dependency graph for every global function 
-# or class method. Note that enabling this option will significantly increase 
-# the time of a run. So in most cases it will be better to enable caller 
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH           = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen 
-# will generate a graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY    = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES 
-# then doxygen will show the dependencies a directory has on other directories 
-# in a graphical way. The dependency relations are determined by the #include 
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH        = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images 
-# generated by dot. Possible values are svg, png, jpg, or gif. 
-# If left blank png will be used. If you choose svg you need to set 
-# HTML_FILE_EXTENSION to xhtml in order to make the SVG files 
-# visible in IE 9+ (other browsers do not have this requirement).
-
-DOT_IMAGE_FORMAT       = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to 
-# enable generation of interactive SVG images that allow zooming and panning. 
-# Note that this requires a modern browser other than Internet Explorer. 
-# Tested and working are Firefox, Chrome, Safari, and Opera. For IE 9+ you 
-# need to set HTML_FILE_EXTENSION to xhtml in order to make the SVG files 
-# visible. Older versions of IE do not have SVG support.
-
-INTERACTIVE_SVG        = NO
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be 
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH               = 
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that 
-# contain dot files that are included in the documentation (see the 
-# \dotfile command).
-
-DOTFILE_DIRS           = 
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that 
-# contain msc files that are included in the documentation (see the 
-# \mscfile command).
-
-MSCFILE_DIRS           = 
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of 
-# nodes that will be shown in the graph. If the number of nodes in a graph 
-# becomes larger than this value, doxygen will truncate the graph, which is 
-# visualized by representing a node as a red box. Note that doxygen if the 
-# number of direct children of the root node in a graph is already larger than 
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note 
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES    = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the 
-# graphs generated by dot. A depth value of 3 means that only nodes reachable 
-# from the root by following a path via at most 3 edges will be shown. Nodes 
-# that lay further from the root node will be omitted. Note that setting this 
-# option to 1 or 2 may greatly reduce the computation time needed for large 
-# code bases. Also note that the size of a graph can be further restricted by 
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH    = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent 
-# background. This is disabled by default, because dot on Windows does not 
-# seem to support this out of the box. Warning: Depending on the platform used, 
-# enabling this option may lead to badly anti-aliased labels on the edges of 
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT        = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output 
-# files in one run (i.e. multiple -o and -T options on the command line). This 
-# makes dot run faster, but since only newer versions of dot (>1.8.10) 
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS      = NO
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will 
-# generate a legend page explaining the meaning of the various boxes and 
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND        = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will 
-# remove the intermediate dot files that are used to generate 
-# the various graphs.
-
-DOT_CLEANUP            = YES

+ 0 - 69
gameplay.sln

@@ -1,69 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Express 2013 for Windows Desktop
-VisualStudioVersion = 12.0.21005.1
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gameplay", "gameplay\gameplay.vcxproj", "{1032BA4B-57EB-4348-9E03-29DD63E80E4A}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample-browser", "samples\browser\sample-browser.vcxproj", "{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}"
-	ProjectSection(ProjectDependencies) = postProject
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A} = {1032BA4B-57EB-4348-9E03-29DD63E80E4A}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample-spaceship", "samples\spaceship\sample-spaceship.vcxproj", "{CC37B8E9-6402-4841-8D6A-5D908A5909B3}"
-	ProjectSection(ProjectDependencies) = postProject
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A} = {1032BA4B-57EB-4348-9E03-29DD63E80E4A}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample-character", "samples\character\sample-character.vcxproj", "{87388E8B-F3CF-428F-BC2C-C1886248C111}"
-	ProjectSection(ProjectDependencies) = postProject
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A} = {1032BA4B-57EB-4348-9E03-29DD63E80E4A}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "sample-racer", "samples\racer\sample-racer.vcxproj", "{82522888-E09A-ED48-AD7D-247237B37B3A}"
-	ProjectSection(ProjectDependencies) = postProject
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A} = {1032BA4B-57EB-4348-9E03-29DD63E80E4A}
-	EndProjectSection
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|x64 = Debug|x64
-		DebugMem|x64 = DebugMem|x64
-		Release|x64 = Release|x64
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A}.Debug|x64.ActiveCfg = Debug|x64
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A}.Debug|x64.Build.0 = Debug|x64
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A}.DebugMem|x64.ActiveCfg = DebugMem|x64
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A}.DebugMem|x64.Build.0 = DebugMem|x64
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A}.Release|x64.ActiveCfg = Release|x64
-		{1032BA4B-57EB-4348-9E03-29DD63E80E4A}.Release|x64.Build.0 = Release|x64
-		{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}.Debug|x64.ActiveCfg = Debug|x64
-		{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}.Debug|x64.Build.0 = Debug|x64
-		{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}.DebugMem|x64.ActiveCfg = DebugMem|x64
-		{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}.DebugMem|x64.Build.0 = DebugMem|x64
-		{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}.Release|x64.ActiveCfg = Release|x64
-		{0F27C8C4-58B2-E367-8D1F-01B714FDBF1B}.Release|x64.Build.0 = Release|x64
-		{CC37B8E9-6402-4841-8D6A-5D908A5909B3}.Debug|x64.ActiveCfg = Debug|x64
-		{CC37B8E9-6402-4841-8D6A-5D908A5909B3}.Debug|x64.Build.0 = Debug|x64
-		{CC37B8E9-6402-4841-8D6A-5D908A5909B3}.DebugMem|x64.ActiveCfg = DebugMem|x64
-		{CC37B8E9-6402-4841-8D6A-5D908A5909B3}.DebugMem|x64.Build.0 = DebugMem|x64
-		{CC37B8E9-6402-4841-8D6A-5D908A5909B3}.Release|x64.ActiveCfg = Release|x64
-		{CC37B8E9-6402-4841-8D6A-5D908A5909B3}.Release|x64.Build.0 = Release|x64
-		{87388E8B-F3CF-428F-BC2C-C1886248C111}.Debug|x64.ActiveCfg = Debug|x64
-		{87388E8B-F3CF-428F-BC2C-C1886248C111}.Debug|x64.Build.0 = Debug|x64
-		{87388E8B-F3CF-428F-BC2C-C1886248C111}.DebugMem|x64.ActiveCfg = DebugMem|x64
-		{87388E8B-F3CF-428F-BC2C-C1886248C111}.DebugMem|x64.Build.0 = DebugMem|x64
-		{87388E8B-F3CF-428F-BC2C-C1886248C111}.Release|x64.ActiveCfg = Release|x64
-		{87388E8B-F3CF-428F-BC2C-C1886248C111}.Release|x64.Build.0 = Release|x64
-		{82522888-E09A-ED48-AD7D-247237B37B3A}.Debug|x64.ActiveCfg = Debug|x64
-		{82522888-E09A-ED48-AD7D-247237B37B3A}.Debug|x64.Build.0 = Debug|x64
-		{82522888-E09A-ED48-AD7D-247237B37B3A}.DebugMem|x64.ActiveCfg = DebugMem|x64
-		{82522888-E09A-ED48-AD7D-247237B37B3A}.DebugMem|x64.Build.0 = DebugMem|x64
-		{82522888-E09A-ED48-AD7D-247237B37B3A}.Release|x64.ActiveCfg = Release|x64
-		{82522888-E09A-ED48-AD7D-247237B37B3A}.Release|x64.Build.0 = Release|x64
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-EndGlobal

+ 0 - 19
gameplay.xcworkspace/contents.xcworkspacedata

@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Workspace
-   version = "1.0">
-   <FileRef
-      location = "group:gameplay/gameplay.xcodeproj">
-   </FileRef>
-   <FileRef
-      location = "group:samples/browser/sample-browser.xcodeproj">
-   </FileRef>
-   <FileRef
-      location = "group:samples/character/sample-character.xcodeproj">
-   </FileRef>
-   <FileRef
-      location = "group:samples/racer/sample-racer.xcodeproj">
-   </FileRef>
-   <FileRef
-      location = "group:samples/spaceship/sample-spaceship.xcodeproj">
-   </FileRef>
-</Workspace>

+ 0 - 8
gameplay.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
-	<true/>
-</dict>
-</plist>

+ 0 - 185
gameplay/.cproject

@@ -1,185 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?>
-
-<cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
-	<storageModule moduleId="org.eclipse.cdt.core.settings">
-		<cconfiguration id="cdt.managedbuild.config.gnu.lib.debug.1678352131">
-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.lib.debug.1678352131" moduleId="org.eclipse.cdt.core.settings" name="Debug">
-				<externalSettings>
-					<externalSetting>
-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/gameplay"/>
-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/gameplay/Debug"/>
-						<entry flags="RESOLVED" kind="libraryFile" name="gameplay" srcPrefixMapping="" srcRootPath=""/>
-					</externalSetting>
-				</externalSettings>
-				<extensions>
-					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-				</extensions>
-			</storageModule>
-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-				<configuration artifactExtension="a" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.staticLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.staticLib" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.lib.debug.1678352131" name="Debug" parent="cdt.managedbuild.config.gnu.lib.debug">
-					<folderInfo id="cdt.managedbuild.config.gnu.lib.debug.1678352131." name="/" resourcePath="">
-						<toolChain id="cdt.managedbuild.toolchain.gnu.lib.debug.1261019646" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.lib.debug">
-							<targetPlatform id="cdt.managedbuild.target.gnu.platform.lib.debug.890249609" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.lib.debug"/>
-							<builder buildPath="${workspace_loc:/gameplay/Debug}" id="cdt.managedbuild.target.gnu.builder.lib.debug.895962601" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.lib.debug"/>
-							<tool command="ar" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="cdt.managedbuild.tool.gnu.archiver.lib.debug.708167895" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.lib.debug"/>
-							<tool command="g++" commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}" id="cdt.managedbuild.tool.gnu.cpp.compiler.lib.debug.777535448" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.lib.debug">
-								<option id="gnu.cpp.compiler.lib.debug.option.optimization.level.1229794772" name="Optimization Level" superClass="gnu.cpp.compiler.lib.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>
-								<option id="gnu.cpp.compiler.lib.debug.option.debugging.level.1539213802" name="Debug Level" superClass="gnu.cpp.compiler.lib.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>
-								<option id="gnu.cpp.compiler.option.preprocessor.def.1310031438" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
-									<listOptionValue builtIn="false" value="__linux__"/>
-									<listOptionValue builtIn="false" value="GP_USE_GAMEPAD"/>
-								</option>
-								<option id="gnu.cpp.compiler.option.include.paths.800094241" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/lua}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../../external-deps/include&quot;"/>
-									<listOptionValue builtIn="false" value="/usr/include/gtk-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/lib/x86_64-linux-gnu/gtk-2.0/include"/>
-									<listOptionValue builtIn="false" value="/usr/include/atk-1.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/cairo"/>
-									<listOptionValue builtIn="false" value="/usr/include/gdk-pixbuf-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/pango-1.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/gio-unix-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/freetype2"/>
-									<listOptionValue builtIn="false" value="/usr/include/glib-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/lib/x86_64-linux-gnu/glib-2.0/include"/>
-									<listOptionValue builtIn="false" value="/usr/include/pixman-1"/>
-									<listOptionValue builtIn="false" value="/usr/include/libpng12"/>
-									<listOptionValue builtIn="false" value="/usr/include/harfbuzz"/>
-								</option>
-								<option id="gnu.cpp.compiler.option.other.pic.224962351" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" value="false" valueType="boolean"/>
-								<option id="gnu.cpp.compiler.option.other.other.400565331" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -std=c++11 -lstdc++ -pthread&#9;" valueType="string"/>
-								<option id="gnu.cpp.compiler.option.warnings.wconversion.860278291" name="Implicit conversion warnings (-Wconversion)" superClass="gnu.cpp.compiler.option.warnings.wconversion" value="false" valueType="boolean"/>
-								<option id="gnu.cpp.compiler.option.warnings.allwarn.124718788" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="false" valueType="boolean"/>
-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.760206134" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
-							</tool>
-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.lib.debug.544132463" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.lib.debug">
-								<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.lib.debug.option.optimization.level.932372982" name="Optimization Level" superClass="gnu.c.compiler.lib.debug.option.optimization.level" valueType="enumerated"/>
-								<option id="gnu.c.compiler.lib.debug.option.debugging.level.1396320451" name="Debug Level" superClass="gnu.c.compiler.lib.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/>
-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.828880230" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-							</tool>
-							<tool id="cdt.managedbuild.tool.gnu.c.linker.base.53199152" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
-							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.1704479578" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base"/>
-							<tool id="cdt.managedbuild.tool.gnu.assembler.lib.debug.466993033" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.lib.debug">
-								<option id="gnu.both.asm.option.include.paths.1220313575" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.135160384" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
-							</tool>
-						</toolChain>
-					</folderInfo>
-				</configuration>
-			</storageModule>
-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings">
-				<externalSettings containerId="org.eclipse.cdt.managedbuilder.pkgconfig.extSettings" factoryId="org.eclipse.cdt.core.extension.container.factory">
-					<externalSetting contentTypes="org.eclipse.cdt.core.cSource:org.eclipse.cdt.core.cxxSource"/>
-					<externalSetting contentTypes="org.eclipse.cdt.managedbuilder.core.compiledObjectFile"/>
-				</externalSettings>
-			</storageModule>
-			<storageModule moduleId="packages"/>
-		</cconfiguration>
-		<cconfiguration id="cdt.managedbuild.config.gnu.lib.release.405865560">
-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.lib.release.405865560" moduleId="org.eclipse.cdt.core.settings" name="Release">
-				<externalSettings>
-					<externalSetting>
-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/gameplay"/>
-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/gameplay/Release"/>
-						<entry flags="RESOLVED" kind="libraryFile" name="gameplay" srcPrefixMapping="" srcRootPath=""/>
-					</externalSetting>
-				</externalSettings>
-				<extensions>
-					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-				</extensions>
-			</storageModule>
-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-				<configuration artifactExtension="a" artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.staticLib" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.staticLib" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.lib.release.405865560" name="Release" parent="cdt.managedbuild.config.gnu.lib.release">
-					<folderInfo id="cdt.managedbuild.config.gnu.lib.release.405865560." name="/" resourcePath="">
-						<toolChain id="cdt.managedbuild.toolchain.gnu.lib.release.1240021764" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.lib.release">
-							<targetPlatform id="cdt.managedbuild.target.gnu.platform.lib.release.124670092" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.lib.release"/>
-							<builder buildPath="${workspace_loc:/gameplay/Release}" id="cdt.managedbuild.target.gnu.builder.lib.release.1993392626" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Gnu Make Builder" parallelBuildOn="true" parallelizationNumber="optimal" superClass="cdt.managedbuild.target.gnu.builder.lib.release"/>
-							<tool id="cdt.managedbuild.tool.gnu.archiver.lib.release.954619908" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.lib.release"/>
-							<tool command="g++" id="cdt.managedbuild.tool.gnu.cpp.compiler.lib.release.1098041763" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.lib.release">
-								<option id="gnu.cpp.compiler.lib.release.option.optimization.level.965385539" name="Optimization Level" superClass="gnu.cpp.compiler.lib.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
-								<option id="gnu.cpp.compiler.lib.release.option.debugging.level.1041543613" name="Debug Level" superClass="gnu.cpp.compiler.lib.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>
-								<option id="gnu.cpp.compiler.option.preprocessor.def.458473463" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" valueType="definedSymbols">
-									<listOptionValue builtIn="false" value="__linux__"/>
-									<listOptionValue builtIn="false" value="GP_USE_GAMEPAD"/>
-								</option>
-								<option id="gnu.cpp.compiler.option.include.paths.1112278724" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/src/lua}&quot;"/>
-									<listOptionValue builtIn="false" value="&quot;../../external-deps/include&quot;"/>
-									<listOptionValue builtIn="false" value="/usr/include/gtk-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/lib/x86_64-linux-gnu/gtk-2.0/include"/>
-									<listOptionValue builtIn="false" value="/usr/include/atk-1.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/cairo"/>
-									<listOptionValue builtIn="false" value="/usr/include/gdk-pixbuf-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/pango-1.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/gio-unix-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/include/freetype2"/>
-									<listOptionValue builtIn="false" value="/usr/include/glib-2.0"/>
-									<listOptionValue builtIn="false" value="/usr/lib/x86_64-linux-gnu/glib-2.0/include"/>
-									<listOptionValue builtIn="false" value="/usr/include/pixman-1"/>
-									<listOptionValue builtIn="false" value="/usr/include/libpng12"/>
-									<listOptionValue builtIn="false" value="/usr/include/harfbuzz"/>
-								</option>
-								<option id="gnu.cpp.compiler.option.other.pic.63956772" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" value="false" valueType="boolean"/>
-								<option id="gnu.cpp.compiler.option.other.other.1866787375" name="Other flags" superClass="gnu.cpp.compiler.option.other.other" value="-c -fmessage-length=0 -std=c++11 -lstdc++ -pthread" valueType="string"/>
-								<option id="gnu.cpp.compiler.option.warnings.wconversion.1384263317" name="Implicit conversion warnings (-Wconversion)" superClass="gnu.cpp.compiler.option.warnings.wconversion" value="false" valueType="boolean"/>
-								<option id="gnu.cpp.compiler.option.warnings.allwarn.80993715" name="All warnings (-Wall)" superClass="gnu.cpp.compiler.option.warnings.allwarn" value="false" valueType="boolean"/>
-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1821410876" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
-							</tool>
-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.lib.release.1485072111" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.lib.release">
-								<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.lib.release.option.optimization.level.1195664601" name="Optimization Level" superClass="gnu.c.compiler.lib.release.option.optimization.level" valueType="enumerated"/>
-								<option id="gnu.c.compiler.lib.release.option.debugging.level.268531470" name="Debug Level" superClass="gnu.c.compiler.lib.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/>
-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1440092387" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
-							</tool>
-							<tool id="cdt.managedbuild.tool.gnu.c.linker.base.1816796144" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.base"/>
-							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.base.883556826" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.base"/>
-							<tool id="cdt.managedbuild.tool.gnu.assembler.lib.release.1951181920" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.lib.release">
-								<option id="gnu.both.asm.option.include.paths.755753468" name="Include paths (-I)" superClass="gnu.both.asm.option.include.paths"/>
-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.618314481" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
-							</tool>
-						</toolChain>
-					</folderInfo>
-				</configuration>
-			</storageModule>
-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-		</cconfiguration>
-	</storageModule>
-	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-		<project id="gameplay.cdt.managedbuild.target.gnu.lib.1260324719" name="Static Library" projectType="cdt.managedbuild.target.gnu.lib"/>
-	</storageModule>
-	<storageModule moduleId="scannerConfiguration">
-		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.lib.release.405865560;cdt.managedbuild.config.gnu.lib.release.405865560.;cdt.managedbuild.tool.gnu.cpp.compiler.lib.release.1098041763;cdt.managedbuild.tool.gnu.cpp.compiler.input.1821410876">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.lib.debug.1678352131;cdt.managedbuild.config.gnu.lib.debug.1678352131.;cdt.managedbuild.tool.gnu.cpp.compiler.lib.debug.777535448;cdt.managedbuild.tool.gnu.cpp.compiler.input.760206134">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileCPP"/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.lib.release.405865560;cdt.managedbuild.config.gnu.lib.release.405865560.;cdt.managedbuild.tool.gnu.c.compiler.lib.release.1485072111;cdt.managedbuild.tool.gnu.c.compiler.input.1440092387">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-		</scannerConfigBuildInfo>
-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.lib.debug.1678352131;cdt.managedbuild.config.gnu.lib.debug.1678352131.;cdt.managedbuild.tool.gnu.c.compiler.lib.debug.544132463;cdt.managedbuild.tool.gnu.c.compiler.input.828880230">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfileC"/>
-		</scannerConfigBuildInfo>
-	</storageModule>
-	<storageModule moduleId="refreshScope" versionNumber="2">
-		<configuration configurationName="Release">
-			<resource resourceType="PROJECT" workspacePath="/gameplay"/>
-		</configuration>
-		<configuration configurationName="Debug">
-			<resource resourceType="PROJECT" workspacePath="/gameplay"/>
-		</configuration>
-	</storageModule>
-	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
-	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
-</cproject>

+ 0 - 83
gameplay/.project

@@ -1,83 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>gameplay</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-			<triggers>clean,full,incremental,</triggers>
-			<arguments>
-				<dictionary>
-					<key>?name?</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.append_environment</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.autoBuildTarget</key>
-					<value>all</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildArguments</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildCommand</key>
-					<value>make</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildLocation</key>
-					<value>${workspace_loc:/gameplay/Debug}</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
-					<value>clean</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.contents</key>
-					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
-					<value>false</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
-					<value>all</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.stopOnError</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
-					<value>true</value>
-				</dictionary>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-			<triggers>full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.cdt.core.cnature</nature>
-		<nature>org.eclipse.cdt.core.ccnature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-	</natures>
-</projectDescription>

+ 0 - 591
gameplay/CMakeLists.txt

@@ -1,591 +0,0 @@
-IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-    set(GAMEPLAY_PLATFORM_SRC
-            src/PlatformMacOSX.mm
-            src/gameplay-main-macosx.mm
-            )
-else(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-    set(GAMEPLAY_PLATFORM_SRC )
-endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
-
-set(GAMEPLAY_SRC
-    src/AbsoluteLayout.cpp
-    src/AbsoluteLayout.h
-    src/AIAgent.cpp
-    src/AIAgent.h
-    src/AIController.cpp
-    src/AIController.h
-    src/AIMessage.cpp
-    src/AIMessage.h
-    src/AIState.cpp
-    src/AIState.h
-    src/AIStateMachine.cpp
-    src/AIStateMachine.h
-    src/Animation.cpp
-    src/Animation.h
-    src/AnimationClip.cpp
-    src/AnimationClip.h
-    src/AnimationController.cpp
-    src/AnimationController.h
-    src/AnimationTarget.cpp
-    src/AnimationTarget.h
-    src/AnimationValue.cpp
-    src/AnimationValue.h
-    src/AudioBuffer.cpp
-    src/AudioBuffer.h
-    src/AudioController.cpp
-    src/AudioController.h
-    src/AudioListener.cpp
-    src/AudioListener.h
-    src/AudioSource.cpp
-    src/AudioSource.h
-    src/Base.h
-    src/BoundingBox.cpp
-    src/BoundingBox.h
-    src/BoundingBox.inl
-    src/BoundingSphere.cpp
-    src/BoundingSphere.h
-    src/BoundingSphere.inl
-    src/Bundle.cpp
-    src/Bundle.h
-    src/Button.cpp
-    src/Button.h
-    src/Camera.cpp
-    src/Camera.h
-    src/CheckBox.cpp
-    src/CheckBox.h
-    src/Container.cpp
-    src/Container.h
-    src/Control.cpp
-    src/Control.h
-    src/ControlFactory.h
-    src/ControlFactory.cpp
-    src/Curve.cpp
-    src/Curve.h
-    src/DebugNew.cpp
-    src/DebugNew.h
-    src/DepthStencilTarget.cpp
-    src/DepthStencilTarget.h
-    src/Drawable.cpp
-    src/Drawable.h
-    src/Effect.cpp
-    src/Effect.h
-    src/FileSystem.cpp
-    src/FileSystem.h
-    src/FlowLayout.cpp
-    src/FlowLayout.h
-    src/Font.cpp
-    src/Font.h
-    src/Form.cpp
-    src/Form.h
-    src/FrameBuffer.cpp
-    src/FrameBuffer.h
-    src/Frustum.cpp
-    src/Frustum.h
-    src/Game.cpp
-    src/Game.h
-    src/Game.inl
-    src/Gamepad.cpp
-    src/Gamepad.h
-    src/gameplay-main-android.cpp
-    src/gameplay-main-linux.cpp
-    src/gameplay-main-windows.cpp
-    src/Gesture.h
-    src/HeightField.cpp
-    src/HeightField.h
-    src/Image.cpp
-    src/Image.h
-    src/Image.inl
-    src/ImageControl.cpp
-    src/ImageControl.h
-    src/Joint.cpp
-    src/Joint.h
-    src/JoystickControl.cpp
-    src/JoystickControl.h
-    src/Label.cpp
-    src/Label.h
-    src/Layout.cpp
-    src/Layout.h
-    src/Light.cpp
-    src/Light.h
-    src/Logger.cpp
-    src/Logger.h
-    src/Material.cpp
-    src/Material.h
-    src/MaterialParameter.cpp
-    src/MaterialParameter.h
-    src/MathUtil.cpp
-    src/MathUtil.h
-    src/MathUtil.inl
-    src/MathUtilNeon.inl
-    src/Matrix.cpp
-    src/Matrix.h
-    src/Matrix.inl
-    src/Mesh.cpp
-    src/Mesh.h
-    src/MeshBatch.cpp
-    src/MeshBatch.h
-    src/MeshBatch.inl
-    src/MeshPart.cpp
-    src/MeshPart.h
-    src/MeshSkin.cpp
-    src/MeshSkin.h
-    src/Model.cpp
-    src/Model.h
-    src/Node.cpp
-    src/Node.h
-    src/ParticleEmitter.cpp
-    src/ParticleEmitter.h
-    src/Pass.cpp
-    src/Pass.h
-    src/PhysicsCharacter.cpp
-    src/PhysicsCharacter.h
-    src/PhysicsCollisionObject.cpp
-    src/PhysicsCollisionObject.h
-    src/PhysicsCollisionShape.cpp
-    src/PhysicsCollisionShape.h
-    src/PhysicsConstraint.cpp
-    src/PhysicsConstraint.h
-    src/PhysicsController.cpp
-    src/PhysicsController.h
-    src/PhysicsFixedConstraint.cpp
-    src/PhysicsFixedConstraint.h
-    src/PhysicsGenericConstraint.cpp
-    src/PhysicsGenericConstraint.h
-    src/PhysicsGhostObject.cpp
-    src/PhysicsGhostObject.h
-    src/PhysicsHingeConstraint.cpp
-    src/PhysicsHingeConstraint.h
-    src/PhysicsRigidBody.cpp
-    src/PhysicsRigidBody.h
-    src/PhysicsSocketConstraint.cpp
-    src/PhysicsSocketConstraint.h
-    src/PhysicsSpringConstraint.cpp
-    src/PhysicsSpringConstraint.h
-    src/PhysicsVehicle.cpp
-    src/PhysicsVehicle.h
-    src/PhysicsVehicleWheel.cpp
-    src/PhysicsVehicle.h
-    src/Plane.cpp
-    src/Plane.h
-    src/Plane.inl
-    src/Platform.h
-    src/Platform.cpp
-    src/PlatformAndroid.cpp
-    src/PlatformLinux.cpp
-    src/PlatformWindows.cpp
-    ${GAMEPLAY_PLATFORM_SRC}
-    src/Properties.cpp
-    src/Properties.h
-    src/Quaternion.cpp
-    src/Quaternion.h
-    src/Quaternion.inl
-    src/RadioButton.cpp
-    src/RadioButton.h
-    src/Ray.cpp
-    src/Ray.h
-    src/Ray.inl
-    src/Rectangle.cpp
-    src/Rectangle.h
-    src/Ref.cpp
-    src/Ref.h
-    src/RenderState.cpp
-    src/RenderState.h
-    src/RenderTarget.cpp
-    src/RenderTarget.h
-    src/Scene.cpp
-    src/Scene.h
-    src/SceneLoader.cpp
-    src/SceneLoader.h
-    src/ScreenDisplayer.cpp
-    src/ScreenDisplayer.h
-    src/Script.cpp
-    src/Script.h
-    src/ScriptController.cpp
-    src/ScriptController.h
-    src/ScriptController.inl
-    src/ScriptTarget.cpp
-    src/ScriptTarget.h
-    src/Slider.cpp
-    src/Slider.h
-    src/Sprite.cpp
-    src/Sprite.h
-    src/SpriteBatch.cpp
-    src/SpriteBatch.h
-    src/Technique.cpp
-    src/Technique.h
-    src/Terrain.cpp
-    src/Terrain.h
-    src/TerrainPatch.cpp
-    src/TerrainPatch.h
-    src/Text.cpp
-    src/Text.h
-    src/TextBox.cpp
-    src/TextBox.h
-    src/Texture.cpp
-    src/Texture.h
-    src/Theme.cpp
-    src/Theme.h
-    src/ThemeStyle.cpp
-    src/ThemeStyle.h
-    src/TileSet.cpp
-    src/TileSet.h
-    src/Transform.cpp
-    src/Transform.h
-    src/Vector2.cpp
-    src/Vector2.h
-    src/Vector2.inl
-    src/Vector3.cpp
-    src/Vector3.h
-    src/Vector3.inl
-    src/Vector4.cpp
-    src/Vector4.h
-    src/Vector4.inl
-    src/VertexAttributeBinding.cpp
-    src/VertexAttributeBinding.h
-    src/VertexFormat.cpp
-    src/VertexFormat.h
-    src/VerticalLayout.cpp
-    src/VerticalLayout.h
-)
-
-set(GAMEPLAY_LUA
-    src/lua/lua_all_bindings.cpp
-    src/lua/lua_all_bindings.h
-    src/lua/lua_AbsoluteLayout.cpp
-    src/lua/lua_AbsoluteLayout.h
-    src/lua/lua_AIAgent.cpp
-    src/lua/lua_AIAgent.h
-    src/lua/lua_AIAgentListener.cpp
-    src/lua/lua_AIAgentListener.h
-    src/lua/lua_AIController.cpp
-    src/lua/lua_AIController.h
-    src/lua/lua_AIMessage.cpp
-    src/lua/lua_AIMessage.h
-    src/lua/lua_AIState.cpp
-    src/lua/lua_AIState.h
-    src/lua/lua_AIStateListener.cpp
-    src/lua/lua_AIStateListener.h
-    src/lua/lua_AIStateMachine.cpp
-    src/lua/lua_AIStateMachine.h
-    src/lua/lua_Animation.cpp
-    src/lua/lua_Animation.h
-    src/lua/lua_AnimationClip.cpp
-    src/lua/lua_AnimationClip.h
-    src/lua/lua_AnimationClipListener.cpp
-    src/lua/lua_AnimationClipListener.h
-    src/lua/lua_AnimationController.cpp
-    src/lua/lua_AnimationController.h
-    src/lua/lua_AnimationTarget.cpp
-    src/lua/lua_AnimationTarget.h
-    src/lua/lua_AnimationValue.cpp
-    src/lua/lua_AnimationValue.h
-    src/lua/lua_AudioBuffer.cpp
-    src/lua/lua_AudioBuffer.h
-    src/lua/lua_AudioController.cpp
-    src/lua/lua_AudioController.h
-    src/lua/lua_AudioListener.cpp
-    src/lua/lua_AudioListener.h
-    src/lua/lua_AudioSource.cpp
-    src/lua/lua_AudioSource.h
-    src/lua/lua_BoundingBox.cpp
-    src/lua/lua_BoundingBox.h
-    src/lua/lua_BoundingSphere.cpp
-    src/lua/lua_BoundingSphere.h
-    src/lua/lua_Bundle.cpp
-    src/lua/lua_Bundle.h
-    src/lua/lua_Button.cpp
-    src/lua/lua_Button.h
-    src/lua/lua_Camera.cpp
-    src/lua/lua_Camera.h
-    src/lua/lua_CameraListener.h
-    src/lua/lua_CameraListener.cpp
-    src/lua/lua_CheckBox.cpp
-    src/lua/lua_CheckBox.h
-    src/lua/lua_Container.cpp
-    src/lua/lua_Container.h
-    src/lua/lua_Control.cpp
-    src/lua/lua_Control.h
-    src/lua/lua_ControlListener.cpp
-    src/lua/lua_ControlListener.h
-    src/lua/lua_Curve.cpp
-    src/lua/lua_Curve.h
-    src/lua/lua_DepthStencilTarget.cpp
-    src/lua/lua_DepthStencilTarget.h
-    src/lua/lua_Drawable.cpp
-    src/lua/lua_Drawable.h
-    src/lua/lua_Effect.cpp
-    src/lua/lua_Effect.h
-    src/lua/lua_FileSystem.cpp
-    src/lua/lua_FileSystem.h
-    src/lua/lua_FlowLayout.cpp
-    src/lua/lua_FlowLayout.h
-    src/lua/lua_Font.cpp
-    src/lua/lua_Font.h
-    src/lua/lua_Form.cpp
-    src/lua/lua_Form.h
-    src/lua/lua_FrameBuffer.cpp
-    src/lua/lua_FrameBuffer.h
-    src/lua/lua_Frustum.cpp
-    src/lua/lua_Frustum.h
-    src/lua/lua_Game.cpp
-    src/lua/lua_Game.h
-    src/lua/lua_Gamepad.cpp
-    src/lua/lua_Gamepad.h
-    src/lua/lua_Gesture.cpp
-    src/lua/lua_Gesture.h
-    src/lua/lua_Global.cpp
-    src/lua/lua_Global.h
-    src/lua/lua_HeightField.cpp
-    src/lua/lua_HeightField.h
-    src/lua/lua_Image.cpp
-    src/lua/lua_Image.h
-    src/lua/lua_ImageControl.cpp
-    src/lua/lua_ImageControl.h
-    src/lua/lua_Joint.cpp
-    src/lua/lua_Joint.h
-    src/lua/lua_JoystickControl.cpp
-    src/lua/lua_JoystickControl.h
-    src/lua/lua_Keyboard.cpp
-    src/lua/lua_Keyboard.h
-    src/lua/lua_Label.cpp
-    src/lua/lua_Label.h
-    src/lua/lua_Layout.cpp
-    src/lua/lua_Layout.h
-    src/lua/lua_Light.cpp
-    src/lua/lua_Light.h
-    src/lua/lua_Logger.cpp
-    src/lua/lua_Logger.h
-    src/lua/lua_Material.cpp
-    src/lua/lua_Material.h
-    src/lua/lua_MaterialParameter.cpp
-    src/lua/lua_MaterialParameter.h
-    src/lua/lua_MathUtil.cpp
-    src/lua/lua_MathUtil.h
-    src/lua/lua_Matrix.cpp
-    src/lua/lua_Matrix.h
-    src/lua/lua_Mesh.cpp
-    src/lua/lua_Mesh.h
-    src/lua/lua_MeshBatch.cpp
-    src/lua/lua_MeshBatch.h
-    src/lua/lua_MeshPart.cpp
-    src/lua/lua_MeshPart.h
-    src/lua/lua_MeshSkin.cpp
-    src/lua/lua_MeshSkin.h
-    src/lua/lua_Model.cpp
-    src/lua/lua_Model.h
-    src/lua/lua_Mouse.cpp
-    src/lua/lua_Mouse.h
-    src/lua/lua_Node.cpp
-    src/lua/lua_Node.h
-    src/lua/lua_NodeCloneContext.cpp
-    src/lua/lua_NodeCloneContext.h
-    src/lua/lua_ParticleEmitter.cpp
-    src/lua/lua_ParticleEmitter.h
-    src/lua/lua_Pass.cpp
-    src/lua/lua_Pass.h
-    src/lua/lua_PhysicsCharacter.cpp
-    src/lua/lua_PhysicsCharacter.h
-    src/lua/lua_PhysicsCollisionObject.cpp
-    src/lua/lua_PhysicsCollisionObject.h
-    src/lua/lua_PhysicsCollisionObjectCollisionListener.cpp
-    src/lua/lua_PhysicsCollisionObjectCollisionListener.h
-    src/lua/lua_PhysicsCollisionObjectCollisionPair.cpp
-    src/lua/lua_PhysicsCollisionObjectCollisionPair.h
-    src/lua/lua_PhysicsCollisionShape.cpp
-    src/lua/lua_PhysicsCollisionShape.h
-    src/lua/lua_PhysicsCollisionShapeDefinition.cpp
-    src/lua/lua_PhysicsCollisionShapeDefinition.h
-    src/lua/lua_PhysicsConstraint.cpp
-    src/lua/lua_PhysicsConstraint.h
-    src/lua/lua_PhysicsController.cpp
-    src/lua/lua_PhysicsController.h
-    src/lua/lua_PhysicsControllerHitFilter.cpp
-    src/lua/lua_PhysicsControllerHitFilter.h
-    src/lua/lua_PhysicsControllerHitResult.cpp
-    src/lua/lua_PhysicsControllerHitResult.h
-    src/lua/lua_PhysicsControllerListener.cpp
-    src/lua/lua_PhysicsControllerListener.h
-    src/lua/lua_PhysicsFixedConstraint.cpp
-    src/lua/lua_PhysicsFixedConstraint.h
-    src/lua/lua_PhysicsGenericConstraint.cpp
-    src/lua/lua_PhysicsGenericConstraint.h
-    src/lua/lua_PhysicsGhostObject.cpp
-    src/lua/lua_PhysicsGhostObject.h
-    src/lua/lua_PhysicsHingeConstraint.cpp
-    src/lua/lua_PhysicsHingeConstraint.h
-    src/lua/lua_PhysicsRigidBody.cpp
-    src/lua/lua_PhysicsRigidBody.h
-    src/lua/lua_PhysicsRigidBodyParameters.cpp
-    src/lua/lua_PhysicsRigidBodyParameters.h
-    src/lua/lua_PhysicsSocketConstraint.cpp
-    src/lua/lua_PhysicsSocketConstraint.h
-    src/lua/lua_PhysicsSpringConstraint.cpp
-    src/lua/lua_PhysicsSpringConstraint.h
-    src/lua/lua_PhysicsVehicle.cpp
-    src/lua/lua_PhysicsVehicle.h
-    src/lua/lua_PhysicsVehicleWheel.cpp
-    src/lua/lua_PhysicsVehicleWheel.h
-    src/lua/lua_Plane.cpp
-    src/lua/lua_Plane.h
-    src/lua/lua_Platform.cpp
-    src/lua/lua_Platform.h
-    src/lua/lua_Properties.cpp
-    src/lua/lua_Properties.h
-    src/lua/lua_Quaternion.cpp
-    src/lua/lua_Quaternion.h
-    src/lua/lua_RadioButton.cpp
-    src/lua/lua_RadioButton.h
-    src/lua/lua_Ray.cpp
-    src/lua/lua_Ray.h
-    src/lua/lua_Rectangle.cpp
-    src/lua/lua_Rectangle.h
-    src/lua/lua_Ref.cpp
-    src/lua/lua_Ref.h
-    src/lua/lua_RenderState.cpp
-    src/lua/lua_RenderState.h
-    src/lua/lua_RenderStateStateBlock.cpp
-    src/lua/lua_RenderStateStateBlock.h
-    src/lua/lua_RenderTarget.cpp
-    src/lua/lua_RenderTarget.h
-    src/lua/lua_Scene.cpp
-    src/lua/lua_Scene.h
-    src/lua/lua_ScreenDisplayer.cpp
-    src/lua/lua_ScreenDisplayer.h
-    src/lua/lua_Script.cpp
-    src/lua/lua_Script.h
-    src/lua/lua_ScriptController.cpp
-    src/lua/lua_ScriptController.h
-    src/lua/lua_ScriptTarget.cpp
-    src/lua/lua_ScriptTarget.h
-    src/lua/lua_ScriptTargetEvent.cpp
-    src/lua/lua_ScriptTargetEvent.h
-    src/lua/lua_ScriptTargetEventRegistry.cpp
-    src/lua/lua_ScriptTargetEventRegistry.h
-    src/lua/lua_Slider.cpp
-    src/lua/lua_Slider.h
-    src/lua/lua_Sprite.cpp
-    src/lua/lua_Sprite.h
-    src/lua/lua_SpriteBatch.cpp
-    src/lua/lua_SpriteBatch.h
-    src/lua/lua_SpriteBatchSpriteVertex.cpp
-    src/lua/lua_SpriteBatchSpriteVertex.h
-    src/lua/lua_Technique.cpp
-    src/lua/lua_Technique.h
-    src/lua/lua_Terrain.cpp
-    src/lua/lua_Terrain.h
-    src/lua/lua_TerrainPatch.cpp
-    src/lua/lua_TerrainPatch.h
-    src/lua/lua_Text.cpp
-    src/lua/lua_Text.h
-    src/lua/lua_TextBox.cpp
-    src/lua/lua_TextBox.h
-    src/lua/lua_Texture.cpp
-    src/lua/lua_Texture.h
-    src/lua/lua_TextureSampler.cpp
-    src/lua/lua_TextureSampler.h
-    src/lua/lua_Theme.cpp
-    src/lua/lua_Theme.h
-    src/lua/lua_ThemeSideRegions.cpp
-    src/lua/lua_ThemeSideRegions.h
-    src/lua/lua_ThemeStyle.cpp
-    src/lua/lua_ThemeStyle.h
-    src/lua/lua_ThemeThemeImage.cpp
-    src/lua/lua_ThemeThemeImage.h
-    src/lua/lua_ThemeUVs.cpp
-    src/lua/lua_ThemeUVs.h
-    src/lua/lua_TileSet.cpp
-    src/lua/lua_TileSet.h
-    src/lua/lua_Touch.cpp
-    src/lua/lua_Touch.h
-    src/lua/lua_Transform.cpp
-    src/lua/lua_Transform.h
-    src/lua/lua_TransformListener.cpp
-    src/lua/lua_TransformListener.h
-    src/lua/lua_Uniform.cpp
-    src/lua/lua_Uniform.h
-    src/lua/lua_Vector2.cpp
-    src/lua/lua_Vector2.h
-    src/lua/lua_Vector3.cpp
-    src/lua/lua_Vector3.h
-    src/lua/lua_Vector4.cpp
-    src/lua/lua_Vector4.h
-    src/lua/lua_VertexAttributeBinding.cpp
-    src/lua/lua_VertexAttributeBinding.h
-    src/lua/lua_VertexFormat.cpp
-    src/lua/lua_VertexFormat.h
-    src/lua/lua_VertexFormatElement.cpp
-    src/lua/lua_VertexFormatElement.h
-    src/lua/lua_VerticalLayout.cpp
-    src/lua/lua_VerticalLayout.h
-)
-
-set(GAMEPLAY_RES
-    res/logo_black.png
-    res/logo_powered_black.png
-    res/logo_powered_white.png
-    res/logo_white.png
-)
-
-set(GAMEPLAY_RES_SHADERS
-    res/shaders/colored.frag
-    res/shaders/colored.vert
-    res/shaders/font.frag
-    res/shaders/font.vert
-    res/shaders/form.frag
-    res/shaders/form.vert
-    res/shaders/lighting.frag
-    res/shaders/lighting.vert
-    res/shaders/skinning.vert
-    res/shaders/skinning-none.vert
-    res/shaders/sprite.frag
-    res/shaders/sprite.vert
-    res/shaders/terrain.frag
-    res/shaders/terrain.vert
-    res/shaders/textured.frag
-    res/shaders/textured.vert
-)
-
-set(GAMEPLAY_RES_SHADERS
-    res/ui/arial.gpb
-    res/ui/default.png
-    res/ui/default.theme
-)
-
-include_directories(
-    src
-    ../external-deps/include
-)
-
-IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
-find_package(PkgConfig REQUIRED)
-pkg_check_modules(GTK2 REQUIRED gtk+-2.0)
-include_directories(${GTK2_INCLUDE_DIRS})
-add_definitions(${GTK2_CFLAGS_OTHER})
-add_definitions(-D__linux__)
-ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
-
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
-    # using Clang
-    add_definitions(-std=c++11 -stdlib=libc++)
-else()
-    add_definitions(-std=c++11)
-    add_definitions(-lstdc++)
-endif()
-
-add_library(gameplay STATIC
-    ${GAMEPLAY_SRC}
-    ${GAMEPLAY_LUA}
-)
-
-set_target_properties(gameplay PROPERTIES
-    OUTPUT_NAME "gameplay"
-    CLEAN_DIRECT_OUTPUT 1
-    VERSION ${GAMEPLAY_VERSION}
-)
-
-source_group(lua FILES ${GAMEPLAY_LUA})
-source_group(res FILES ${GAMEPLAY_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
-source_group(src FILES ${GAMEPLAY_SRC})
-
-
-

+ 0 - 13
gameplay/android/.classpath

@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
-	<classpathentry kind="src" path="gen"/>
-	<classpathentry kind="src" path="src">
-		<attributes>
-			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="gameplay/src"/>
-		</attributes>
-	</classpathentry>
-	<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
-	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.LIBRARIES"/>
-	<classpathentry exported="true" kind="con" path="com.android.ide.eclipse.adt.DEPENDENCIES"/>
-	<classpathentry kind="output" path="bin/classes"/>
-</classpath>

+ 0 - 57
gameplay/android/.cproject

@@ -1,57 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
-	<storageModule moduleId="org.eclipse.cdt.core.settings">
-		<cconfiguration id="com.android.toolchain.gcc.1762611861">
-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="com.android.toolchain.gcc.1762611861" moduleId="org.eclipse.cdt.core.settings" name="Default">
-				<externalSettings/>
-				<extensions>
-					<extension id="org.eclipse.cdt.core.VCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
-					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
-				</extensions>
-			</storageModule>
-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-				<configuration artifactName="${ProjName}" buildProperties="" description="" id="com.android.toolchain.gcc.1762611861" name="Default" parent="org.eclipse.cdt.build.core.emptycfg">
-					<folderInfo id="com.android.toolchain.gcc.1762611861.1006586964" name="/" resourcePath="">
-						<toolChain id="com.android.toolchain.gcc.104843543" name="com.android.toolchain.gcc" superClass="com.android.toolchain.gcc">
-							<targetPlatform binaryParser="org.eclipse.cdt.core.ELF" id="com.android.targetPlatform.849260442" isAbstract="false" superClass="com.android.targetPlatform"/>
-							<builder arguments="NDK_DEBUG=1 -j4" command="ndk-build" id="com.android.builder.584998984" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Android Builder" superClass="com.android.builder">
-								<outputEntries>
-									<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="obj"/>
-									<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="outputPath" name="libs"/>
-								</outputEntries>
-							</builder>
-							<tool id="com.android.gcc.compiler.1357063072" name="Android GCC Compiler" superClass="com.android.gcc.compiler">
-								<inputType id="com.android.gcc.inputType.871576572" superClass="com.android.gcc.inputType"/>
-							</tool>
-						</toolChain>
-					</folderInfo>
-					<sourceEntries>
-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="jni"/>
-					</sourceEntries>
-				</configuration>
-			</storageModule>
-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
-		</cconfiguration>
-	</storageModule>
-	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
-		<project id="gameplay.null.1788907050" name="gameplay"/>
-	</storageModule>
-	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
-	<storageModule moduleId="scannerConfiguration">
-		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
-		<scannerConfigBuildInfo instanceId="com.android.toolchain.gcc.1762611861;com.android.toolchain.gcc.1762611861.1006586964;com.android.gcc.compiler.1357063072;com.android.gcc.inputType.871576572">
-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="com.android.AndroidPerProjectProfile"/>
-		</scannerConfigBuildInfo>
-	</storageModule>
-	<storageModule moduleId="refreshScope" versionNumber="2">
-		<configuration configurationName="Default">
-			<resource resourceType="PROJECT" workspacePath="/gameplay"/>
-		</configuration>
-	</storageModule>
-</cproject>

+ 0 - 104
gameplay/android/.project

@@ -1,104 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>gameplay</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-			<triggers>clean,full,incremental,</triggers>
-			<arguments>
-				<dictionary>
-					<key>?children?</key>
-					<value>?name?=outputEntries\|?children?=?name?=entry\\\\\\\|\\\|?name?=entry\\\\\\\|\\\|\||</value>
-				</dictionary>
-				<dictionary>
-					<key>?name?</key>
-					<value></value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.append_environment</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildArguments</key>
-					<value>NDK_DEBUG=1 -j4</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.buildCommand</key>
-					<value>ndk-build</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.cleanBuildTarget</key>
-					<value>clean</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.contents</key>
-					<value>org.eclipse.cdt.make.core.activeConfigSettings</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
-					<value>false</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.enableFullBuild</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.stopOnError</key>
-					<value>true</value>
-				</dictionary>
-				<dictionary>
-					<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
-					<value>false</value>
-				</dictionary>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.android.ide.eclipse.adt.ResourceManagerBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.android.ide.eclipse.adt.PreCompilerBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.jdt.core.javabuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>com.android.ide.eclipse.adt.ApkBuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-			<triggers>full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
-		<nature>org.eclipse.jdt.core.javanature</nature>
-		<nature>org.eclipse.cdt.core.cnature</nature>
-		<nature>org.eclipse.cdt.core.ccnature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-	</natures>
-	<linkedResources>
-		<link>
-			<name>src</name>
-			<type>2</type>
-			<locationURI>$%7BPARENT-2-PROJECT_LOC%7D/gameplay/src</locationURI>
-		</link>
-	</linkedResources>
-</projectDescription>

+ 0 - 9
gameplay/android/AndroidManifest.xml

@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
-	package="org.gameplay3d" 
-	android:versionCode="1" 
-	android:versionName="1.0">
-
-    <uses-sdk android:minSdkVersion="16" />
-
-</manifest>

+ 0 - 40
gameplay/android/build.xml

@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="gameplay" default="help">
-
-    <property file="local.properties" />
-    <property file="ant.properties" />
-   
-    <loadproperties srcFile="project.properties" />
-    
-    <fail message="sdk.dir is missing. Make sure to generate local.properties using 'android update project -t 1 -p . -s'" unless="sdk.dir" />
-    <fail message="OS not supported. Supported platforms: Windows, MacOS X or Linux.">
-        <condition>
-            <not>
-                <or>
-                    <os family="unix"/>
-                    <os family="windows"/>
-                </or>
-            </not>
-        </condition>
-    </fail>
-    <macrodef name="build-native">
-        <attribute name="location"/>
-        <sequential>
-            <exec osfamily="unix" dir="@{location}/android" executable="ndk-build">
-                <arg value="-j4"/>
-            </exec>
-            <exec osfamily="windows" dir="@{location}/android" executable="cmd">
-                <arg value="/c"/>
-                <arg value="ndk-build -j4"/>
-            </exec> 
-        </sequential>
-    </macrodef>
-    
-    <target name="-pre-build">
-        <build-native location=".."/>
-    </target>
-    
-    <!-- version-tag: 1 -->
-    <import file="${sdk.dir}/tools/ant/build.xml" />
-
-</project>

+ 0 - 270
gameplay/android/jni/Android.mk

@@ -1,270 +0,0 @@
-GAMEPLAY_PATH := $(call my-dir)/../../src
-
-# external-deps
-GAMEPLAY_DEPS := ../../external-deps/lib/android/$(TARGET_ARCH_ABI)
-
-# libgameplay-deps
-LOCAL_PATH := $(GAMEPLAY_DEPS)
-include $(CLEAR_VARS)
-LOCAL_MODULE    := libgameplay-deps 
-LOCAL_SRC_FILES := libgameplay-deps.a
-include $(PREBUILT_STATIC_LIBRARY)
-
-# libgameplay
-include $(CLEAR_VARS)
-LOCAL_PATH := $(GAMEPLAY_PATH)
-LOCAL_MODULE    := libgameplay
-LOCAL_SRC_FILES := \
-    AbsoluteLayout.cpp \
-    AIAgent.cpp \
-    AIController.cpp \
-    AIMessage.cpp \
-    AIState.cpp \
-    AIStateMachine.cpp \
-    Animation.cpp \
-    AnimationClip.cpp \
-    AnimationController.cpp \
-    AnimationTarget.cpp \
-    AnimationValue.cpp \
-    AudioBuffer.cpp \
-    AudioController.cpp \
-    AudioListener.cpp \
-    AudioSource.cpp \
-    BoundingBox.cpp \
-    BoundingSphere.cpp \
-    Bundle.cpp \
-    Button.cpp \
-    Camera.cpp \
-    CheckBox.cpp \
-    Container.cpp \
-    Control.cpp \
-    ControlFactory.cpp \
-    Curve.cpp \
-    DebugNew.cpp \
-    DepthStencilTarget.cpp \
-    Drawable.cpp \
-    Effect.cpp \
-    FileSystem.cpp \
-    FlowLayout.cpp \
-    Font.cpp \
-    Form.cpp \
-    FrameBuffer.cpp \
-    Frustum.cpp \
-    Game.cpp \
-    Gamepad.cpp \
-    HeightField.cpp \
-    Image.cpp \
-    ImageControl.cpp \
-    Joint.cpp \
-    JoystickControl.cpp \
-    Label.cpp \
-    Layout.cpp \
-    Light.cpp \
-    Logger.cpp \
-    Material.cpp \
-    MaterialParameter.cpp \
-    MathUtil.cpp \
-    Matrix.cpp \
-    Mesh.cpp \
-    MeshBatch.cpp \
-    MeshPart.cpp \
-    MeshSkin.cpp \
-    Model.cpp \
-    Node.cpp \
-    ParticleEmitter.cpp \
-    Pass.cpp \
-    PhysicsCharacter.cpp \
-    PhysicsCollisionObject.cpp \
-    PhysicsCollisionShape.cpp \
-    PhysicsConstraint.cpp \
-    PhysicsController.cpp \
-    PhysicsFixedConstraint.cpp \
-    PhysicsGenericConstraint.cpp \
-    PhysicsGhostObject.cpp \
-    PhysicsHingeConstraint.cpp \
-    PhysicsRigidBody.cpp \
-    PhysicsSocketConstraint.cpp \
-    PhysicsSpringConstraint.cpp \
-    PhysicsVehicle.cpp \
-    PhysicsVehicleWheel.cpp \
-    Plane.cpp \
-    Platform.cpp \
-    PlatformAndroid.cpp \
-    Properties.cpp \
-    Quaternion.cpp \
-    RadioButton.cpp \
-    Ray.cpp \
-    Rectangle.cpp \
-    Ref.cpp \
-    RenderState.cpp \
-    RenderTarget.cpp \
-    Scene.cpp \
-    SceneLoader.cpp \
-    ScreenDisplayer.cpp \
-    Script.cpp \
-    ScriptController.cpp \
-    ScriptTarget.cpp \
-    Slider.cpp \
-    Sprite.cpp \
-    SpriteBatch.cpp \
-    Technique.cpp \
-    Terrain.cpp \
-    TerrainPatch.cpp \
-    Text.cpp \
-    TextBox.cpp \
-    Texture.cpp \
-    Theme.cpp \
-    ThemeStyle.cpp \
-    TileSet.cpp \
-    Transform.cpp \
-    Vector2.cpp \
-    Vector3.cpp \
-    Vector4.cpp \
-    VertexAttributeBinding.cpp \
-    VertexFormat.cpp \
-    VerticalLayout.cpp \
-    lua/lua_AbsoluteLayout.cpp \
-    lua/lua_AIAgent.cpp \
-    lua/lua_AIAgentListener.cpp \
-    lua/lua_AIController.cpp \
-    lua/lua_AIMessage.cpp \
-    lua/lua_AIState.cpp \
-    lua/lua_AIStateListener.cpp \
-    lua/lua_AIStateMachine.cpp \
-    lua/lua_all_bindings.cpp \
-    lua/lua_Animation.cpp \
-    lua/lua_AnimationClip.cpp \
-    lua/lua_AnimationClipListener.cpp \
-    lua/lua_AnimationController.cpp \
-    lua/lua_AnimationTarget.cpp \
-    lua/lua_AnimationValue.cpp \
-    lua/lua_AudioBuffer.cpp \
-    lua/lua_AudioController.cpp \
-    lua/lua_AudioListener.cpp \
-    lua/lua_AudioSource.cpp \
-    lua/lua_BoundingBox.cpp \
-    lua/lua_BoundingSphere.cpp \
-    lua/lua_Bundle.cpp \
-    lua/lua_Button.cpp \
-    lua/lua_Camera.cpp \
-    lua/lua_CameraListener.cpp \
-    lua/lua_CheckBox.cpp \
-    lua/lua_Container.cpp \
-    lua/lua_Control.cpp \
-    lua/lua_ControlListener.cpp \
-    lua/lua_Curve.cpp \
-    lua/lua_DepthStencilTarget.cpp \
-    lua/lua_Drawable.cpp \
-    lua/lua_Effect.cpp \
-    lua/lua_FileSystem.cpp \
-    lua/lua_FlowLayout.cpp \
-    lua/lua_Font.cpp \
-    lua/lua_Form.cpp \
-    lua/lua_FrameBuffer.cpp \
-    lua/lua_Frustum.cpp \
-    lua/lua_Game.cpp \
-    lua/lua_Gamepad.cpp \
-    lua/lua_Gesture.cpp \
-    lua/lua_Global.cpp \
-    lua/lua_HeightField.cpp \
-    lua/lua_Image.cpp \
-    lua/lua_ImageControl.cpp \
-    lua/lua_Joint.cpp \
-    lua/lua_JoystickControl.cpp \
-    lua/lua_Keyboard.cpp \
-    lua/lua_Label.cpp \
-    lua/lua_Layout.cpp \
-    lua/lua_Light.cpp \
-    lua/lua_Logger.cpp \
-    lua/lua_Material.cpp \
-    lua/lua_MaterialParameter.cpp \
-    lua/lua_MathUtil.cpp \
-    lua/lua_Matrix.cpp \
-    lua/lua_Mesh.cpp \
-    lua/lua_MeshBatch.cpp \
-    lua/lua_MeshPart.cpp \
-    lua/lua_MeshSkin.cpp \
-    lua/lua_Model.cpp \
-    lua/lua_Mouse.cpp \
-    lua/lua_Node.cpp \
-    lua/lua_NodeCloneContext.cpp \
-    lua/lua_ParticleEmitter.cpp \
-    lua/lua_Pass.cpp \
-    lua/lua_PhysicsCharacter.cpp \
-    lua/lua_PhysicsCollisionObject.cpp \
-    lua/lua_PhysicsCollisionObjectCollisionListener.cpp \
-    lua/lua_PhysicsCollisionObjectCollisionPair.cpp \
-    lua/lua_PhysicsCollisionShape.cpp \
-    lua/lua_PhysicsCollisionShapeDefinition.cpp \
-    lua/lua_PhysicsConstraint.cpp \
-    lua/lua_PhysicsController.cpp \
-    lua/lua_PhysicsControllerHitFilter.cpp \
-    lua/lua_PhysicsControllerHitResult.cpp \
-    lua/lua_PhysicsControllerListener.cpp \
-    lua/lua_PhysicsFixedConstraint.cpp \
-    lua/lua_PhysicsGenericConstraint.cpp \
-    lua/lua_PhysicsGhostObject.cpp \
-    lua/lua_PhysicsHingeConstraint.cpp \
-    lua/lua_PhysicsRigidBody.cpp \
-    lua/lua_PhysicsRigidBodyParameters.cpp \
-    lua/lua_PhysicsSocketConstraint.cpp \
-    lua/lua_PhysicsSpringConstraint.cpp \
-    lua/lua_PhysicsVehicle.cpp \
-    lua/lua_PhysicsVehicleWheel.cpp \
-    lua/lua_Plane.cpp \
-    lua/lua_Platform.cpp \
-    lua/lua_Properties.cpp \
-    lua/lua_Quaternion.cpp \
-    lua/lua_RadioButton.cpp \
-    lua/lua_Ray.cpp \
-    lua/lua_Rectangle.cpp \
-    lua/lua_Ref.cpp \
-    lua/lua_RenderState.cpp \
-    lua/lua_RenderStateStateBlock.cpp \
-    lua/lua_RenderTarget.cpp \
-    lua/lua_Scene.cpp \
-    lua/lua_ScreenDisplayer.cpp \
-    lua/lua_Script.cpp \
-    lua/lua_ScriptController.cpp \
-    lua/lua_ScriptTarget.cpp \
-    lua/lua_ScriptTargetEvent.cpp \
-    lua/lua_ScriptTargetEventRegistry.cpp \
-    lua/lua_Slider.cpp \
-    lua/lua_Sprite.cpp \
-    lua/lua_SpriteBatch.cpp \
-    lua/lua_SpriteBatchSpriteVertex.cpp \
-    lua/lua_Technique.cpp \
-    lua/lua_Terrain.cpp \
-    lua/lua_TerrainPatch.cpp \
-    lua/lua_Text.cpp \
-    lua/lua_TextBox.cpp \
-    lua/lua_Texture.cpp \
-    lua/lua_TextureSampler.cpp \
-    lua/lua_Theme.cpp \
-    lua/lua_ThemeSideRegions.cpp \
-    lua/lua_ThemeStyle.cpp \
-    lua/lua_ThemeThemeImage.cpp \
-    lua/lua_ThemeUVs.cpp \
-    lua/lua_TileSet.cpp \
-    lua/lua_Touch.cpp \
-    lua/lua_Transform.cpp \
-    lua/lua_TransformListener.cpp \
-    lua/lua_Uniform.cpp \
-    lua/lua_Vector2.cpp \
-    lua/lua_Vector3.cpp \
-    lua/lua_Vector4.cpp \
-    lua/lua_VertexAttributeBinding.cpp \
-    lua/lua_VertexFormat.cpp \
-    lua/lua_VertexFormatElement.cpp \
-    lua/lua_VerticalLayout.cpp
-
-LOCAL_CPPFLAGS += -std=c++11 -frtti -Wno-switch-enum -Wno-switch
-LOCAL_ARM_MODE := arm
-LOCAL_LDLIBS    := -llog -landroid -lEGL -lGLESv2 -lOpenSLES
-LOCAL_CFLAGS := -D__ANDROID__ -I"../../external-deps/include"
-LOCAL_ADDITIONAL_DEPENDENCIES := gameplay
-LOCAL_STATIC_LIBRARIES := android_native_app_glue libgameplay-deps
-include $(BUILD_SHARED_LIBRARY)
-
-$(call import-module,android/native_app_glue)
-

+ 0 - 7
gameplay/android/jni/Application.mk

@@ -1,7 +0,0 @@
-NDK_TOOLCHAIN_VERSION := 4.8
-APP_CPPFLAGS += -std=c++11
-APP_STL      := gnustl_static
-APP_MODULES  := libgameplay
-APP_ABI      := armeabi-v7a x86
-APP_PLATFORM := android-16
-

+ 0 - 3
gameplay/android/project.properties

@@ -1,3 +0,0 @@
-target=android-16
-android.library=true
-source.dir=../src

BIN
gameplay/android/res/drawable/icon.png


+ 0 - 565
gameplay/gameplay.pro

@@ -1,565 +0,0 @@
-#-------------------------------------------------
-#
-# Project created by QtCreator
-#
-#-------------------------------------------------
-QT -= core gui
-TARGET = gameplay
-TEMPLATE = lib
-CONFIG += staticlib
-CONFIG += c++11
-CONFIG -= qt
-CONFIG(debug, debug|release): DEFINES += _DEBUG
-
-SOURCES += src/AbsoluteLayout.cpp \
-    src/AIAgent.cpp \
-    src/AIController.cpp \
-    src/AIMessage.cpp \
-    src/AIState.cpp \
-    src/AIStateMachine.cpp \
-    src/Animation.cpp \
-    src/AnimationClip.cpp \
-    src/AnimationController.cpp \
-    src/AnimationTarget.cpp \
-    src/AnimationValue.cpp \
-    src/AudioBuffer.cpp \
-    src/AudioController.cpp \
-    src/AudioListener.cpp \
-    src/AudioSource.cpp \
-    src/BoundingBox.cpp \
-    src/BoundingBox.inl \
-    src/BoundingSphere.cpp \
-    src/BoundingSphere.inl \
-    src/Bundle.cpp \
-    src/Button.cpp \
-    src/Camera.cpp \
-    src/CheckBox.cpp \
-    src/Container.cpp \
-    src/Control.cpp \
-    src/ControlFactory.cpp \
-    src/Curve.cpp \
-    src/DepthStencilTarget.cpp \
-    src/Drawable.cpp \
-    src/Effect.cpp \
-    src/FileSystem.cpp \
-    src/FlowLayout.cpp \
-    src/Font.cpp \
-    src/Form.cpp \
-    src/FrameBuffer.cpp \
-    src/Frustum.cpp \
-    src/Game.cpp \
-    src/Game.inl \
-    src/Gamepad.cpp \
-    src/HeightField.cpp \
-    src/Image.cpp \
-    src/Image.inl \
-    src/ImageControl.cpp \
-    src/Joint.cpp \
-    src/JoystickControl.cpp \
-    src/Label.cpp \
-    src/Layout.cpp \
-    src/Light.cpp \
-    src/Logger.cpp \
-    src/Material.cpp \
-    src/MaterialParameter.cpp \
-    src/MathUtil.cpp \
-    src/MathUtil.inl \
-    src/MathUtilNeon.inl \
-    src/Matrix.cpp \
-    src/Matrix.inl \
-    src/Mesh.cpp \
-    src/MeshBatch.cpp \
-    src/MeshBatch.inl \
-    src/MeshPart.cpp \
-    src/MeshSkin.cpp \
-    src/Model.cpp \
-    src/Node.cpp \
-    src/ParticleEmitter.cpp \
-    src/Pass.cpp \
-    src/PhysicsCharacter.cpp \
-    src/PhysicsCollisionObject.cpp \
-    src/PhysicsCollisionShape.cpp \
-    src/PhysicsConstraint.cpp \
-    src/PhysicsConstraint.inl \
-    src/PhysicsController.cpp \
-    src/PhysicsFixedConstraint.cpp \
-    src/PhysicsFixedConstraint.inl \
-    src/PhysicsGenericConstraint.cpp \
-    src/PhysicsGenericConstraint.inl \
-    src/PhysicsGhostObject.cpp \
-    src/PhysicsHingeConstraint.cpp \
-    src/PhysicsRigidBody.cpp \
-    src/PhysicsRigidBody.inl \
-    src/PhysicsSocketConstraint.cpp \
-    src/PhysicsSpringConstraint.cpp \
-    src/PhysicsSpringConstraint.inl \
-    src/PhysicsVehicle.cpp \
-    src/PhysicsVehicleWheel.cpp \
-    src/Plane.cpp \
-    src/Plane.inl \
-    src/Platform.cpp \
-    src/Properties.cpp \
-    src/Quaternion.cpp \
-    src/Quaternion.inl \
-    src/RadioButton.cpp \
-    src/Ray.cpp \
-    src/Ray.inl \
-    src/Rectangle.cpp \
-    src/Ref.cpp \
-    src/RenderState.cpp \
-    src/RenderTarget.cpp \
-    src/Scene.cpp \
-    src/SceneLoader.cpp \
-    src/ScreenDisplayer.cpp \
-    src/Script.cpp \
-    src/ScriptController.cpp \
-    src/ScriptController.inl \
-    src/ScriptTarget.cpp \
-    src/Slider.cpp \
-    src/Sprite.cpp \
-    src/SpriteBatch.cpp \
-    src/Technique.cpp \
-    src/Terrain.cpp \
-    src/TerrainPatch.cpp \
-    src/Text.cpp \
-    src/TextBox.cpp \
-    src/Texture.cpp \
-    src/Theme.cpp \
-    src/ThemeStyle.cpp \
-    src/TileSet.cpp \
-    src/Transform.cpp \
-    src/Vector2.cpp \
-    src/Vector2.inl \
-    src/Vector3.cpp \
-    src/Vector3.inl \
-    src/Vector4.cpp \
-    src/Vector4.inl \
-    src/VertexAttributeBinding.cpp \
-    src/VertexFormat.cpp \
-    src/VerticalLayout.cpp \
-    src/lua/lua_all_bindings.cpp \
-    src/lua/lua_AbsoluteLayout.cpp \
-    src/lua/lua_AIAgent.cpp \
-    src/lua/lua_AIAgentListener.cpp \
-    src/lua/lua_AIController.cpp \
-    src/lua/lua_AIMessage.cpp \
-    src/lua/lua_AIState.cpp \
-    src/lua/lua_AIStateListener.cpp \
-    src/lua/lua_AIStateMachine.cpp \
-    src/lua/lua_Animation.cpp \
-    src/lua/lua_AnimationClip.cpp \
-    src/lua/lua_AnimationClipListener.cpp \
-    src/lua/lua_AnimationController.cpp \
-    src/lua/lua_AnimationTarget.cpp \
-    src/lua/lua_AnimationValue.cpp \
-    src/lua/lua_AudioBuffer.cpp \
-    src/lua/lua_AudioController.cpp \
-    src/lua/lua_AudioListener.cpp \
-    src/lua/lua_AudioSource.cpp \
-    src/lua/lua_BoundingBox.cpp \
-    src/lua/lua_BoundingSphere.cpp \
-    src/lua/lua_Bundle.cpp \
-    src/lua/lua_Button.cpp \
-    src/lua/lua_Camera.cpp \
-    src/lua/lua_CameraListener.cpp \
-    src/lua/lua_CheckBox.cpp \
-    src/lua/lua_Container.cpp \
-    src/lua/lua_Control.cpp \
-    src/lua/lua_ControlListener.cpp \
-    src/lua/lua_Curve.cpp \
-    src/lua/lua_DepthStencilTarget.cpp \
-    src/lua/lua_Drawable.cpp \
-    src/lua/lua_Effect.cpp \
-    src/lua/lua_FileSystem.cpp \
-    src/lua/lua_FlowLayout.cpp \
-    src/lua/lua_Font.cpp \
-    src/lua/lua_Form.cpp \
-    src/lua/lua_FrameBuffer.cpp \
-    src/lua/lua_Frustum.cpp \
-    src/lua/lua_Game.cpp \
-    src/lua/lua_Gamepad.cpp \
-    src/lua/lua_Gesture.cpp \
-    src/lua/lua_Global.cpp \
-    src/lua/lua_HeightField.cpp \
-    src/lua/lua_Image.cpp \
-    src/lua/lua_ImageControl.cpp \
-    src/lua/lua_Joint.cpp \
-    src/lua/lua_JoystickControl.cpp \
-    src/lua/lua_Keyboard.cpp \
-    src/lua/lua_Label.cpp \
-    src/lua/lua_Layout.cpp \
-    src/lua/lua_Light.cpp \
-    src/lua/lua_Logger.cpp \
-    src/lua/lua_Material.cpp \
-    src/lua/lua_MaterialParameter.cpp \
-    src/lua/lua_MathUtil.cpp \
-    src/lua/lua_Matrix.cpp \
-    src/lua/lua_Mesh.cpp \
-    src/lua/lua_MeshBatch.cpp \
-    src/lua/lua_MeshPart.cpp \
-    src/lua/lua_MeshSkin.cpp \
-    src/lua/lua_Model.cpp \
-    src/lua/lua_Mouse.cpp \
-    src/lua/lua_Node.cpp \
-    src/lua/lua_NodeCloneContext.cpp \
-    src/lua/lua_ParticleEmitter.cpp \
-    src/lua/lua_Pass.cpp \
-    src/lua/lua_PhysicsCharacter.cpp \
-    src/lua/lua_PhysicsCollisionObject.cpp \
-    src/lua/lua_PhysicsCollisionObjectCollisionListener.cpp \
-    src/lua/lua_PhysicsCollisionObjectCollisionPair.cpp \
-    src/lua/lua_PhysicsCollisionShape.cpp \
-    src/lua/lua_PhysicsCollisionShapeDefinition.cpp \
-    src/lua/lua_PhysicsConstraint.cpp \
-    src/lua/lua_PhysicsController.cpp \
-    src/lua/lua_PhysicsControllerHitFilter.cpp \
-    src/lua/lua_PhysicsControllerHitResult.cpp \
-    src/lua/lua_PhysicsControllerListener.cpp \
-    src/lua/lua_PhysicsFixedConstraint.cpp \
-    src/lua/lua_PhysicsGenericConstraint.cpp \
-    src/lua/lua_PhysicsGhostObject.cpp \
-    src/lua/lua_PhysicsHingeConstraint.cpp \
-    src/lua/lua_PhysicsRigidBody.cpp \
-    src/lua/lua_PhysicsRigidBodyParameters.cpp \
-    src/lua/lua_PhysicsSocketConstraint.cpp \
-    src/lua/lua_PhysicsSpringConstraint.cpp \
-    src/lua/lua_PhysicsVehicle.cpp \
-    src/lua/lua_PhysicsVehicleWheel.cpp \
-    src/lua/lua_Plane.cpp \
-    src/lua/lua_Platform.cpp \
-    src/lua/lua_Properties.cpp \
-    src/lua/lua_Quaternion.cpp \
-    src/lua/lua_RadioButton.cpp \
-    src/lua/lua_Ray.cpp \
-    src/lua/lua_Rectangle.cpp \
-    src/lua/lua_Ref.cpp \
-    src/lua/lua_RenderState.cpp \
-    src/lua/lua_RenderStateStateBlock.cpp \
-    src/lua/lua_RenderTarget.cpp \
-    src/lua/lua_Scene.cpp \
-    src/lua/lua_ScreenDisplayer.cpp \
-    src/lua/lua_Script.cpp \
-    src/lua/lua_ScriptController.cpp \
-    src/lua/lua_ScriptTarget.cpp \
-    src/lua/lua_ScriptTargetEvent.cpp \
-    src/lua/lua_ScriptTargetEventRegistry.cpp \
-    src/lua/lua_Slider.cpp \
-    src/lua/lua_Sprite.cpp \
-    src/lua/lua_SpriteBatch.cpp \
-    src/lua/lua_SpriteBatchSpriteVertex.cpp \
-    src/lua/lua_Technique.cpp \
-    src/lua/lua_Terrain.cpp \
-    src/lua/lua_TerrainPatch.cpp \
-    src/lua/lua_Text.cpp \
-    src/lua/lua_TextBox.cpp \
-    src/lua/lua_Texture.cpp \
-    src/lua/lua_TextureSampler.cpp \
-    src/lua/lua_Theme.cpp \
-    src/lua/lua_ThemeSideRegions.cpp \
-    src/lua/lua_ThemeStyle.cpp \
-    src/lua/lua_ThemeThemeImage.cpp \
-    src/lua/lua_ThemeUVs.cpp \
-    src/lua/lua_TileSet.cpp \
-    src/lua/lua_Touch.cpp \
-    src/lua/lua_Transform.cpp \
-    src/lua/lua_TransformListener.cpp \
-    src/lua/lua_Uniform.cpp \
-    src/lua/lua_Vector2.cpp \
-    src/lua/lua_Vector3.cpp \
-    src/lua/lua_Vector4.cpp \
-    src/lua/lua_VertexAttributeBinding.cpp \
-    src/lua/lua_VertexFormat.cpp \
-    src/lua/lua_VertexFormatElement.cpp \
-    src/lua/lua_VerticalLayout.cpp
-
-HEADERS += src/AbsoluteLayout.h \
-    src/AIAgent.h \
-    src/AIController.h \
-    src/AIMessage.h \
-    src/AIState.h \
-    src/AIStateMachine.h \
-    src/Animation.h \
-    src/AnimationClip.h \
-    src/AnimationController.h \
-    src/AnimationTarget.h \
-    src/AnimationValue.h \
-    src/AudioBuffer.h \
-    src/AudioController.h \
-    src/AudioListener.h \
-    src/AudioSource.h \
-    src/Base.h \
-    src/BoundingBox.h \
-    src/BoundingSphere.h \
-    src/Bundle.h \
-    src/Button.h \
-    src/Camera.h \
-    src/CheckBox.h \
-    src/Container.h \
-    src/Control.h \
-    src/ControlFactory.h \
-    src/Curve.h \
-    src/DepthStencilTarget.h \
-    src/Drawable.h \
-    src/Effect.h \
-    src/FileSystem.h \
-    src/FlowLayout.h \
-    src/Font.h \
-    src/Form.h \
-    src/FrameBuffer.h \
-    src/Frustum.h \
-    src/Game.h \
-    src/Gamepad.h \
-    src/gameplay.h \
-    src/Gesture.h \
-    src/HeightField.h \
-    src/Image.h \
-    src/ImageControl.h \
-    src/Joint.h \
-    src/JoystickControl.h \
-    src/Keyboard.h \
-    src/Label.h \
-    src/Layout.h \
-    src/Light.h \
-    src/Logger.h \
-    src/Material.h \
-    src/MaterialParameter.h \
-    src/MathUtil.h \
-    src/Matrix.h \
-    src/Mesh.h \
-    src/MeshBatch.h \
-    src/MeshPart.h \
-    src/MeshSkin.h \
-    src/Model.h \
-    src/Mouse.h \
-    src/Node.h \
-    src/ParticleEmitter.h \
-    src/Pass.h \
-    src/PhysicsCharacter.h \
-    src/PhysicsCollisionObject.h \
-    src/PhysicsCollisionShape.h \
-    src/PhysicsConstraint.h \
-    src/PhysicsController.h \
-    src/PhysicsFixedConstraint.h \
-    src/PhysicsGenericConstraint.h \
-    src/PhysicsGhostObject.h \
-    src/PhysicsHingeConstraint.h \
-    src/PhysicsRigidBody.h \
-    src/PhysicsSocketConstraint.h \
-    src/PhysicsSpringConstraint.h \
-    src/PhysicsVehicle.h \
-    src/PhysicsVehicleWheel.h \
-    src/Plane.h \
-    src/Platform.h \
-    src/Properties.h \
-    src/Quaternion.h \
-    src/RadioButton.h \
-    src/Ray.h \
-    src/Rectangle.h \
-    src/Ref.h \
-    src/RenderState.h \
-    src/RenderTarget.h \
-    src/Scene.h \
-    src/SceneLoader.h \
-    src/ScreenDisplayer.h \
-    src/Script.h \
-    src/ScriptController.h \
-    src/ScriptTarget.h \
-    src/Slider.h \
-    src/Sprite.h \
-    src/SpriteBatch.h \
-    src/Stream.h \
-    src/Technique.h \
-    src/Terrain.h \
-    src/TerrainPatch.h \
-    src/Text.h \
-    src/TextBox.h \
-    src/Texture.h \
-    src/Theme.h \
-    src/ThemeStyle.h \
-    src/TileSet.h \
-    src/TimeListener.h \
-    src/Touch.h \
-    src/Transform.h \
-    src/Vector2.h \
-    src/Vector3.h \
-    src/Vector4.h \
-    src/VertexAttributeBinding.h \
-    src/VertexFormat.h \
-    src/VerticalLayout.h \
-    src/lua/lua_AbsoluteLayout.h \
-    src/lua/lua_AIAgent.h \
-    src/lua/lua_AIAgentListener.h \
-    src/lua/lua_AIController.h \
-    src/lua/lua_AIMessage.h \
-    src/lua/lua_AIState.h \
-    src/lua/lua_AIStateListener.h \
-    src/lua/lua_AIStateMachine.h \
-    src/lua/lua_all_bindings.h \
-    src/lua/lua_Animation.h \
-    src/lua/lua_AnimationClip.h \
-    src/lua/lua_AnimationClipListener.h \
-    src/lua/lua_AnimationController.h \
-    src/lua/lua_AnimationTarget.h \
-    src/lua/lua_AnimationValue.h \
-    src/lua/lua_AudioBuffer.h \
-    src/lua/lua_AudioController.h \
-    src/lua/lua_AudioListener.h \
-    src/lua/lua_AudioSource.h \
-    src/lua/lua_BoundingBox.h \
-    src/lua/lua_BoundingSphere.h \
-    src/lua/lua_Bundle.h \
-    src/lua/lua_Button.h \
-    src/lua/lua_Camera.h \
-    src/lua/lua_CameraListener.h \
-    src/lua/lua_CheckBox.h \
-    src/lua/lua_Container.h \
-    src/lua/lua_Control.h \
-    src/lua/lua_ControlListener.h \
-    src/lua/lua_Curve.h \
-    src/lua/lua_DepthStencilTarget.h \
-    src/lua/lua_Drawable.h \
-    src/lua/lua_Effect.h \
-    src/lua/lua_FileSystem.h \
-    src/lua/lua_FlowLayout.h \
-    src/lua/lua_Font.h \
-    src/lua/lua_Form.h \
-    src/lua/lua_FrameBuffer.h \
-    src/lua/lua_Frustum.h \
-    src/lua/lua_Game.h \
-    src/lua/lua_Gamepad.h \
-    src/lua/lua_Gesture.h \
-    src/lua/lua_Global.h \
-    src/lua/lua_HeightField.h \
-    src/lua/lua_Image.h \
-    src/lua/lua_ImageControl.h \
-    src/lua/lua_ImageFormat.h \
-    src/lua/lua_Joint.h \
-    src/lua/lua_JoystickControl.h \
-    src/lua/lua_Keyboard.h \
-    src/lua/lua_Label.h \
-    src/lua/lua_Layout.h \
-    src/lua/lua_Light.h \
-    src/lua/lua_Logger.h \
-    src/lua/lua_Material.h \
-    src/lua/lua_MaterialParameter.h \
-    src/lua/lua_MathUtil.h \
-    src/lua/lua_Matrix.h \
-    src/lua/lua_Mesh.h \
-    src/lua/lua_MeshBatch.h \
-    src/lua/lua_MeshPart.h \
-    src/lua/lua_MeshSkin.h \
-    src/lua/lua_Model.h \
-    src/lua/lua_Mouse.h \
-    src/lua/lua_Node.h \
-    src/lua/lua_NodeCloneContext.h \
-    src/lua/lua_ParticleEmitter.h \
-    src/lua/lua_Pass.h \
-    src/lua/lua_PhysicsCharacter.h \
-    src/lua/lua_PhysicsCollisionObject.h \
-    src/lua/lua_PhysicsCollisionObjectCollisionListener.h \
-    src/lua/lua_PhysicsCollisionObjectCollisionPair.h \
-    src/lua/lua_PhysicsCollisionObjectType.h \
-    src/lua/lua_PhysicsCollisionShape.h \
-    src/lua/lua_PhysicsCollisionShapeDefinition.h \
-    src/lua/lua_PhysicsConstraint.h \
-    src/lua/lua_PhysicsController.h \
-    src/lua/lua_PhysicsControllerHitFilter.h \
-    src/lua/lua_PhysicsControllerHitResult.h \
-    src/lua/lua_PhysicsControllerListener.h \
-    src/lua/lua_PhysicsFixedConstraint.h \
-    src/lua/lua_PhysicsGenericConstraint.h \
-    src/lua/lua_PhysicsGhostObject.h \
-    src/lua/lua_PhysicsHingeConstraint.h \
-    src/lua/lua_PhysicsRigidBody.h \
-    src/lua/lua_PhysicsRigidBodyParameters.h \
-    src/lua/lua_PhysicsSocketConstraint.h \
-    src/lua/lua_PhysicsSpringConstraint.h \
-    src/lua/lua_PhysicsVehicle.h \
-    src/lua/lua_PhysicsVehicleWheel.h \
-    src/lua/lua_Plane.h \
-    src/lua/lua_Platform.h \
-    src/lua/lua_Properties.h \
-    src/lua/lua_Quaternion.h \
-    src/lua/lua_RadioButton.h \
-    src/lua/lua_Ray.h \
-    src/lua/lua_Rectangle.h \
-    src/lua/lua_Ref.h \
-    src/lua/lua_RenderState.h \
-    src/lua/lua_RenderTarget.h \
-    src/lua/lua_Scene.h \
-    src/lua/lua_ScreenDisplayer.h \
-    src/lua/lua_Script.h \
-    src/lua/lua_ScriptController.h \
-    src/lua/lua_ScriptTarget.h \
-    src/lua/lua_ScriptTargetEvent.h \
-    src/lua/lua_ScriptTargetEventRegistry.h \
-    src/lua/lua_Slider.h \
-    src/lua/lua_Sprite.h \
-    src/lua/lua_SpriteBatch.h \
-    src/lua/lua_SpriteBatchSpriteVertex.h \
-    src/lua/lua_Technique.h \
-    src/lua/lua_Terrain.h \
-    src/lua/lua_TerrainPatch.h \
-    src/lua/lua_Text.h \
-    src/lua/lua_TextBox.h \
-    src/lua/lua_Texture.h \
-    src/lua/lua_TextureSampler.h \
-    src/lua/lua_Theme.h \
-    src/lua/lua_ThemeSideRegions.h \
-    src/lua/lua_ThemeStyle.h \
-    src/lua/lua_ThemeThemeImage.h \
-    src/lua/lua_ThemeUVs.h \
-    src/lua/lua_TileSet.h \
-    src/lua/lua_Touch.h \
-    src/lua/lua_TouchTouchEvent.h \
-    src/lua/lua_Transform.h \
-    src/lua/lua_TransformListener.h \
-    src/lua/lua_Uniform.h \
-    src/lua/lua_Vector2.h \
-    src/lua/lua_Vector3.h \
-    src/lua/lua_Vector4.h \
-    src/lua/lua_VertexAttributeBinding.h \
-    src/lua/lua_VertexFormat.h \
-    src/lua/lua_VertexFormatElement.h \
-    src/lua/lua_VerticalLayout.h
-
-INCLUDEPATH += $$PWD/../gameplay/src
-INCLUDEPATH += $$PWD/../external-deps/include
-DEFINES += GP_USE_GAMEPAD
-
-linux: SOURCES += src/PlatformLinux.cpp
-linux: SOURCES += src/gameplay-main-linux.cpp
-linux: QMAKE_CXXFLAGS += -lstdc++ -pthread -w
-linux: DEFINES += __linux__
-linux: INCLUDEPATH += /usr/include/gtk-2.0
-linux: INCLUDEPATH += /usr/lib/x86_64-linux-gnu/gtk-2.0/include
-linux: INCLUDEPATH += /usr/include/atk-1.0
-linux: INCLUDEPATH += /usr/include/cairo
-linux: INCLUDEPATH += /usr/include/gdk-pixbuf-2.0
-linux: INCLUDEPATH += /usr/include/pango-1.0
-linux: INCLUDEPATH += /usr/include/gio-unix-2.0
-linux: INCLUDEPATH += /usr/include/freetype2
-linux: INCLUDEPATH += /usr/include/glib-2.0
-linux: INCLUDEPATH += /usr/lib/x86_64-linux-gnu/glib-2.0/include
-linux: INCLUDEPATH += /usr/include/pixman-1
-linux: INCLUDEPATH += /usr/include/libpng12
-linux: INCLUDEPATH += /usr/include/harfbuzz
-
-macx: OBJECTIVE_SOURCES += src/PlatformMacOSX.mm
-macx: OBJECTIVE_SOURCES += src/gameplay-main-macosx.mm
-macx: QMAKE_CXXFLAGS += -x c++ -x objective-c++ -stdlib=libc++ -w -arch x86_64
-macx: LIBS += -F/System/Library/Frameworks -framework GameKit
-macx: LIBS += -F/System/Library/Frameworks -framework IOKit
-macx: LIBS += -F/System/Library/Frameworks -framework QuartzCore
-macx: LIBS += -F/System/Library/Frameworks -framework OpenAL
-macx: LIBS += -F/System/Library/Frameworks -framework OpenGL
-macx: LIBS += -F/System/Library/Frameworks -framework Cocoa
-macx: LIBS += -F/System/Library/Frameworks -framework Foundation
-
-win32: SOURCES += src/PlatformWindows.cpp
-win32: SOURCES += src/gameplay-main-windows.cpp
-win32: DEFINES += WIN32 _UNICODE UNICODE
-win32: INCLUDEPATH += $$(DXSDK_DIR)/Include
-win32: QMAKE_CXXFLAGS_WARN_ON -= -w34100
-win32: QMAKE_CXXFLAGS_WARN_ON -= -w34189
-win32: QMAKE_CXXFLAGS_WARN_ON -= -w4302

+ 0 - 680
gameplay/gameplay.vcxproj

@@ -1,680 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="DebugMem|x64">
-      <Configuration>DebugMem</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Release|x64">
-      <Configuration>Release</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="src\AbsoluteLayout.cpp" />
-    <ClCompile Include="src\AIAgent.cpp" />
-    <ClCompile Include="src\AIController.cpp" />
-    <ClCompile Include="src\AIMessage.cpp" />
-    <ClCompile Include="src\AIState.cpp" />
-    <ClCompile Include="src\AIStateMachine.cpp" />
-    <ClCompile Include="src\Animation.cpp" />
-    <ClCompile Include="src\AnimationClip.cpp" />
-    <ClCompile Include="src\AnimationController.cpp" />
-    <ClCompile Include="src\AnimationTarget.cpp" />
-    <ClCompile Include="src\AnimationValue.cpp" />
-    <ClCompile Include="src\AudioBuffer.cpp" />
-    <ClCompile Include="src\AudioController.cpp" />
-    <ClCompile Include="src\AudioListener.cpp" />
-    <ClCompile Include="src\AudioSource.cpp" />
-    <ClCompile Include="src\BoundingBox.cpp" />
-    <ClCompile Include="src\BoundingSphere.cpp" />
-    <ClCompile Include="src\Button.cpp" />
-    <ClCompile Include="src\Camera.cpp" />
-    <ClCompile Include="src\CheckBox.cpp" />
-    <ClCompile Include="src\Container.cpp" />
-    <ClCompile Include="src\Control.cpp" />
-    <ClCompile Include="src\ControlFactory.cpp" />
-    <ClCompile Include="src\Curve.cpp" />
-    <ClCompile Include="src\DebugNew.cpp" />
-    <ClCompile Include="src\DepthStencilTarget.cpp" />
-    <ClCompile Include="src\Drawable.cpp" />
-    <ClCompile Include="src\Effect.cpp" />
-    <ClCompile Include="src\FileSystem.cpp" />
-    <ClCompile Include="src\FlowLayout.cpp" />
-    <ClCompile Include="src\Font.cpp" />
-    <ClCompile Include="src\Form.cpp" />
-    <ClCompile Include="src\FrameBuffer.cpp" />
-    <ClCompile Include="src\Frustum.cpp" />
-    <ClCompile Include="src\Game.cpp" />
-    <ClCompile Include="src\Gamepad.cpp" />
-    <ClCompile Include="src\gameplay-main-android.cpp" />
-    <ClCompile Include="src\gameplay-main-linux.cpp" />
-    <ClCompile Include="src\gameplay-main-windows.cpp" />
-    <ClCompile Include="src\HeightField.cpp" />
-    <ClCompile Include="src\Image.cpp" />
-    <ClCompile Include="src\ImageControl.cpp" />
-    <ClCompile Include="src\Joint.cpp" />
-    <ClCompile Include="src\JoystickControl.cpp" />
-    <ClCompile Include="src\Label.cpp" />
-    <ClCompile Include="src\Layout.cpp" />
-    <ClCompile Include="src\Light.cpp" />
-    <ClCompile Include="src\Logger.cpp" />
-    <ClCompile Include="src\lua\lua_AbsoluteLayout.cpp" />
-    <ClCompile Include="src\lua\lua_AIAgent.cpp" />
-    <ClCompile Include="src\lua\lua_AIAgentListener.cpp" />
-    <ClCompile Include="src\lua\lua_AIController.cpp" />
-    <ClCompile Include="src\lua\lua_AIMessage.cpp" />
-    <ClCompile Include="src\lua\lua_AIState.cpp" />
-    <ClCompile Include="src\lua\lua_AIStateListener.cpp" />
-    <ClCompile Include="src\lua\lua_AIStateMachine.cpp" />
-    <ClCompile Include="src\lua\lua_all_bindings.cpp" />
-    <ClCompile Include="src\lua\lua_Animation.cpp" />
-    <ClCompile Include="src\lua\lua_AnimationClip.cpp" />
-    <ClCompile Include="src\lua\lua_AnimationClipListener.cpp" />
-    <ClCompile Include="src\lua\lua_AnimationController.cpp" />
-    <ClCompile Include="src\lua\lua_AnimationTarget.cpp" />
-    <ClCompile Include="src\lua\lua_AnimationValue.cpp" />
-    <ClCompile Include="src\lua\lua_AudioBuffer.cpp" />
-    <ClCompile Include="src\lua\lua_AudioController.cpp" />
-    <ClCompile Include="src\lua\lua_AudioListener.cpp" />
-    <ClCompile Include="src\lua\lua_AudioSource.cpp" />
-    <ClCompile Include="src\lua\lua_BoundingBox.cpp" />
-    <ClCompile Include="src\lua\lua_BoundingSphere.cpp" />
-    <ClCompile Include="src\lua\lua_Bundle.cpp" />
-    <ClCompile Include="src\lua\lua_Button.cpp" />
-    <ClCompile Include="src\lua\lua_Camera.cpp" />
-    <ClCompile Include="src\lua\lua_CameraListener.cpp" />
-    <ClCompile Include="src\lua\lua_CheckBox.cpp" />
-    <ClCompile Include="src\lua\lua_Container.cpp" />
-    <ClCompile Include="src\lua\lua_Control.cpp" />
-    <ClCompile Include="src\lua\lua_ControlListener.cpp" />
-    <ClCompile Include="src\lua\lua_Curve.cpp" />
-    <ClCompile Include="src\lua\lua_DepthStencilTarget.cpp" />
-    <ClCompile Include="src\lua\lua_Drawable.cpp" />
-    <ClCompile Include="src\lua\lua_Effect.cpp" />
-    <ClCompile Include="src\lua\lua_FileSystem.cpp" />
-    <ClCompile Include="src\lua\lua_FlowLayout.cpp" />
-    <ClCompile Include="src\lua\lua_Font.cpp" />
-    <ClCompile Include="src\lua\lua_Form.cpp" />
-    <ClCompile Include="src\lua\lua_FrameBuffer.cpp" />
-    <ClCompile Include="src\lua\lua_Frustum.cpp" />
-    <ClCompile Include="src\lua\lua_Game.cpp" />
-    <ClCompile Include="src\lua\lua_Gamepad.cpp" />
-    <ClCompile Include="src\lua\lua_Gesture.cpp" />
-    <ClCompile Include="src\lua\lua_Global.cpp" />
-    <ClCompile Include="src\lua\lua_HeightField.cpp" />
-    <ClCompile Include="src\lua\lua_Image.cpp" />
-    <ClCompile Include="src\lua\lua_ImageControl.cpp" />
-    <ClCompile Include="src\lua\lua_Joint.cpp" />
-    <ClCompile Include="src\lua\lua_JoystickControl.cpp" />
-    <ClCompile Include="src\lua\lua_Keyboard.cpp" />
-    <ClCompile Include="src\lua\lua_Label.cpp" />
-    <ClCompile Include="src\lua\lua_Layout.cpp" />
-    <ClCompile Include="src\lua\lua_Light.cpp" />
-    <ClCompile Include="src\lua\lua_Logger.cpp" />
-    <ClCompile Include="src\lua\lua_Material.cpp" />
-    <ClCompile Include="src\lua\lua_MaterialParameter.cpp" />
-    <ClCompile Include="src\lua\lua_MathUtil.cpp" />
-    <ClCompile Include="src\lua\lua_Matrix.cpp" />
-    <ClCompile Include="src\lua\lua_Mesh.cpp" />
-    <ClCompile Include="src\lua\lua_MeshBatch.cpp" />
-    <ClCompile Include="src\lua\lua_MeshPart.cpp" />
-    <ClCompile Include="src\lua\lua_MeshSkin.cpp" />
-    <ClCompile Include="src\lua\lua_Model.cpp" />
-    <ClCompile Include="src\lua\lua_Mouse.cpp" />
-    <ClCompile Include="src\lua\lua_Node.cpp" />
-    <ClCompile Include="src\lua\lua_NodeCloneContext.cpp" />
-    <ClCompile Include="src\lua\lua_ParticleEmitter.cpp" />
-    <ClCompile Include="src\lua\lua_Pass.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsCharacter.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsCollisionObject.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsCollisionObjectCollisionListener.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsCollisionObjectCollisionPair.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsCollisionShape.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsCollisionShapeDefinition.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsConstraint.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsController.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsControllerHitFilter.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsControllerHitResult.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsControllerListener.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsFixedConstraint.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsGenericConstraint.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsGhostObject.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsHingeConstraint.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsRigidBody.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsRigidBodyParameters.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsSocketConstraint.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsSpringConstraint.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsVehicle.cpp" />
-    <ClCompile Include="src\lua\lua_PhysicsVehicleWheel.cpp" />
-    <ClCompile Include="src\lua\lua_Plane.cpp" />
-    <ClCompile Include="src\lua\lua_Platform.cpp" />
-    <ClCompile Include="src\lua\lua_Properties.cpp" />
-    <ClCompile Include="src\lua\lua_Quaternion.cpp" />
-    <ClCompile Include="src\lua\lua_RadioButton.cpp" />
-    <ClCompile Include="src\lua\lua_Ray.cpp" />
-    <ClCompile Include="src\lua\lua_Rectangle.cpp" />
-    <ClCompile Include="src\lua\lua_Ref.cpp" />
-    <ClCompile Include="src\lua\lua_RenderState.cpp" />
-    <ClCompile Include="src\lua\lua_RenderStateStateBlock.cpp" />
-    <ClCompile Include="src\lua\lua_RenderTarget.cpp" />
-    <ClCompile Include="src\lua\lua_Scene.cpp" />
-    <ClCompile Include="src\lua\lua_ScreenDisplayer.cpp" />
-    <ClCompile Include="src\lua\lua_Script.cpp" />
-    <ClCompile Include="src\lua\lua_ScriptController.cpp" />
-    <ClCompile Include="src\lua\lua_ScriptTarget.cpp" />
-    <ClCompile Include="src\lua\lua_ScriptTargetEvent.cpp" />
-    <ClCompile Include="src\lua\lua_ScriptTargetEventRegistry.cpp" />
-    <ClCompile Include="src\lua\lua_Slider.cpp" />
-    <ClCompile Include="src\lua\lua_Sprite.cpp" />
-    <ClCompile Include="src\lua\lua_SpriteBatch.cpp" />
-    <ClCompile Include="src\lua\lua_SpriteBatchSpriteVertex.cpp" />
-    <ClCompile Include="src\lua\lua_Technique.cpp" />
-    <ClCompile Include="src\lua\lua_Terrain.cpp" />
-    <ClCompile Include="src\lua\lua_TerrainPatch.cpp" />
-    <ClCompile Include="src\lua\lua_Text.cpp" />
-    <ClCompile Include="src\lua\lua_TextBox.cpp" />
-    <ClCompile Include="src\lua\lua_Texture.cpp" />
-    <ClCompile Include="src\lua\lua_TextureSampler.cpp" />
-    <ClCompile Include="src\lua\lua_Theme.cpp" />
-    <ClCompile Include="src\lua\lua_ThemeSideRegions.cpp" />
-    <ClCompile Include="src\lua\lua_ThemeStyle.cpp" />
-    <ClCompile Include="src\lua\lua_ThemeThemeImage.cpp" />
-    <ClCompile Include="src\lua\lua_ThemeUVs.cpp" />
-    <ClCompile Include="src\lua\lua_TileSet.cpp" />
-    <ClCompile Include="src\lua\lua_Touch.cpp" />
-    <ClCompile Include="src\lua\lua_Transform.cpp" />
-    <ClCompile Include="src\lua\lua_TransformListener.cpp" />
-    <ClCompile Include="src\lua\lua_Uniform.cpp" />
-    <ClCompile Include="src\lua\lua_Vector2.cpp" />
-    <ClCompile Include="src\lua\lua_Vector3.cpp" />
-    <ClCompile Include="src\lua\lua_Vector4.cpp" />
-    <ClCompile Include="src\lua\lua_VertexAttributeBinding.cpp" />
-    <ClCompile Include="src\lua\lua_VertexFormat.cpp" />
-    <ClCompile Include="src\lua\lua_VertexFormatElement.cpp" />
-    <ClCompile Include="src\lua\lua_VerticalLayout.cpp" />
-    <ClCompile Include="src\Material.cpp" />
-    <ClCompile Include="src\MathUtil.cpp" />
-    <ClCompile Include="src\MeshBatch.cpp" />
-    <ClCompile Include="src\Pass.cpp" />
-    <ClCompile Include="src\MaterialParameter.cpp" />
-    <ClCompile Include="src\Matrix.cpp" />
-    <ClCompile Include="src\Mesh.cpp" />
-    <ClCompile Include="src\MeshPart.cpp" />
-    <ClCompile Include="src\MeshSkin.cpp" />
-    <ClCompile Include="src\Model.cpp" />
-    <ClCompile Include="src\Node.cpp" />
-    <ClCompile Include="src\Bundle.cpp" />
-    <ClCompile Include="src\ParticleEmitter.cpp" />
-    <ClCompile Include="src\PhysicsCharacter.cpp" />
-    <ClCompile Include="src\PhysicsCollisionObject.cpp" />
-    <ClCompile Include="src\PhysicsCollisionShape.cpp" />
-    <ClCompile Include="src\PhysicsConstraint.cpp" />
-    <ClCompile Include="src\PhysicsController.cpp" />
-    <ClCompile Include="src\PhysicsFixedConstraint.cpp" />
-    <ClCompile Include="src\PhysicsGenericConstraint.cpp" />
-    <ClCompile Include="src\PhysicsGhostObject.cpp" />
-    <ClCompile Include="src\PhysicsHingeConstraint.cpp" />
-    <ClCompile Include="src\PhysicsRigidBody.cpp" />
-    <ClCompile Include="src\PhysicsSocketConstraint.cpp" />
-    <ClCompile Include="src\PhysicsSpringConstraint.cpp" />
-    <ClCompile Include="src\PhysicsVehicle.cpp" />
-    <ClCompile Include="src\PhysicsVehicleWheel.cpp" />
-    <ClCompile Include="src\Plane.cpp" />
-    <ClCompile Include="src\Platform.cpp" />
-    <ClCompile Include="src\PlatformAndroid.cpp" />
-    <ClCompile Include="src\PlatformLinux.cpp" />
-    <ClCompile Include="src\PlatformWindows.cpp" />
-    <ClCompile Include="src\Properties.cpp" />
-    <ClCompile Include="src\Quaternion.cpp" />
-    <ClCompile Include="src\RadioButton.cpp" />
-    <ClCompile Include="src\Ray.cpp" />
-    <ClCompile Include="src\Rectangle.cpp" />
-    <ClCompile Include="src\Ref.cpp" />
-    <ClCompile Include="src\RenderState.cpp" />
-    <ClCompile Include="src\RenderTarget.cpp" />
-    <ClCompile Include="src\Scene.cpp" />
-    <ClCompile Include="src\SceneLoader.cpp" />
-    <ClCompile Include="src\ScreenDisplayer.cpp" />
-    <ClCompile Include="src\Script.cpp" />
-    <ClCompile Include="src\ScriptController.cpp" />
-    <ClCompile Include="src\ScriptTarget.cpp" />
-    <ClCompile Include="src\Slider.cpp" />
-    <ClCompile Include="src\Sprite.cpp" />
-    <ClCompile Include="src\SpriteBatch.cpp" />
-    <ClCompile Include="src\Technique.cpp" />
-    <ClCompile Include="src\Terrain.cpp" />
-    <ClCompile Include="src\TerrainPatch.cpp" />
-    <ClCompile Include="src\Text.cpp" />
-    <ClCompile Include="src\TextBox.cpp" />
-    <ClCompile Include="src\Texture.cpp" />
-    <ClCompile Include="src\Theme.cpp" />
-    <ClCompile Include="src\ThemeStyle.cpp" />
-    <ClCompile Include="src\TileSet.cpp" />
-    <ClCompile Include="src\Transform.cpp" />
-    <ClCompile Include="src\Vector2.cpp" />
-    <ClCompile Include="src\Vector3.cpp" />
-    <ClCompile Include="src\Vector4.cpp" />
-    <ClCompile Include="src\VertexAttributeBinding.cpp" />
-    <ClCompile Include="src\VertexFormat.cpp" />
-    <ClCompile Include="src\VerticalLayout.cpp" />
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="src\AbsoluteLayout.h" />
-    <ClInclude Include="src\AIAgent.h" />
-    <ClInclude Include="src\AIController.h" />
-    <ClInclude Include="src\AIMessage.h" />
-    <ClInclude Include="src\AIState.h" />
-    <ClInclude Include="src\AIStateMachine.h" />
-    <ClInclude Include="src\Animation.h" />
-    <ClInclude Include="src\AnimationClip.h" />
-    <ClInclude Include="src\AnimationController.h" />
-    <ClInclude Include="src\AnimationTarget.h" />
-    <ClInclude Include="src\AnimationValue.h" />
-    <ClInclude Include="src\AudioBuffer.h" />
-    <ClInclude Include="src\AudioController.h" />
-    <ClInclude Include="src\AudioListener.h" />
-    <ClInclude Include="src\AudioSource.h" />
-    <ClInclude Include="src\Base.h" />
-    <ClInclude Include="src\BoundingBox.h" />
-    <ClInclude Include="src\BoundingSphere.h" />
-    <ClInclude Include="src\Button.h" />
-    <ClInclude Include="src\Camera.h" />
-    <ClInclude Include="src\CheckBox.h" />
-    <ClInclude Include="src\Container.h" />
-    <ClInclude Include="src\Control.h" />
-    <ClInclude Include="src\ControlFactory.h" />
-    <ClInclude Include="src\Curve.h" />
-    <ClInclude Include="src\DebugNew.h" />
-    <ClInclude Include="src\DepthStencilTarget.h" />
-    <ClInclude Include="src\Drawable.h" />
-    <ClInclude Include="src\Effect.h" />
-    <ClInclude Include="src\FileSystem.h" />
-    <ClInclude Include="src\FlowLayout.h" />
-    <ClInclude Include="src\Font.h" />
-    <ClInclude Include="src\Form.h" />
-    <ClInclude Include="src\FrameBuffer.h" />
-    <ClInclude Include="src\Frustum.h" />
-    <ClInclude Include="src\Game.h" />
-    <ClInclude Include="src\Gamepad.h" />
-    <ClInclude Include="src\gameplay.h" />
-    <ClInclude Include="src\Gesture.h" />
-    <ClInclude Include="src\HeightField.h" />
-    <ClInclude Include="src\Image.h" />
-    <ClInclude Include="src\ImageControl.h" />
-    <ClInclude Include="src\Joint.h" />
-    <ClInclude Include="src\JoystickControl.h" />
-    <ClInclude Include="src\Keyboard.h" />
-    <ClInclude Include="src\Label.h" />
-    <ClInclude Include="src\Layout.h" />
-    <ClInclude Include="src\Light.h" />
-    <ClInclude Include="src\Logger.h" />
-    <ClInclude Include="src\lua\lua_AbsoluteLayout.h" />
-    <ClInclude Include="src\lua\lua_AIAgent.h" />
-    <ClInclude Include="src\lua\lua_AIAgentListener.h" />
-    <ClInclude Include="src\lua\lua_AIController.h" />
-    <ClInclude Include="src\lua\lua_AIMessage.h" />
-    <ClInclude Include="src\lua\lua_AIState.h" />
-    <ClInclude Include="src\lua\lua_AIStateListener.h" />
-    <ClInclude Include="src\lua\lua_AIStateMachine.h" />
-    <ClInclude Include="src\lua\lua_all_bindings.h" />
-    <ClInclude Include="src\lua\lua_Animation.h" />
-    <ClInclude Include="src\lua\lua_AnimationClip.h" />
-    <ClInclude Include="src\lua\lua_AnimationClipListener.h" />
-    <ClInclude Include="src\lua\lua_AnimationController.h" />
-    <ClInclude Include="src\lua\lua_AnimationTarget.h" />
-    <ClInclude Include="src\lua\lua_AnimationValue.h" />
-    <ClInclude Include="src\lua\lua_AudioBuffer.h" />
-    <ClInclude Include="src\lua\lua_AudioController.h" />
-    <ClInclude Include="src\lua\lua_AudioListener.h" />
-    <ClInclude Include="src\lua\lua_AudioSource.h" />
-    <ClInclude Include="src\lua\lua_BoundingBox.h" />
-    <ClInclude Include="src\lua\lua_BoundingSphere.h" />
-    <ClInclude Include="src\lua\lua_Bundle.h" />
-    <ClInclude Include="src\lua\lua_Button.h" />
-    <ClInclude Include="src\lua\lua_Camera.h" />
-    <ClInclude Include="src\lua\lua_CameraListener.h" />
-    <ClInclude Include="src\lua\lua_CheckBox.h" />
-    <ClInclude Include="src\lua\lua_Container.h" />
-    <ClInclude Include="src\lua\lua_Control.h" />
-    <ClInclude Include="src\lua\lua_ControlListener.h" />
-    <ClInclude Include="src\lua\lua_Curve.h" />
-    <ClInclude Include="src\lua\lua_DepthStencilTarget.h" />
-    <ClInclude Include="src\lua\lua_Drawable.h" />
-    <ClInclude Include="src\lua\lua_Effect.h" />
-    <ClInclude Include="src\lua\lua_FileSystem.h" />
-    <ClInclude Include="src\lua\lua_FlowLayout.h" />
-    <ClInclude Include="src\lua\lua_Font.h" />
-    <ClInclude Include="src\lua\lua_Form.h" />
-    <ClInclude Include="src\lua\lua_FrameBuffer.h" />
-    <ClInclude Include="src\lua\lua_Frustum.h" />
-    <ClInclude Include="src\lua\lua_Game.h" />
-    <ClInclude Include="src\lua\lua_Gamepad.h" />
-    <ClInclude Include="src\lua\lua_Gesture.h" />
-    <ClInclude Include="src\lua\lua_Global.h" />
-    <ClInclude Include="src\lua\lua_HeightField.h" />
-    <ClInclude Include="src\lua\lua_Image.h" />
-    <ClInclude Include="src\lua\lua_ImageControl.h" />
-    <ClInclude Include="src\lua\lua_Joint.h" />
-    <ClInclude Include="src\lua\lua_JoystickControl.h" />
-    <ClInclude Include="src\lua\lua_Keyboard.h" />
-    <ClInclude Include="src\lua\lua_Label.h" />
-    <ClInclude Include="src\lua\lua_Layout.h" />
-    <ClInclude Include="src\lua\lua_Light.h" />
-    <ClInclude Include="src\lua\lua_Logger.h" />
-    <ClInclude Include="src\lua\lua_Material.h" />
-    <ClInclude Include="src\lua\lua_MaterialParameter.h" />
-    <ClInclude Include="src\lua\lua_MathUtil.h" />
-    <ClInclude Include="src\lua\lua_Matrix.h" />
-    <ClInclude Include="src\lua\lua_Mesh.h" />
-    <ClInclude Include="src\lua\lua_MeshBatch.h" />
-    <ClInclude Include="src\lua\lua_MeshPart.h" />
-    <ClInclude Include="src\lua\lua_MeshSkin.h" />
-    <ClInclude Include="src\lua\lua_Model.h" />
-    <ClInclude Include="src\lua\lua_Mouse.h" />
-    <ClInclude Include="src\lua\lua_Node.h" />
-    <ClInclude Include="src\lua\lua_NodeCloneContext.h" />
-    <ClInclude Include="src\lua\lua_ParticleEmitter.h" />
-    <ClInclude Include="src\lua\lua_Pass.h" />
-    <ClInclude Include="src\lua\lua_PhysicsCharacter.h" />
-    <ClInclude Include="src\lua\lua_PhysicsCollisionObject.h" />
-    <ClInclude Include="src\lua\lua_PhysicsCollisionObjectCollisionListener.h" />
-    <ClInclude Include="src\lua\lua_PhysicsCollisionObjectCollisionPair.h" />
-    <ClInclude Include="src\lua\lua_PhysicsCollisionShape.h" />
-    <ClInclude Include="src\lua\lua_PhysicsCollisionShapeDefinition.h" />
-    <ClInclude Include="src\lua\lua_PhysicsConstraint.h" />
-    <ClInclude Include="src\lua\lua_PhysicsController.h" />
-    <ClInclude Include="src\lua\lua_PhysicsControllerHitFilter.h" />
-    <ClInclude Include="src\lua\lua_PhysicsControllerHitResult.h" />
-    <ClInclude Include="src\lua\lua_PhysicsControllerListener.h" />
-    <ClInclude Include="src\lua\lua_PhysicsFixedConstraint.h" />
-    <ClInclude Include="src\lua\lua_PhysicsGenericConstraint.h" />
-    <ClInclude Include="src\lua\lua_PhysicsGhostObject.h" />
-    <ClInclude Include="src\lua\lua_PhysicsHingeConstraint.h" />
-    <ClInclude Include="src\lua\lua_PhysicsRigidBody.h" />
-    <ClInclude Include="src\lua\lua_PhysicsRigidBodyParameters.h" />
-    <ClInclude Include="src\lua\lua_PhysicsSocketConstraint.h" />
-    <ClInclude Include="src\lua\lua_PhysicsSpringConstraint.h" />
-    <ClInclude Include="src\lua\lua_PhysicsVehicle.h" />
-    <ClInclude Include="src\lua\lua_PhysicsVehicleWheel.h" />
-    <ClInclude Include="src\lua\lua_Plane.h" />
-    <ClInclude Include="src\lua\lua_Platform.h" />
-    <ClInclude Include="src\lua\lua_Properties.h" />
-    <ClInclude Include="src\lua\lua_Quaternion.h" />
-    <ClInclude Include="src\lua\lua_RadioButton.h" />
-    <ClInclude Include="src\lua\lua_Ray.h" />
-    <ClInclude Include="src\lua\lua_Rectangle.h" />
-    <ClInclude Include="src\lua\lua_Ref.h" />
-    <ClInclude Include="src\lua\lua_RenderState.h" />
-    <ClInclude Include="src\lua\lua_RenderStateStateBlock.h" />
-    <ClInclude Include="src\lua\lua_RenderTarget.h" />
-    <ClInclude Include="src\lua\lua_Scene.h" />
-    <ClInclude Include="src\lua\lua_ScreenDisplayer.h" />
-    <ClInclude Include="src\lua\lua_Script.h" />
-    <ClInclude Include="src\lua\lua_ScriptController.h" />
-    <ClInclude Include="src\lua\lua_ScriptTarget.h" />
-    <ClInclude Include="src\lua\lua_ScriptTargetEvent.h" />
-    <ClInclude Include="src\lua\lua_ScriptTargetEventRegistry.h" />
-    <ClInclude Include="src\lua\lua_Slider.h" />
-    <ClInclude Include="src\lua\lua_Sprite.h" />
-    <ClInclude Include="src\lua\lua_SpriteBatch.h" />
-    <ClInclude Include="src\lua\lua_SpriteBatchSpriteVertex.h" />
-    <ClInclude Include="src\lua\lua_Technique.h" />
-    <ClInclude Include="src\lua\lua_Terrain.h" />
-    <ClInclude Include="src\lua\lua_TerrainPatch.h" />
-    <ClInclude Include="src\lua\lua_Text.h" />
-    <ClInclude Include="src\lua\lua_TextBox.h" />
-    <ClInclude Include="src\lua\lua_Texture.h" />
-    <ClInclude Include="src\lua\lua_TextureSampler.h" />
-    <ClInclude Include="src\lua\lua_Theme.h" />
-    <ClInclude Include="src\lua\lua_ThemeSideRegions.h" />
-    <ClInclude Include="src\lua\lua_ThemeStyle.h" />
-    <ClInclude Include="src\lua\lua_ThemeThemeImage.h" />
-    <ClInclude Include="src\lua\lua_ThemeUVs.h" />
-    <ClInclude Include="src\lua\lua_TileSet.h" />
-    <ClInclude Include="src\lua\lua_Touch.h" />
-    <ClInclude Include="src\lua\lua_Transform.h" />
-    <ClInclude Include="src\lua\lua_TransformListener.h" />
-    <ClInclude Include="src\lua\lua_Uniform.h" />
-    <ClInclude Include="src\lua\lua_Vector2.h" />
-    <ClInclude Include="src\lua\lua_Vector3.h" />
-    <ClInclude Include="src\lua\lua_Vector4.h" />
-    <ClInclude Include="src\lua\lua_VertexAttributeBinding.h" />
-    <ClInclude Include="src\lua\lua_VertexFormat.h" />
-    <ClInclude Include="src\lua\lua_VertexFormatElement.h" />
-    <ClInclude Include="src\lua\lua_VerticalLayout.h" />
-    <ClInclude Include="src\Material.h" />
-    <ClInclude Include="src\MathUtil.h" />
-    <ClInclude Include="src\MeshBatch.h" />
-    <ClInclude Include="src\Mouse.h" />
-    <ClInclude Include="src\Pass.h" />
-    <ClInclude Include="src\MaterialParameter.h" />
-    <ClInclude Include="src\Matrix.h" />
-    <ClInclude Include="src\Mesh.h" />
-    <ClInclude Include="src\MeshPart.h" />
-    <ClInclude Include="src\MeshSkin.h" />
-    <ClInclude Include="src\Model.h" />
-    <ClInclude Include="src\Node.h" />
-    <ClInclude Include="src\Bundle.h" />
-    <ClInclude Include="src\ParticleEmitter.h" />
-    <ClInclude Include="src\PhysicsCharacter.h" />
-    <ClInclude Include="src\PhysicsCollisionObject.h" />
-    <ClInclude Include="src\PhysicsCollisionShape.h" />
-    <ClInclude Include="src\PhysicsConstraint.h" />
-    <ClInclude Include="src\PhysicsController.h" />
-    <ClInclude Include="src\PhysicsFixedConstraint.h" />
-    <ClInclude Include="src\PhysicsGenericConstraint.h" />
-    <ClInclude Include="src\PhysicsGhostObject.h" />
-    <ClInclude Include="src\PhysicsHingeConstraint.h" />
-    <ClInclude Include="src\PhysicsRigidBody.h" />
-    <ClInclude Include="src\PhysicsSocketConstraint.h" />
-    <ClInclude Include="src\PhysicsSpringConstraint.h" />
-    <ClInclude Include="src\PhysicsVehicle.h" />
-    <ClInclude Include="src\PhysicsVehicleWheel.h" />
-    <ClInclude Include="src\Plane.h" />
-    <ClInclude Include="src\Platform.h" />
-    <ClInclude Include="src\Properties.h" />
-    <ClInclude Include="src\Quaternion.h" />
-    <ClInclude Include="src\RadioButton.h" />
-    <ClInclude Include="src\Ray.h" />
-    <ClInclude Include="src\Rectangle.h" />
-    <ClInclude Include="src\Ref.h" />
-    <ClInclude Include="src\RenderState.h" />
-    <ClInclude Include="src\RenderTarget.h" />
-    <ClInclude Include="src\Scene.h" />
-    <ClInclude Include="src\SceneLoader.h" />
-    <ClInclude Include="src\ScreenDisplayer.h" />
-    <ClInclude Include="src\Script.h" />
-    <ClInclude Include="src\ScriptController.h" />
-    <ClInclude Include="src\ScriptTarget.h" />
-    <ClInclude Include="src\Slider.h" />
-    <ClInclude Include="src\Sprite.h" />
-    <ClInclude Include="src\SpriteBatch.h" />
-    <ClInclude Include="src\Stream.h" />
-    <ClInclude Include="src\Technique.h" />
-    <ClInclude Include="src\Terrain.h" />
-    <ClInclude Include="src\TerrainPatch.h" />
-    <ClInclude Include="src\Text.h" />
-    <ClInclude Include="src\TextBox.h" />
-    <ClInclude Include="src\Texture.h" />
-    <ClInclude Include="src\Theme.h" />
-    <ClInclude Include="src\ThemeStyle.h" />
-    <ClInclude Include="src\TileSet.h" />
-    <ClInclude Include="src\TimeListener.h" />
-    <ClInclude Include="src\Touch.h" />
-    <ClInclude Include="src\Transform.h" />
-    <ClInclude Include="src\Vector2.h" />
-    <ClInclude Include="src\Vector3.h" />
-    <ClInclude Include="src\Vector4.h" />
-    <ClInclude Include="src\VertexAttributeBinding.h" />
-    <ClInclude Include="src\VertexFormat.h" />
-    <ClInclude Include="src\VerticalLayout.h" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="res\materials\terrain.material" />
-    <None Include="res\shaders\colored.frag" />
-    <None Include="res\shaders\colored.vert" />
-    <None Include="res\shaders\font.frag" />
-    <None Include="res\shaders\font.vert" />
-    <None Include="res\shaders\form.frag" />
-    <None Include="res\shaders\form.vert" />
-    <None Include="res\shaders\lighting.frag" />
-    <None Include="res\shaders\lighting.vert" />
-    <None Include="res\shaders\skinning-none.vert" />
-    <None Include="res\shaders\skinning.vert" />
-    <None Include="res\shaders\sprite.frag" />
-    <None Include="res\shaders\sprite.vert" />
-    <None Include="res\shaders\terrain.frag" />
-    <None Include="res\shaders\terrain.vert" />
-    <None Include="res\shaders\textured.frag" />
-    <None Include="res\shaders\textured.vert" />
-    <None Include="res\ui\default.theme" />
-    <None Include="src\BoundingBox.inl" />
-    <None Include="src\BoundingSphere.inl" />
-    <None Include="src\Game.inl" />
-    <None Include="src\Image.inl" />
-    <None Include="src\MathUtil.inl" />
-    <None Include="src\MathUtilNeon.inl" />
-    <None Include="src\Matrix.inl" />
-    <None Include="src\MeshBatch.inl" />
-    <None Include="src\Plane.inl" />
-    <None Include="src\Quaternion.inl" />
-    <None Include="src\Ray.inl" />
-    <None Include="src\ScriptController.inl" />
-    <None Include="src\Vector2.inl" />
-    <None Include="src\Vector3.inl" />
-    <None Include="src\Vector4.inl" />
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="src\PhysicsConstraint.inl" />
-    <None Include="src\PhysicsFixedConstraint.inl" />
-    <None Include="src\PhysicsGenericConstraint.inl" />
-    <None Include="src\PhysicsRigidBody.inl" />
-    <None Include="src\PhysicsSpringConstraint.inl" />
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="res\ui\default-theme.png" />
-  </ItemGroup>
-  <PropertyGroup Label="Globals">
-    <ProjectGuid>{1032BA4B-57EB-4348-9E03-29DD63E80E4A}</ProjectGuid>
-    <Keyword>Win32Proj</Keyword>
-    <RootNamespace>gameplay</RootNamespace>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>true</UseDebugLibraries>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
-    <ConfigurationType>StaticLibrary</ConfigurationType>
-    <UseDebugLibraries>false</UseDebugLibraries>
-    <WholeProgramOptimization>false</WholeProgramOptimization>
-    <CharacterSet>Unicode</CharacterSet>
-    <PlatformToolset>v140</PlatformToolset>
-  </PropertyGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
-  <ImportGroup Label="ExtensionSettings">
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
-    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
-  </ImportGroup>
-  <PropertyGroup Label="UserMacros" />
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <OutDir>Debug</OutDir>
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'">
-    <OutDir>$(Configuration)\</OutDir>
-    <IntDir>$(Configuration)\</IntDir>
-  </PropertyGroup>
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <IntDir>$(Configuration)\</IntDir>
-    <OutDir>$(Configuration)\</OutDir>
-  </PropertyGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;GP_USE_GAMEPAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)src;..\external-deps\include;$(DXSDK_DIR)include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeTypeInfo>
-      </RuntimeTypeInfo>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <MinimalRebuild>false</MinimalRebuild>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <Lib>
-      <TargetMachine>MachineX64</TargetMachine>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugMem|x64'">
-    <ClCompile>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <WarningLevel>Level3</WarningLevel>
-      <Optimization>Disabled</Optimization>
-      <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;GP_USE_GAMEPAD;GP_USE_MEM_LEAK_DETECTION;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)src;..\external-deps\include;$(MSBuildProgramFiles32)\Microsoft DirectX SDK (June 2010)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <RuntimeTypeInfo>true</RuntimeTypeInfo>
-      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-      <MinimalRebuild>false</MinimalRebuild>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-    </Link>
-    <Lib>
-      <Verbose>
-      </Verbose>
-    </Lib>
-  </ItemDefinitionGroup>
-  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
-    <ClCompile>
-      <WarningLevel>Level3</WarningLevel>
-      <PrecompiledHeader>
-      </PrecompiledHeader>
-      <Optimization>Full</Optimization>
-      <FunctionLevelLinking>true</FunctionLevelLinking>
-      <IntrinsicFunctions>false</IntrinsicFunctions>
-      <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;GP_USE_GAMEPAD;%(PreprocessorDefinitions)</PreprocessorDefinitions>
-      <AdditionalIncludeDirectories>$(ProjectDir)src;..\external-deps\include;$(MSBuildProgramFiles32)\Microsoft DirectX SDK (June 2010)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
-      <DebugInformationFormat>
-      </DebugInformationFormat>
-      <MultiProcessorCompilation>true</MultiProcessorCompilation>
-    </ClCompile>
-    <Link>
-      <SubSystem>Windows</SubSystem>
-      <GenerateDebugInformation>true</GenerateDebugInformation>
-      <EnableCOMDATFolding>true</EnableCOMDATFolding>
-      <OptimizeReferences>true</OptimizeReferences>
-    </Link>
-  </ItemDefinitionGroup>
-  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
-  <ImportGroup Label="ExtensionTargets">
-  </ImportGroup>
-</Project>

+ 0 - 1638
gameplay/gameplay.vcxproj.filters

@@ -1,1638 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <ItemGroup>
-    <Filter Include="src">
-      <UniqueIdentifier>{c4d4da1c-81e2-4944-901c-200e1c4d80e5}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="res">
-      <UniqueIdentifier>{4a30ac71-e135-47d3-9f56-baac7cffe64c}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="res\shaders">
-      <UniqueIdentifier>{be0b36f1-49ed-4a06-9f1f-57c654a554fe}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="src\lua">
-      <UniqueIdentifier>{21cf31c6-9c10-44cb-a864-d46a0e7bfe5e}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="res\materials">
-      <UniqueIdentifier>{b5f23c37-1023-4796-ba7b-b45aa30d67b6}</UniqueIdentifier>
-    </Filter>
-    <Filter Include="res\ui">
-      <UniqueIdentifier>{eb377577-593a-469f-9361-b6950a99e431}</UniqueIdentifier>
-    </Filter>
-  </ItemGroup>
-  <ItemGroup>
-    <ClCompile Include="src\Plane.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PlatformWindows.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Quaternion.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Ray.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Rectangle.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Ref.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Scene.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\SpriteBatch.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Texture.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Transform.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Vector2.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Vector3.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Vector4.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\VertexAttributeBinding.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\VertexFormat.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Properties.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Technique.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Pass.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\RenderState.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsController.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsRigidBody.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsConstraint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsHingeConstraint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsFixedConstraint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsGenericConstraint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsSocketConstraint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsSpringConstraint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\SceneLoader.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\RenderTarget.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PlatformAndroid.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AbsoluteLayout.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\RadioButton.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Slider.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\VerticalLayout.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Theme.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\TextBox.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsCharacter.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsCollisionObject.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsGhostObject.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsCollisionShape.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ThemeStyle.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ScriptController.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ScreenDisplayer.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AIAgent.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AIController.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AIMessage.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ScriptTarget.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PlatformLinux.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsVehicle.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\PhysicsVehicleWheel.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Terrain.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\TerrainPatch.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Platform.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AIState.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AIStateMachine.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Animation.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AnimationClip.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AnimationController.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AnimationTarget.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AnimationValue.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AudioBuffer.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AudioController.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AudioListener.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\AudioSource.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\BoundingBox.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\BoundingSphere.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Bundle.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Button.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Camera.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\CheckBox.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Container.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Control.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Curve.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\DebugNew.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\DepthStencilTarget.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Effect.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\FileSystem.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\FlowLayout.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Font.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Form.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\FrameBuffer.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Frustum.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Game.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Gamepad.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\gameplay-main-android.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\gameplay-main-linux.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\gameplay-main-windows.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\HeightField.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Image.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ImageControl.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Joint.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Label.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Layout.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Light.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Logger.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Material.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\MaterialParameter.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\MathUtil.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Matrix.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Mesh.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\MeshBatch.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\MeshPart.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\MeshSkin.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Model.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Node.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ParticleEmitter.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\ControlFactory.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\JoystickControl.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Script.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Sprite.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Text.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\TileSet.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\Drawable.cpp">
-      <Filter>src</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AbsoluteLayout.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIAgent.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIAgentListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIController.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIMessage.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIState.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIStateListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AIStateMachine.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_all_bindings.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Animation.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AnimationClip.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AnimationClipListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AnimationController.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AnimationTarget.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AnimationValue.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AudioBuffer.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AudioController.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AudioListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_AudioSource.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_BoundingBox.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_BoundingSphere.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Bundle.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Button.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Camera.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_CameraListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_CheckBox.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Container.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Control.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ControlListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Curve.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_DepthStencilTarget.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Drawable.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Effect.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_FileSystem.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_FlowLayout.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Font.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Form.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_FrameBuffer.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Frustum.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Game.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Gamepad.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Gesture.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Global.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_HeightField.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Image.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ImageControl.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Joint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_JoystickControl.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Keyboard.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Label.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Layout.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Light.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Logger.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Material.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_MaterialParameter.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_MathUtil.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Matrix.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Mesh.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_MeshBatch.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_MeshPart.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_MeshSkin.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Model.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Mouse.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Node.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_NodeCloneContext.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ParticleEmitter.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Pass.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsCharacter.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsCollisionObject.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsCollisionObjectCollisionListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsCollisionObjectCollisionPair.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsCollisionShape.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsCollisionShapeDefinition.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsConstraint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsController.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsControllerHitFilter.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsControllerHitResult.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsControllerListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsFixedConstraint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsGenericConstraint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsGhostObject.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsHingeConstraint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsRigidBody.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsRigidBodyParameters.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsSocketConstraint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsSpringConstraint.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsVehicle.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_PhysicsVehicleWheel.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Plane.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Platform.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Properties.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Quaternion.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_RadioButton.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Ray.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Rectangle.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Ref.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_RenderState.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_RenderStateStateBlock.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_RenderTarget.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Scene.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ScreenDisplayer.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Script.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ScriptController.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ScriptTarget.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ScriptTargetEvent.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ScriptTargetEventRegistry.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Slider.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Sprite.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_SpriteBatch.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_SpriteBatchSpriteVertex.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Technique.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Terrain.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_TerrainPatch.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Text.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_TextBox.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Texture.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_TextureSampler.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Theme.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ThemeSideRegions.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ThemeStyle.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ThemeThemeImage.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_ThemeUVs.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_TileSet.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Touch.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Transform.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_TransformListener.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Uniform.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Vector2.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Vector3.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_Vector4.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_VertexAttributeBinding.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_VertexFormat.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_VertexFormatElement.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-    <ClCompile Include="src\lua\lua_VerticalLayout.cpp">
-      <Filter>src\lua</Filter>
-    </ClCompile>
-  </ItemGroup>
-  <ItemGroup>
-    <ClInclude Include="src\Plane.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Platform.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Quaternion.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Ray.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Rectangle.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Ref.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Scene.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\SpriteBatch.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Texture.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Transform.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Vector2.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Vector3.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Vector4.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\VertexAttributeBinding.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\VertexFormat.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ParticleEmitter.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Properties.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Technique.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Pass.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\RenderState.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsController.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsRigidBody.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsConstraint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsSpringConstraint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsFixedConstraint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsGenericConstraint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsHingeConstraint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsSocketConstraint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\SceneLoader.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\RenderTarget.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Touch.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AbsoluteLayout.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\RadioButton.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Slider.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\VerticalLayout.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Theme.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\TextBox.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsCharacter.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsCollisionObject.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\TimeListener.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsGhostObject.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsCollisionShape.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ScreenDisplayer.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ThemeStyle.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ScriptController.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AIAgent.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AIController.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ScriptTarget.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsVehicleWheel.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\PhysicsVehicle.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Stream.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Terrain.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\TerrainPatch.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AIMessage.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AIState.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AIStateMachine.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Animation.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AnimationClip.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AnimationController.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AnimationTarget.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AnimationValue.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AudioBuffer.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AudioController.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AudioListener.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\AudioSource.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Base.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\BoundingBox.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\BoundingSphere.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Bundle.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Button.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Camera.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\CheckBox.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Container.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Control.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Curve.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\DebugNew.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\DepthStencilTarget.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Effect.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\FileSystem.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\FlowLayout.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Font.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Form.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\FrameBuffer.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Frustum.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Game.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Gamepad.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\gameplay.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Gesture.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\HeightField.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Image.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ImageControl.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Joint.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Keyboard.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Label.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Layout.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Light.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Logger.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Material.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\MaterialParameter.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\MathUtil.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Matrix.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Mesh.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\MeshBatch.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\MeshPart.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\MeshSkin.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Model.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Mouse.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Node.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\ControlFactory.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\JoystickControl.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Script.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Sprite.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Text.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\TileSet.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\Drawable.h">
-      <Filter>src</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AbsoluteLayout.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIAgent.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIAgentListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIController.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIMessage.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIState.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIStateListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AIStateMachine.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_all_bindings.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Animation.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AnimationClip.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AnimationClipListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AnimationController.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AnimationTarget.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AnimationValue.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AudioBuffer.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AudioController.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AudioListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_AudioSource.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_BoundingBox.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_BoundingSphere.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Bundle.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Button.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Camera.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_CameraListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_CheckBox.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Container.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Control.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ControlListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Curve.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_DepthStencilTarget.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Drawable.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Effect.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_FileSystem.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_FlowLayout.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Font.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Form.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_FrameBuffer.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Frustum.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Game.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Gamepad.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Gesture.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Global.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_HeightField.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Image.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ImageControl.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Joint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_JoystickControl.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Keyboard.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Label.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Layout.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Light.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Logger.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Material.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_MaterialParameter.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_MathUtil.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Matrix.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Mesh.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_MeshBatch.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_MeshPart.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_MeshSkin.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Model.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Mouse.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Node.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_NodeCloneContext.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ParticleEmitter.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Pass.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsCharacter.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsCollisionObject.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsCollisionObjectCollisionListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsCollisionObjectCollisionPair.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsCollisionShape.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsCollisionShapeDefinition.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsConstraint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsController.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsControllerHitFilter.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsControllerHitResult.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsControllerListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsFixedConstraint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsGenericConstraint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsGhostObject.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsHingeConstraint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsRigidBody.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsRigidBodyParameters.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsSocketConstraint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsSpringConstraint.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsVehicle.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_PhysicsVehicleWheel.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Plane.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Platform.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Properties.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Quaternion.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_RadioButton.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Ray.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Rectangle.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Ref.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_RenderState.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_RenderStateStateBlock.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_RenderTarget.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Scene.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ScreenDisplayer.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Script.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ScriptController.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ScriptTarget.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ScriptTargetEvent.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ScriptTargetEventRegistry.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Slider.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Sprite.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_SpriteBatch.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_SpriteBatchSpriteVertex.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Technique.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Terrain.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_TerrainPatch.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Text.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_TextBox.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Texture.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_TextureSampler.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Theme.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ThemeSideRegions.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ThemeStyle.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ThemeThemeImage.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_ThemeUVs.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_TileSet.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Touch.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Transform.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_TransformListener.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Uniform.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Vector2.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Vector3.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_Vector4.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_VertexAttributeBinding.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_VertexFormat.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_VertexFormatElement.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-    <ClInclude Include="src\lua\lua_VerticalLayout.h">
-      <Filter>src\lua</Filter>
-    </ClInclude>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="src\ScriptController.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\BoundingBox.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\BoundingSphere.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Game.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Image.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\MathUtil.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\MathUtilNeon.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Matrix.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\MeshBatch.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="res\shaders\colored.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\colored.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\font.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\font.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\form.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\form.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\lighting.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\lighting.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\sprite.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\sprite.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\terrain.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\terrain.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\textured.frag">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\textured.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\skinning.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\shaders\skinning-none.vert">
-      <Filter>res\shaders</Filter>
-    </None>
-    <None Include="res\materials\terrain.material">
-      <Filter>res\materials</Filter>
-    </None>
-    <None Include="res\ui\default.theme">
-      <Filter>res\ui</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <None Include="src\PhysicsFixedConstraint.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\PhysicsGenericConstraint.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\PhysicsSpringConstraint.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\PhysicsRigidBody.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Plane.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Quaternion.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Ray.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Vector2.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Vector3.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\Vector4.inl">
-      <Filter>src</Filter>
-    </None>
-    <None Include="src\PhysicsConstraint.inl">
-      <Filter>src</Filter>
-    </None>
-  </ItemGroup>
-  <ItemGroup>
-    <Image Include="res\ui\default-theme.png">
-      <Filter>res\ui</Filter>
-    </Image>
-  </ItemGroup>
-</Project>

+ 0 - 2479
gameplay/gameplay.xcodeproj/project.pbxproj

@@ -1,2479 +0,0 @@
-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 46;
-	objects = {
-
-/* Begin PBXBuildFile section */
-		4204EC411A2EB8310074FCE9 /* TileSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4204EC3F1A2EB8310074FCE9 /* TileSet.cpp */; };
-		4204EC421A2EB8310074FCE9 /* TileSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4204EC3F1A2EB8310074FCE9 /* TileSet.cpp */; };
-		4204EC451A2F878C0074FCE9 /* Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4204EC441A2F878C0074FCE9 /* Sprite.cpp */; };
-		4204EC461A2F878C0074FCE9 /* Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4204EC441A2F878C0074FCE9 /* Sprite.cpp */; };
-		420BBC0E1817416F00C7B720 /* ControlFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 420BBAA21817416D00C7B720 /* ControlFactory.cpp */; };
-		420BBC0F1817416F00C7B720 /* ControlFactory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 420BBAA21817416D00C7B720 /* ControlFactory.cpp */; };
-		4234D99E14686C52003031B3 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4234D99D14686C52003031B3 /* Cocoa.framework */; };
-		424F33001A60C28600395438 /* lua_AbsoluteLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31F41A60C28600395438 /* lua_AbsoluteLayout.cpp */; };
-		424F33011A60C28600395438 /* lua_AbsoluteLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31F41A60C28600395438 /* lua_AbsoluteLayout.cpp */; };
-		424F33021A60C28600395438 /* lua_AIAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31F61A60C28600395438 /* lua_AIAgent.cpp */; };
-		424F33031A60C28600395438 /* lua_AIAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31F61A60C28600395438 /* lua_AIAgent.cpp */; };
-		424F33041A60C28600395438 /* lua_AIAgentListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31F81A60C28600395438 /* lua_AIAgentListener.cpp */; };
-		424F33051A60C28600395438 /* lua_AIAgentListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31F81A60C28600395438 /* lua_AIAgentListener.cpp */; };
-		424F33061A60C28600395438 /* lua_AIController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31FA1A60C28600395438 /* lua_AIController.cpp */; };
-		424F33071A60C28600395438 /* lua_AIController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31FA1A60C28600395438 /* lua_AIController.cpp */; };
-		424F33081A60C28600395438 /* lua_AIMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31FC1A60C28600395438 /* lua_AIMessage.cpp */; };
-		424F33091A60C28600395438 /* lua_AIMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31FC1A60C28600395438 /* lua_AIMessage.cpp */; };
-		424F330A1A60C28600395438 /* lua_AIState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31FE1A60C28600395438 /* lua_AIState.cpp */; };
-		424F330B1A60C28600395438 /* lua_AIState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F31FE1A60C28600395438 /* lua_AIState.cpp */; };
-		424F330C1A60C28600395438 /* lua_AIStateListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32001A60C28600395438 /* lua_AIStateListener.cpp */; };
-		424F330D1A60C28600395438 /* lua_AIStateListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32001A60C28600395438 /* lua_AIStateListener.cpp */; };
-		424F330E1A60C28600395438 /* lua_AIStateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32021A60C28600395438 /* lua_AIStateMachine.cpp */; };
-		424F330F1A60C28600395438 /* lua_AIStateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32021A60C28600395438 /* lua_AIStateMachine.cpp */; };
-		424F33101A60C28600395438 /* lua_all_bindings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32041A60C28600395438 /* lua_all_bindings.cpp */; };
-		424F33111A60C28600395438 /* lua_all_bindings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32041A60C28600395438 /* lua_all_bindings.cpp */; };
-		424F33121A60C28600395438 /* lua_Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32061A60C28600395438 /* lua_Animation.cpp */; };
-		424F33131A60C28600395438 /* lua_Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32061A60C28600395438 /* lua_Animation.cpp */; };
-		424F33141A60C28600395438 /* lua_AnimationClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32081A60C28600395438 /* lua_AnimationClip.cpp */; };
-		424F33151A60C28600395438 /* lua_AnimationClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32081A60C28600395438 /* lua_AnimationClip.cpp */; };
-		424F33161A60C28600395438 /* lua_AnimationClipListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F320A1A60C28600395438 /* lua_AnimationClipListener.cpp */; };
-		424F33171A60C28600395438 /* lua_AnimationClipListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F320A1A60C28600395438 /* lua_AnimationClipListener.cpp */; };
-		424F33181A60C28600395438 /* lua_AnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F320C1A60C28600395438 /* lua_AnimationController.cpp */; };
-		424F33191A60C28600395438 /* lua_AnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F320C1A60C28600395438 /* lua_AnimationController.cpp */; };
-		424F331A1A60C28600395438 /* lua_AnimationTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F320E1A60C28600395438 /* lua_AnimationTarget.cpp */; };
-		424F331B1A60C28600395438 /* lua_AnimationTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F320E1A60C28600395438 /* lua_AnimationTarget.cpp */; };
-		424F331C1A60C28600395438 /* lua_AnimationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32101A60C28600395438 /* lua_AnimationValue.cpp */; };
-		424F331D1A60C28600395438 /* lua_AnimationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32101A60C28600395438 /* lua_AnimationValue.cpp */; };
-		424F331E1A60C28600395438 /* lua_AudioBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32121A60C28600395438 /* lua_AudioBuffer.cpp */; };
-		424F331F1A60C28600395438 /* lua_AudioBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32121A60C28600395438 /* lua_AudioBuffer.cpp */; };
-		424F33201A60C28600395438 /* lua_AudioController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32141A60C28600395438 /* lua_AudioController.cpp */; };
-		424F33211A60C28600395438 /* lua_AudioController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32141A60C28600395438 /* lua_AudioController.cpp */; };
-		424F33221A60C28600395438 /* lua_AudioListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32161A60C28600395438 /* lua_AudioListener.cpp */; };
-		424F33231A60C28600395438 /* lua_AudioListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32161A60C28600395438 /* lua_AudioListener.cpp */; };
-		424F33241A60C28600395438 /* lua_AudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32181A60C28600395438 /* lua_AudioSource.cpp */; };
-		424F33251A60C28600395438 /* lua_AudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32181A60C28600395438 /* lua_AudioSource.cpp */; };
-		424F33261A60C28600395438 /* lua_BoundingBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F321A1A60C28600395438 /* lua_BoundingBox.cpp */; };
-		424F33271A60C28600395438 /* lua_BoundingBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F321A1A60C28600395438 /* lua_BoundingBox.cpp */; };
-		424F33281A60C28600395438 /* lua_BoundingSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F321C1A60C28600395438 /* lua_BoundingSphere.cpp */; };
-		424F33291A60C28600395438 /* lua_BoundingSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F321C1A60C28600395438 /* lua_BoundingSphere.cpp */; };
-		424F332A1A60C28600395438 /* lua_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F321E1A60C28600395438 /* lua_Bundle.cpp */; };
-		424F332B1A60C28600395438 /* lua_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F321E1A60C28600395438 /* lua_Bundle.cpp */; };
-		424F332C1A60C28600395438 /* lua_Button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32201A60C28600395438 /* lua_Button.cpp */; };
-		424F332D1A60C28600395438 /* lua_Button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32201A60C28600395438 /* lua_Button.cpp */; };
-		424F332E1A60C28600395438 /* lua_Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32221A60C28600395438 /* lua_Camera.cpp */; };
-		424F332F1A60C28600395438 /* lua_Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32221A60C28600395438 /* lua_Camera.cpp */; };
-		424F33301A60C28600395438 /* lua_CameraListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32241A60C28600395438 /* lua_CameraListener.cpp */; };
-		424F33311A60C28600395438 /* lua_CameraListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32241A60C28600395438 /* lua_CameraListener.cpp */; };
-		424F33321A60C28600395438 /* lua_CheckBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32261A60C28600395438 /* lua_CheckBox.cpp */; };
-		424F33331A60C28600395438 /* lua_CheckBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32261A60C28600395438 /* lua_CheckBox.cpp */; };
-		424F33341A60C28600395438 /* lua_Container.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32281A60C28600395438 /* lua_Container.cpp */; };
-		424F33351A60C28600395438 /* lua_Container.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32281A60C28600395438 /* lua_Container.cpp */; };
-		424F33361A60C28600395438 /* lua_Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F322A1A60C28600395438 /* lua_Control.cpp */; };
-		424F33371A60C28600395438 /* lua_Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F322A1A60C28600395438 /* lua_Control.cpp */; };
-		424F33381A60C28600395438 /* lua_ControlListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F322C1A60C28600395438 /* lua_ControlListener.cpp */; };
-		424F33391A60C28600395438 /* lua_ControlListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F322C1A60C28600395438 /* lua_ControlListener.cpp */; };
-		424F333A1A60C28600395438 /* lua_Curve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F322E1A60C28600395438 /* lua_Curve.cpp */; };
-		424F333B1A60C28600395438 /* lua_Curve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F322E1A60C28600395438 /* lua_Curve.cpp */; };
-		424F333C1A60C28600395438 /* lua_DepthStencilTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32301A60C28600395438 /* lua_DepthStencilTarget.cpp */; };
-		424F333D1A60C28600395438 /* lua_DepthStencilTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32301A60C28600395438 /* lua_DepthStencilTarget.cpp */; };
-		424F333E1A60C28600395438 /* lua_Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32321A60C28600395438 /* lua_Drawable.cpp */; };
-		424F333F1A60C28600395438 /* lua_Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32321A60C28600395438 /* lua_Drawable.cpp */; };
-		424F33401A60C28600395438 /* lua_Effect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32341A60C28600395438 /* lua_Effect.cpp */; };
-		424F33411A60C28600395438 /* lua_Effect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32341A60C28600395438 /* lua_Effect.cpp */; };
-		424F33421A60C28600395438 /* lua_FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32361A60C28600395438 /* lua_FileSystem.cpp */; };
-		424F33431A60C28600395438 /* lua_FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32361A60C28600395438 /* lua_FileSystem.cpp */; };
-		424F33441A60C28600395438 /* lua_FlowLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32381A60C28600395438 /* lua_FlowLayout.cpp */; };
-		424F33451A60C28600395438 /* lua_FlowLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32381A60C28600395438 /* lua_FlowLayout.cpp */; };
-		424F33461A60C28600395438 /* lua_Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F323A1A60C28600395438 /* lua_Font.cpp */; };
-		424F33471A60C28600395438 /* lua_Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F323A1A60C28600395438 /* lua_Font.cpp */; };
-		424F33481A60C28600395438 /* lua_Form.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F323C1A60C28600395438 /* lua_Form.cpp */; };
-		424F33491A60C28600395438 /* lua_Form.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F323C1A60C28600395438 /* lua_Form.cpp */; };
-		424F334A1A60C28600395438 /* lua_FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F323E1A60C28600395438 /* lua_FrameBuffer.cpp */; };
-		424F334B1A60C28600395438 /* lua_FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F323E1A60C28600395438 /* lua_FrameBuffer.cpp */; };
-		424F334C1A60C28600395438 /* lua_Frustum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32401A60C28600395438 /* lua_Frustum.cpp */; };
-		424F334D1A60C28600395438 /* lua_Frustum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32401A60C28600395438 /* lua_Frustum.cpp */; };
-		424F334E1A60C28600395438 /* lua_Game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32421A60C28600395438 /* lua_Game.cpp */; };
-		424F334F1A60C28600395438 /* lua_Game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32421A60C28600395438 /* lua_Game.cpp */; };
-		424F33501A60C28600395438 /* lua_Gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32441A60C28600395438 /* lua_Gamepad.cpp */; };
-		424F33511A60C28600395438 /* lua_Gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32441A60C28600395438 /* lua_Gamepad.cpp */; };
-		424F33521A60C28600395438 /* lua_Gesture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32461A60C28600395438 /* lua_Gesture.cpp */; };
-		424F33531A60C28600395438 /* lua_Gesture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32461A60C28600395438 /* lua_Gesture.cpp */; };
-		424F33541A60C28600395438 /* lua_Global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32481A60C28600395438 /* lua_Global.cpp */; };
-		424F33551A60C28600395438 /* lua_Global.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32481A60C28600395438 /* lua_Global.cpp */; };
-		424F33561A60C28600395438 /* lua_HeightField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F324A1A60C28600395438 /* lua_HeightField.cpp */; };
-		424F33571A60C28600395438 /* lua_HeightField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F324A1A60C28600395438 /* lua_HeightField.cpp */; };
-		424F33581A60C28600395438 /* lua_Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F324C1A60C28600395438 /* lua_Image.cpp */; };
-		424F33591A60C28600395438 /* lua_Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F324C1A60C28600395438 /* lua_Image.cpp */; };
-		424F335A1A60C28600395438 /* lua_ImageControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F324E1A60C28600395438 /* lua_ImageControl.cpp */; };
-		424F335B1A60C28600395438 /* lua_ImageControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F324E1A60C28600395438 /* lua_ImageControl.cpp */; };
-		424F335C1A60C28600395438 /* lua_Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32501A60C28600395438 /* lua_Joint.cpp */; };
-		424F335D1A60C28600395438 /* lua_Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32501A60C28600395438 /* lua_Joint.cpp */; };
-		424F335E1A60C28600395438 /* lua_JoystickControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32521A60C28600395438 /* lua_JoystickControl.cpp */; };
-		424F335F1A60C28600395438 /* lua_JoystickControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32521A60C28600395438 /* lua_JoystickControl.cpp */; };
-		424F33601A60C28600395438 /* lua_Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32541A60C28600395438 /* lua_Keyboard.cpp */; };
-		424F33611A60C28600395438 /* lua_Keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32541A60C28600395438 /* lua_Keyboard.cpp */; };
-		424F33621A60C28600395438 /* lua_Label.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32561A60C28600395438 /* lua_Label.cpp */; };
-		424F33631A60C28600395438 /* lua_Label.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32561A60C28600395438 /* lua_Label.cpp */; };
-		424F33641A60C28600395438 /* lua_Layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32581A60C28600395438 /* lua_Layout.cpp */; };
-		424F33651A60C28600395438 /* lua_Layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32581A60C28600395438 /* lua_Layout.cpp */; };
-		424F33661A60C28600395438 /* lua_Light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F325A1A60C28600395438 /* lua_Light.cpp */; };
-		424F33671A60C28600395438 /* lua_Light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F325A1A60C28600395438 /* lua_Light.cpp */; };
-		424F33681A60C28600395438 /* lua_Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F325C1A60C28600395438 /* lua_Logger.cpp */; };
-		424F33691A60C28600395438 /* lua_Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F325C1A60C28600395438 /* lua_Logger.cpp */; };
-		424F336A1A60C28600395438 /* lua_Material.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F325E1A60C28600395438 /* lua_Material.cpp */; };
-		424F336B1A60C28600395438 /* lua_Material.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F325E1A60C28600395438 /* lua_Material.cpp */; };
-		424F336C1A60C28600395438 /* lua_MaterialParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32601A60C28600395438 /* lua_MaterialParameter.cpp */; };
-		424F336D1A60C28600395438 /* lua_MaterialParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32601A60C28600395438 /* lua_MaterialParameter.cpp */; };
-		424F336E1A60C28600395438 /* lua_MathUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32621A60C28600395438 /* lua_MathUtil.cpp */; };
-		424F336F1A60C28600395438 /* lua_MathUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32621A60C28600395438 /* lua_MathUtil.cpp */; };
-		424F33701A60C28600395438 /* lua_Matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32641A60C28600395438 /* lua_Matrix.cpp */; };
-		424F33711A60C28600395438 /* lua_Matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32641A60C28600395438 /* lua_Matrix.cpp */; };
-		424F33721A60C28600395438 /* lua_Mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32661A60C28600395438 /* lua_Mesh.cpp */; };
-		424F33731A60C28600395438 /* lua_Mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32661A60C28600395438 /* lua_Mesh.cpp */; };
-		424F33741A60C28600395438 /* lua_MeshBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32681A60C28600395438 /* lua_MeshBatch.cpp */; };
-		424F33751A60C28600395438 /* lua_MeshBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32681A60C28600395438 /* lua_MeshBatch.cpp */; };
-		424F33761A60C28600395438 /* lua_MeshPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F326A1A60C28600395438 /* lua_MeshPart.cpp */; };
-		424F33771A60C28600395438 /* lua_MeshPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F326A1A60C28600395438 /* lua_MeshPart.cpp */; };
-		424F33781A60C28600395438 /* lua_MeshSkin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F326C1A60C28600395438 /* lua_MeshSkin.cpp */; };
-		424F33791A60C28600395438 /* lua_MeshSkin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F326C1A60C28600395438 /* lua_MeshSkin.cpp */; };
-		424F337A1A60C28600395438 /* lua_Model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F326E1A60C28600395438 /* lua_Model.cpp */; };
-		424F337B1A60C28600395438 /* lua_Model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F326E1A60C28600395438 /* lua_Model.cpp */; };
-		424F337C1A60C28600395438 /* lua_Mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32701A60C28600395438 /* lua_Mouse.cpp */; };
-		424F337D1A60C28600395438 /* lua_Mouse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32701A60C28600395438 /* lua_Mouse.cpp */; };
-		424F337E1A60C28600395438 /* lua_Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32721A60C28600395438 /* lua_Node.cpp */; };
-		424F337F1A60C28600395438 /* lua_Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32721A60C28600395438 /* lua_Node.cpp */; };
-		424F33801A60C28600395438 /* lua_NodeCloneContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32741A60C28600395438 /* lua_NodeCloneContext.cpp */; };
-		424F33811A60C28600395438 /* lua_NodeCloneContext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32741A60C28600395438 /* lua_NodeCloneContext.cpp */; };
-		424F33821A60C28600395438 /* lua_ParticleEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32761A60C28600395438 /* lua_ParticleEmitter.cpp */; };
-		424F33831A60C28600395438 /* lua_ParticleEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32761A60C28600395438 /* lua_ParticleEmitter.cpp */; };
-		424F33841A60C28600395438 /* lua_Pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32781A60C28600395438 /* lua_Pass.cpp */; };
-		424F33851A60C28600395438 /* lua_Pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32781A60C28600395438 /* lua_Pass.cpp */; };
-		424F33861A60C28600395438 /* lua_PhysicsCharacter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F327A1A60C28600395438 /* lua_PhysicsCharacter.cpp */; };
-		424F33871A60C28600395438 /* lua_PhysicsCharacter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F327A1A60C28600395438 /* lua_PhysicsCharacter.cpp */; };
-		424F33881A60C28600395438 /* lua_PhysicsCollisionObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F327C1A60C28600395438 /* lua_PhysicsCollisionObject.cpp */; };
-		424F33891A60C28600395438 /* lua_PhysicsCollisionObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F327C1A60C28600395438 /* lua_PhysicsCollisionObject.cpp */; };
-		424F338A1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F327E1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp */; };
-		424F338B1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F327E1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp */; };
-		424F338C1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32801A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp */; };
-		424F338D1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32801A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp */; };
-		424F338E1A60C28600395438 /* lua_PhysicsCollisionShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32821A60C28600395438 /* lua_PhysicsCollisionShape.cpp */; };
-		424F338F1A60C28600395438 /* lua_PhysicsCollisionShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32821A60C28600395438 /* lua_PhysicsCollisionShape.cpp */; };
-		424F33901A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32841A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp */; };
-		424F33911A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32841A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp */; };
-		424F33921A60C28600395438 /* lua_PhysicsConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32861A60C28600395438 /* lua_PhysicsConstraint.cpp */; };
-		424F33931A60C28600395438 /* lua_PhysicsConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32861A60C28600395438 /* lua_PhysicsConstraint.cpp */; };
-		424F33941A60C28600395438 /* lua_PhysicsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32881A60C28600395438 /* lua_PhysicsController.cpp */; };
-		424F33951A60C28600395438 /* lua_PhysicsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32881A60C28600395438 /* lua_PhysicsController.cpp */; };
-		424F33961A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F328A1A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp */; };
-		424F33971A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F328A1A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp */; };
-		424F33981A60C28600395438 /* lua_PhysicsControllerHitResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F328C1A60C28600395438 /* lua_PhysicsControllerHitResult.cpp */; };
-		424F33991A60C28600395438 /* lua_PhysicsControllerHitResult.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F328C1A60C28600395438 /* lua_PhysicsControllerHitResult.cpp */; };
-		424F339A1A60C28600395438 /* lua_PhysicsControllerListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F328E1A60C28600395438 /* lua_PhysicsControllerListener.cpp */; };
-		424F339B1A60C28600395438 /* lua_PhysicsControllerListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F328E1A60C28600395438 /* lua_PhysicsControllerListener.cpp */; };
-		424F339C1A60C28600395438 /* lua_PhysicsFixedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32901A60C28600395438 /* lua_PhysicsFixedConstraint.cpp */; };
-		424F339D1A60C28600395438 /* lua_PhysicsFixedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32901A60C28600395438 /* lua_PhysicsFixedConstraint.cpp */; };
-		424F339E1A60C28600395438 /* lua_PhysicsGenericConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32921A60C28600395438 /* lua_PhysicsGenericConstraint.cpp */; };
-		424F339F1A60C28600395438 /* lua_PhysicsGenericConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32921A60C28600395438 /* lua_PhysicsGenericConstraint.cpp */; };
-		424F33A01A60C28600395438 /* lua_PhysicsGhostObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32941A60C28600395438 /* lua_PhysicsGhostObject.cpp */; };
-		424F33A11A60C28600395438 /* lua_PhysicsGhostObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32941A60C28600395438 /* lua_PhysicsGhostObject.cpp */; };
-		424F33A21A60C28600395438 /* lua_PhysicsHingeConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32961A60C28600395438 /* lua_PhysicsHingeConstraint.cpp */; };
-		424F33A31A60C28600395438 /* lua_PhysicsHingeConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32961A60C28600395438 /* lua_PhysicsHingeConstraint.cpp */; };
-		424F33A41A60C28600395438 /* lua_PhysicsRigidBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32981A60C28600395438 /* lua_PhysicsRigidBody.cpp */; };
-		424F33A51A60C28600395438 /* lua_PhysicsRigidBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32981A60C28600395438 /* lua_PhysicsRigidBody.cpp */; };
-		424F33A61A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F329A1A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp */; };
-		424F33A71A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F329A1A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp */; };
-		424F33A81A60C28600395438 /* lua_PhysicsSocketConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F329C1A60C28600395438 /* lua_PhysicsSocketConstraint.cpp */; };
-		424F33A91A60C28600395438 /* lua_PhysicsSocketConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F329C1A60C28600395438 /* lua_PhysicsSocketConstraint.cpp */; };
-		424F33AA1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F329E1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp */; };
-		424F33AB1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F329E1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp */; };
-		424F33AC1A60C28600395438 /* lua_PhysicsVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A01A60C28600395438 /* lua_PhysicsVehicle.cpp */; };
-		424F33AD1A60C28600395438 /* lua_PhysicsVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A01A60C28600395438 /* lua_PhysicsVehicle.cpp */; };
-		424F33AE1A60C28600395438 /* lua_PhysicsVehicleWheel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A21A60C28600395438 /* lua_PhysicsVehicleWheel.cpp */; };
-		424F33AF1A60C28600395438 /* lua_PhysicsVehicleWheel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A21A60C28600395438 /* lua_PhysicsVehicleWheel.cpp */; };
-		424F33B01A60C28600395438 /* lua_Plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A41A60C28600395438 /* lua_Plane.cpp */; };
-		424F33B11A60C28600395438 /* lua_Plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A41A60C28600395438 /* lua_Plane.cpp */; };
-		424F33B21A60C28600395438 /* lua_Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A61A60C28600395438 /* lua_Platform.cpp */; };
-		424F33B31A60C28600395438 /* lua_Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A61A60C28600395438 /* lua_Platform.cpp */; };
-		424F33B41A60C28600395438 /* lua_Properties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A81A60C28600395438 /* lua_Properties.cpp */; };
-		424F33B51A60C28600395438 /* lua_Properties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32A81A60C28600395438 /* lua_Properties.cpp */; };
-		424F33B61A60C28600395438 /* lua_Quaternion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32AA1A60C28600395438 /* lua_Quaternion.cpp */; };
-		424F33B71A60C28600395438 /* lua_Quaternion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32AA1A60C28600395438 /* lua_Quaternion.cpp */; };
-		424F33B81A60C28600395438 /* lua_RadioButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32AC1A60C28600395438 /* lua_RadioButton.cpp */; };
-		424F33B91A60C28600395438 /* lua_RadioButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32AC1A60C28600395438 /* lua_RadioButton.cpp */; };
-		424F33BA1A60C28600395438 /* lua_Ray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32AE1A60C28600395438 /* lua_Ray.cpp */; };
-		424F33BB1A60C28600395438 /* lua_Ray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32AE1A60C28600395438 /* lua_Ray.cpp */; };
-		424F33BC1A60C28600395438 /* lua_Rectangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B01A60C28600395438 /* lua_Rectangle.cpp */; };
-		424F33BD1A60C28600395438 /* lua_Rectangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B01A60C28600395438 /* lua_Rectangle.cpp */; };
-		424F33BE1A60C28600395438 /* lua_Ref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B21A60C28600395438 /* lua_Ref.cpp */; };
-		424F33BF1A60C28600395438 /* lua_Ref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B21A60C28600395438 /* lua_Ref.cpp */; };
-		424F33C01A60C28600395438 /* lua_RenderState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B41A60C28600395438 /* lua_RenderState.cpp */; };
-		424F33C11A60C28600395438 /* lua_RenderState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B41A60C28600395438 /* lua_RenderState.cpp */; };
-		424F33C21A60C28600395438 /* lua_RenderStateStateBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B61A60C28600395438 /* lua_RenderStateStateBlock.cpp */; };
-		424F33C31A60C28600395438 /* lua_RenderStateStateBlock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B61A60C28600395438 /* lua_RenderStateStateBlock.cpp */; };
-		424F33C41A60C28600395438 /* lua_RenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B81A60C28600395438 /* lua_RenderTarget.cpp */; };
-		424F33C51A60C28600395438 /* lua_RenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32B81A60C28600395438 /* lua_RenderTarget.cpp */; };
-		424F33C61A60C28600395438 /* lua_Scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32BA1A60C28600395438 /* lua_Scene.cpp */; };
-		424F33C71A60C28600395438 /* lua_Scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32BA1A60C28600395438 /* lua_Scene.cpp */; };
-		424F33C81A60C28600395438 /* lua_ScreenDisplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32BC1A60C28600395438 /* lua_ScreenDisplayer.cpp */; };
-		424F33C91A60C28600395438 /* lua_ScreenDisplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32BC1A60C28600395438 /* lua_ScreenDisplayer.cpp */; };
-		424F33CA1A60C28600395438 /* lua_Script.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32BE1A60C28600395438 /* lua_Script.cpp */; };
-		424F33CB1A60C28600395438 /* lua_Script.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32BE1A60C28600395438 /* lua_Script.cpp */; };
-		424F33CC1A60C28600395438 /* lua_ScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C01A60C28600395438 /* lua_ScriptController.cpp */; };
-		424F33CD1A60C28600395438 /* lua_ScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C01A60C28600395438 /* lua_ScriptController.cpp */; };
-		424F33CE1A60C28600395438 /* lua_ScriptTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C21A60C28600395438 /* lua_ScriptTarget.cpp */; };
-		424F33CF1A60C28600395438 /* lua_ScriptTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C21A60C28600395438 /* lua_ScriptTarget.cpp */; };
-		424F33D01A60C28600395438 /* lua_ScriptTargetEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C41A60C28600395438 /* lua_ScriptTargetEvent.cpp */; };
-		424F33D11A60C28600395438 /* lua_ScriptTargetEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C41A60C28600395438 /* lua_ScriptTargetEvent.cpp */; };
-		424F33D21A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C61A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp */; };
-		424F33D31A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C61A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp */; };
-		424F33D41A60C28600395438 /* lua_Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C81A60C28600395438 /* lua_Slider.cpp */; };
-		424F33D51A60C28600395438 /* lua_Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32C81A60C28600395438 /* lua_Slider.cpp */; };
-		424F33D61A60C28600395438 /* lua_Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32CA1A60C28600395438 /* lua_Sprite.cpp */; };
-		424F33D71A60C28600395438 /* lua_Sprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32CA1A60C28600395438 /* lua_Sprite.cpp */; };
-		424F33D81A60C28600395438 /* lua_SpriteBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32CC1A60C28600395438 /* lua_SpriteBatch.cpp */; };
-		424F33D91A60C28600395438 /* lua_SpriteBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32CC1A60C28600395438 /* lua_SpriteBatch.cpp */; };
-		424F33DA1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32CE1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp */; };
-		424F33DB1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32CE1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp */; };
-		424F33DC1A60C28600395438 /* lua_Technique.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D01A60C28600395438 /* lua_Technique.cpp */; };
-		424F33DD1A60C28600395438 /* lua_Technique.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D01A60C28600395438 /* lua_Technique.cpp */; };
-		424F33DE1A60C28600395438 /* lua_Terrain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D21A60C28600395438 /* lua_Terrain.cpp */; };
-		424F33DF1A60C28600395438 /* lua_Terrain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D21A60C28600395438 /* lua_Terrain.cpp */; };
-		424F33E01A60C28600395438 /* lua_TerrainPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D41A60C28600395438 /* lua_TerrainPatch.cpp */; };
-		424F33E11A60C28600395438 /* lua_TerrainPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D41A60C28600395438 /* lua_TerrainPatch.cpp */; };
-		424F33E21A60C28600395438 /* lua_Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D61A60C28600395438 /* lua_Text.cpp */; };
-		424F33E31A60C28600395438 /* lua_Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D61A60C28600395438 /* lua_Text.cpp */; };
-		424F33E41A60C28600395438 /* lua_TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D81A60C28600395438 /* lua_TextBox.cpp */; };
-		424F33E51A60C28600395438 /* lua_TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32D81A60C28600395438 /* lua_TextBox.cpp */; };
-		424F33E61A60C28600395438 /* lua_Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32DA1A60C28600395438 /* lua_Texture.cpp */; };
-		424F33E71A60C28600395438 /* lua_Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32DA1A60C28600395438 /* lua_Texture.cpp */; };
-		424F33E81A60C28600395438 /* lua_TextureSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32DC1A60C28600395438 /* lua_TextureSampler.cpp */; };
-		424F33E91A60C28600395438 /* lua_TextureSampler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32DC1A60C28600395438 /* lua_TextureSampler.cpp */; };
-		424F33EA1A60C28600395438 /* lua_Theme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32DE1A60C28600395438 /* lua_Theme.cpp */; };
-		424F33EB1A60C28600395438 /* lua_Theme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32DE1A60C28600395438 /* lua_Theme.cpp */; };
-		424F33EC1A60C28600395438 /* lua_ThemeSideRegions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E01A60C28600395438 /* lua_ThemeSideRegions.cpp */; };
-		424F33ED1A60C28600395438 /* lua_ThemeSideRegions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E01A60C28600395438 /* lua_ThemeSideRegions.cpp */; };
-		424F33EE1A60C28600395438 /* lua_ThemeStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E21A60C28600395438 /* lua_ThemeStyle.cpp */; };
-		424F33EF1A60C28600395438 /* lua_ThemeStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E21A60C28600395438 /* lua_ThemeStyle.cpp */; };
-		424F33F01A60C28600395438 /* lua_ThemeThemeImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E41A60C28600395438 /* lua_ThemeThemeImage.cpp */; };
-		424F33F11A60C28600395438 /* lua_ThemeThemeImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E41A60C28600395438 /* lua_ThemeThemeImage.cpp */; };
-		424F33F21A60C28600395438 /* lua_ThemeUVs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E61A60C28600395438 /* lua_ThemeUVs.cpp */; };
-		424F33F31A60C28600395438 /* lua_ThemeUVs.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E61A60C28600395438 /* lua_ThemeUVs.cpp */; };
-		424F33F41A60C28600395438 /* lua_TileSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E81A60C28600395438 /* lua_TileSet.cpp */; };
-		424F33F51A60C28600395438 /* lua_TileSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32E81A60C28600395438 /* lua_TileSet.cpp */; };
-		424F33F61A60C28600395438 /* lua_Touch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32EA1A60C28600395438 /* lua_Touch.cpp */; };
-		424F33F71A60C28600395438 /* lua_Touch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32EA1A60C28600395438 /* lua_Touch.cpp */; };
-		424F33F81A60C28600395438 /* lua_Transform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32EC1A60C28600395438 /* lua_Transform.cpp */; };
-		424F33F91A60C28600395438 /* lua_Transform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32EC1A60C28600395438 /* lua_Transform.cpp */; };
-		424F33FA1A60C28600395438 /* lua_TransformListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32EE1A60C28600395438 /* lua_TransformListener.cpp */; };
-		424F33FB1A60C28600395438 /* lua_TransformListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32EE1A60C28600395438 /* lua_TransformListener.cpp */; };
-		424F33FC1A60C28600395438 /* lua_Uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F01A60C28600395438 /* lua_Uniform.cpp */; };
-		424F33FD1A60C28600395438 /* lua_Uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F01A60C28600395438 /* lua_Uniform.cpp */; };
-		424F33FE1A60C28600395438 /* lua_Vector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F21A60C28600395438 /* lua_Vector2.cpp */; };
-		424F33FF1A60C28600395438 /* lua_Vector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F21A60C28600395438 /* lua_Vector2.cpp */; };
-		424F34001A60C28600395438 /* lua_Vector3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F41A60C28600395438 /* lua_Vector3.cpp */; };
-		424F34011A60C28600395438 /* lua_Vector3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F41A60C28600395438 /* lua_Vector3.cpp */; };
-		424F34021A60C28600395438 /* lua_Vector4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F61A60C28600395438 /* lua_Vector4.cpp */; };
-		424F34031A60C28600395438 /* lua_Vector4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F61A60C28600395438 /* lua_Vector4.cpp */; };
-		424F34041A60C28600395438 /* lua_VertexAttributeBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F81A60C28600395438 /* lua_VertexAttributeBinding.cpp */; };
-		424F34051A60C28600395438 /* lua_VertexAttributeBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32F81A60C28600395438 /* lua_VertexAttributeBinding.cpp */; };
-		424F34061A60C28600395438 /* lua_VertexFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32FA1A60C28600395438 /* lua_VertexFormat.cpp */; };
-		424F34071A60C28600395438 /* lua_VertexFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32FA1A60C28600395438 /* lua_VertexFormat.cpp */; };
-		424F34081A60C28600395438 /* lua_VertexFormatElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32FC1A60C28600395438 /* lua_VertexFormatElement.cpp */; };
-		424F34091A60C28600395438 /* lua_VertexFormatElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32FC1A60C28600395438 /* lua_VertexFormatElement.cpp */; };
-		424F340A1A60C28600395438 /* lua_VerticalLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32FE1A60C28600395438 /* lua_VerticalLayout.cpp */; };
-		424F340B1A60C28600395438 /* lua_VerticalLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 424F32FE1A60C28600395438 /* lua_VerticalLayout.cpp */; };
-		426F8317187F72A700640CBA /* JoystickControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 426F8315187F72A700640CBA /* JoystickControl.cpp */; };
-		426F8318187F72A700640CBA /* JoystickControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 426F8315187F72A700640CBA /* JoystickControl.cpp */; };
-		42CC556C1809A4EF00AAD8AD /* AbsoluteLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52F71809A4EB00AAD8AD /* AbsoluteLayout.cpp */; };
-		42CC556D1809A4EF00AAD8AD /* AbsoluteLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52F71809A4EB00AAD8AD /* AbsoluteLayout.cpp */; };
-		42CC55701809A4EF00AAD8AD /* AIAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52F91809A4EB00AAD8AD /* AIAgent.cpp */; };
-		42CC55711809A4EF00AAD8AD /* AIAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52F91809A4EB00AAD8AD /* AIAgent.cpp */; };
-		42CC55741809A4EF00AAD8AD /* AIController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52FB1809A4EB00AAD8AD /* AIController.cpp */; };
-		42CC55751809A4EF00AAD8AD /* AIController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52FB1809A4EB00AAD8AD /* AIController.cpp */; };
-		42CC55781809A4EF00AAD8AD /* AIMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52FD1809A4EB00AAD8AD /* AIMessage.cpp */; };
-		42CC55791809A4EF00AAD8AD /* AIMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52FD1809A4EB00AAD8AD /* AIMessage.cpp */; };
-		42CC557C1809A4EF00AAD8AD /* AIState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52FF1809A4EB00AAD8AD /* AIState.cpp */; };
-		42CC557D1809A4EF00AAD8AD /* AIState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC52FF1809A4EB00AAD8AD /* AIState.cpp */; };
-		42CC55801809A4EF00AAD8AD /* AIStateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53011809A4EB00AAD8AD /* AIStateMachine.cpp */; };
-		42CC55811809A4EF00AAD8AD /* AIStateMachine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53011809A4EB00AAD8AD /* AIStateMachine.cpp */; };
-		42CC55841809A4EF00AAD8AD /* Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53031809A4EB00AAD8AD /* Animation.cpp */; };
-		42CC55851809A4EF00AAD8AD /* Animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53031809A4EB00AAD8AD /* Animation.cpp */; };
-		42CC55881809A4EF00AAD8AD /* AnimationClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53051809A4EB00AAD8AD /* AnimationClip.cpp */; };
-		42CC55891809A4EF00AAD8AD /* AnimationClip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53051809A4EB00AAD8AD /* AnimationClip.cpp */; };
-		42CC558C1809A4EF00AAD8AD /* AnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53071809A4EB00AAD8AD /* AnimationController.cpp */; };
-		42CC558D1809A4EF00AAD8AD /* AnimationController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53071809A4EB00AAD8AD /* AnimationController.cpp */; };
-		42CC55901809A4EF00AAD8AD /* AnimationTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53091809A4EB00AAD8AD /* AnimationTarget.cpp */; };
-		42CC55911809A4EF00AAD8AD /* AnimationTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53091809A4EB00AAD8AD /* AnimationTarget.cpp */; };
-		42CC55941809A4EF00AAD8AD /* AnimationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC530B1809A4EB00AAD8AD /* AnimationValue.cpp */; };
-		42CC55951809A4EF00AAD8AD /* AnimationValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC530B1809A4EB00AAD8AD /* AnimationValue.cpp */; };
-		42CC55981809A4EF00AAD8AD /* AudioBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC530D1809A4EB00AAD8AD /* AudioBuffer.cpp */; };
-		42CC55991809A4EF00AAD8AD /* AudioBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC530D1809A4EB00AAD8AD /* AudioBuffer.cpp */; };
-		42CC559C1809A4EF00AAD8AD /* AudioController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC530F1809A4EB00AAD8AD /* AudioController.cpp */; };
-		42CC559D1809A4EF00AAD8AD /* AudioController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC530F1809A4EB00AAD8AD /* AudioController.cpp */; };
-		42CC55A01809A4EF00AAD8AD /* AudioListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53111809A4EB00AAD8AD /* AudioListener.cpp */; };
-		42CC55A11809A4EF00AAD8AD /* AudioListener.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53111809A4EB00AAD8AD /* AudioListener.cpp */; };
-		42CC55A41809A4EF00AAD8AD /* AudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53131809A4EB00AAD8AD /* AudioSource.cpp */; };
-		42CC55A51809A4EF00AAD8AD /* AudioSource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53131809A4EB00AAD8AD /* AudioSource.cpp */; };
-		42CC55AA1809A4EF00AAD8AD /* BoundingBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53161809A4EB00AAD8AD /* BoundingBox.cpp */; };
-		42CC55AB1809A4EF00AAD8AD /* BoundingBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53161809A4EB00AAD8AD /* BoundingBox.cpp */; };
-		42CC55AE1809A4EF00AAD8AD /* BoundingSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53191809A4EB00AAD8AD /* BoundingSphere.cpp */; };
-		42CC55AF1809A4EF00AAD8AD /* BoundingSphere.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53191809A4EB00AAD8AD /* BoundingSphere.cpp */; };
-		42CC55B21809A4EF00AAD8AD /* Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC531C1809A4EB00AAD8AD /* Bundle.cpp */; };
-		42CC55B31809A4EF00AAD8AD /* Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC531C1809A4EB00AAD8AD /* Bundle.cpp */; };
-		42CC55B61809A4EF00AAD8AD /* Button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC531E1809A4EB00AAD8AD /* Button.cpp */; };
-		42CC55B71809A4EF00AAD8AD /* Button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC531E1809A4EB00AAD8AD /* Button.cpp */; };
-		42CC55BA1809A4EF00AAD8AD /* Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53201809A4EB00AAD8AD /* Camera.cpp */; };
-		42CC55BB1809A4EF00AAD8AD /* Camera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53201809A4EB00AAD8AD /* Camera.cpp */; };
-		42CC55BE1809A4EF00AAD8AD /* CheckBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53221809A4EB00AAD8AD /* CheckBox.cpp */; };
-		42CC55BF1809A4EF00AAD8AD /* CheckBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53221809A4EB00AAD8AD /* CheckBox.cpp */; };
-		42CC55C21809A4EF00AAD8AD /* Container.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53241809A4EB00AAD8AD /* Container.cpp */; };
-		42CC55C31809A4EF00AAD8AD /* Container.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53241809A4EB00AAD8AD /* Container.cpp */; };
-		42CC55C61809A4EF00AAD8AD /* Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53261809A4EB00AAD8AD /* Control.cpp */; };
-		42CC55C71809A4EF00AAD8AD /* Control.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53261809A4EB00AAD8AD /* Control.cpp */; };
-		42CC55CA1809A4EF00AAD8AD /* Curve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53281809A4EB00AAD8AD /* Curve.cpp */; };
-		42CC55CB1809A4EF00AAD8AD /* Curve.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53281809A4EB00AAD8AD /* Curve.cpp */; };
-		42CC55CE1809A4EF00AAD8AD /* DebugNew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC532A1809A4EB00AAD8AD /* DebugNew.cpp */; };
-		42CC55CF1809A4EF00AAD8AD /* DebugNew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC532A1809A4EB00AAD8AD /* DebugNew.cpp */; };
-		42CC55D21809A4EF00AAD8AD /* DepthStencilTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC532C1809A4EB00AAD8AD /* DepthStencilTarget.cpp */; };
-		42CC55D31809A4EF00AAD8AD /* DepthStencilTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC532C1809A4EB00AAD8AD /* DepthStencilTarget.cpp */; };
-		42CC55D61809A4EF00AAD8AD /* Effect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC532E1809A4EB00AAD8AD /* Effect.cpp */; };
-		42CC55D71809A4EF00AAD8AD /* Effect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC532E1809A4EB00AAD8AD /* Effect.cpp */; };
-		42CC55DA1809A4EF00AAD8AD /* FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53301809A4EB00AAD8AD /* FileSystem.cpp */; };
-		42CC55DB1809A4EF00AAD8AD /* FileSystem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53301809A4EB00AAD8AD /* FileSystem.cpp */; };
-		42CC55DE1809A4EF00AAD8AD /* FlowLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53321809A4EB00AAD8AD /* FlowLayout.cpp */; };
-		42CC55DF1809A4EF00AAD8AD /* FlowLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53321809A4EB00AAD8AD /* FlowLayout.cpp */; };
-		42CC55E21809A4EF00AAD8AD /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53341809A4EB00AAD8AD /* Font.cpp */; };
-		42CC55E31809A4EF00AAD8AD /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53341809A4EB00AAD8AD /* Font.cpp */; };
-		42CC55E61809A4EF00AAD8AD /* Form.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53361809A4EB00AAD8AD /* Form.cpp */; };
-		42CC55E71809A4EF00AAD8AD /* Form.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53361809A4EB00AAD8AD /* Form.cpp */; };
-		42CC55EA1809A4EF00AAD8AD /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53381809A4EB00AAD8AD /* FrameBuffer.cpp */; };
-		42CC55EB1809A4EF00AAD8AD /* FrameBuffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53381809A4EB00AAD8AD /* FrameBuffer.cpp */; };
-		42CC55EE1809A4EF00AAD8AD /* Frustum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC533A1809A4EB00AAD8AD /* Frustum.cpp */; };
-		42CC55EF1809A4EF00AAD8AD /* Frustum.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC533A1809A4EB00AAD8AD /* Frustum.cpp */; };
-		42CC55F21809A4EF00AAD8AD /* Game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC533C1809A4EB00AAD8AD /* Game.cpp */; };
-		42CC55F31809A4EF00AAD8AD /* Game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC533C1809A4EB00AAD8AD /* Game.cpp */; };
-		42CC55F61809A4EF00AAD8AD /* Gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC533F1809A4EB00AAD8AD /* Gamepad.cpp */; };
-		42CC55F71809A4EF00AAD8AD /* Gamepad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC533F1809A4EB00AAD8AD /* Gamepad.cpp */; };
-		42CC55FA1809A4EF00AAD8AD /* gameplay-main-android.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53411809A4EB00AAD8AD /* gameplay-main-android.cpp */; };
-		42CC55FB1809A4EF00AAD8AD /* gameplay-main-android.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53411809A4EB00AAD8AD /* gameplay-main-android.cpp */; };
-		42CC55FF1809A4EF00AAD8AD /* gameplay-main-ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53431809A4EB00AAD8AD /* gameplay-main-ios.mm */; };
-		42CC56001809A4EF00AAD8AD /* gameplay-main-linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53441809A4EB00AAD8AD /* gameplay-main-linux.cpp */; };
-		42CC56011809A4EF00AAD8AD /* gameplay-main-linux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53441809A4EB00AAD8AD /* gameplay-main-linux.cpp */; };
-		42CC56021809A4EF00AAD8AD /* gameplay-main-macosx.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53451809A4EB00AAD8AD /* gameplay-main-macosx.mm */; };
-		42CC56041809A4EF00AAD8AD /* gameplay-main-windows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53461809A4EB00AAD8AD /* gameplay-main-windows.cpp */; };
-		42CC56051809A4EF00AAD8AD /* gameplay-main-windows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53461809A4EB00AAD8AD /* gameplay-main-windows.cpp */; };
-		42CC560A1809A4EF00AAD8AD /* HeightField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53491809A4EB00AAD8AD /* HeightField.cpp */; };
-		42CC560B1809A4EF00AAD8AD /* HeightField.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53491809A4EB00AAD8AD /* HeightField.cpp */; };
-		42CC560E1809A4EF00AAD8AD /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC534B1809A4EB00AAD8AD /* Image.cpp */; };
-		42CC560F1809A4EF00AAD8AD /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC534B1809A4EB00AAD8AD /* Image.cpp */; };
-		42CC56121809A4EF00AAD8AD /* ImageControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC534E1809A4EC00AAD8AD /* ImageControl.cpp */; };
-		42CC56131809A4EF00AAD8AD /* ImageControl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC534E1809A4EC00AAD8AD /* ImageControl.cpp */; };
-		42CC56161809A4EF00AAD8AD /* Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53501809A4EC00AAD8AD /* Joint.cpp */; };
-		42CC56171809A4EF00AAD8AD /* Joint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53501809A4EC00AAD8AD /* Joint.cpp */; };
-		42CC56201809A4EF00AAD8AD /* Label.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53561809A4EC00AAD8AD /* Label.cpp */; };
-		42CC56211809A4EF00AAD8AD /* Label.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53561809A4EC00AAD8AD /* Label.cpp */; };
-		42CC56241809A4EF00AAD8AD /* Layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53581809A4EC00AAD8AD /* Layout.cpp */; };
-		42CC56251809A4EF00AAD8AD /* Layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC53581809A4EC00AAD8AD /* Layout.cpp */; };
-		42CC56281809A4EF00AAD8AD /* Light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC535A1809A4EC00AAD8AD /* Light.cpp */; };
-		42CC56291809A4EF00AAD8AD /* Light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC535A1809A4EC00AAD8AD /* Light.cpp */; };
-		42CC562C1809A4EF00AAD8AD /* Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC535C1809A4EC00AAD8AD /* Logger.cpp */; };
-		42CC562D1809A4EF00AAD8AD /* Logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC535C1809A4EC00AAD8AD /* Logger.cpp */; };
-		42CC59001809A4EF00AAD8AD /* Material.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54C71809A4ED00AAD8AD /* Material.cpp */; };
-		42CC59011809A4EF00AAD8AD /* Material.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54C71809A4ED00AAD8AD /* Material.cpp */; };
-		42CC59041809A4EF00AAD8AD /* MaterialParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54C91809A4ED00AAD8AD /* MaterialParameter.cpp */; };
-		42CC59051809A4EF00AAD8AD /* MaterialParameter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54C91809A4ED00AAD8AD /* MaterialParameter.cpp */; };
-		42CC59081809A4EF00AAD8AD /* MathUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54CB1809A4ED00AAD8AD /* MathUtil.cpp */; };
-		42CC59091809A4EF00AAD8AD /* MathUtil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54CB1809A4ED00AAD8AD /* MathUtil.cpp */; };
-		42CC590C1809A4EF00AAD8AD /* Matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54CF1809A4ED00AAD8AD /* Matrix.cpp */; };
-		42CC590D1809A4EF00AAD8AD /* Matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54CF1809A4ED00AAD8AD /* Matrix.cpp */; };
-		42CC59101809A4EF00AAD8AD /* Mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D21809A4ED00AAD8AD /* Mesh.cpp */; };
-		42CC59111809A4EF00AAD8AD /* Mesh.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D21809A4ED00AAD8AD /* Mesh.cpp */; };
-		42CC59141809A4EF00AAD8AD /* MeshBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D41809A4ED00AAD8AD /* MeshBatch.cpp */; };
-		42CC59151809A4EF00AAD8AD /* MeshBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D41809A4ED00AAD8AD /* MeshBatch.cpp */; };
-		42CC59181809A4EF00AAD8AD /* MeshPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D71809A4ED00AAD8AD /* MeshPart.cpp */; };
-		42CC59191809A4EF00AAD8AD /* MeshPart.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D71809A4ED00AAD8AD /* MeshPart.cpp */; };
-		42CC591C1809A4EF00AAD8AD /* MeshSkin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D91809A4ED00AAD8AD /* MeshSkin.cpp */; };
-		42CC591D1809A4EF00AAD8AD /* MeshSkin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54D91809A4ED00AAD8AD /* MeshSkin.cpp */; };
-		42CC59201809A4EF00AAD8AD /* Model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54DB1809A4ED00AAD8AD /* Model.cpp */; };
-		42CC59211809A4EF00AAD8AD /* Model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54DB1809A4ED00AAD8AD /* Model.cpp */; };
-		42CC59261809A4EF00AAD8AD /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54DE1809A4ED00AAD8AD /* Node.cpp */; };
-		42CC59271809A4EF00AAD8AD /* Node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54DE1809A4ED00AAD8AD /* Node.cpp */; };
-		42CC592A1809A4EF00AAD8AD /* ParticleEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E01809A4ED00AAD8AD /* ParticleEmitter.cpp */; };
-		42CC592B1809A4EF00AAD8AD /* ParticleEmitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E01809A4ED00AAD8AD /* ParticleEmitter.cpp */; };
-		42CC592E1809A4EF00AAD8AD /* Pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E21809A4ED00AAD8AD /* Pass.cpp */; };
-		42CC592F1809A4EF00AAD8AD /* Pass.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E21809A4ED00AAD8AD /* Pass.cpp */; };
-		42CC59321809A4EF00AAD8AD /* PhysicsCharacter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E41809A4ED00AAD8AD /* PhysicsCharacter.cpp */; };
-		42CC59331809A4EF00AAD8AD /* PhysicsCharacter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E41809A4ED00AAD8AD /* PhysicsCharacter.cpp */; };
-		42CC59361809A4EF00AAD8AD /* PhysicsCollisionObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E61809A4ED00AAD8AD /* PhysicsCollisionObject.cpp */; };
-		42CC59371809A4EF00AAD8AD /* PhysicsCollisionObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E61809A4ED00AAD8AD /* PhysicsCollisionObject.cpp */; };
-		42CC593A1809A4EF00AAD8AD /* PhysicsCollisionShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E81809A4ED00AAD8AD /* PhysicsCollisionShape.cpp */; };
-		42CC593B1809A4EF00AAD8AD /* PhysicsCollisionShape.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54E81809A4ED00AAD8AD /* PhysicsCollisionShape.cpp */; };
-		42CC593E1809A4EF00AAD8AD /* PhysicsConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54EA1809A4ED00AAD8AD /* PhysicsConstraint.cpp */; };
-		42CC593F1809A4EF00AAD8AD /* PhysicsConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54EA1809A4ED00AAD8AD /* PhysicsConstraint.cpp */; };
-		42CC59421809A4EF00AAD8AD /* PhysicsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54ED1809A4ED00AAD8AD /* PhysicsController.cpp */; };
-		42CC59431809A4EF00AAD8AD /* PhysicsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54ED1809A4ED00AAD8AD /* PhysicsController.cpp */; };
-		42CC59461809A4EF00AAD8AD /* PhysicsFixedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54EF1809A4ED00AAD8AD /* PhysicsFixedConstraint.cpp */; };
-		42CC59471809A4EF00AAD8AD /* PhysicsFixedConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54EF1809A4ED00AAD8AD /* PhysicsFixedConstraint.cpp */; };
-		42CC594A1809A4EF00AAD8AD /* PhysicsGenericConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F21809A4ED00AAD8AD /* PhysicsGenericConstraint.cpp */; };
-		42CC594B1809A4EF00AAD8AD /* PhysicsGenericConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F21809A4ED00AAD8AD /* PhysicsGenericConstraint.cpp */; };
-		42CC594E1809A4EF00AAD8AD /* PhysicsGhostObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F51809A4ED00AAD8AD /* PhysicsGhostObject.cpp */; };
-		42CC594F1809A4EF00AAD8AD /* PhysicsGhostObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F51809A4ED00AAD8AD /* PhysicsGhostObject.cpp */; };
-		42CC59521809A4EF00AAD8AD /* PhysicsHingeConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F71809A4ED00AAD8AD /* PhysicsHingeConstraint.cpp */; };
-		42CC59531809A4EF00AAD8AD /* PhysicsHingeConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F71809A4ED00AAD8AD /* PhysicsHingeConstraint.cpp */; };
-		42CC59561809A4EF00AAD8AD /* PhysicsRigidBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F91809A4ED00AAD8AD /* PhysicsRigidBody.cpp */; };
-		42CC59571809A4EF00AAD8AD /* PhysicsRigidBody.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54F91809A4ED00AAD8AD /* PhysicsRigidBody.cpp */; };
-		42CC595A1809A4EF00AAD8AD /* PhysicsSocketConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54FC1809A4ED00AAD8AD /* PhysicsSocketConstraint.cpp */; };
-		42CC595B1809A4EF00AAD8AD /* PhysicsSocketConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54FC1809A4ED00AAD8AD /* PhysicsSocketConstraint.cpp */; };
-		42CC595E1809A4EF00AAD8AD /* PhysicsSpringConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54FE1809A4ED00AAD8AD /* PhysicsSpringConstraint.cpp */; };
-		42CC595F1809A4EF00AAD8AD /* PhysicsSpringConstraint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC54FE1809A4ED00AAD8AD /* PhysicsSpringConstraint.cpp */; };
-		42CC59621809A4EF00AAD8AD /* PhysicsVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55011809A4ED00AAD8AD /* PhysicsVehicle.cpp */; };
-		42CC59631809A4EF00AAD8AD /* PhysicsVehicle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55011809A4ED00AAD8AD /* PhysicsVehicle.cpp */; };
-		42CC59661809A4EF00AAD8AD /* PhysicsVehicleWheel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55031809A4ED00AAD8AD /* PhysicsVehicleWheel.cpp */; };
-		42CC59671809A4EF00AAD8AD /* PhysicsVehicleWheel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55031809A4ED00AAD8AD /* PhysicsVehicleWheel.cpp */; };
-		42CC596A1809A4EF00AAD8AD /* Plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55051809A4ED00AAD8AD /* Plane.cpp */; };
-		42CC596B1809A4EF00AAD8AD /* Plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55051809A4ED00AAD8AD /* Plane.cpp */; };
-		42CC596E1809A4EF00AAD8AD /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55081809A4ED00AAD8AD /* Platform.cpp */; };
-		42CC596F1809A4EF00AAD8AD /* Platform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55081809A4ED00AAD8AD /* Platform.cpp */; };
-		42CC59721809A4EF00AAD8AD /* PlatformAndroid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550A1809A4ED00AAD8AD /* PlatformAndroid.cpp */; };
-		42CC59731809A4EF00AAD8AD /* PlatformAndroid.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550A1809A4ED00AAD8AD /* PlatformAndroid.cpp */; };
-		42CC59771809A4EF00AAD8AD /* PlatformiOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550C1809A4ED00AAD8AD /* PlatformiOS.mm */; };
-		42CC59781809A4EF00AAD8AD /* PlatformLinux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550D1809A4ED00AAD8AD /* PlatformLinux.cpp */; };
-		42CC59791809A4EF00AAD8AD /* PlatformLinux.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550D1809A4ED00AAD8AD /* PlatformLinux.cpp */; };
-		42CC597A1809A4EF00AAD8AD /* PlatformMacOSX.mm in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550E1809A4ED00AAD8AD /* PlatformMacOSX.mm */; };
-		42CC597C1809A4EF00AAD8AD /* PlatformWindows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550F1809A4EE00AAD8AD /* PlatformWindows.cpp */; };
-		42CC597D1809A4EF00AAD8AD /* PlatformWindows.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC550F1809A4EE00AAD8AD /* PlatformWindows.cpp */; };
-		42CC597E1809A4EF00AAD8AD /* Properties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55101809A4EE00AAD8AD /* Properties.cpp */; };
-		42CC597F1809A4EF00AAD8AD /* Properties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55101809A4EE00AAD8AD /* Properties.cpp */; };
-		42CC59821809A4EF00AAD8AD /* Quaternion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55121809A4EE00AAD8AD /* Quaternion.cpp */; };
-		42CC59831809A4EF00AAD8AD /* Quaternion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55121809A4EE00AAD8AD /* Quaternion.cpp */; };
-		42CC59861809A4EF00AAD8AD /* RadioButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55151809A4EE00AAD8AD /* RadioButton.cpp */; };
-		42CC59871809A4EF00AAD8AD /* RadioButton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55151809A4EE00AAD8AD /* RadioButton.cpp */; };
-		42CC598A1809A4EF00AAD8AD /* Ray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55171809A4EE00AAD8AD /* Ray.cpp */; };
-		42CC598B1809A4EF00AAD8AD /* Ray.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55171809A4EE00AAD8AD /* Ray.cpp */; };
-		42CC598E1809A4EF00AAD8AD /* Rectangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC551A1809A4EE00AAD8AD /* Rectangle.cpp */; };
-		42CC598F1809A4EF00AAD8AD /* Rectangle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC551A1809A4EE00AAD8AD /* Rectangle.cpp */; };
-		42CC59921809A4EF00AAD8AD /* Ref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC551C1809A4EE00AAD8AD /* Ref.cpp */; };
-		42CC59931809A4EF00AAD8AD /* Ref.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC551C1809A4EE00AAD8AD /* Ref.cpp */; };
-		42CC59961809A4EF00AAD8AD /* RenderState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC551E1809A4EE00AAD8AD /* RenderState.cpp */; };
-		42CC59971809A4EF00AAD8AD /* RenderState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC551E1809A4EE00AAD8AD /* RenderState.cpp */; };
-		42CC599A1809A4EF00AAD8AD /* RenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55201809A4EE00AAD8AD /* RenderTarget.cpp */; };
-		42CC599B1809A4EF00AAD8AD /* RenderTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55201809A4EE00AAD8AD /* RenderTarget.cpp */; };
-		42CC599E1809A4EF00AAD8AD /* Scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55221809A4EE00AAD8AD /* Scene.cpp */; };
-		42CC599F1809A4EF00AAD8AD /* Scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55221809A4EE00AAD8AD /* Scene.cpp */; };
-		42CC59A21809A4EF00AAD8AD /* SceneLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55241809A4EE00AAD8AD /* SceneLoader.cpp */; };
-		42CC59A31809A4EF00AAD8AD /* SceneLoader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55241809A4EE00AAD8AD /* SceneLoader.cpp */; };
-		42CC59AE1809A4EF00AAD8AD /* ScreenDisplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC552A1809A4EE00AAD8AD /* ScreenDisplayer.cpp */; };
-		42CC59AF1809A4EF00AAD8AD /* ScreenDisplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC552A1809A4EE00AAD8AD /* ScreenDisplayer.cpp */; };
-		42CC59B21809A4EF00AAD8AD /* ScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC552C1809A4EE00AAD8AD /* ScriptController.cpp */; };
-		42CC59B31809A4EF00AAD8AD /* ScriptController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC552C1809A4EE00AAD8AD /* ScriptController.cpp */; };
-		42CC59B61809A4EF00AAD8AD /* ScriptTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC552F1809A4EE00AAD8AD /* ScriptTarget.cpp */; };
-		42CC59B71809A4EF00AAD8AD /* ScriptTarget.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC552F1809A4EE00AAD8AD /* ScriptTarget.cpp */; };
-		42CC59BA1809A4EF00AAD8AD /* Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55311809A4EE00AAD8AD /* Slider.cpp */; };
-		42CC59BB1809A4EF00AAD8AD /* Slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55311809A4EE00AAD8AD /* Slider.cpp */; };
-		42CC59E01809A4EF00AAD8AD /* SpriteBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55451809A4EE00AAD8AD /* SpriteBatch.cpp */; };
-		42CC59E11809A4EF00AAD8AD /* SpriteBatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55451809A4EE00AAD8AD /* SpriteBatch.cpp */; };
-		42CC59E61809A4EF00AAD8AD /* Technique.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55481809A4EE00AAD8AD /* Technique.cpp */; };
-		42CC59E71809A4EF00AAD8AD /* Technique.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55481809A4EE00AAD8AD /* Technique.cpp */; };
-		42CC59EA1809A4EF00AAD8AD /* Terrain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC554A1809A4EE00AAD8AD /* Terrain.cpp */; };
-		42CC59EB1809A4EF00AAD8AD /* Terrain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC554A1809A4EE00AAD8AD /* Terrain.cpp */; };
-		42CC59EE1809A4EF00AAD8AD /* TerrainPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC554C1809A4EE00AAD8AD /* TerrainPatch.cpp */; };
-		42CC59EF1809A4EF00AAD8AD /* TerrainPatch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC554C1809A4EE00AAD8AD /* TerrainPatch.cpp */; };
-		42CC59F21809A4EF00AAD8AD /* TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC554E1809A4EE00AAD8AD /* TextBox.cpp */; };
-		42CC59F31809A4EF00AAD8AD /* TextBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC554E1809A4EE00AAD8AD /* TextBox.cpp */; };
-		42CC59F61809A4EF00AAD8AD /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55501809A4EE00AAD8AD /* Texture.cpp */; };
-		42CC59F71809A4EF00AAD8AD /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55501809A4EE00AAD8AD /* Texture.cpp */; };
-		42CC59FA1809A4EF00AAD8AD /* Theme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55521809A4EE00AAD8AD /* Theme.cpp */; };
-		42CC59FB1809A4EF00AAD8AD /* Theme.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55521809A4EE00AAD8AD /* Theme.cpp */; };
-		42CC59FE1809A4EF00AAD8AD /* ThemeStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55541809A4EE00AAD8AD /* ThemeStyle.cpp */; };
-		42CC59FF1809A4EF00AAD8AD /* ThemeStyle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55541809A4EE00AAD8AD /* ThemeStyle.cpp */; };
-		42CC5A061809A4EF00AAD8AD /* Transform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55581809A4EE00AAD8AD /* Transform.cpp */; };
-		42CC5A071809A4EF00AAD8AD /* Transform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55581809A4EE00AAD8AD /* Transform.cpp */; };
-		42CC5A0A1809A4EF00AAD8AD /* Vector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC555A1809A4EE00AAD8AD /* Vector2.cpp */; };
-		42CC5A0B1809A4EF00AAD8AD /* Vector2.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC555A1809A4EE00AAD8AD /* Vector2.cpp */; };
-		42CC5A0E1809A4EF00AAD8AD /* Vector3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC555D1809A4EE00AAD8AD /* Vector3.cpp */; };
-		42CC5A0F1809A4EF00AAD8AD /* Vector3.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC555D1809A4EE00AAD8AD /* Vector3.cpp */; };
-		42CC5A121809A4EF00AAD8AD /* Vector4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55601809A4EE00AAD8AD /* Vector4.cpp */; };
-		42CC5A131809A4EF00AAD8AD /* Vector4.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55601809A4EE00AAD8AD /* Vector4.cpp */; };
-		42CC5A161809A4EF00AAD8AD /* VertexAttributeBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55631809A4EE00AAD8AD /* VertexAttributeBinding.cpp */; };
-		42CC5A171809A4EF00AAD8AD /* VertexAttributeBinding.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55631809A4EE00AAD8AD /* VertexAttributeBinding.cpp */; };
-		42CC5A1A1809A4EF00AAD8AD /* VertexFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55651809A4EE00AAD8AD /* VertexFormat.cpp */; };
-		42CC5A1B1809A4EF00AAD8AD /* VertexFormat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55651809A4EE00AAD8AD /* VertexFormat.cpp */; };
-		42CC5A1E1809A4EF00AAD8AD /* VerticalLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55671809A4EE00AAD8AD /* VerticalLayout.cpp */; };
-		42CC5A1F1809A4EF00AAD8AD /* VerticalLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42CC55671809A4EE00AAD8AD /* VerticalLayout.cpp */; };
-		42D9299B1A6051EC0073258D /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42D929991A6051EC0073258D /* Drawable.cpp */; };
-		42D9299C1A6051EC0073258D /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42D929991A6051EC0073258D /* Drawable.cpp */; };
-		42ECC3FA1A4EF5A00036C839 /* Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42ECC3F81A4EF5A00036C839 /* Text.cpp */; };
-		42ECC3FB1A4EF5A00036C839 /* Text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 42ECC3F81A4EF5A00036C839 /* Text.cpp */; };
-		5B21E99616153890006EBEAC /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B21E99516153890006EBEAC /* IOKit.framework */; };
-		5B2BC75F1512514500D176CD /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B2BC75D1512514500D176CD /* OpenAL.framework */; };
-		5B2BC7601512514500D176CD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B2BC75E1512514500D176CD /* OpenGL.framework */; };
-		5B2BC7621512514D00D176CD /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B2BC7611512514D00D176CD /* QuartzCore.framework */; };
-		6290E04A18223DCC00A28FB9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6290E04918223DCC00A28FB9 /* GameKit.framework */; };
-		6290E04C18223DDD00A28FB9 /* GameKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6290E04B18223DDD00A28FB9 /* GameKit.framework */; };
-		BD2636E516CF5B7400CFE15F /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */; };
-		BD2636E616CF5B7400CFE15F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E016CF5B7400CFE15F /* Foundation.framework */; };
-		BD2636E716CF5B7400CFE15F /* OpenAL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E116CF5B7400CFE15F /* OpenAL.framework */; };
-		BD2636E816CF5B7400CFE15F /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E216CF5B7400CFE15F /* OpenGLES.framework */; };
-		BD2636E916CF5B7400CFE15F /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E316CF5B7400CFE15F /* QuartzCore.framework */; };
-		BD2636EA16CF5B7400CFE15F /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BD2636E416CF5B7400CFE15F /* UIKit.framework */; };
-		DD4FBEA51A0C0D240015D30C /* Script.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4FBEA31A0C0D240015D30C /* Script.cpp */; };
-		DD4FBEA61A0C0D240015D30C /* Script.cpp in Sources */ = {isa = PBXBuildFile; fileRef = DD4FBEA31A0C0D240015D30C /* Script.cpp */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXFileReference section */
-		4204EC3F1A2EB8310074FCE9 /* TileSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TileSet.cpp; path = src/TileSet.cpp; sourceTree = SOURCE_ROOT; };
-		4204EC401A2EB8310074FCE9 /* TileSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TileSet.h; path = src/TileSet.h; sourceTree = SOURCE_ROOT; };
-		4204EC431A2F70BA0074FCE9 /* Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Sprite.h; path = src/Sprite.h; sourceTree = SOURCE_ROOT; };
-		4204EC441A2F878C0074FCE9 /* Sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Sprite.cpp; path = src/Sprite.cpp; sourceTree = SOURCE_ROOT; };
-		420BBAA21817416D00C7B720 /* ControlFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ControlFactory.cpp; path = src/ControlFactory.cpp; sourceTree = SOURCE_ROOT; };
-		420BBAA31817416D00C7B720 /* ControlFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ControlFactory.h; path = src/ControlFactory.h; sourceTree = SOURCE_ROOT; };
-		4234D99A14686C52003031B3 /* libgameplay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgameplay.a; sourceTree = BUILT_PRODUCTS_DIR; };
-		4234D99D14686C52003031B3 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
-		424F31F41A60C28600395438 /* lua_AbsoluteLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AbsoluteLayout.cpp; sourceTree = "<group>"; };
-		424F31F51A60C28600395438 /* lua_AbsoluteLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AbsoluteLayout.h; sourceTree = "<group>"; };
-		424F31F61A60C28600395438 /* lua_AIAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIAgent.cpp; sourceTree = "<group>"; };
-		424F31F71A60C28600395438 /* lua_AIAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIAgent.h; sourceTree = "<group>"; };
-		424F31F81A60C28600395438 /* lua_AIAgentListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIAgentListener.cpp; sourceTree = "<group>"; };
-		424F31F91A60C28600395438 /* lua_AIAgentListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIAgentListener.h; sourceTree = "<group>"; };
-		424F31FA1A60C28600395438 /* lua_AIController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIController.cpp; sourceTree = "<group>"; };
-		424F31FB1A60C28600395438 /* lua_AIController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIController.h; sourceTree = "<group>"; };
-		424F31FC1A60C28600395438 /* lua_AIMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIMessage.cpp; sourceTree = "<group>"; };
-		424F31FD1A60C28600395438 /* lua_AIMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIMessage.h; sourceTree = "<group>"; };
-		424F31FE1A60C28600395438 /* lua_AIState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIState.cpp; sourceTree = "<group>"; };
-		424F31FF1A60C28600395438 /* lua_AIState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIState.h; sourceTree = "<group>"; };
-		424F32001A60C28600395438 /* lua_AIStateListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIStateListener.cpp; sourceTree = "<group>"; };
-		424F32011A60C28600395438 /* lua_AIStateListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIStateListener.h; sourceTree = "<group>"; };
-		424F32021A60C28600395438 /* lua_AIStateMachine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AIStateMachine.cpp; sourceTree = "<group>"; };
-		424F32031A60C28600395438 /* lua_AIStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AIStateMachine.h; sourceTree = "<group>"; };
-		424F32041A60C28600395438 /* lua_all_bindings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_all_bindings.cpp; sourceTree = "<group>"; };
-		424F32051A60C28600395438 /* lua_all_bindings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_all_bindings.h; sourceTree = "<group>"; };
-		424F32061A60C28600395438 /* lua_Animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Animation.cpp; sourceTree = "<group>"; };
-		424F32071A60C28600395438 /* lua_Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Animation.h; sourceTree = "<group>"; };
-		424F32081A60C28600395438 /* lua_AnimationClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AnimationClip.cpp; sourceTree = "<group>"; };
-		424F32091A60C28600395438 /* lua_AnimationClip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AnimationClip.h; sourceTree = "<group>"; };
-		424F320A1A60C28600395438 /* lua_AnimationClipListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AnimationClipListener.cpp; sourceTree = "<group>"; };
-		424F320B1A60C28600395438 /* lua_AnimationClipListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AnimationClipListener.h; sourceTree = "<group>"; };
-		424F320C1A60C28600395438 /* lua_AnimationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AnimationController.cpp; sourceTree = "<group>"; };
-		424F320D1A60C28600395438 /* lua_AnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AnimationController.h; sourceTree = "<group>"; };
-		424F320E1A60C28600395438 /* lua_AnimationTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AnimationTarget.cpp; sourceTree = "<group>"; };
-		424F320F1A60C28600395438 /* lua_AnimationTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AnimationTarget.h; sourceTree = "<group>"; };
-		424F32101A60C28600395438 /* lua_AnimationValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AnimationValue.cpp; sourceTree = "<group>"; };
-		424F32111A60C28600395438 /* lua_AnimationValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AnimationValue.h; sourceTree = "<group>"; };
-		424F32121A60C28600395438 /* lua_AudioBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AudioBuffer.cpp; sourceTree = "<group>"; };
-		424F32131A60C28600395438 /* lua_AudioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AudioBuffer.h; sourceTree = "<group>"; };
-		424F32141A60C28600395438 /* lua_AudioController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AudioController.cpp; sourceTree = "<group>"; };
-		424F32151A60C28600395438 /* lua_AudioController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AudioController.h; sourceTree = "<group>"; };
-		424F32161A60C28600395438 /* lua_AudioListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AudioListener.cpp; sourceTree = "<group>"; };
-		424F32171A60C28600395438 /* lua_AudioListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AudioListener.h; sourceTree = "<group>"; };
-		424F32181A60C28600395438 /* lua_AudioSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_AudioSource.cpp; sourceTree = "<group>"; };
-		424F32191A60C28600395438 /* lua_AudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_AudioSource.h; sourceTree = "<group>"; };
-		424F321A1A60C28600395438 /* lua_BoundingBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_BoundingBox.cpp; sourceTree = "<group>"; };
-		424F321B1A60C28600395438 /* lua_BoundingBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_BoundingBox.h; sourceTree = "<group>"; };
-		424F321C1A60C28600395438 /* lua_BoundingSphere.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_BoundingSphere.cpp; sourceTree = "<group>"; };
-		424F321D1A60C28600395438 /* lua_BoundingSphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_BoundingSphere.h; sourceTree = "<group>"; };
-		424F321E1A60C28600395438 /* lua_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Bundle.cpp; sourceTree = "<group>"; };
-		424F321F1A60C28600395438 /* lua_Bundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Bundle.h; sourceTree = "<group>"; };
-		424F32201A60C28600395438 /* lua_Button.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Button.cpp; sourceTree = "<group>"; };
-		424F32211A60C28600395438 /* lua_Button.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Button.h; sourceTree = "<group>"; };
-		424F32221A60C28600395438 /* lua_Camera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Camera.cpp; sourceTree = "<group>"; };
-		424F32231A60C28600395438 /* lua_Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Camera.h; sourceTree = "<group>"; };
-		424F32241A60C28600395438 /* lua_CameraListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_CameraListener.cpp; sourceTree = "<group>"; };
-		424F32251A60C28600395438 /* lua_CameraListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_CameraListener.h; sourceTree = "<group>"; };
-		424F32261A60C28600395438 /* lua_CheckBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_CheckBox.cpp; sourceTree = "<group>"; };
-		424F32271A60C28600395438 /* lua_CheckBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_CheckBox.h; sourceTree = "<group>"; };
-		424F32281A60C28600395438 /* lua_Container.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Container.cpp; sourceTree = "<group>"; };
-		424F32291A60C28600395438 /* lua_Container.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Container.h; sourceTree = "<group>"; };
-		424F322A1A60C28600395438 /* lua_Control.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Control.cpp; sourceTree = "<group>"; };
-		424F322B1A60C28600395438 /* lua_Control.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Control.h; sourceTree = "<group>"; };
-		424F322C1A60C28600395438 /* lua_ControlListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ControlListener.cpp; sourceTree = "<group>"; };
-		424F322D1A60C28600395438 /* lua_ControlListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ControlListener.h; sourceTree = "<group>"; };
-		424F322E1A60C28600395438 /* lua_Curve.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Curve.cpp; sourceTree = "<group>"; };
-		424F322F1A60C28600395438 /* lua_Curve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Curve.h; sourceTree = "<group>"; };
-		424F32301A60C28600395438 /* lua_DepthStencilTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_DepthStencilTarget.cpp; sourceTree = "<group>"; };
-		424F32311A60C28600395438 /* lua_DepthStencilTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_DepthStencilTarget.h; sourceTree = "<group>"; };
-		424F32321A60C28600395438 /* lua_Drawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Drawable.cpp; sourceTree = "<group>"; };
-		424F32331A60C28600395438 /* lua_Drawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Drawable.h; sourceTree = "<group>"; };
-		424F32341A60C28600395438 /* lua_Effect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Effect.cpp; sourceTree = "<group>"; };
-		424F32351A60C28600395438 /* lua_Effect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Effect.h; sourceTree = "<group>"; };
-		424F32361A60C28600395438 /* lua_FileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_FileSystem.cpp; sourceTree = "<group>"; };
-		424F32371A60C28600395438 /* lua_FileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_FileSystem.h; sourceTree = "<group>"; };
-		424F32381A60C28600395438 /* lua_FlowLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_FlowLayout.cpp; sourceTree = "<group>"; };
-		424F32391A60C28600395438 /* lua_FlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_FlowLayout.h; sourceTree = "<group>"; };
-		424F323A1A60C28600395438 /* lua_Font.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Font.cpp; sourceTree = "<group>"; };
-		424F323B1A60C28600395438 /* lua_Font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Font.h; sourceTree = "<group>"; };
-		424F323C1A60C28600395438 /* lua_Form.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Form.cpp; sourceTree = "<group>"; };
-		424F323D1A60C28600395438 /* lua_Form.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Form.h; sourceTree = "<group>"; };
-		424F323E1A60C28600395438 /* lua_FrameBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_FrameBuffer.cpp; sourceTree = "<group>"; };
-		424F323F1A60C28600395438 /* lua_FrameBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_FrameBuffer.h; sourceTree = "<group>"; };
-		424F32401A60C28600395438 /* lua_Frustum.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Frustum.cpp; sourceTree = "<group>"; };
-		424F32411A60C28600395438 /* lua_Frustum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Frustum.h; sourceTree = "<group>"; };
-		424F32421A60C28600395438 /* lua_Game.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Game.cpp; sourceTree = "<group>"; };
-		424F32431A60C28600395438 /* lua_Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Game.h; sourceTree = "<group>"; };
-		424F32441A60C28600395438 /* lua_Gamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Gamepad.cpp; sourceTree = "<group>"; };
-		424F32451A60C28600395438 /* lua_Gamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Gamepad.h; sourceTree = "<group>"; };
-		424F32461A60C28600395438 /* lua_Gesture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Gesture.cpp; sourceTree = "<group>"; };
-		424F32471A60C28600395438 /* lua_Gesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Gesture.h; sourceTree = "<group>"; };
-		424F32481A60C28600395438 /* lua_Global.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Global.cpp; sourceTree = "<group>"; };
-		424F32491A60C28600395438 /* lua_Global.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Global.h; sourceTree = "<group>"; };
-		424F324A1A60C28600395438 /* lua_HeightField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_HeightField.cpp; sourceTree = "<group>"; };
-		424F324B1A60C28600395438 /* lua_HeightField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_HeightField.h; sourceTree = "<group>"; };
-		424F324C1A60C28600395438 /* lua_Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Image.cpp; sourceTree = "<group>"; };
-		424F324D1A60C28600395438 /* lua_Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Image.h; sourceTree = "<group>"; };
-		424F324E1A60C28600395438 /* lua_ImageControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ImageControl.cpp; sourceTree = "<group>"; };
-		424F324F1A60C28600395438 /* lua_ImageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ImageControl.h; sourceTree = "<group>"; };
-		424F32501A60C28600395438 /* lua_Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Joint.cpp; sourceTree = "<group>"; };
-		424F32511A60C28600395438 /* lua_Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Joint.h; sourceTree = "<group>"; };
-		424F32521A60C28600395438 /* lua_JoystickControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_JoystickControl.cpp; sourceTree = "<group>"; };
-		424F32531A60C28600395438 /* lua_JoystickControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_JoystickControl.h; sourceTree = "<group>"; };
-		424F32541A60C28600395438 /* lua_Keyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Keyboard.cpp; sourceTree = "<group>"; };
-		424F32551A60C28600395438 /* lua_Keyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Keyboard.h; sourceTree = "<group>"; };
-		424F32561A60C28600395438 /* lua_Label.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Label.cpp; sourceTree = "<group>"; };
-		424F32571A60C28600395438 /* lua_Label.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Label.h; sourceTree = "<group>"; };
-		424F32581A60C28600395438 /* lua_Layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Layout.cpp; sourceTree = "<group>"; };
-		424F32591A60C28600395438 /* lua_Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Layout.h; sourceTree = "<group>"; };
-		424F325A1A60C28600395438 /* lua_Light.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Light.cpp; sourceTree = "<group>"; };
-		424F325B1A60C28600395438 /* lua_Light.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Light.h; sourceTree = "<group>"; };
-		424F325C1A60C28600395438 /* lua_Logger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Logger.cpp; sourceTree = "<group>"; };
-		424F325D1A60C28600395438 /* lua_Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Logger.h; sourceTree = "<group>"; };
-		424F325E1A60C28600395438 /* lua_Material.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Material.cpp; sourceTree = "<group>"; };
-		424F325F1A60C28600395438 /* lua_Material.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Material.h; sourceTree = "<group>"; };
-		424F32601A60C28600395438 /* lua_MaterialParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_MaterialParameter.cpp; sourceTree = "<group>"; };
-		424F32611A60C28600395438 /* lua_MaterialParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_MaterialParameter.h; sourceTree = "<group>"; };
-		424F32621A60C28600395438 /* lua_MathUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_MathUtil.cpp; sourceTree = "<group>"; };
-		424F32631A60C28600395438 /* lua_MathUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_MathUtil.h; sourceTree = "<group>"; };
-		424F32641A60C28600395438 /* lua_Matrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Matrix.cpp; sourceTree = "<group>"; };
-		424F32651A60C28600395438 /* lua_Matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Matrix.h; sourceTree = "<group>"; };
-		424F32661A60C28600395438 /* lua_Mesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Mesh.cpp; sourceTree = "<group>"; };
-		424F32671A60C28600395438 /* lua_Mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Mesh.h; sourceTree = "<group>"; };
-		424F32681A60C28600395438 /* lua_MeshBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_MeshBatch.cpp; sourceTree = "<group>"; };
-		424F32691A60C28600395438 /* lua_MeshBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_MeshBatch.h; sourceTree = "<group>"; };
-		424F326A1A60C28600395438 /* lua_MeshPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_MeshPart.cpp; sourceTree = "<group>"; };
-		424F326B1A60C28600395438 /* lua_MeshPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_MeshPart.h; sourceTree = "<group>"; };
-		424F326C1A60C28600395438 /* lua_MeshSkin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_MeshSkin.cpp; sourceTree = "<group>"; };
-		424F326D1A60C28600395438 /* lua_MeshSkin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_MeshSkin.h; sourceTree = "<group>"; };
-		424F326E1A60C28600395438 /* lua_Model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Model.cpp; sourceTree = "<group>"; };
-		424F326F1A60C28600395438 /* lua_Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Model.h; sourceTree = "<group>"; };
-		424F32701A60C28600395438 /* lua_Mouse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Mouse.cpp; sourceTree = "<group>"; };
-		424F32711A60C28600395438 /* lua_Mouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Mouse.h; sourceTree = "<group>"; };
-		424F32721A60C28600395438 /* lua_Node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Node.cpp; sourceTree = "<group>"; };
-		424F32731A60C28600395438 /* lua_Node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Node.h; sourceTree = "<group>"; };
-		424F32741A60C28600395438 /* lua_NodeCloneContext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_NodeCloneContext.cpp; sourceTree = "<group>"; };
-		424F32751A60C28600395438 /* lua_NodeCloneContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_NodeCloneContext.h; sourceTree = "<group>"; };
-		424F32761A60C28600395438 /* lua_ParticleEmitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ParticleEmitter.cpp; sourceTree = "<group>"; };
-		424F32771A60C28600395438 /* lua_ParticleEmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ParticleEmitter.h; sourceTree = "<group>"; };
-		424F32781A60C28600395438 /* lua_Pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Pass.cpp; sourceTree = "<group>"; };
-		424F32791A60C28600395438 /* lua_Pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Pass.h; sourceTree = "<group>"; };
-		424F327A1A60C28600395438 /* lua_PhysicsCharacter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsCharacter.cpp; sourceTree = "<group>"; };
-		424F327B1A60C28600395438 /* lua_PhysicsCharacter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsCharacter.h; sourceTree = "<group>"; };
-		424F327C1A60C28600395438 /* lua_PhysicsCollisionObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsCollisionObject.cpp; sourceTree = "<group>"; };
-		424F327D1A60C28600395438 /* lua_PhysicsCollisionObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsCollisionObject.h; sourceTree = "<group>"; };
-		424F327E1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsCollisionObjectCollisionListener.cpp; sourceTree = "<group>"; };
-		424F327F1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsCollisionObjectCollisionListener.h; sourceTree = "<group>"; };
-		424F32801A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsCollisionObjectCollisionPair.cpp; sourceTree = "<group>"; };
-		424F32811A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsCollisionObjectCollisionPair.h; sourceTree = "<group>"; };
-		424F32821A60C28600395438 /* lua_PhysicsCollisionShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsCollisionShape.cpp; sourceTree = "<group>"; };
-		424F32831A60C28600395438 /* lua_PhysicsCollisionShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsCollisionShape.h; sourceTree = "<group>"; };
-		424F32841A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsCollisionShapeDefinition.cpp; sourceTree = "<group>"; };
-		424F32851A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsCollisionShapeDefinition.h; sourceTree = "<group>"; };
-		424F32861A60C28600395438 /* lua_PhysicsConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsConstraint.cpp; sourceTree = "<group>"; };
-		424F32871A60C28600395438 /* lua_PhysicsConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsConstraint.h; sourceTree = "<group>"; };
-		424F32881A60C28600395438 /* lua_PhysicsController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsController.cpp; sourceTree = "<group>"; };
-		424F32891A60C28600395438 /* lua_PhysicsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsController.h; sourceTree = "<group>"; };
-		424F328A1A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsControllerHitFilter.cpp; sourceTree = "<group>"; };
-		424F328B1A60C28600395438 /* lua_PhysicsControllerHitFilter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsControllerHitFilter.h; sourceTree = "<group>"; };
-		424F328C1A60C28600395438 /* lua_PhysicsControllerHitResult.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsControllerHitResult.cpp; sourceTree = "<group>"; };
-		424F328D1A60C28600395438 /* lua_PhysicsControllerHitResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsControllerHitResult.h; sourceTree = "<group>"; };
-		424F328E1A60C28600395438 /* lua_PhysicsControllerListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsControllerListener.cpp; sourceTree = "<group>"; };
-		424F328F1A60C28600395438 /* lua_PhysicsControllerListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsControllerListener.h; sourceTree = "<group>"; };
-		424F32901A60C28600395438 /* lua_PhysicsFixedConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsFixedConstraint.cpp; sourceTree = "<group>"; };
-		424F32911A60C28600395438 /* lua_PhysicsFixedConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsFixedConstraint.h; sourceTree = "<group>"; };
-		424F32921A60C28600395438 /* lua_PhysicsGenericConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsGenericConstraint.cpp; sourceTree = "<group>"; };
-		424F32931A60C28600395438 /* lua_PhysicsGenericConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsGenericConstraint.h; sourceTree = "<group>"; };
-		424F32941A60C28600395438 /* lua_PhysicsGhostObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsGhostObject.cpp; sourceTree = "<group>"; };
-		424F32951A60C28600395438 /* lua_PhysicsGhostObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsGhostObject.h; sourceTree = "<group>"; };
-		424F32961A60C28600395438 /* lua_PhysicsHingeConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsHingeConstraint.cpp; sourceTree = "<group>"; };
-		424F32971A60C28600395438 /* lua_PhysicsHingeConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsHingeConstraint.h; sourceTree = "<group>"; };
-		424F32981A60C28600395438 /* lua_PhysicsRigidBody.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsRigidBody.cpp; sourceTree = "<group>"; };
-		424F32991A60C28600395438 /* lua_PhysicsRigidBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsRigidBody.h; sourceTree = "<group>"; };
-		424F329A1A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsRigidBodyParameters.cpp; sourceTree = "<group>"; };
-		424F329B1A60C28600395438 /* lua_PhysicsRigidBodyParameters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsRigidBodyParameters.h; sourceTree = "<group>"; };
-		424F329C1A60C28600395438 /* lua_PhysicsSocketConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsSocketConstraint.cpp; sourceTree = "<group>"; };
-		424F329D1A60C28600395438 /* lua_PhysicsSocketConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsSocketConstraint.h; sourceTree = "<group>"; };
-		424F329E1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsSpringConstraint.cpp; sourceTree = "<group>"; };
-		424F329F1A60C28600395438 /* lua_PhysicsSpringConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsSpringConstraint.h; sourceTree = "<group>"; };
-		424F32A01A60C28600395438 /* lua_PhysicsVehicle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsVehicle.cpp; sourceTree = "<group>"; };
-		424F32A11A60C28600395438 /* lua_PhysicsVehicle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsVehicle.h; sourceTree = "<group>"; };
-		424F32A21A60C28600395438 /* lua_PhysicsVehicleWheel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_PhysicsVehicleWheel.cpp; sourceTree = "<group>"; };
-		424F32A31A60C28600395438 /* lua_PhysicsVehicleWheel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_PhysicsVehicleWheel.h; sourceTree = "<group>"; };
-		424F32A41A60C28600395438 /* lua_Plane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Plane.cpp; sourceTree = "<group>"; };
-		424F32A51A60C28600395438 /* lua_Plane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Plane.h; sourceTree = "<group>"; };
-		424F32A61A60C28600395438 /* lua_Platform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Platform.cpp; sourceTree = "<group>"; };
-		424F32A71A60C28600395438 /* lua_Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Platform.h; sourceTree = "<group>"; };
-		424F32A81A60C28600395438 /* lua_Properties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Properties.cpp; sourceTree = "<group>"; };
-		424F32A91A60C28600395438 /* lua_Properties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Properties.h; sourceTree = "<group>"; };
-		424F32AA1A60C28600395438 /* lua_Quaternion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Quaternion.cpp; sourceTree = "<group>"; };
-		424F32AB1A60C28600395438 /* lua_Quaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Quaternion.h; sourceTree = "<group>"; };
-		424F32AC1A60C28600395438 /* lua_RadioButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_RadioButton.cpp; sourceTree = "<group>"; };
-		424F32AD1A60C28600395438 /* lua_RadioButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_RadioButton.h; sourceTree = "<group>"; };
-		424F32AE1A60C28600395438 /* lua_Ray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Ray.cpp; sourceTree = "<group>"; };
-		424F32AF1A60C28600395438 /* lua_Ray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Ray.h; sourceTree = "<group>"; };
-		424F32B01A60C28600395438 /* lua_Rectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Rectangle.cpp; sourceTree = "<group>"; };
-		424F32B11A60C28600395438 /* lua_Rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Rectangle.h; sourceTree = "<group>"; };
-		424F32B21A60C28600395438 /* lua_Ref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Ref.cpp; sourceTree = "<group>"; };
-		424F32B31A60C28600395438 /* lua_Ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Ref.h; sourceTree = "<group>"; };
-		424F32B41A60C28600395438 /* lua_RenderState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_RenderState.cpp; sourceTree = "<group>"; };
-		424F32B51A60C28600395438 /* lua_RenderState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_RenderState.h; sourceTree = "<group>"; };
-		424F32B61A60C28600395438 /* lua_RenderStateStateBlock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_RenderStateStateBlock.cpp; sourceTree = "<group>"; };
-		424F32B71A60C28600395438 /* lua_RenderStateStateBlock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_RenderStateStateBlock.h; sourceTree = "<group>"; };
-		424F32B81A60C28600395438 /* lua_RenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_RenderTarget.cpp; sourceTree = "<group>"; };
-		424F32B91A60C28600395438 /* lua_RenderTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_RenderTarget.h; sourceTree = "<group>"; };
-		424F32BA1A60C28600395438 /* lua_Scene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Scene.cpp; sourceTree = "<group>"; };
-		424F32BB1A60C28600395438 /* lua_Scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Scene.h; sourceTree = "<group>"; };
-		424F32BC1A60C28600395438 /* lua_ScreenDisplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ScreenDisplayer.cpp; sourceTree = "<group>"; };
-		424F32BD1A60C28600395438 /* lua_ScreenDisplayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ScreenDisplayer.h; sourceTree = "<group>"; };
-		424F32BE1A60C28600395438 /* lua_Script.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Script.cpp; sourceTree = "<group>"; };
-		424F32BF1A60C28600395438 /* lua_Script.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Script.h; sourceTree = "<group>"; };
-		424F32C01A60C28600395438 /* lua_ScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ScriptController.cpp; sourceTree = "<group>"; };
-		424F32C11A60C28600395438 /* lua_ScriptController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ScriptController.h; sourceTree = "<group>"; };
-		424F32C21A60C28600395438 /* lua_ScriptTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ScriptTarget.cpp; sourceTree = "<group>"; };
-		424F32C31A60C28600395438 /* lua_ScriptTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ScriptTarget.h; sourceTree = "<group>"; };
-		424F32C41A60C28600395438 /* lua_ScriptTargetEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ScriptTargetEvent.cpp; sourceTree = "<group>"; };
-		424F32C51A60C28600395438 /* lua_ScriptTargetEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ScriptTargetEvent.h; sourceTree = "<group>"; };
-		424F32C61A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ScriptTargetEventRegistry.cpp; sourceTree = "<group>"; };
-		424F32C71A60C28600395438 /* lua_ScriptTargetEventRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ScriptTargetEventRegistry.h; sourceTree = "<group>"; };
-		424F32C81A60C28600395438 /* lua_Slider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Slider.cpp; sourceTree = "<group>"; };
-		424F32C91A60C28600395438 /* lua_Slider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Slider.h; sourceTree = "<group>"; };
-		424F32CA1A60C28600395438 /* lua_Sprite.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Sprite.cpp; sourceTree = "<group>"; };
-		424F32CB1A60C28600395438 /* lua_Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Sprite.h; sourceTree = "<group>"; };
-		424F32CC1A60C28600395438 /* lua_SpriteBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_SpriteBatch.cpp; sourceTree = "<group>"; };
-		424F32CD1A60C28600395438 /* lua_SpriteBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_SpriteBatch.h; sourceTree = "<group>"; };
-		424F32CE1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_SpriteBatchSpriteVertex.cpp; sourceTree = "<group>"; };
-		424F32CF1A60C28600395438 /* lua_SpriteBatchSpriteVertex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_SpriteBatchSpriteVertex.h; sourceTree = "<group>"; };
-		424F32D01A60C28600395438 /* lua_Technique.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Technique.cpp; sourceTree = "<group>"; };
-		424F32D11A60C28600395438 /* lua_Technique.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Technique.h; sourceTree = "<group>"; };
-		424F32D21A60C28600395438 /* lua_Terrain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Terrain.cpp; sourceTree = "<group>"; };
-		424F32D31A60C28600395438 /* lua_Terrain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Terrain.h; sourceTree = "<group>"; };
-		424F32D41A60C28600395438 /* lua_TerrainPatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_TerrainPatch.cpp; sourceTree = "<group>"; };
-		424F32D51A60C28600395438 /* lua_TerrainPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_TerrainPatch.h; sourceTree = "<group>"; };
-		424F32D61A60C28600395438 /* lua_Text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Text.cpp; sourceTree = "<group>"; };
-		424F32D71A60C28600395438 /* lua_Text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Text.h; sourceTree = "<group>"; };
-		424F32D81A60C28600395438 /* lua_TextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_TextBox.cpp; sourceTree = "<group>"; };
-		424F32D91A60C28600395438 /* lua_TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_TextBox.h; sourceTree = "<group>"; };
-		424F32DA1A60C28600395438 /* lua_Texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Texture.cpp; sourceTree = "<group>"; };
-		424F32DB1A60C28600395438 /* lua_Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Texture.h; sourceTree = "<group>"; };
-		424F32DC1A60C28600395438 /* lua_TextureSampler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_TextureSampler.cpp; sourceTree = "<group>"; };
-		424F32DD1A60C28600395438 /* lua_TextureSampler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_TextureSampler.h; sourceTree = "<group>"; };
-		424F32DE1A60C28600395438 /* lua_Theme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Theme.cpp; sourceTree = "<group>"; };
-		424F32DF1A60C28600395438 /* lua_Theme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Theme.h; sourceTree = "<group>"; };
-		424F32E01A60C28600395438 /* lua_ThemeSideRegions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ThemeSideRegions.cpp; sourceTree = "<group>"; };
-		424F32E11A60C28600395438 /* lua_ThemeSideRegions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ThemeSideRegions.h; sourceTree = "<group>"; };
-		424F32E21A60C28600395438 /* lua_ThemeStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ThemeStyle.cpp; sourceTree = "<group>"; };
-		424F32E31A60C28600395438 /* lua_ThemeStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ThemeStyle.h; sourceTree = "<group>"; };
-		424F32E41A60C28600395438 /* lua_ThemeThemeImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ThemeThemeImage.cpp; sourceTree = "<group>"; };
-		424F32E51A60C28600395438 /* lua_ThemeThemeImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ThemeThemeImage.h; sourceTree = "<group>"; };
-		424F32E61A60C28600395438 /* lua_ThemeUVs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_ThemeUVs.cpp; sourceTree = "<group>"; };
-		424F32E71A60C28600395438 /* lua_ThemeUVs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_ThemeUVs.h; sourceTree = "<group>"; };
-		424F32E81A60C28600395438 /* lua_TileSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_TileSet.cpp; sourceTree = "<group>"; };
-		424F32E91A60C28600395438 /* lua_TileSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_TileSet.h; sourceTree = "<group>"; };
-		424F32EA1A60C28600395438 /* lua_Touch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Touch.cpp; sourceTree = "<group>"; };
-		424F32EB1A60C28600395438 /* lua_Touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Touch.h; sourceTree = "<group>"; };
-		424F32EC1A60C28600395438 /* lua_Transform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Transform.cpp; sourceTree = "<group>"; };
-		424F32ED1A60C28600395438 /* lua_Transform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Transform.h; sourceTree = "<group>"; };
-		424F32EE1A60C28600395438 /* lua_TransformListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_TransformListener.cpp; sourceTree = "<group>"; };
-		424F32EF1A60C28600395438 /* lua_TransformListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_TransformListener.h; sourceTree = "<group>"; };
-		424F32F01A60C28600395438 /* lua_Uniform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Uniform.cpp; sourceTree = "<group>"; };
-		424F32F11A60C28600395438 /* lua_Uniform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Uniform.h; sourceTree = "<group>"; };
-		424F32F21A60C28600395438 /* lua_Vector2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Vector2.cpp; sourceTree = "<group>"; };
-		424F32F31A60C28600395438 /* lua_Vector2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Vector2.h; sourceTree = "<group>"; };
-		424F32F41A60C28600395438 /* lua_Vector3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Vector3.cpp; sourceTree = "<group>"; };
-		424F32F51A60C28600395438 /* lua_Vector3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Vector3.h; sourceTree = "<group>"; };
-		424F32F61A60C28600395438 /* lua_Vector4.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_Vector4.cpp; sourceTree = "<group>"; };
-		424F32F71A60C28600395438 /* lua_Vector4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_Vector4.h; sourceTree = "<group>"; };
-		424F32F81A60C28600395438 /* lua_VertexAttributeBinding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_VertexAttributeBinding.cpp; sourceTree = "<group>"; };
-		424F32F91A60C28600395438 /* lua_VertexAttributeBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_VertexAttributeBinding.h; sourceTree = "<group>"; };
-		424F32FA1A60C28600395438 /* lua_VertexFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_VertexFormat.cpp; sourceTree = "<group>"; };
-		424F32FB1A60C28600395438 /* lua_VertexFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_VertexFormat.h; sourceTree = "<group>"; };
-		424F32FC1A60C28600395438 /* lua_VertexFormatElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_VertexFormatElement.cpp; sourceTree = "<group>"; };
-		424F32FD1A60C28600395438 /* lua_VertexFormatElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_VertexFormatElement.h; sourceTree = "<group>"; };
-		424F32FE1A60C28600395438 /* lua_VerticalLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = lua_VerticalLayout.cpp; sourceTree = "<group>"; };
-		424F32FF1A60C28600395438 /* lua_VerticalLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lua_VerticalLayout.h; sourceTree = "<group>"; };
-		426F8315187F72A700640CBA /* JoystickControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JoystickControl.cpp; path = src/JoystickControl.cpp; sourceTree = SOURCE_ROOT; };
-		426F8316187F72A700640CBA /* JoystickControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JoystickControl.h; path = src/JoystickControl.h; sourceTree = SOURCE_ROOT; };
-		42CC52F71809A4EB00AAD8AD /* AbsoluteLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AbsoluteLayout.cpp; path = src/AbsoluteLayout.cpp; sourceTree = SOURCE_ROOT; };
-		42CC52F81809A4EB00AAD8AD /* AbsoluteLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AbsoluteLayout.h; path = src/AbsoluteLayout.h; sourceTree = SOURCE_ROOT; };
-		42CC52F91809A4EB00AAD8AD /* AIAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AIAgent.cpp; path = src/AIAgent.cpp; sourceTree = SOURCE_ROOT; };
-		42CC52FA1809A4EB00AAD8AD /* AIAgent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIAgent.h; path = src/AIAgent.h; sourceTree = SOURCE_ROOT; };
-		42CC52FB1809A4EB00AAD8AD /* AIController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AIController.cpp; path = src/AIController.cpp; sourceTree = SOURCE_ROOT; };
-		42CC52FC1809A4EB00AAD8AD /* AIController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIController.h; path = src/AIController.h; sourceTree = SOURCE_ROOT; };
-		42CC52FD1809A4EB00AAD8AD /* AIMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AIMessage.cpp; path = src/AIMessage.cpp; sourceTree = SOURCE_ROOT; };
-		42CC52FE1809A4EB00AAD8AD /* AIMessage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIMessage.h; path = src/AIMessage.h; sourceTree = SOURCE_ROOT; };
-		42CC52FF1809A4EB00AAD8AD /* AIState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AIState.cpp; path = src/AIState.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53001809A4EB00AAD8AD /* AIState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIState.h; path = src/AIState.h; sourceTree = SOURCE_ROOT; };
-		42CC53011809A4EB00AAD8AD /* AIStateMachine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AIStateMachine.cpp; path = src/AIStateMachine.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53021809A4EB00AAD8AD /* AIStateMachine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AIStateMachine.h; path = src/AIStateMachine.h; sourceTree = SOURCE_ROOT; };
-		42CC53031809A4EB00AAD8AD /* Animation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Animation.cpp; path = src/Animation.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53041809A4EB00AAD8AD /* Animation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Animation.h; path = src/Animation.h; sourceTree = SOURCE_ROOT; };
-		42CC53051809A4EB00AAD8AD /* AnimationClip.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationClip.cpp; path = src/AnimationClip.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53061809A4EB00AAD8AD /* AnimationClip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationClip.h; path = src/AnimationClip.h; sourceTree = SOURCE_ROOT; };
-		42CC53071809A4EB00AAD8AD /* AnimationController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationController.cpp; path = src/AnimationController.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53081809A4EB00AAD8AD /* AnimationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationController.h; path = src/AnimationController.h; sourceTree = SOURCE_ROOT; };
-		42CC53091809A4EB00AAD8AD /* AnimationTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationTarget.cpp; path = src/AnimationTarget.cpp; sourceTree = SOURCE_ROOT; };
-		42CC530A1809A4EB00AAD8AD /* AnimationTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationTarget.h; path = src/AnimationTarget.h; sourceTree = SOURCE_ROOT; };
-		42CC530B1809A4EB00AAD8AD /* AnimationValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AnimationValue.cpp; path = src/AnimationValue.cpp; sourceTree = SOURCE_ROOT; };
-		42CC530C1809A4EB00AAD8AD /* AnimationValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AnimationValue.h; path = src/AnimationValue.h; sourceTree = SOURCE_ROOT; };
-		42CC530D1809A4EB00AAD8AD /* AudioBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioBuffer.cpp; path = src/AudioBuffer.cpp; sourceTree = SOURCE_ROOT; };
-		42CC530E1809A4EB00AAD8AD /* AudioBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioBuffer.h; path = src/AudioBuffer.h; sourceTree = SOURCE_ROOT; };
-		42CC530F1809A4EB00AAD8AD /* AudioController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioController.cpp; path = src/AudioController.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53101809A4EB00AAD8AD /* AudioController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioController.h; path = src/AudioController.h; sourceTree = SOURCE_ROOT; };
-		42CC53111809A4EB00AAD8AD /* AudioListener.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioListener.cpp; path = src/AudioListener.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53121809A4EB00AAD8AD /* AudioListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioListener.h; path = src/AudioListener.h; sourceTree = SOURCE_ROOT; };
-		42CC53131809A4EB00AAD8AD /* AudioSource.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AudioSource.cpp; path = src/AudioSource.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53141809A4EB00AAD8AD /* AudioSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioSource.h; path = src/AudioSource.h; sourceTree = SOURCE_ROOT; };
-		42CC53151809A4EB00AAD8AD /* Base.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Base.h; path = src/Base.h; sourceTree = SOURCE_ROOT; };
-		42CC53161809A4EB00AAD8AD /* BoundingBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BoundingBox.cpp; path = src/BoundingBox.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53171809A4EB00AAD8AD /* BoundingBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingBox.h; path = src/BoundingBox.h; sourceTree = SOURCE_ROOT; };
-		42CC53181809A4EB00AAD8AD /* BoundingBox.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = BoundingBox.inl; path = src/BoundingBox.inl; sourceTree = SOURCE_ROOT; };
-		42CC53191809A4EB00AAD8AD /* BoundingSphere.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = BoundingSphere.cpp; path = src/BoundingSphere.cpp; sourceTree = SOURCE_ROOT; };
-		42CC531A1809A4EB00AAD8AD /* BoundingSphere.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BoundingSphere.h; path = src/BoundingSphere.h; sourceTree = SOURCE_ROOT; };
-		42CC531B1809A4EB00AAD8AD /* BoundingSphere.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = BoundingSphere.inl; path = src/BoundingSphere.inl; sourceTree = SOURCE_ROOT; };
-		42CC531C1809A4EB00AAD8AD /* Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Bundle.cpp; path = src/Bundle.cpp; sourceTree = SOURCE_ROOT; };
-		42CC531D1809A4EB00AAD8AD /* Bundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bundle.h; path = src/Bundle.h; sourceTree = SOURCE_ROOT; };
-		42CC531E1809A4EB00AAD8AD /* Button.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Button.cpp; path = src/Button.cpp; sourceTree = SOURCE_ROOT; };
-		42CC531F1809A4EB00AAD8AD /* Button.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Button.h; path = src/Button.h; sourceTree = SOURCE_ROOT; };
-		42CC53201809A4EB00AAD8AD /* Camera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Camera.cpp; path = src/Camera.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53211809A4EB00AAD8AD /* Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Camera.h; path = src/Camera.h; sourceTree = SOURCE_ROOT; };
-		42CC53221809A4EB00AAD8AD /* CheckBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CheckBox.cpp; path = src/CheckBox.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53231809A4EB00AAD8AD /* CheckBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = CheckBox.h; path = src/CheckBox.h; sourceTree = SOURCE_ROOT; };
-		42CC53241809A4EB00AAD8AD /* Container.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Container.cpp; path = src/Container.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53251809A4EB00AAD8AD /* Container.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Container.h; path = src/Container.h; sourceTree = SOURCE_ROOT; };
-		42CC53261809A4EB00AAD8AD /* Control.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Control.cpp; path = src/Control.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53271809A4EB00AAD8AD /* Control.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Control.h; path = src/Control.h; sourceTree = SOURCE_ROOT; };
-		42CC53281809A4EB00AAD8AD /* Curve.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Curve.cpp; path = src/Curve.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53291809A4EB00AAD8AD /* Curve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Curve.h; path = src/Curve.h; sourceTree = SOURCE_ROOT; };
-		42CC532A1809A4EB00AAD8AD /* DebugNew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DebugNew.cpp; path = src/DebugNew.cpp; sourceTree = SOURCE_ROOT; };
-		42CC532B1809A4EB00AAD8AD /* DebugNew.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DebugNew.h; path = src/DebugNew.h; sourceTree = SOURCE_ROOT; };
-		42CC532C1809A4EB00AAD8AD /* DepthStencilTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DepthStencilTarget.cpp; path = src/DepthStencilTarget.cpp; sourceTree = SOURCE_ROOT; };
-		42CC532D1809A4EB00AAD8AD /* DepthStencilTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DepthStencilTarget.h; path = src/DepthStencilTarget.h; sourceTree = SOURCE_ROOT; };
-		42CC532E1809A4EB00AAD8AD /* Effect.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Effect.cpp; path = src/Effect.cpp; sourceTree = SOURCE_ROOT; };
-		42CC532F1809A4EB00AAD8AD /* Effect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Effect.h; path = src/Effect.h; sourceTree = SOURCE_ROOT; };
-		42CC53301809A4EB00AAD8AD /* FileSystem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FileSystem.cpp; path = src/FileSystem.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53311809A4EB00AAD8AD /* FileSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileSystem.h; path = src/FileSystem.h; sourceTree = SOURCE_ROOT; };
-		42CC53321809A4EB00AAD8AD /* FlowLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FlowLayout.cpp; path = src/FlowLayout.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53331809A4EB00AAD8AD /* FlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FlowLayout.h; path = src/FlowLayout.h; sourceTree = SOURCE_ROOT; };
-		42CC53341809A4EB00AAD8AD /* Font.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Font.cpp; path = src/Font.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53351809A4EB00AAD8AD /* Font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Font.h; path = src/Font.h; sourceTree = SOURCE_ROOT; };
-		42CC53361809A4EB00AAD8AD /* Form.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Form.cpp; path = src/Form.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53371809A4EB00AAD8AD /* Form.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Form.h; path = src/Form.h; sourceTree = SOURCE_ROOT; };
-		42CC53381809A4EB00AAD8AD /* FrameBuffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FrameBuffer.cpp; path = src/FrameBuffer.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53391809A4EB00AAD8AD /* FrameBuffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FrameBuffer.h; path = src/FrameBuffer.h; sourceTree = SOURCE_ROOT; };
-		42CC533A1809A4EB00AAD8AD /* Frustum.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Frustum.cpp; path = src/Frustum.cpp; sourceTree = SOURCE_ROOT; };
-		42CC533B1809A4EB00AAD8AD /* Frustum.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Frustum.h; path = src/Frustum.h; sourceTree = SOURCE_ROOT; };
-		42CC533C1809A4EB00AAD8AD /* Game.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Game.cpp; path = src/Game.cpp; sourceTree = SOURCE_ROOT; };
-		42CC533D1809A4EB00AAD8AD /* Game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Game.h; path = src/Game.h; sourceTree = SOURCE_ROOT; };
-		42CC533E1809A4EB00AAD8AD /* Game.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Game.inl; path = src/Game.inl; sourceTree = SOURCE_ROOT; };
-		42CC533F1809A4EB00AAD8AD /* Gamepad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Gamepad.cpp; path = src/Gamepad.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53401809A4EB00AAD8AD /* Gamepad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Gamepad.h; path = src/Gamepad.h; sourceTree = SOURCE_ROOT; };
-		42CC53411809A4EB00AAD8AD /* gameplay-main-android.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gameplay-main-android.cpp"; path = "src/gameplay-main-android.cpp"; sourceTree = SOURCE_ROOT; };
-		42CC53431809A4EB00AAD8AD /* gameplay-main-ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "gameplay-main-ios.mm"; path = "src/gameplay-main-ios.mm"; sourceTree = SOURCE_ROOT; };
-		42CC53441809A4EB00AAD8AD /* gameplay-main-linux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gameplay-main-linux.cpp"; path = "src/gameplay-main-linux.cpp"; sourceTree = SOURCE_ROOT; };
-		42CC53451809A4EB00AAD8AD /* gameplay-main-macosx.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = "gameplay-main-macosx.mm"; path = "src/gameplay-main-macosx.mm"; sourceTree = SOURCE_ROOT; };
-		42CC53461809A4EB00AAD8AD /* gameplay-main-windows.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = "gameplay-main-windows.cpp"; path = "src/gameplay-main-windows.cpp"; sourceTree = SOURCE_ROOT; };
-		42CC53471809A4EB00AAD8AD /* gameplay.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gameplay.h; path = src/gameplay.h; sourceTree = SOURCE_ROOT; };
-		42CC53481809A4EB00AAD8AD /* Gesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Gesture.h; path = src/Gesture.h; sourceTree = SOURCE_ROOT; };
-		42CC53491809A4EB00AAD8AD /* HeightField.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HeightField.cpp; path = src/HeightField.cpp; sourceTree = SOURCE_ROOT; };
-		42CC534A1809A4EB00AAD8AD /* HeightField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HeightField.h; path = src/HeightField.h; sourceTree = SOURCE_ROOT; };
-		42CC534B1809A4EB00AAD8AD /* Image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Image.cpp; path = src/Image.cpp; sourceTree = SOURCE_ROOT; };
-		42CC534C1809A4EB00AAD8AD /* Image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Image.h; path = src/Image.h; sourceTree = SOURCE_ROOT; };
-		42CC534D1809A4EC00AAD8AD /* Image.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Image.inl; path = src/Image.inl; sourceTree = SOURCE_ROOT; };
-		42CC534E1809A4EC00AAD8AD /* ImageControl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ImageControl.cpp; path = src/ImageControl.cpp; sourceTree = SOURCE_ROOT; };
-		42CC534F1809A4EC00AAD8AD /* ImageControl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ImageControl.h; path = src/ImageControl.h; sourceTree = SOURCE_ROOT; };
-		42CC53501809A4EC00AAD8AD /* Joint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Joint.cpp; path = src/Joint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53511809A4EC00AAD8AD /* Joint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Joint.h; path = src/Joint.h; sourceTree = SOURCE_ROOT; };
-		42CC53551809A4EC00AAD8AD /* Keyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Keyboard.h; path = src/Keyboard.h; sourceTree = SOURCE_ROOT; };
-		42CC53561809A4EC00AAD8AD /* Label.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Label.cpp; path = src/Label.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53571809A4EC00AAD8AD /* Label.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Label.h; path = src/Label.h; sourceTree = SOURCE_ROOT; };
-		42CC53581809A4EC00AAD8AD /* Layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Layout.cpp; path = src/Layout.cpp; sourceTree = SOURCE_ROOT; };
-		42CC53591809A4EC00AAD8AD /* Layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Layout.h; path = src/Layout.h; sourceTree = SOURCE_ROOT; };
-		42CC535A1809A4EC00AAD8AD /* Light.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Light.cpp; path = src/Light.cpp; sourceTree = SOURCE_ROOT; };
-		42CC535B1809A4EC00AAD8AD /* Light.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Light.h; path = src/Light.h; sourceTree = SOURCE_ROOT; };
-		42CC535C1809A4EC00AAD8AD /* Logger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Logger.cpp; path = src/Logger.cpp; sourceTree = SOURCE_ROOT; };
-		42CC535D1809A4EC00AAD8AD /* Logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Logger.h; path = src/Logger.h; sourceTree = SOURCE_ROOT; };
-		42CC54C71809A4ED00AAD8AD /* Material.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Material.cpp; path = src/Material.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54C81809A4ED00AAD8AD /* Material.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Material.h; path = src/Material.h; sourceTree = SOURCE_ROOT; };
-		42CC54C91809A4ED00AAD8AD /* MaterialParameter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MaterialParameter.cpp; path = src/MaterialParameter.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54CA1809A4ED00AAD8AD /* MaterialParameter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MaterialParameter.h; path = src/MaterialParameter.h; sourceTree = SOURCE_ROOT; };
-		42CC54CB1809A4ED00AAD8AD /* MathUtil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MathUtil.cpp; path = src/MathUtil.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54CC1809A4ED00AAD8AD /* MathUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MathUtil.h; path = src/MathUtil.h; sourceTree = SOURCE_ROOT; };
-		42CC54CD1809A4ED00AAD8AD /* MathUtil.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MathUtil.inl; path = src/MathUtil.inl; sourceTree = SOURCE_ROOT; };
-		42CC54CE1809A4ED00AAD8AD /* MathUtilNeon.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MathUtilNeon.inl; path = src/MathUtilNeon.inl; sourceTree = SOURCE_ROOT; };
-		42CC54CF1809A4ED00AAD8AD /* Matrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Matrix.cpp; path = src/Matrix.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54D01809A4ED00AAD8AD /* Matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Matrix.h; path = src/Matrix.h; sourceTree = SOURCE_ROOT; };
-		42CC54D11809A4ED00AAD8AD /* Matrix.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Matrix.inl; path = src/Matrix.inl; sourceTree = SOURCE_ROOT; };
-		42CC54D21809A4ED00AAD8AD /* Mesh.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Mesh.cpp; path = src/Mesh.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54D31809A4ED00AAD8AD /* Mesh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mesh.h; path = src/Mesh.h; sourceTree = SOURCE_ROOT; };
-		42CC54D41809A4ED00AAD8AD /* MeshBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MeshBatch.cpp; path = src/MeshBatch.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54D51809A4ED00AAD8AD /* MeshBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshBatch.h; path = src/MeshBatch.h; sourceTree = SOURCE_ROOT; };
-		42CC54D61809A4ED00AAD8AD /* MeshBatch.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = MeshBatch.inl; path = src/MeshBatch.inl; sourceTree = SOURCE_ROOT; };
-		42CC54D71809A4ED00AAD8AD /* MeshPart.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MeshPart.cpp; path = src/MeshPart.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54D81809A4ED00AAD8AD /* MeshPart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshPart.h; path = src/MeshPart.h; sourceTree = SOURCE_ROOT; };
-		42CC54D91809A4ED00AAD8AD /* MeshSkin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MeshSkin.cpp; path = src/MeshSkin.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54DA1809A4ED00AAD8AD /* MeshSkin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MeshSkin.h; path = src/MeshSkin.h; sourceTree = SOURCE_ROOT; };
-		42CC54DB1809A4ED00AAD8AD /* Model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Model.cpp; path = src/Model.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54DC1809A4ED00AAD8AD /* Model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Model.h; path = src/Model.h; sourceTree = SOURCE_ROOT; };
-		42CC54DD1809A4ED00AAD8AD /* Mouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Mouse.h; path = src/Mouse.h; sourceTree = SOURCE_ROOT; };
-		42CC54DE1809A4ED00AAD8AD /* Node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Node.cpp; path = src/Node.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54DF1809A4ED00AAD8AD /* Node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Node.h; path = src/Node.h; sourceTree = SOURCE_ROOT; };
-		42CC54E01809A4ED00AAD8AD /* ParticleEmitter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ParticleEmitter.cpp; path = src/ParticleEmitter.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54E11809A4ED00AAD8AD /* ParticleEmitter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ParticleEmitter.h; path = src/ParticleEmitter.h; sourceTree = SOURCE_ROOT; };
-		42CC54E21809A4ED00AAD8AD /* Pass.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Pass.cpp; path = src/Pass.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54E31809A4ED00AAD8AD /* Pass.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Pass.h; path = src/Pass.h; sourceTree = SOURCE_ROOT; };
-		42CC54E41809A4ED00AAD8AD /* PhysicsCharacter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsCharacter.cpp; path = src/PhysicsCharacter.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54E51809A4ED00AAD8AD /* PhysicsCharacter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsCharacter.h; path = src/PhysicsCharacter.h; sourceTree = SOURCE_ROOT; };
-		42CC54E61809A4ED00AAD8AD /* PhysicsCollisionObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsCollisionObject.cpp; path = src/PhysicsCollisionObject.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54E71809A4ED00AAD8AD /* PhysicsCollisionObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsCollisionObject.h; path = src/PhysicsCollisionObject.h; sourceTree = SOURCE_ROOT; };
-		42CC54E81809A4ED00AAD8AD /* PhysicsCollisionShape.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsCollisionShape.cpp; path = src/PhysicsCollisionShape.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54E91809A4ED00AAD8AD /* PhysicsCollisionShape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsCollisionShape.h; path = src/PhysicsCollisionShape.h; sourceTree = SOURCE_ROOT; };
-		42CC54EA1809A4ED00AAD8AD /* PhysicsConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsConstraint.cpp; path = src/PhysicsConstraint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54EB1809A4ED00AAD8AD /* PhysicsConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsConstraint.h; path = src/PhysicsConstraint.h; sourceTree = SOURCE_ROOT; };
-		42CC54EC1809A4ED00AAD8AD /* PhysicsConstraint.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhysicsConstraint.inl; path = src/PhysicsConstraint.inl; sourceTree = SOURCE_ROOT; };
-		42CC54ED1809A4ED00AAD8AD /* PhysicsController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsController.cpp; path = src/PhysicsController.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54EE1809A4ED00AAD8AD /* PhysicsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsController.h; path = src/PhysicsController.h; sourceTree = SOURCE_ROOT; };
-		42CC54EF1809A4ED00AAD8AD /* PhysicsFixedConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsFixedConstraint.cpp; path = src/PhysicsFixedConstraint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54F01809A4ED00AAD8AD /* PhysicsFixedConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsFixedConstraint.h; path = src/PhysicsFixedConstraint.h; sourceTree = SOURCE_ROOT; };
-		42CC54F11809A4ED00AAD8AD /* PhysicsFixedConstraint.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhysicsFixedConstraint.inl; path = src/PhysicsFixedConstraint.inl; sourceTree = SOURCE_ROOT; };
-		42CC54F21809A4ED00AAD8AD /* PhysicsGenericConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsGenericConstraint.cpp; path = src/PhysicsGenericConstraint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54F31809A4ED00AAD8AD /* PhysicsGenericConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsGenericConstraint.h; path = src/PhysicsGenericConstraint.h; sourceTree = SOURCE_ROOT; };
-		42CC54F41809A4ED00AAD8AD /* PhysicsGenericConstraint.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhysicsGenericConstraint.inl; path = src/PhysicsGenericConstraint.inl; sourceTree = SOURCE_ROOT; };
-		42CC54F51809A4ED00AAD8AD /* PhysicsGhostObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsGhostObject.cpp; path = src/PhysicsGhostObject.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54F61809A4ED00AAD8AD /* PhysicsGhostObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsGhostObject.h; path = src/PhysicsGhostObject.h; sourceTree = SOURCE_ROOT; };
-		42CC54F71809A4ED00AAD8AD /* PhysicsHingeConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsHingeConstraint.cpp; path = src/PhysicsHingeConstraint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54F81809A4ED00AAD8AD /* PhysicsHingeConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsHingeConstraint.h; path = src/PhysicsHingeConstraint.h; sourceTree = SOURCE_ROOT; };
-		42CC54F91809A4ED00AAD8AD /* PhysicsRigidBody.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsRigidBody.cpp; path = src/PhysicsRigidBody.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54FA1809A4ED00AAD8AD /* PhysicsRigidBody.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsRigidBody.h; path = src/PhysicsRigidBody.h; sourceTree = SOURCE_ROOT; };
-		42CC54FB1809A4ED00AAD8AD /* PhysicsRigidBody.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhysicsRigidBody.inl; path = src/PhysicsRigidBody.inl; sourceTree = SOURCE_ROOT; };
-		42CC54FC1809A4ED00AAD8AD /* PhysicsSocketConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsSocketConstraint.cpp; path = src/PhysicsSocketConstraint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54FD1809A4ED00AAD8AD /* PhysicsSocketConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsSocketConstraint.h; path = src/PhysicsSocketConstraint.h; sourceTree = SOURCE_ROOT; };
-		42CC54FE1809A4ED00AAD8AD /* PhysicsSpringConstraint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsSpringConstraint.cpp; path = src/PhysicsSpringConstraint.cpp; sourceTree = SOURCE_ROOT; };
-		42CC54FF1809A4ED00AAD8AD /* PhysicsSpringConstraint.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsSpringConstraint.h; path = src/PhysicsSpringConstraint.h; sourceTree = SOURCE_ROOT; };
-		42CC55001809A4ED00AAD8AD /* PhysicsSpringConstraint.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = PhysicsSpringConstraint.inl; path = src/PhysicsSpringConstraint.inl; sourceTree = SOURCE_ROOT; };
-		42CC55011809A4ED00AAD8AD /* PhysicsVehicle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsVehicle.cpp; path = src/PhysicsVehicle.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55021809A4ED00AAD8AD /* PhysicsVehicle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsVehicle.h; path = src/PhysicsVehicle.h; sourceTree = SOURCE_ROOT; };
-		42CC55031809A4ED00AAD8AD /* PhysicsVehicleWheel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PhysicsVehicleWheel.cpp; path = src/PhysicsVehicleWheel.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55041809A4ED00AAD8AD /* PhysicsVehicleWheel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PhysicsVehicleWheel.h; path = src/PhysicsVehicleWheel.h; sourceTree = SOURCE_ROOT; };
-		42CC55051809A4ED00AAD8AD /* Plane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Plane.cpp; path = src/Plane.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55061809A4ED00AAD8AD /* Plane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Plane.h; path = src/Plane.h; sourceTree = SOURCE_ROOT; };
-		42CC55071809A4ED00AAD8AD /* Plane.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Plane.inl; path = src/Plane.inl; sourceTree = SOURCE_ROOT; };
-		42CC55081809A4ED00AAD8AD /* Platform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Platform.cpp; path = src/Platform.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55091809A4ED00AAD8AD /* Platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Platform.h; path = src/Platform.h; sourceTree = SOURCE_ROOT; };
-		42CC550A1809A4ED00AAD8AD /* PlatformAndroid.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformAndroid.cpp; path = src/PlatformAndroid.cpp; sourceTree = SOURCE_ROOT; };
-		42CC550C1809A4ED00AAD8AD /* PlatformiOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformiOS.mm; path = src/PlatformiOS.mm; sourceTree = SOURCE_ROOT; };
-		42CC550D1809A4ED00AAD8AD /* PlatformLinux.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformLinux.cpp; path = src/PlatformLinux.cpp; sourceTree = SOURCE_ROOT; };
-		42CC550E1809A4ED00AAD8AD /* PlatformMacOSX.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = PlatformMacOSX.mm; path = src/PlatformMacOSX.mm; sourceTree = SOURCE_ROOT; };
-		42CC550F1809A4EE00AAD8AD /* PlatformWindows.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PlatformWindows.cpp; path = src/PlatformWindows.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55101809A4EE00AAD8AD /* Properties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Properties.cpp; path = src/Properties.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55111809A4EE00AAD8AD /* Properties.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Properties.h; path = src/Properties.h; sourceTree = SOURCE_ROOT; };
-		42CC55121809A4EE00AAD8AD /* Quaternion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Quaternion.cpp; path = src/Quaternion.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55131809A4EE00AAD8AD /* Quaternion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Quaternion.h; path = src/Quaternion.h; sourceTree = SOURCE_ROOT; };
-		42CC55141809A4EE00AAD8AD /* Quaternion.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Quaternion.inl; path = src/Quaternion.inl; sourceTree = SOURCE_ROOT; };
-		42CC55151809A4EE00AAD8AD /* RadioButton.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RadioButton.cpp; path = src/RadioButton.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55161809A4EE00AAD8AD /* RadioButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RadioButton.h; path = src/RadioButton.h; sourceTree = SOURCE_ROOT; };
-		42CC55171809A4EE00AAD8AD /* Ray.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Ray.cpp; path = src/Ray.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55181809A4EE00AAD8AD /* Ray.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Ray.h; path = src/Ray.h; sourceTree = SOURCE_ROOT; };
-		42CC55191809A4EE00AAD8AD /* Ray.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Ray.inl; path = src/Ray.inl; sourceTree = SOURCE_ROOT; };
-		42CC551A1809A4EE00AAD8AD /* Rectangle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Rectangle.cpp; path = src/Rectangle.cpp; sourceTree = SOURCE_ROOT; };
-		42CC551B1809A4EE00AAD8AD /* Rectangle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Rectangle.h; path = src/Rectangle.h; sourceTree = SOURCE_ROOT; };
-		42CC551C1809A4EE00AAD8AD /* Ref.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Ref.cpp; path = src/Ref.cpp; sourceTree = SOURCE_ROOT; };
-		42CC551D1809A4EE00AAD8AD /* Ref.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Ref.h; path = src/Ref.h; sourceTree = SOURCE_ROOT; };
-		42CC551E1809A4EE00AAD8AD /* RenderState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderState.cpp; path = src/RenderState.cpp; sourceTree = SOURCE_ROOT; };
-		42CC551F1809A4EE00AAD8AD /* RenderState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderState.h; path = src/RenderState.h; sourceTree = SOURCE_ROOT; };
-		42CC55201809A4EE00AAD8AD /* RenderTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RenderTarget.cpp; path = src/RenderTarget.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55211809A4EE00AAD8AD /* RenderTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RenderTarget.h; path = src/RenderTarget.h; sourceTree = SOURCE_ROOT; };
-		42CC55221809A4EE00AAD8AD /* Scene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Scene.cpp; path = src/Scene.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55231809A4EE00AAD8AD /* Scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Scene.h; path = src/Scene.h; sourceTree = SOURCE_ROOT; };
-		42CC55241809A4EE00AAD8AD /* SceneLoader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SceneLoader.cpp; path = src/SceneLoader.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55251809A4EE00AAD8AD /* SceneLoader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SceneLoader.h; path = src/SceneLoader.h; sourceTree = SOURCE_ROOT; };
-		42CC552A1809A4EE00AAD8AD /* ScreenDisplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScreenDisplayer.cpp; path = src/ScreenDisplayer.cpp; sourceTree = SOURCE_ROOT; };
-		42CC552B1809A4EE00AAD8AD /* ScreenDisplayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScreenDisplayer.h; path = src/ScreenDisplayer.h; sourceTree = SOURCE_ROOT; };
-		42CC552C1809A4EE00AAD8AD /* ScriptController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScriptController.cpp; path = src/ScriptController.cpp; sourceTree = SOURCE_ROOT; };
-		42CC552D1809A4EE00AAD8AD /* ScriptController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScriptController.h; path = src/ScriptController.h; sourceTree = SOURCE_ROOT; };
-		42CC552E1809A4EE00AAD8AD /* ScriptController.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = ScriptController.inl; path = src/ScriptController.inl; sourceTree = SOURCE_ROOT; };
-		42CC552F1809A4EE00AAD8AD /* ScriptTarget.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ScriptTarget.cpp; path = src/ScriptTarget.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55301809A4EE00AAD8AD /* ScriptTarget.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ScriptTarget.h; path = src/ScriptTarget.h; sourceTree = SOURCE_ROOT; };
-		42CC55311809A4EE00AAD8AD /* Slider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Slider.cpp; path = src/Slider.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55321809A4EE00AAD8AD /* Slider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Slider.h; path = src/Slider.h; sourceTree = SOURCE_ROOT; };
-		42CC55451809A4EE00AAD8AD /* SpriteBatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SpriteBatch.cpp; path = src/SpriteBatch.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55461809A4EE00AAD8AD /* SpriteBatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SpriteBatch.h; path = src/SpriteBatch.h; sourceTree = SOURCE_ROOT; };
-		42CC55471809A4EE00AAD8AD /* Stream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Stream.h; path = src/Stream.h; sourceTree = SOURCE_ROOT; };
-		42CC55481809A4EE00AAD8AD /* Technique.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Technique.cpp; path = src/Technique.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55491809A4EE00AAD8AD /* Technique.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Technique.h; path = src/Technique.h; sourceTree = SOURCE_ROOT; };
-		42CC554A1809A4EE00AAD8AD /* Terrain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Terrain.cpp; path = src/Terrain.cpp; sourceTree = SOURCE_ROOT; };
-		42CC554B1809A4EE00AAD8AD /* Terrain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Terrain.h; path = src/Terrain.h; sourceTree = SOURCE_ROOT; };
-		42CC554C1809A4EE00AAD8AD /* TerrainPatch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TerrainPatch.cpp; path = src/TerrainPatch.cpp; sourceTree = SOURCE_ROOT; };
-		42CC554D1809A4EE00AAD8AD /* TerrainPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TerrainPatch.h; path = src/TerrainPatch.h; sourceTree = SOURCE_ROOT; };
-		42CC554E1809A4EE00AAD8AD /* TextBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TextBox.cpp; path = src/TextBox.cpp; sourceTree = SOURCE_ROOT; };
-		42CC554F1809A4EE00AAD8AD /* TextBox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TextBox.h; path = src/TextBox.h; sourceTree = SOURCE_ROOT; };
-		42CC55501809A4EE00AAD8AD /* Texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Texture.cpp; path = src/Texture.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55511809A4EE00AAD8AD /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Texture.h; path = src/Texture.h; sourceTree = SOURCE_ROOT; };
-		42CC55521809A4EE00AAD8AD /* Theme.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Theme.cpp; path = src/Theme.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55531809A4EE00AAD8AD /* Theme.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Theme.h; path = src/Theme.h; sourceTree = SOURCE_ROOT; };
-		42CC55541809A4EE00AAD8AD /* ThemeStyle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ThemeStyle.cpp; path = src/ThemeStyle.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55551809A4EE00AAD8AD /* ThemeStyle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ThemeStyle.h; path = src/ThemeStyle.h; sourceTree = SOURCE_ROOT; };
-		42CC55561809A4EE00AAD8AD /* TimeListener.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TimeListener.h; path = src/TimeListener.h; sourceTree = SOURCE_ROOT; };
-		42CC55571809A4EE00AAD8AD /* Touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Touch.h; path = src/Touch.h; sourceTree = SOURCE_ROOT; };
-		42CC55581809A4EE00AAD8AD /* Transform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Transform.cpp; path = src/Transform.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55591809A4EE00AAD8AD /* Transform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Transform.h; path = src/Transform.h; sourceTree = SOURCE_ROOT; };
-		42CC555A1809A4EE00AAD8AD /* Vector2.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Vector2.cpp; path = src/Vector2.cpp; sourceTree = SOURCE_ROOT; };
-		42CC555B1809A4EE00AAD8AD /* Vector2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vector2.h; path = src/Vector2.h; sourceTree = SOURCE_ROOT; };
-		42CC555C1809A4EE00AAD8AD /* Vector2.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Vector2.inl; path = src/Vector2.inl; sourceTree = SOURCE_ROOT; };
-		42CC555D1809A4EE00AAD8AD /* Vector3.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Vector3.cpp; path = src/Vector3.cpp; sourceTree = SOURCE_ROOT; };
-		42CC555E1809A4EE00AAD8AD /* Vector3.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vector3.h; path = src/Vector3.h; sourceTree = SOURCE_ROOT; };
-		42CC555F1809A4EE00AAD8AD /* Vector3.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Vector3.inl; path = src/Vector3.inl; sourceTree = SOURCE_ROOT; };
-		42CC55601809A4EE00AAD8AD /* Vector4.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Vector4.cpp; path = src/Vector4.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55611809A4EE00AAD8AD /* Vector4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Vector4.h; path = src/Vector4.h; sourceTree = SOURCE_ROOT; };
-		42CC55621809A4EE00AAD8AD /* Vector4.inl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = Vector4.inl; path = src/Vector4.inl; sourceTree = SOURCE_ROOT; };
-		42CC55631809A4EE00AAD8AD /* VertexAttributeBinding.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VertexAttributeBinding.cpp; path = src/VertexAttributeBinding.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55641809A4EE00AAD8AD /* VertexAttributeBinding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VertexAttributeBinding.h; path = src/VertexAttributeBinding.h; sourceTree = SOURCE_ROOT; };
-		42CC55651809A4EE00AAD8AD /* VertexFormat.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VertexFormat.cpp; path = src/VertexFormat.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55661809A4EE00AAD8AD /* VertexFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VertexFormat.h; path = src/VertexFormat.h; sourceTree = SOURCE_ROOT; };
-		42CC55671809A4EE00AAD8AD /* VerticalLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VerticalLayout.cpp; path = src/VerticalLayout.cpp; sourceTree = SOURCE_ROOT; };
-		42CC55681809A4EE00AAD8AD /* VerticalLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VerticalLayout.h; path = src/VerticalLayout.h; sourceTree = SOURCE_ROOT; };
-		42D929991A6051EC0073258D /* Drawable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Drawable.cpp; path = src/Drawable.cpp; sourceTree = SOURCE_ROOT; };
-		42D9299A1A6051EC0073258D /* Drawable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Drawable.h; path = src/Drawable.h; sourceTree = SOURCE_ROOT; };
-		42ECC3F81A4EF5A00036C839 /* Text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Text.cpp; path = src/Text.cpp; sourceTree = SOURCE_ROOT; };
-		42ECC3F91A4EF5A00036C839 /* Text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Text.h; path = src/Text.h; sourceTree = SOURCE_ROOT; };
-		5B04C5CA14BFCFE100EB0071 /* libgameplay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libgameplay.a; sourceTree = BUILT_PRODUCTS_DIR; };
-		5B21E99516153890006EBEAC /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = System/Library/Frameworks/IOKit.framework; sourceTree = SDKROOT; };
-		5B2BC75D1512514500D176CD /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
-		5B2BC75E1512514500D176CD /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
-		5B2BC7611512514D00D176CD /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
-		5BC4E7D4150F8C3C00CBE1C0 /* res */ = {isa = PBXFileReference; lastKnownFileType = folder; path = res; sourceTree = "<group>"; };
-		6290E04918223DCC00A28FB9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/GameKit.framework; sourceTree = DEVELOPER_DIR; };
-		6290E04B18223DDD00A28FB9 /* GameKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = GameKit.framework; path = System/Library/Frameworks/GameKit.framework; sourceTree = SDKROOT; };
-		BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/CoreMotion.framework; sourceTree = DEVELOPER_DIR; };
-		BD2636E016CF5B7400CFE15F /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
-		BD2636E116CF5B7400CFE15F /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/OpenAL.framework; sourceTree = DEVELOPER_DIR; };
-		BD2636E216CF5B7400CFE15F /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; };
-		BD2636E316CF5B7400CFE15F /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
-		BD2636E416CF5B7400CFE15F /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
-		DD4FBEA31A0C0D240015D30C /* Script.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Script.cpp; path = src/Script.cpp; sourceTree = SOURCE_ROOT; };
-		DD4FBEA41A0C0D240015D30C /* Script.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Script.h; path = src/Script.h; sourceTree = SOURCE_ROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
-		4234D99714686C52003031B3 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				6290E04C18223DDD00A28FB9 /* GameKit.framework in Frameworks */,
-				5B21E99616153890006EBEAC /* IOKit.framework in Frameworks */,
-				5B2BC7621512514D00D176CD /* QuartzCore.framework in Frameworks */,
-				5B2BC75F1512514500D176CD /* OpenAL.framework in Frameworks */,
-				5B2BC7601512514500D176CD /* OpenGL.framework in Frameworks */,
-				4234D99E14686C52003031B3 /* Cocoa.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		5B04C57414BFCFE100EB0071 /* Frameworks */ = {
-			isa = PBXFrameworksBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				6290E04A18223DCC00A28FB9 /* GameKit.framework in Frameworks */,
-				BD2636E516CF5B7400CFE15F /* CoreMotion.framework in Frameworks */,
-				BD2636E616CF5B7400CFE15F /* Foundation.framework in Frameworks */,
-				BD2636E716CF5B7400CFE15F /* OpenAL.framework in Frameworks */,
-				BD2636E816CF5B7400CFE15F /* OpenGLES.framework in Frameworks */,
-				BD2636E916CF5B7400CFE15F /* QuartzCore.framework in Frameworks */,
-				BD2636EA16CF5B7400CFE15F /* UIKit.framework in Frameworks */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
-		420BBAA51817416D00C7B720 /* lua */ = {
-			isa = PBXGroup;
-			children = (
-				424F31F41A60C28600395438 /* lua_AbsoluteLayout.cpp */,
-				424F31F51A60C28600395438 /* lua_AbsoluteLayout.h */,
-				424F31F61A60C28600395438 /* lua_AIAgent.cpp */,
-				424F31F71A60C28600395438 /* lua_AIAgent.h */,
-				424F31F81A60C28600395438 /* lua_AIAgentListener.cpp */,
-				424F31F91A60C28600395438 /* lua_AIAgentListener.h */,
-				424F31FA1A60C28600395438 /* lua_AIController.cpp */,
-				424F31FB1A60C28600395438 /* lua_AIController.h */,
-				424F31FC1A60C28600395438 /* lua_AIMessage.cpp */,
-				424F31FD1A60C28600395438 /* lua_AIMessage.h */,
-				424F31FE1A60C28600395438 /* lua_AIState.cpp */,
-				424F31FF1A60C28600395438 /* lua_AIState.h */,
-				424F32001A60C28600395438 /* lua_AIStateListener.cpp */,
-				424F32011A60C28600395438 /* lua_AIStateListener.h */,
-				424F32021A60C28600395438 /* lua_AIStateMachine.cpp */,
-				424F32031A60C28600395438 /* lua_AIStateMachine.h */,
-				424F32041A60C28600395438 /* lua_all_bindings.cpp */,
-				424F32051A60C28600395438 /* lua_all_bindings.h */,
-				424F32061A60C28600395438 /* lua_Animation.cpp */,
-				424F32071A60C28600395438 /* lua_Animation.h */,
-				424F32081A60C28600395438 /* lua_AnimationClip.cpp */,
-				424F32091A60C28600395438 /* lua_AnimationClip.h */,
-				424F320A1A60C28600395438 /* lua_AnimationClipListener.cpp */,
-				424F320B1A60C28600395438 /* lua_AnimationClipListener.h */,
-				424F320C1A60C28600395438 /* lua_AnimationController.cpp */,
-				424F320D1A60C28600395438 /* lua_AnimationController.h */,
-				424F320E1A60C28600395438 /* lua_AnimationTarget.cpp */,
-				424F320F1A60C28600395438 /* lua_AnimationTarget.h */,
-				424F32101A60C28600395438 /* lua_AnimationValue.cpp */,
-				424F32111A60C28600395438 /* lua_AnimationValue.h */,
-				424F32121A60C28600395438 /* lua_AudioBuffer.cpp */,
-				424F32131A60C28600395438 /* lua_AudioBuffer.h */,
-				424F32141A60C28600395438 /* lua_AudioController.cpp */,
-				424F32151A60C28600395438 /* lua_AudioController.h */,
-				424F32161A60C28600395438 /* lua_AudioListener.cpp */,
-				424F32171A60C28600395438 /* lua_AudioListener.h */,
-				424F32181A60C28600395438 /* lua_AudioSource.cpp */,
-				424F32191A60C28600395438 /* lua_AudioSource.h */,
-				424F321A1A60C28600395438 /* lua_BoundingBox.cpp */,
-				424F321B1A60C28600395438 /* lua_BoundingBox.h */,
-				424F321C1A60C28600395438 /* lua_BoundingSphere.cpp */,
-				424F321D1A60C28600395438 /* lua_BoundingSphere.h */,
-				424F321E1A60C28600395438 /* lua_Bundle.cpp */,
-				424F321F1A60C28600395438 /* lua_Bundle.h */,
-				424F32201A60C28600395438 /* lua_Button.cpp */,
-				424F32211A60C28600395438 /* lua_Button.h */,
-				424F32221A60C28600395438 /* lua_Camera.cpp */,
-				424F32231A60C28600395438 /* lua_Camera.h */,
-				424F32241A60C28600395438 /* lua_CameraListener.cpp */,
-				424F32251A60C28600395438 /* lua_CameraListener.h */,
-				424F32261A60C28600395438 /* lua_CheckBox.cpp */,
-				424F32271A60C28600395438 /* lua_CheckBox.h */,
-				424F32281A60C28600395438 /* lua_Container.cpp */,
-				424F32291A60C28600395438 /* lua_Container.h */,
-				424F322A1A60C28600395438 /* lua_Control.cpp */,
-				424F322B1A60C28600395438 /* lua_Control.h */,
-				424F322C1A60C28600395438 /* lua_ControlListener.cpp */,
-				424F322D1A60C28600395438 /* lua_ControlListener.h */,
-				424F322E1A60C28600395438 /* lua_Curve.cpp */,
-				424F322F1A60C28600395438 /* lua_Curve.h */,
-				424F32301A60C28600395438 /* lua_DepthStencilTarget.cpp */,
-				424F32311A60C28600395438 /* lua_DepthStencilTarget.h */,
-				424F32321A60C28600395438 /* lua_Drawable.cpp */,
-				424F32331A60C28600395438 /* lua_Drawable.h */,
-				424F32341A60C28600395438 /* lua_Effect.cpp */,
-				424F32351A60C28600395438 /* lua_Effect.h */,
-				424F32361A60C28600395438 /* lua_FileSystem.cpp */,
-				424F32371A60C28600395438 /* lua_FileSystem.h */,
-				424F32381A60C28600395438 /* lua_FlowLayout.cpp */,
-				424F32391A60C28600395438 /* lua_FlowLayout.h */,
-				424F323A1A60C28600395438 /* lua_Font.cpp */,
-				424F323B1A60C28600395438 /* lua_Font.h */,
-				424F323C1A60C28600395438 /* lua_Form.cpp */,
-				424F323D1A60C28600395438 /* lua_Form.h */,
-				424F323E1A60C28600395438 /* lua_FrameBuffer.cpp */,
-				424F323F1A60C28600395438 /* lua_FrameBuffer.h */,
-				424F32401A60C28600395438 /* lua_Frustum.cpp */,
-				424F32411A60C28600395438 /* lua_Frustum.h */,
-				424F32421A60C28600395438 /* lua_Game.cpp */,
-				424F32431A60C28600395438 /* lua_Game.h */,
-				424F32441A60C28600395438 /* lua_Gamepad.cpp */,
-				424F32451A60C28600395438 /* lua_Gamepad.h */,
-				424F32461A60C28600395438 /* lua_Gesture.cpp */,
-				424F32471A60C28600395438 /* lua_Gesture.h */,
-				424F32481A60C28600395438 /* lua_Global.cpp */,
-				424F32491A60C28600395438 /* lua_Global.h */,
-				424F324A1A60C28600395438 /* lua_HeightField.cpp */,
-				424F324B1A60C28600395438 /* lua_HeightField.h */,
-				424F324C1A60C28600395438 /* lua_Image.cpp */,
-				424F324D1A60C28600395438 /* lua_Image.h */,
-				424F324E1A60C28600395438 /* lua_ImageControl.cpp */,
-				424F324F1A60C28600395438 /* lua_ImageControl.h */,
-				424F32501A60C28600395438 /* lua_Joint.cpp */,
-				424F32511A60C28600395438 /* lua_Joint.h */,
-				424F32521A60C28600395438 /* lua_JoystickControl.cpp */,
-				424F32531A60C28600395438 /* lua_JoystickControl.h */,
-				424F32541A60C28600395438 /* lua_Keyboard.cpp */,
-				424F32551A60C28600395438 /* lua_Keyboard.h */,
-				424F32561A60C28600395438 /* lua_Label.cpp */,
-				424F32571A60C28600395438 /* lua_Label.h */,
-				424F32581A60C28600395438 /* lua_Layout.cpp */,
-				424F32591A60C28600395438 /* lua_Layout.h */,
-				424F325A1A60C28600395438 /* lua_Light.cpp */,
-				424F325B1A60C28600395438 /* lua_Light.h */,
-				424F325C1A60C28600395438 /* lua_Logger.cpp */,
-				424F325D1A60C28600395438 /* lua_Logger.h */,
-				424F325E1A60C28600395438 /* lua_Material.cpp */,
-				424F325F1A60C28600395438 /* lua_Material.h */,
-				424F32601A60C28600395438 /* lua_MaterialParameter.cpp */,
-				424F32611A60C28600395438 /* lua_MaterialParameter.h */,
-				424F32621A60C28600395438 /* lua_MathUtil.cpp */,
-				424F32631A60C28600395438 /* lua_MathUtil.h */,
-				424F32641A60C28600395438 /* lua_Matrix.cpp */,
-				424F32651A60C28600395438 /* lua_Matrix.h */,
-				424F32661A60C28600395438 /* lua_Mesh.cpp */,
-				424F32671A60C28600395438 /* lua_Mesh.h */,
-				424F32681A60C28600395438 /* lua_MeshBatch.cpp */,
-				424F32691A60C28600395438 /* lua_MeshBatch.h */,
-				424F326A1A60C28600395438 /* lua_MeshPart.cpp */,
-				424F326B1A60C28600395438 /* lua_MeshPart.h */,
-				424F326C1A60C28600395438 /* lua_MeshSkin.cpp */,
-				424F326D1A60C28600395438 /* lua_MeshSkin.h */,
-				424F326E1A60C28600395438 /* lua_Model.cpp */,
-				424F326F1A60C28600395438 /* lua_Model.h */,
-				424F32701A60C28600395438 /* lua_Mouse.cpp */,
-				424F32711A60C28600395438 /* lua_Mouse.h */,
-				424F32721A60C28600395438 /* lua_Node.cpp */,
-				424F32731A60C28600395438 /* lua_Node.h */,
-				424F32741A60C28600395438 /* lua_NodeCloneContext.cpp */,
-				424F32751A60C28600395438 /* lua_NodeCloneContext.h */,
-				424F32761A60C28600395438 /* lua_ParticleEmitter.cpp */,
-				424F32771A60C28600395438 /* lua_ParticleEmitter.h */,
-				424F32781A60C28600395438 /* lua_Pass.cpp */,
-				424F32791A60C28600395438 /* lua_Pass.h */,
-				424F327A1A60C28600395438 /* lua_PhysicsCharacter.cpp */,
-				424F327B1A60C28600395438 /* lua_PhysicsCharacter.h */,
-				424F327C1A60C28600395438 /* lua_PhysicsCollisionObject.cpp */,
-				424F327D1A60C28600395438 /* lua_PhysicsCollisionObject.h */,
-				424F327E1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp */,
-				424F327F1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.h */,
-				424F32801A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp */,
-				424F32811A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.h */,
-				424F32821A60C28600395438 /* lua_PhysicsCollisionShape.cpp */,
-				424F32831A60C28600395438 /* lua_PhysicsCollisionShape.h */,
-				424F32841A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp */,
-				424F32851A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.h */,
-				424F32861A60C28600395438 /* lua_PhysicsConstraint.cpp */,
-				424F32871A60C28600395438 /* lua_PhysicsConstraint.h */,
-				424F32881A60C28600395438 /* lua_PhysicsController.cpp */,
-				424F32891A60C28600395438 /* lua_PhysicsController.h */,
-				424F328A1A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp */,
-				424F328B1A60C28600395438 /* lua_PhysicsControllerHitFilter.h */,
-				424F328C1A60C28600395438 /* lua_PhysicsControllerHitResult.cpp */,
-				424F328D1A60C28600395438 /* lua_PhysicsControllerHitResult.h */,
-				424F328E1A60C28600395438 /* lua_PhysicsControllerListener.cpp */,
-				424F328F1A60C28600395438 /* lua_PhysicsControllerListener.h */,
-				424F32901A60C28600395438 /* lua_PhysicsFixedConstraint.cpp */,
-				424F32911A60C28600395438 /* lua_PhysicsFixedConstraint.h */,
-				424F32921A60C28600395438 /* lua_PhysicsGenericConstraint.cpp */,
-				424F32931A60C28600395438 /* lua_PhysicsGenericConstraint.h */,
-				424F32941A60C28600395438 /* lua_PhysicsGhostObject.cpp */,
-				424F32951A60C28600395438 /* lua_PhysicsGhostObject.h */,
-				424F32961A60C28600395438 /* lua_PhysicsHingeConstraint.cpp */,
-				424F32971A60C28600395438 /* lua_PhysicsHingeConstraint.h */,
-				424F32981A60C28600395438 /* lua_PhysicsRigidBody.cpp */,
-				424F32991A60C28600395438 /* lua_PhysicsRigidBody.h */,
-				424F329A1A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp */,
-				424F329B1A60C28600395438 /* lua_PhysicsRigidBodyParameters.h */,
-				424F329C1A60C28600395438 /* lua_PhysicsSocketConstraint.cpp */,
-				424F329D1A60C28600395438 /* lua_PhysicsSocketConstraint.h */,
-				424F329E1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp */,
-				424F329F1A60C28600395438 /* lua_PhysicsSpringConstraint.h */,
-				424F32A01A60C28600395438 /* lua_PhysicsVehicle.cpp */,
-				424F32A11A60C28600395438 /* lua_PhysicsVehicle.h */,
-				424F32A21A60C28600395438 /* lua_PhysicsVehicleWheel.cpp */,
-				424F32A31A60C28600395438 /* lua_PhysicsVehicleWheel.h */,
-				424F32A41A60C28600395438 /* lua_Plane.cpp */,
-				424F32A51A60C28600395438 /* lua_Plane.h */,
-				424F32A61A60C28600395438 /* lua_Platform.cpp */,
-				424F32A71A60C28600395438 /* lua_Platform.h */,
-				424F32A81A60C28600395438 /* lua_Properties.cpp */,
-				424F32A91A60C28600395438 /* lua_Properties.h */,
-				424F32AA1A60C28600395438 /* lua_Quaternion.cpp */,
-				424F32AB1A60C28600395438 /* lua_Quaternion.h */,
-				424F32AC1A60C28600395438 /* lua_RadioButton.cpp */,
-				424F32AD1A60C28600395438 /* lua_RadioButton.h */,
-				424F32AE1A60C28600395438 /* lua_Ray.cpp */,
-				424F32AF1A60C28600395438 /* lua_Ray.h */,
-				424F32B01A60C28600395438 /* lua_Rectangle.cpp */,
-				424F32B11A60C28600395438 /* lua_Rectangle.h */,
-				424F32B21A60C28600395438 /* lua_Ref.cpp */,
-				424F32B31A60C28600395438 /* lua_Ref.h */,
-				424F32B41A60C28600395438 /* lua_RenderState.cpp */,
-				424F32B51A60C28600395438 /* lua_RenderState.h */,
-				424F32B61A60C28600395438 /* lua_RenderStateStateBlock.cpp */,
-				424F32B71A60C28600395438 /* lua_RenderStateStateBlock.h */,
-				424F32B81A60C28600395438 /* lua_RenderTarget.cpp */,
-				424F32B91A60C28600395438 /* lua_RenderTarget.h */,
-				424F32BA1A60C28600395438 /* lua_Scene.cpp */,
-				424F32BB1A60C28600395438 /* lua_Scene.h */,
-				424F32BC1A60C28600395438 /* lua_ScreenDisplayer.cpp */,
-				424F32BD1A60C28600395438 /* lua_ScreenDisplayer.h */,
-				424F32BE1A60C28600395438 /* lua_Script.cpp */,
-				424F32BF1A60C28600395438 /* lua_Script.h */,
-				424F32C01A60C28600395438 /* lua_ScriptController.cpp */,
-				424F32C11A60C28600395438 /* lua_ScriptController.h */,
-				424F32C21A60C28600395438 /* lua_ScriptTarget.cpp */,
-				424F32C31A60C28600395438 /* lua_ScriptTarget.h */,
-				424F32C41A60C28600395438 /* lua_ScriptTargetEvent.cpp */,
-				424F32C51A60C28600395438 /* lua_ScriptTargetEvent.h */,
-				424F32C61A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp */,
-				424F32C71A60C28600395438 /* lua_ScriptTargetEventRegistry.h */,
-				424F32C81A60C28600395438 /* lua_Slider.cpp */,
-				424F32C91A60C28600395438 /* lua_Slider.h */,
-				424F32CA1A60C28600395438 /* lua_Sprite.cpp */,
-				424F32CB1A60C28600395438 /* lua_Sprite.h */,
-				424F32CC1A60C28600395438 /* lua_SpriteBatch.cpp */,
-				424F32CD1A60C28600395438 /* lua_SpriteBatch.h */,
-				424F32CE1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp */,
-				424F32CF1A60C28600395438 /* lua_SpriteBatchSpriteVertex.h */,
-				424F32D01A60C28600395438 /* lua_Technique.cpp */,
-				424F32D11A60C28600395438 /* lua_Technique.h */,
-				424F32D21A60C28600395438 /* lua_Terrain.cpp */,
-				424F32D31A60C28600395438 /* lua_Terrain.h */,
-				424F32D41A60C28600395438 /* lua_TerrainPatch.cpp */,
-				424F32D51A60C28600395438 /* lua_TerrainPatch.h */,
-				424F32D61A60C28600395438 /* lua_Text.cpp */,
-				424F32D71A60C28600395438 /* lua_Text.h */,
-				424F32D81A60C28600395438 /* lua_TextBox.cpp */,
-				424F32D91A60C28600395438 /* lua_TextBox.h */,
-				424F32DA1A60C28600395438 /* lua_Texture.cpp */,
-				424F32DB1A60C28600395438 /* lua_Texture.h */,
-				424F32DC1A60C28600395438 /* lua_TextureSampler.cpp */,
-				424F32DD1A60C28600395438 /* lua_TextureSampler.h */,
-				424F32DE1A60C28600395438 /* lua_Theme.cpp */,
-				424F32DF1A60C28600395438 /* lua_Theme.h */,
-				424F32E01A60C28600395438 /* lua_ThemeSideRegions.cpp */,
-				424F32E11A60C28600395438 /* lua_ThemeSideRegions.h */,
-				424F32E21A60C28600395438 /* lua_ThemeStyle.cpp */,
-				424F32E31A60C28600395438 /* lua_ThemeStyle.h */,
-				424F32E41A60C28600395438 /* lua_ThemeThemeImage.cpp */,
-				424F32E51A60C28600395438 /* lua_ThemeThemeImage.h */,
-				424F32E61A60C28600395438 /* lua_ThemeUVs.cpp */,
-				424F32E71A60C28600395438 /* lua_ThemeUVs.h */,
-				424F32E81A60C28600395438 /* lua_TileSet.cpp */,
-				424F32E91A60C28600395438 /* lua_TileSet.h */,
-				424F32EA1A60C28600395438 /* lua_Touch.cpp */,
-				424F32EB1A60C28600395438 /* lua_Touch.h */,
-				424F32EC1A60C28600395438 /* lua_Transform.cpp */,
-				424F32ED1A60C28600395438 /* lua_Transform.h */,
-				424F32EE1A60C28600395438 /* lua_TransformListener.cpp */,
-				424F32EF1A60C28600395438 /* lua_TransformListener.h */,
-				424F32F01A60C28600395438 /* lua_Uniform.cpp */,
-				424F32F11A60C28600395438 /* lua_Uniform.h */,
-				424F32F21A60C28600395438 /* lua_Vector2.cpp */,
-				424F32F31A60C28600395438 /* lua_Vector2.h */,
-				424F32F41A60C28600395438 /* lua_Vector3.cpp */,
-				424F32F51A60C28600395438 /* lua_Vector3.h */,
-				424F32F61A60C28600395438 /* lua_Vector4.cpp */,
-				424F32F71A60C28600395438 /* lua_Vector4.h */,
-				424F32F81A60C28600395438 /* lua_VertexAttributeBinding.cpp */,
-				424F32F91A60C28600395438 /* lua_VertexAttributeBinding.h */,
-				424F32FA1A60C28600395438 /* lua_VertexFormat.cpp */,
-				424F32FB1A60C28600395438 /* lua_VertexFormat.h */,
-				424F32FC1A60C28600395438 /* lua_VertexFormatElement.cpp */,
-				424F32FD1A60C28600395438 /* lua_VertexFormatElement.h */,
-				424F32FE1A60C28600395438 /* lua_VerticalLayout.cpp */,
-				424F32FF1A60C28600395438 /* lua_VerticalLayout.h */,
-			);
-			name = lua;
-			path = src/lua;
-			sourceTree = SOURCE_ROOT;
-		};
-		4234D98A14686BB6003031B3 = {
-			isa = PBXGroup;
-			children = (
-				5BC4E7D4150F8C3C00CBE1C0 /* res */,
-				4234D9A314686C52003031B3 /* src */,
-				42CCD4AF146D811D00353661 /* Frameworks */,
-				4234D99B14686C52003031B3 /* Products */,
-			);
-			sourceTree = "<group>";
-		};
-		4234D99B14686C52003031B3 /* Products */ = {
-			isa = PBXGroup;
-			children = (
-				4234D99A14686C52003031B3 /* libgameplay.a */,
-				5B04C5CA14BFCFE100EB0071 /* libgameplay.a */,
-			);
-			name = Products;
-			sourceTree = "<group>";
-		};
-		4234D9A314686C52003031B3 /* src */ = {
-			isa = PBXGroup;
-			children = (
-				420BBAA51817416D00C7B720 /* lua */,
-				42CC52F71809A4EB00AAD8AD /* AbsoluteLayout.cpp */,
-				42CC52F81809A4EB00AAD8AD /* AbsoluteLayout.h */,
-				42CC52F91809A4EB00AAD8AD /* AIAgent.cpp */,
-				42CC52FA1809A4EB00AAD8AD /* AIAgent.h */,
-				42CC52FB1809A4EB00AAD8AD /* AIController.cpp */,
-				42CC52FC1809A4EB00AAD8AD /* AIController.h */,
-				42CC52FD1809A4EB00AAD8AD /* AIMessage.cpp */,
-				42CC52FE1809A4EB00AAD8AD /* AIMessage.h */,
-				42CC52FF1809A4EB00AAD8AD /* AIState.cpp */,
-				42CC53001809A4EB00AAD8AD /* AIState.h */,
-				42CC53011809A4EB00AAD8AD /* AIStateMachine.cpp */,
-				42CC53021809A4EB00AAD8AD /* AIStateMachine.h */,
-				42CC53031809A4EB00AAD8AD /* Animation.cpp */,
-				42CC53041809A4EB00AAD8AD /* Animation.h */,
-				42CC53051809A4EB00AAD8AD /* AnimationClip.cpp */,
-				42CC53061809A4EB00AAD8AD /* AnimationClip.h */,
-				42CC53071809A4EB00AAD8AD /* AnimationController.cpp */,
-				42CC53081809A4EB00AAD8AD /* AnimationController.h */,
-				42CC53091809A4EB00AAD8AD /* AnimationTarget.cpp */,
-				42CC530A1809A4EB00AAD8AD /* AnimationTarget.h */,
-				42CC530B1809A4EB00AAD8AD /* AnimationValue.cpp */,
-				42CC530C1809A4EB00AAD8AD /* AnimationValue.h */,
-				42CC530D1809A4EB00AAD8AD /* AudioBuffer.cpp */,
-				42CC530E1809A4EB00AAD8AD /* AudioBuffer.h */,
-				42CC530F1809A4EB00AAD8AD /* AudioController.cpp */,
-				42CC53101809A4EB00AAD8AD /* AudioController.h */,
-				42CC53111809A4EB00AAD8AD /* AudioListener.cpp */,
-				42CC53121809A4EB00AAD8AD /* AudioListener.h */,
-				42CC53131809A4EB00AAD8AD /* AudioSource.cpp */,
-				42CC53141809A4EB00AAD8AD /* AudioSource.h */,
-				42CC53151809A4EB00AAD8AD /* Base.h */,
-				42CC53161809A4EB00AAD8AD /* BoundingBox.cpp */,
-				42CC53171809A4EB00AAD8AD /* BoundingBox.h */,
-				42CC53181809A4EB00AAD8AD /* BoundingBox.inl */,
-				42CC53191809A4EB00AAD8AD /* BoundingSphere.cpp */,
-				42CC531A1809A4EB00AAD8AD /* BoundingSphere.h */,
-				42CC531B1809A4EB00AAD8AD /* BoundingSphere.inl */,
-				42CC531C1809A4EB00AAD8AD /* Bundle.cpp */,
-				42CC531D1809A4EB00AAD8AD /* Bundle.h */,
-				42CC531E1809A4EB00AAD8AD /* Button.cpp */,
-				42CC531F1809A4EB00AAD8AD /* Button.h */,
-				42CC53201809A4EB00AAD8AD /* Camera.cpp */,
-				42CC53211809A4EB00AAD8AD /* Camera.h */,
-				42CC53221809A4EB00AAD8AD /* CheckBox.cpp */,
-				42CC53231809A4EB00AAD8AD /* CheckBox.h */,
-				42CC53241809A4EB00AAD8AD /* Container.cpp */,
-				42CC53251809A4EB00AAD8AD /* Container.h */,
-				42CC53261809A4EB00AAD8AD /* Control.cpp */,
-				42CC53271809A4EB00AAD8AD /* Control.h */,
-				420BBAA21817416D00C7B720 /* ControlFactory.cpp */,
-				420BBAA31817416D00C7B720 /* ControlFactory.h */,
-				42CC53281809A4EB00AAD8AD /* Curve.cpp */,
-				42CC53291809A4EB00AAD8AD /* Curve.h */,
-				42CC532A1809A4EB00AAD8AD /* DebugNew.cpp */,
-				42CC532B1809A4EB00AAD8AD /* DebugNew.h */,
-				42CC532C1809A4EB00AAD8AD /* DepthStencilTarget.cpp */,
-				42CC532D1809A4EB00AAD8AD /* DepthStencilTarget.h */,
-				42D929991A6051EC0073258D /* Drawable.cpp */,
-				42D9299A1A6051EC0073258D /* Drawable.h */,
-				42CC532E1809A4EB00AAD8AD /* Effect.cpp */,
-				42CC532F1809A4EB00AAD8AD /* Effect.h */,
-				42CC53301809A4EB00AAD8AD /* FileSystem.cpp */,
-				42CC53311809A4EB00AAD8AD /* FileSystem.h */,
-				42CC53321809A4EB00AAD8AD /* FlowLayout.cpp */,
-				42CC53331809A4EB00AAD8AD /* FlowLayout.h */,
-				42CC53341809A4EB00AAD8AD /* Font.cpp */,
-				42CC53351809A4EB00AAD8AD /* Font.h */,
-				42CC53361809A4EB00AAD8AD /* Form.cpp */,
-				42CC53371809A4EB00AAD8AD /* Form.h */,
-				42CC53381809A4EB00AAD8AD /* FrameBuffer.cpp */,
-				42CC53391809A4EB00AAD8AD /* FrameBuffer.h */,
-				42CC533A1809A4EB00AAD8AD /* Frustum.cpp */,
-				42CC533B1809A4EB00AAD8AD /* Frustum.h */,
-				42CC533C1809A4EB00AAD8AD /* Game.cpp */,
-				42CC533D1809A4EB00AAD8AD /* Game.h */,
-				42CC533E1809A4EB00AAD8AD /* Game.inl */,
-				42CC533F1809A4EB00AAD8AD /* Gamepad.cpp */,
-				42CC53401809A4EB00AAD8AD /* Gamepad.h */,
-				42CC53411809A4EB00AAD8AD /* gameplay-main-android.cpp */,
-				42CC53431809A4EB00AAD8AD /* gameplay-main-ios.mm */,
-				42CC53441809A4EB00AAD8AD /* gameplay-main-linux.cpp */,
-				42CC53451809A4EB00AAD8AD /* gameplay-main-macosx.mm */,
-				42CC53461809A4EB00AAD8AD /* gameplay-main-windows.cpp */,
-				42CC53471809A4EB00AAD8AD /* gameplay.h */,
-				42CC53481809A4EB00AAD8AD /* Gesture.h */,
-				42CC53491809A4EB00AAD8AD /* HeightField.cpp */,
-				42CC534A1809A4EB00AAD8AD /* HeightField.h */,
-				42CC534B1809A4EB00AAD8AD /* Image.cpp */,
-				42CC534C1809A4EB00AAD8AD /* Image.h */,
-				42CC534D1809A4EC00AAD8AD /* Image.inl */,
-				42CC534E1809A4EC00AAD8AD /* ImageControl.cpp */,
-				42CC534F1809A4EC00AAD8AD /* ImageControl.h */,
-				42CC53501809A4EC00AAD8AD /* Joint.cpp */,
-				42CC53511809A4EC00AAD8AD /* Joint.h */,
-				426F8315187F72A700640CBA /* JoystickControl.cpp */,
-				426F8316187F72A700640CBA /* JoystickControl.h */,
-				42CC53551809A4EC00AAD8AD /* Keyboard.h */,
-				42CC53561809A4EC00AAD8AD /* Label.cpp */,
-				42CC53571809A4EC00AAD8AD /* Label.h */,
-				42CC53581809A4EC00AAD8AD /* Layout.cpp */,
-				42CC53591809A4EC00AAD8AD /* Layout.h */,
-				42CC535A1809A4EC00AAD8AD /* Light.cpp */,
-				42CC535B1809A4EC00AAD8AD /* Light.h */,
-				42CC535C1809A4EC00AAD8AD /* Logger.cpp */,
-				42CC535D1809A4EC00AAD8AD /* Logger.h */,
-				42CC54C71809A4ED00AAD8AD /* Material.cpp */,
-				42CC54C81809A4ED00AAD8AD /* Material.h */,
-				42CC54C91809A4ED00AAD8AD /* MaterialParameter.cpp */,
-				42CC54CA1809A4ED00AAD8AD /* MaterialParameter.h */,
-				42CC54CB1809A4ED00AAD8AD /* MathUtil.cpp */,
-				42CC54CC1809A4ED00AAD8AD /* MathUtil.h */,
-				42CC54CD1809A4ED00AAD8AD /* MathUtil.inl */,
-				42CC54CE1809A4ED00AAD8AD /* MathUtilNeon.inl */,
-				42CC54CF1809A4ED00AAD8AD /* Matrix.cpp */,
-				42CC54D01809A4ED00AAD8AD /* Matrix.h */,
-				42CC54D11809A4ED00AAD8AD /* Matrix.inl */,
-				42CC54D21809A4ED00AAD8AD /* Mesh.cpp */,
-				42CC54D31809A4ED00AAD8AD /* Mesh.h */,
-				42CC54D41809A4ED00AAD8AD /* MeshBatch.cpp */,
-				42CC54D51809A4ED00AAD8AD /* MeshBatch.h */,
-				42CC54D61809A4ED00AAD8AD /* MeshBatch.inl */,
-				42CC54D71809A4ED00AAD8AD /* MeshPart.cpp */,
-				42CC54D81809A4ED00AAD8AD /* MeshPart.h */,
-				42CC54D91809A4ED00AAD8AD /* MeshSkin.cpp */,
-				42CC54DA1809A4ED00AAD8AD /* MeshSkin.h */,
-				42CC54DB1809A4ED00AAD8AD /* Model.cpp */,
-				42CC54DC1809A4ED00AAD8AD /* Model.h */,
-				42CC54DD1809A4ED00AAD8AD /* Mouse.h */,
-				42CC54DE1809A4ED00AAD8AD /* Node.cpp */,
-				42CC54DF1809A4ED00AAD8AD /* Node.h */,
-				42CC54E01809A4ED00AAD8AD /* ParticleEmitter.cpp */,
-				42CC54E11809A4ED00AAD8AD /* ParticleEmitter.h */,
-				42CC54E21809A4ED00AAD8AD /* Pass.cpp */,
-				42CC54E31809A4ED00AAD8AD /* Pass.h */,
-				42CC54E41809A4ED00AAD8AD /* PhysicsCharacter.cpp */,
-				42CC54E51809A4ED00AAD8AD /* PhysicsCharacter.h */,
-				42CC54E61809A4ED00AAD8AD /* PhysicsCollisionObject.cpp */,
-				42CC54E71809A4ED00AAD8AD /* PhysicsCollisionObject.h */,
-				42CC54E81809A4ED00AAD8AD /* PhysicsCollisionShape.cpp */,
-				42CC54E91809A4ED00AAD8AD /* PhysicsCollisionShape.h */,
-				42CC54EA1809A4ED00AAD8AD /* PhysicsConstraint.cpp */,
-				42CC54EB1809A4ED00AAD8AD /* PhysicsConstraint.h */,
-				42CC54EC1809A4ED00AAD8AD /* PhysicsConstraint.inl */,
-				42CC54ED1809A4ED00AAD8AD /* PhysicsController.cpp */,
-				42CC54EE1809A4ED00AAD8AD /* PhysicsController.h */,
-				42CC54EF1809A4ED00AAD8AD /* PhysicsFixedConstraint.cpp */,
-				42CC54F01809A4ED00AAD8AD /* PhysicsFixedConstraint.h */,
-				42CC54F11809A4ED00AAD8AD /* PhysicsFixedConstraint.inl */,
-				42CC54F21809A4ED00AAD8AD /* PhysicsGenericConstraint.cpp */,
-				42CC54F31809A4ED00AAD8AD /* PhysicsGenericConstraint.h */,
-				42CC54F41809A4ED00AAD8AD /* PhysicsGenericConstraint.inl */,
-				42CC54F51809A4ED00AAD8AD /* PhysicsGhostObject.cpp */,
-				42CC54F61809A4ED00AAD8AD /* PhysicsGhostObject.h */,
-				42CC54F71809A4ED00AAD8AD /* PhysicsHingeConstraint.cpp */,
-				42CC54F81809A4ED00AAD8AD /* PhysicsHingeConstraint.h */,
-				42CC54F91809A4ED00AAD8AD /* PhysicsRigidBody.cpp */,
-				42CC54FA1809A4ED00AAD8AD /* PhysicsRigidBody.h */,
-				42CC54FB1809A4ED00AAD8AD /* PhysicsRigidBody.inl */,
-				42CC54FC1809A4ED00AAD8AD /* PhysicsSocketConstraint.cpp */,
-				42CC54FD1809A4ED00AAD8AD /* PhysicsSocketConstraint.h */,
-				42CC54FE1809A4ED00AAD8AD /* PhysicsSpringConstraint.cpp */,
-				42CC54FF1809A4ED00AAD8AD /* PhysicsSpringConstraint.h */,
-				42CC55001809A4ED00AAD8AD /* PhysicsSpringConstraint.inl */,
-				42CC55011809A4ED00AAD8AD /* PhysicsVehicle.cpp */,
-				42CC55021809A4ED00AAD8AD /* PhysicsVehicle.h */,
-				42CC55031809A4ED00AAD8AD /* PhysicsVehicleWheel.cpp */,
-				42CC55041809A4ED00AAD8AD /* PhysicsVehicleWheel.h */,
-				42CC55051809A4ED00AAD8AD /* Plane.cpp */,
-				42CC55061809A4ED00AAD8AD /* Plane.h */,
-				42CC55071809A4ED00AAD8AD /* Plane.inl */,
-				42CC55081809A4ED00AAD8AD /* Platform.cpp */,
-				42CC55091809A4ED00AAD8AD /* Platform.h */,
-				42CC550A1809A4ED00AAD8AD /* PlatformAndroid.cpp */,
-				42CC550C1809A4ED00AAD8AD /* PlatformiOS.mm */,
-				42CC550D1809A4ED00AAD8AD /* PlatformLinux.cpp */,
-				42CC550E1809A4ED00AAD8AD /* PlatformMacOSX.mm */,
-				42CC550F1809A4EE00AAD8AD /* PlatformWindows.cpp */,
-				42CC55101809A4EE00AAD8AD /* Properties.cpp */,
-				42CC55111809A4EE00AAD8AD /* Properties.h */,
-				42CC55121809A4EE00AAD8AD /* Quaternion.cpp */,
-				42CC55131809A4EE00AAD8AD /* Quaternion.h */,
-				42CC55141809A4EE00AAD8AD /* Quaternion.inl */,
-				42CC55151809A4EE00AAD8AD /* RadioButton.cpp */,
-				42CC55161809A4EE00AAD8AD /* RadioButton.h */,
-				42CC55171809A4EE00AAD8AD /* Ray.cpp */,
-				42CC55181809A4EE00AAD8AD /* Ray.h */,
-				42CC55191809A4EE00AAD8AD /* Ray.inl */,
-				42CC551A1809A4EE00AAD8AD /* Rectangle.cpp */,
-				42CC551B1809A4EE00AAD8AD /* Rectangle.h */,
-				42CC551C1809A4EE00AAD8AD /* Ref.cpp */,
-				42CC551D1809A4EE00AAD8AD /* Ref.h */,
-				42CC551E1809A4EE00AAD8AD /* RenderState.cpp */,
-				42CC551F1809A4EE00AAD8AD /* RenderState.h */,
-				42CC55201809A4EE00AAD8AD /* RenderTarget.cpp */,
-				42CC55211809A4EE00AAD8AD /* RenderTarget.h */,
-				42CC55221809A4EE00AAD8AD /* Scene.cpp */,
-				42CC55231809A4EE00AAD8AD /* Scene.h */,
-				42CC55241809A4EE00AAD8AD /* SceneLoader.cpp */,
-				42CC55251809A4EE00AAD8AD /* SceneLoader.h */,
-				42CC552A1809A4EE00AAD8AD /* ScreenDisplayer.cpp */,
-				42CC552B1809A4EE00AAD8AD /* ScreenDisplayer.h */,
-				DD4FBEA31A0C0D240015D30C /* Script.cpp */,
-				DD4FBEA41A0C0D240015D30C /* Script.h */,
-				42CC552C1809A4EE00AAD8AD /* ScriptController.cpp */,
-				42CC552D1809A4EE00AAD8AD /* ScriptController.h */,
-				42CC552E1809A4EE00AAD8AD /* ScriptController.inl */,
-				42CC552F1809A4EE00AAD8AD /* ScriptTarget.cpp */,
-				42CC55301809A4EE00AAD8AD /* ScriptTarget.h */,
-				42CC55311809A4EE00AAD8AD /* Slider.cpp */,
-				42CC55321809A4EE00AAD8AD /* Slider.h */,
-				4204EC441A2F878C0074FCE9 /* Sprite.cpp */,
-				4204EC431A2F70BA0074FCE9 /* Sprite.h */,
-				42CC55451809A4EE00AAD8AD /* SpriteBatch.cpp */,
-				42CC55461809A4EE00AAD8AD /* SpriteBatch.h */,
-				42CC55471809A4EE00AAD8AD /* Stream.h */,
-				42CC55481809A4EE00AAD8AD /* Technique.cpp */,
-				42CC55491809A4EE00AAD8AD /* Technique.h */,
-				42CC554A1809A4EE00AAD8AD /* Terrain.cpp */,
-				42CC554B1809A4EE00AAD8AD /* Terrain.h */,
-				42CC554C1809A4EE00AAD8AD /* TerrainPatch.cpp */,
-				42CC554D1809A4EE00AAD8AD /* TerrainPatch.h */,
-				42ECC3F81A4EF5A00036C839 /* Text.cpp */,
-				42ECC3F91A4EF5A00036C839 /* Text.h */,
-				42CC554E1809A4EE00AAD8AD /* TextBox.cpp */,
-				42CC554F1809A4EE00AAD8AD /* TextBox.h */,
-				42CC55501809A4EE00AAD8AD /* Texture.cpp */,
-				42CC55511809A4EE00AAD8AD /* Texture.h */,
-				42CC55521809A4EE00AAD8AD /* Theme.cpp */,
-				42CC55531809A4EE00AAD8AD /* Theme.h */,
-				42CC55541809A4EE00AAD8AD /* ThemeStyle.cpp */,
-				42CC55551809A4EE00AAD8AD /* ThemeStyle.h */,
-				4204EC3F1A2EB8310074FCE9 /* TileSet.cpp */,
-				4204EC401A2EB8310074FCE9 /* TileSet.h */,
-				42CC55561809A4EE00AAD8AD /* TimeListener.h */,
-				42CC55571809A4EE00AAD8AD /* Touch.h */,
-				42CC55581809A4EE00AAD8AD /* Transform.cpp */,
-				42CC55591809A4EE00AAD8AD /* Transform.h */,
-				42CC555A1809A4EE00AAD8AD /* Vector2.cpp */,
-				42CC555B1809A4EE00AAD8AD /* Vector2.h */,
-				42CC555C1809A4EE00AAD8AD /* Vector2.inl */,
-				42CC555D1809A4EE00AAD8AD /* Vector3.cpp */,
-				42CC555E1809A4EE00AAD8AD /* Vector3.h */,
-				42CC555F1809A4EE00AAD8AD /* Vector3.inl */,
-				42CC55601809A4EE00AAD8AD /* Vector4.cpp */,
-				42CC55611809A4EE00AAD8AD /* Vector4.h */,
-				42CC55621809A4EE00AAD8AD /* Vector4.inl */,
-				42CC55631809A4EE00AAD8AD /* VertexAttributeBinding.cpp */,
-				42CC55641809A4EE00AAD8AD /* VertexAttributeBinding.h */,
-				42CC55651809A4EE00AAD8AD /* VertexFormat.cpp */,
-				42CC55661809A4EE00AAD8AD /* VertexFormat.h */,
-				42CC55671809A4EE00AAD8AD /* VerticalLayout.cpp */,
-				42CC55681809A4EE00AAD8AD /* VerticalLayout.h */,
-			);
-			name = src;
-			path = gameplay;
-			sourceTree = "<group>";
-		};
-		42CCD4AF146D811D00353661 /* Frameworks */ = {
-			isa = PBXGroup;
-			children = (
-				5B04C5FD14BFE52300EB0071 /* iOS */,
-				5B04C5FE14BFE52F00EB0071 /* MacOSX */,
-			);
-			name = Frameworks;
-			sourceTree = "<group>";
-		};
-		5B04C5FD14BFE52300EB0071 /* iOS */ = {
-			isa = PBXGroup;
-			children = (
-				6290E04918223DCC00A28FB9 /* GameKit.framework */,
-				BD2636DF16CF5B7400CFE15F /* CoreMotion.framework */,
-				BD2636E016CF5B7400CFE15F /* Foundation.framework */,
-				BD2636E116CF5B7400CFE15F /* OpenAL.framework */,
-				BD2636E216CF5B7400CFE15F /* OpenGLES.framework */,
-				BD2636E316CF5B7400CFE15F /* QuartzCore.framework */,
-				BD2636E416CF5B7400CFE15F /* UIKit.framework */,
-			);
-			name = iOS;
-			sourceTree = "<group>";
-		};
-		5B04C5FE14BFE52F00EB0071 /* MacOSX */ = {
-			isa = PBXGroup;
-			children = (
-				6290E04B18223DDD00A28FB9 /* GameKit.framework */,
-				5B21E99516153890006EBEAC /* IOKit.framework */,
-				5B2BC7611512514D00D176CD /* QuartzCore.framework */,
-				5B2BC75D1512514500D176CD /* OpenAL.framework */,
-				5B2BC75E1512514500D176CD /* OpenGL.framework */,
-				4234D99D14686C52003031B3 /* Cocoa.framework */,
-			);
-			name = MacOSX;
-			sourceTree = "<group>";
-		};
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
-		4234D99914686C52003031B3 /* gameplay-macosx */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 4234D9AB14686C52003031B3 /* Build configuration list for PBXNativeTarget "gameplay-macosx" */;
-			buildPhases = (
-				4234D99614686C52003031B3 /* Sources */,
-				4234D99714686C52003031B3 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "gameplay-macosx";
-			productName = gameplay;
-			productReference = 4234D99A14686C52003031B3 /* libgameplay.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-		5B04C52B14BFCFE100EB0071 /* gameplay-ios */ = {
-			isa = PBXNativeTarget;
-			buildConfigurationList = 5B04C5C714BFCFE100EB0071 /* Build configuration list for PBXNativeTarget "gameplay-ios" */;
-			buildPhases = (
-				5B04C52C14BFCFE100EB0071 /* Sources */,
-				5B04C57414BFCFE100EB0071 /* Frameworks */,
-			);
-			buildRules = (
-			);
-			dependencies = (
-			);
-			name = "gameplay-ios";
-			productName = gameplay;
-			productReference = 5B04C5CA14BFCFE100EB0071 /* libgameplay.a */;
-			productType = "com.apple.product-type.library.static";
-		};
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
-		4234D98C14686BB6003031B3 /* Project object */ = {
-			isa = PBXProject;
-			attributes = {
-				LastUpgradeCheck = 0610;
-			};
-			buildConfigurationList = 4234D98F14686BB6003031B3 /* Build configuration list for PBXProject "gameplay" */;
-			compatibilityVersion = "Xcode 3.2";
-			developmentRegion = English;
-			hasScannedForEncodings = 0;
-			knownRegions = (
-				en,
-			);
-			mainGroup = 4234D98A14686BB6003031B3;
-			productRefGroup = 4234D99B14686C52003031B3 /* Products */;
-			projectDirPath = "";
-			projectRoot = "";
-			targets = (
-				4234D99914686C52003031B3 /* gameplay-macosx */,
-				5B04C52B14BFCFE100EB0071 /* gameplay-ios */,
-			);
-		};
-/* End PBXProject section */
-
-/* Begin PBXSourcesBuildPhase section */
-		4234D99614686C52003031B3 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				424F33A61A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp in Sources */,
-				42CC59861809A4EF00AAD8AD /* RadioButton.cpp in Sources */,
-				424F330A1A60C28600395438 /* lua_AIState.cpp in Sources */,
-				42CC596E1809A4EF00AAD8AD /* Platform.cpp in Sources */,
-				424F331C1A60C28600395438 /* lua_AnimationValue.cpp in Sources */,
-				424F338E1A60C28600395438 /* lua_PhysicsCollisionShape.cpp in Sources */,
-				424F33FE1A60C28600395438 /* lua_Vector2.cpp in Sources */,
-				42CC56001809A4EF00AAD8AD /* gameplay-main-linux.cpp in Sources */,
-				42CC598A1809A4EF00AAD8AD /* Ray.cpp in Sources */,
-				42CC56041809A4EF00AAD8AD /* gameplay-main-windows.cpp in Sources */,
-				424F33EC1A60C28600395438 /* lua_ThemeSideRegions.cpp in Sources */,
-				42CC59AE1809A4EF00AAD8AD /* ScreenDisplayer.cpp in Sources */,
-				424F332E1A60C28600395438 /* lua_Camera.cpp in Sources */,
-				424F33BA1A60C28600395438 /* lua_Ray.cpp in Sources */,
-				42CC599A1809A4EF00AAD8AD /* RenderTarget.cpp in Sources */,
-				42CC59421809A4EF00AAD8AD /* PhysicsController.cpp in Sources */,
-				42CC59E61809A4EF00AAD8AD /* Technique.cpp in Sources */,
-				424F33E01A60C28600395438 /* lua_TerrainPatch.cpp in Sources */,
-				424F33D41A60C28600395438 /* lua_Slider.cpp in Sources */,
-				424F33741A60C28600395438 /* lua_MeshBatch.cpp in Sources */,
-				42CC598E1809A4EF00AAD8AD /* Rectangle.cpp in Sources */,
-				42CC55DE1809A4EF00AAD8AD /* FlowLayout.cpp in Sources */,
-				424F337E1A60C28600395438 /* lua_Node.cpp in Sources */,
-				424F33101A60C28600395438 /* lua_all_bindings.cpp in Sources */,
-				4204EC411A2EB8310074FCE9 /* TileSet.cpp in Sources */,
-				42CC59F61809A4EF00AAD8AD /* Texture.cpp in Sources */,
-				42CC55CA1809A4EF00AAD8AD /* Curve.cpp in Sources */,
-				42CC599E1809A4EF00AAD8AD /* Scene.cpp in Sources */,
-				42CC593E1809A4EF00AAD8AD /* PhysicsConstraint.cpp in Sources */,
-				424F33261A60C28600395438 /* lua_BoundingBox.cpp in Sources */,
-				42CC55981809A4EF00AAD8AD /* AudioBuffer.cpp in Sources */,
-				42CC55A41809A4EF00AAD8AD /* AudioSource.cpp in Sources */,
-				424F33DC1A60C28600395438 /* lua_Technique.cpp in Sources */,
-				42CC55C61809A4EF00AAD8AD /* Control.cpp in Sources */,
-				424F33501A60C28600395438 /* lua_Gamepad.cpp in Sources */,
-				424F34001A60C28600395438 /* lua_Vector3.cpp in Sources */,
-				42CC56161809A4EF00AAD8AD /* Joint.cpp in Sources */,
-				42CC59961809A4EF00AAD8AD /* RenderState.cpp in Sources */,
-				424F33841A60C28600395438 /* lua_Pass.cpp in Sources */,
-				424F33481A60C28600395438 /* lua_Form.cpp in Sources */,
-				424F340A1A60C28600395438 /* lua_VerticalLayout.cpp in Sources */,
-				424F33641A60C28600395438 /* lua_Layout.cpp in Sources */,
-				424F333E1A60C28600395438 /* lua_Drawable.cpp in Sources */,
-				42CC59721809A4EF00AAD8AD /* PlatformAndroid.cpp in Sources */,
-				424F336C1A60C28600395438 /* lua_MaterialParameter.cpp in Sources */,
-				42CC55881809A4EF00AAD8AD /* AnimationClip.cpp in Sources */,
-				42CC59921809A4EF00AAD8AD /* Ref.cpp in Sources */,
-				424F33921A60C28600395438 /* lua_PhysicsConstraint.cpp in Sources */,
-				42CC595A1809A4EF00AAD8AD /* PhysicsSocketConstraint.cpp in Sources */,
-				42CC59EA1809A4EF00AAD8AD /* Terrain.cpp in Sources */,
-				424F338C1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp in Sources */,
-				42CC597E1809A4EF00AAD8AD /* Properties.cpp in Sources */,
-				42CC5A161809A4EF00AAD8AD /* VertexAttributeBinding.cpp in Sources */,
-				424F33761A60C28600395438 /* lua_MeshPart.cpp in Sources */,
-				42CC59B21809A4EF00AAD8AD /* ScriptController.cpp in Sources */,
-				424F33421A60C28600395438 /* lua_FileSystem.cpp in Sources */,
-				42CC55AA1809A4EF00AAD8AD /* BoundingBox.cpp in Sources */,
-				42CC55941809A4EF00AAD8AD /* AnimationValue.cpp in Sources */,
-				DD4FBEA51A0C0D240015D30C /* Script.cpp in Sources */,
-				424F334A1A60C28600395438 /* lua_FrameBuffer.cpp in Sources */,
-				424F33DE1A60C28600395438 /* lua_Terrain.cpp in Sources */,
-				424F33CA1A60C28600395438 /* lua_Script.cpp in Sources */,
-				424F33D61A60C28600395438 /* lua_Sprite.cpp in Sources */,
-				42CC5A0E1809A4EF00AAD8AD /* Vector3.cpp in Sources */,
-				424F33281A60C28600395438 /* lua_BoundingSphere.cpp in Sources */,
-				42CC55BA1809A4EF00AAD8AD /* Camera.cpp in Sources */,
-				42CC59201809A4EF00AAD8AD /* Model.cpp in Sources */,
-				42CC59EE1809A4EF00AAD8AD /* TerrainPatch.cpp in Sources */,
-				424F33441A60C28600395438 /* lua_FlowLayout.cpp in Sources */,
-				424F33221A60C28600395438 /* lua_AudioListener.cpp in Sources */,
-				424F33461A60C28600395438 /* lua_Font.cpp in Sources */,
-				424F339A1A60C28600395438 /* lua_PhysicsControllerListener.cpp in Sources */,
-				42CC557C1809A4EF00AAD8AD /* AIState.cpp in Sources */,
-				424F33141A60C28600395438 /* lua_AnimationClip.cpp in Sources */,
-				42CC59001809A4EF00AAD8AD /* Material.cpp in Sources */,
-				424F33801A60C28600395438 /* lua_NodeCloneContext.cpp in Sources */,
-				424F339C1A60C28600395438 /* lua_PhysicsFixedConstraint.cpp in Sources */,
-				426F8317187F72A700640CBA /* JoystickControl.cpp in Sources */,
-				424F33F21A60C28600395438 /* lua_ThemeUVs.cpp in Sources */,
-				42CC5A1E1809A4EF00AAD8AD /* VerticalLayout.cpp in Sources */,
-				424F33FA1A60C28600395438 /* lua_TransformListener.cpp in Sources */,
-				424F33561A60C28600395438 /* lua_HeightField.cpp in Sources */,
-				42CC59821809A4EF00AAD8AD /* Quaternion.cpp in Sources */,
-				42CC59E01809A4EF00AAD8AD /* SpriteBatch.cpp in Sources */,
-				42CC59521809A4EF00AAD8AD /* PhysicsHingeConstraint.cpp in Sources */,
-				424F33861A60C28600395438 /* lua_PhysicsCharacter.cpp in Sources */,
-				424F335C1A60C28600395438 /* lua_Joint.cpp in Sources */,
-				42CC55EE1809A4EF00AAD8AD /* Frustum.cpp in Sources */,
-				424F33D21A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp in Sources */,
-				424F33C61A60C28600395438 /* lua_Scene.cpp in Sources */,
-				42CC55901809A4EF00AAD8AD /* AnimationTarget.cpp in Sources */,
-				424F33521A60C28600395438 /* lua_Gesture.cpp in Sources */,
-				424F33601A60C28600395438 /* lua_Keyboard.cpp in Sources */,
-				42CC55D61809A4EF00AAD8AD /* Effect.cpp in Sources */,
-				42CC562C1809A4EF00AAD8AD /* Logger.cpp in Sources */,
-				424F330C1A60C28600395438 /* lua_AIStateListener.cpp in Sources */,
-				42CC56281809A4EF00AAD8AD /* Light.cpp in Sources */,
-				42CC59041809A4EF00AAD8AD /* MaterialParameter.cpp in Sources */,
-				42CC55841809A4EF00AAD8AD /* Animation.cpp in Sources */,
-				42CC558C1809A4EF00AAD8AD /* AnimationController.cpp in Sources */,
-				42CC59F21809A4EF00AAD8AD /* TextBox.cpp in Sources */,
-				424F33B21A60C28600395438 /* lua_Platform.cpp in Sources */,
-				424F33041A60C28600395438 /* lua_AIAgentListener.cpp in Sources */,
-				42CC5A1A1809A4EF00AAD8AD /* VertexFormat.cpp in Sources */,
-				42CC5A061809A4EF00AAD8AD /* Transform.cpp in Sources */,
-				424F33821A60C28600395438 /* lua_ParticleEmitter.cpp in Sources */,
-				42CC559C1809A4EF00AAD8AD /* AudioController.cpp in Sources */,
-				42CC55BE1809A4EF00AAD8AD /* CheckBox.cpp in Sources */,
-				42CC5A0A1809A4EF00AAD8AD /* Vector2.cpp in Sources */,
-				424F33D01A60C28600395438 /* lua_ScriptTargetEvent.cpp in Sources */,
-				42CC55A01809A4EF00AAD8AD /* AudioListener.cpp in Sources */,
-				424F33981A60C28600395438 /* lua_PhysicsControllerHitResult.cpp in Sources */,
-				424F335A1A60C28600395438 /* lua_ImageControl.cpp in Sources */,
-				424F33781A60C28600395438 /* lua_MeshSkin.cpp in Sources */,
-				424F33401A60C28600395438 /* lua_Effect.cpp in Sources */,
-				42CC5A121809A4EF00AAD8AD /* Vector4.cpp in Sources */,
-				424F33241A60C28600395438 /* lua_AudioSource.cpp in Sources */,
-				424F33C01A60C28600395438 /* lua_RenderState.cpp in Sources */,
-				424F33961A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp in Sources */,
-				42CC59BA1809A4EF00AAD8AD /* Slider.cpp in Sources */,
-				42CC59321809A4EF00AAD8AD /* PhysicsCharacter.cpp in Sources */,
-				424F33201A60C28600395438 /* lua_AudioController.cpp in Sources */,
-				424F33B41A60C28600395438 /* lua_Properties.cpp in Sources */,
-				424F33001A60C28600395438 /* lua_AbsoluteLayout.cpp in Sources */,
-				424F33BE1A60C28600395438 /* lua_Ref.cpp in Sources */,
-				424F337A1A60C28600395438 /* lua_Model.cpp in Sources */,
-				424F33681A60C28600395438 /* lua_Logger.cpp in Sources */,
-				42CC59081809A4EF00AAD8AD /* MathUtil.cpp in Sources */,
-				424F339E1A60C28600395438 /* lua_PhysicsGenericConstraint.cpp in Sources */,
-				42CC55EA1809A4EF00AAD8AD /* FrameBuffer.cpp in Sources */,
-				424F33341A60C28600395438 /* lua_Container.cpp in Sources */,
-				42CC59561809A4EF00AAD8AD /* PhysicsRigidBody.cpp in Sources */,
-				42CC59261809A4EF00AAD8AD /* Node.cpp in Sources */,
-				424F33BC1A60C28600395438 /* lua_Rectangle.cpp in Sources */,
-				42CC597A1809A4EF00AAD8AD /* PlatformMacOSX.mm in Sources */,
-				424F33D81A60C28600395438 /* lua_SpriteBatch.cpp in Sources */,
-				424F33A81A60C28600395438 /* lua_PhysicsSocketConstraint.cpp in Sources */,
-				424F33381A60C28600395438 /* lua_ControlListener.cpp in Sources */,
-				424F34041A60C28600395438 /* lua_VertexAttributeBinding.cpp in Sources */,
-				4204EC451A2F878C0074FCE9 /* Sprite.cpp in Sources */,
-				424F337C1A60C28600395438 /* lua_Mouse.cpp in Sources */,
-				424F333C1A60C28600395438 /* lua_DepthStencilTarget.cpp in Sources */,
-				42CC592A1809A4EF00AAD8AD /* ParticleEmitter.cpp in Sources */,
-				42CC560A1809A4EF00AAD8AD /* HeightField.cpp in Sources */,
-				42D9299B1A6051EC0073258D /* Drawable.cpp in Sources */,
-				424F33901A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp in Sources */,
-				42CC55AE1809A4EF00AAD8AD /* BoundingSphere.cpp in Sources */,
-				42CC55CE1809A4EF00AAD8AD /* DebugNew.cpp in Sources */,
-				424F33581A60C28600395438 /* lua_Image.cpp in Sources */,
-				424F332C1A60C28600395438 /* lua_Button.cpp in Sources */,
-				424F33B01A60C28600395438 /* lua_Plane.cpp in Sources */,
-				42CC59141809A4EF00AAD8AD /* MeshBatch.cpp in Sources */,
-				424F33CC1A60C28600395438 /* lua_ScriptController.cpp in Sources */,
-				42CC55701809A4EF00AAD8AD /* AIAgent.cpp in Sources */,
-				424F330E1A60C28600395438 /* lua_AIStateMachine.cpp in Sources */,
-				424F33C41A60C28600395438 /* lua_RenderTarget.cpp in Sources */,
-				424F33DA1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp in Sources */,
-				42CC55D21809A4EF00AAD8AD /* DepthStencilTarget.cpp in Sources */,
-				42CC55B61809A4EF00AAD8AD /* Button.cpp in Sources */,
-				424F335E1A60C28600395438 /* lua_JoystickControl.cpp in Sources */,
-				42CC596A1809A4EF00AAD8AD /* Plane.cpp in Sources */,
-				424F33A21A60C28600395438 /* lua_PhysicsHingeConstraint.cpp in Sources */,
-				42CC55E61809A4EF00AAD8AD /* Form.cpp in Sources */,
-				42CC55801809A4EF00AAD8AD /* AIStateMachine.cpp in Sources */,
-				42CC560E1809A4EF00AAD8AD /* Image.cpp in Sources */,
-				424F33881A60C28600395438 /* lua_PhysicsCollisionObject.cpp in Sources */,
-				42CC591C1809A4EF00AAD8AD /* MeshSkin.cpp in Sources */,
-				42CC56021809A4EF00AAD8AD /* gameplay-main-macosx.mm in Sources */,
-				420BBC0E1817416F00C7B720 /* ControlFactory.cpp in Sources */,
-				424F33941A60C28600395438 /* lua_PhysicsController.cpp in Sources */,
-				424F331A1A60C28600395438 /* lua_AnimationTarget.cpp in Sources */,
-				424F33F61A60C28600395438 /* lua_Touch.cpp in Sources */,
-				424F34021A60C28600395438 /* lua_Vector4.cpp in Sources */,
-				424F33AE1A60C28600395438 /* lua_PhysicsVehicleWheel.cpp in Sources */,
-				424F33E61A60C28600395438 /* lua_Texture.cpp in Sources */,
-				42CC55741809A4EF00AAD8AD /* AIController.cpp in Sources */,
-				42CC59361809A4EF00AAD8AD /* PhysicsCollisionObject.cpp in Sources */,
-				424F33A01A60C28600395438 /* lua_PhysicsGhostObject.cpp in Sources */,
-				424F33661A60C28600395438 /* lua_Light.cpp in Sources */,
-				424F33EA1A60C28600395438 /* lua_Theme.cpp in Sources */,
-				424F33FC1A60C28600395438 /* lua_Uniform.cpp in Sources */,
-				42CC595E1809A4EF00AAD8AD /* PhysicsSpringConstraint.cpp in Sources */,
-				424F33AC1A60C28600395438 /* lua_PhysicsVehicle.cpp in Sources */,
-				42CC59661809A4EF00AAD8AD /* PhysicsVehicleWheel.cpp in Sources */,
-				424F33541A60C28600395438 /* lua_Global.cpp in Sources */,
-				424F33361A60C28600395438 /* lua_Control.cpp in Sources */,
-				42CC594E1809A4EF00AAD8AD /* PhysicsGhostObject.cpp in Sources */,
-				424F33081A60C28600395438 /* lua_AIMessage.cpp in Sources */,
-				42CC597C1809A4EF00AAD8AD /* PlatformWindows.cpp in Sources */,
-				42CC55B21809A4EF00AAD8AD /* Bundle.cpp in Sources */,
-				42CC592E1809A4EF00AAD8AD /* Pass.cpp in Sources */,
-				424F33621A60C28600395438 /* lua_Label.cpp in Sources */,
-				42CC55F61809A4EF00AAD8AD /* Gamepad.cpp in Sources */,
-				42CC56201809A4EF00AAD8AD /* Label.cpp in Sources */,
-				42CC59B61809A4EF00AAD8AD /* ScriptTarget.cpp in Sources */,
-				424F333A1A60C28600395438 /* lua_Curve.cpp in Sources */,
-				42CC59FE1809A4EF00AAD8AD /* ThemeStyle.cpp in Sources */,
-				424F33C81A60C28600395438 /* lua_ScreenDisplayer.cpp in Sources */,
-				42CC59A21809A4EF00AAD8AD /* SceneLoader.cpp in Sources */,
-				424F34081A60C28600395438 /* lua_VertexFormatElement.cpp in Sources */,
-				42CC556C1809A4EF00AAD8AD /* AbsoluteLayout.cpp in Sources */,
-				424F336A1A60C28600395438 /* lua_Material.cpp in Sources */,
-				424F334E1A60C28600395438 /* lua_Game.cpp in Sources */,
-				42CC59181809A4EF00AAD8AD /* MeshPart.cpp in Sources */,
-				42CC55FA1809A4EF00AAD8AD /* gameplay-main-android.cpp in Sources */,
-				424F336E1A60C28600395438 /* lua_MathUtil.cpp in Sources */,
-				42CC55781809A4EF00AAD8AD /* AIMessage.cpp in Sources */,
-				424F33B81A60C28600395438 /* lua_RadioButton.cpp in Sources */,
-				424F33061A60C28600395438 /* lua_AIController.cpp in Sources */,
-				424F338A1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp in Sources */,
-				424F33C21A60C28600395438 /* lua_RenderStateStateBlock.cpp in Sources */,
-				42CC594A1809A4EF00AAD8AD /* PhysicsGenericConstraint.cpp in Sources */,
-				42CC593A1809A4EF00AAD8AD /* PhysicsCollisionShape.cpp in Sources */,
-				424F33121A60C28600395438 /* lua_Animation.cpp in Sources */,
-				42CC59FA1809A4EF00AAD8AD /* Theme.cpp in Sources */,
-				424F34061A60C28600395438 /* lua_VertexFormat.cpp in Sources */,
-				424F33F81A60C28600395438 /* lua_Transform.cpp in Sources */,
-				424F33181A60C28600395438 /* lua_AnimationController.cpp in Sources */,
-				424F33301A60C28600395438 /* lua_CameraListener.cpp in Sources */,
-				424F33E81A60C28600395438 /* lua_TextureSampler.cpp in Sources */,
-				424F33701A60C28600395438 /* lua_Matrix.cpp in Sources */,
-				42CC55C21809A4EF00AAD8AD /* Container.cpp in Sources */,
-				424F33CE1A60C28600395438 /* lua_ScriptTarget.cpp in Sources */,
-				424F33AA1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp in Sources */,
-				42CC59781809A4EF00AAD8AD /* PlatformLinux.cpp in Sources */,
-				424F33A41A60C28600395438 /* lua_PhysicsRigidBody.cpp in Sources */,
-				42CC59461809A4EF00AAD8AD /* PhysicsFixedConstraint.cpp in Sources */,
-				424F334C1A60C28600395438 /* lua_Frustum.cpp in Sources */,
-				424F33EE1A60C28600395438 /* lua_ThemeStyle.cpp in Sources */,
-				424F33321A60C28600395438 /* lua_CheckBox.cpp in Sources */,
-				424F331E1A60C28600395438 /* lua_AudioBuffer.cpp in Sources */,
-				424F33161A60C28600395438 /* lua_AnimationClipListener.cpp in Sources */,
-				424F33F41A60C28600395438 /* lua_TileSet.cpp in Sources */,
-				424F33721A60C28600395438 /* lua_Mesh.cpp in Sources */,
-				42CC55F21809A4EF00AAD8AD /* Game.cpp in Sources */,
-				42CC59101809A4EF00AAD8AD /* Mesh.cpp in Sources */,
-				424F33E21A60C28600395438 /* lua_Text.cpp in Sources */,
-				42CC55DA1809A4EF00AAD8AD /* FileSystem.cpp in Sources */,
-				42CC59621809A4EF00AAD8AD /* PhysicsVehicle.cpp in Sources */,
-				42ECC3FA1A4EF5A00036C839 /* Text.cpp in Sources */,
-				42CC56121809A4EF00AAD8AD /* ImageControl.cpp in Sources */,
-				42CC55E21809A4EF00AAD8AD /* Font.cpp in Sources */,
-				424F332A1A60C28600395438 /* lua_Bundle.cpp in Sources */,
-				424F33F01A60C28600395438 /* lua_ThemeThemeImage.cpp in Sources */,
-				42CC56241809A4EF00AAD8AD /* Layout.cpp in Sources */,
-				42CC590C1809A4EF00AAD8AD /* Matrix.cpp in Sources */,
-				424F33B61A60C28600395438 /* lua_Quaternion.cpp in Sources */,
-				424F33021A60C28600395438 /* lua_AIAgent.cpp in Sources */,
-				424F33E41A60C28600395438 /* lua_TextBox.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		5B04C52C14BFCFE100EB0071 /* Sources */ = {
-			isa = PBXSourcesBuildPhase;
-			buildActionMask = 2147483647;
-			files = (
-				424F33A71A60C28600395438 /* lua_PhysicsRigidBodyParameters.cpp in Sources */,
-				42CC59871809A4EF00AAD8AD /* RadioButton.cpp in Sources */,
-				424F330B1A60C28600395438 /* lua_AIState.cpp in Sources */,
-				42CC596F1809A4EF00AAD8AD /* Platform.cpp in Sources */,
-				424F331D1A60C28600395438 /* lua_AnimationValue.cpp in Sources */,
-				424F338F1A60C28600395438 /* lua_PhysicsCollisionShape.cpp in Sources */,
-				424F33FF1A60C28600395438 /* lua_Vector2.cpp in Sources */,
-				42CC56011809A4EF00AAD8AD /* gameplay-main-linux.cpp in Sources */,
-				42CC598B1809A4EF00AAD8AD /* Ray.cpp in Sources */,
-				42CC56051809A4EF00AAD8AD /* gameplay-main-windows.cpp in Sources */,
-				424F33ED1A60C28600395438 /* lua_ThemeSideRegions.cpp in Sources */,
-				42CC59AF1809A4EF00AAD8AD /* ScreenDisplayer.cpp in Sources */,
-				424F332F1A60C28600395438 /* lua_Camera.cpp in Sources */,
-				424F33BB1A60C28600395438 /* lua_Ray.cpp in Sources */,
-				42CC599B1809A4EF00AAD8AD /* RenderTarget.cpp in Sources */,
-				42CC59431809A4EF00AAD8AD /* PhysicsController.cpp in Sources */,
-				42CC59E71809A4EF00AAD8AD /* Technique.cpp in Sources */,
-				424F33E11A60C28600395438 /* lua_TerrainPatch.cpp in Sources */,
-				424F33D51A60C28600395438 /* lua_Slider.cpp in Sources */,
-				424F33751A60C28600395438 /* lua_MeshBatch.cpp in Sources */,
-				42CC598F1809A4EF00AAD8AD /* Rectangle.cpp in Sources */,
-				42CC55DF1809A4EF00AAD8AD /* FlowLayout.cpp in Sources */,
-				424F337F1A60C28600395438 /* lua_Node.cpp in Sources */,
-				424F33111A60C28600395438 /* lua_all_bindings.cpp in Sources */,
-				4204EC421A2EB8310074FCE9 /* TileSet.cpp in Sources */,
-				42CC59F71809A4EF00AAD8AD /* Texture.cpp in Sources */,
-				42CC55CB1809A4EF00AAD8AD /* Curve.cpp in Sources */,
-				42CC599F1809A4EF00AAD8AD /* Scene.cpp in Sources */,
-				42CC55FF1809A4EF00AAD8AD /* gameplay-main-ios.mm in Sources */,
-				424F33271A60C28600395438 /* lua_BoundingBox.cpp in Sources */,
-				42CC593F1809A4EF00AAD8AD /* PhysicsConstraint.cpp in Sources */,
-				42CC55991809A4EF00AAD8AD /* AudioBuffer.cpp in Sources */,
-				424F33DD1A60C28600395438 /* lua_Technique.cpp in Sources */,
-				42CC55A51809A4EF00AAD8AD /* AudioSource.cpp in Sources */,
-				424F33511A60C28600395438 /* lua_Gamepad.cpp in Sources */,
-				424F34011A60C28600395438 /* lua_Vector3.cpp in Sources */,
-				42CC55C71809A4EF00AAD8AD /* Control.cpp in Sources */,
-				42CC56171809A4EF00AAD8AD /* Joint.cpp in Sources */,
-				424F33851A60C28600395438 /* lua_Pass.cpp in Sources */,
-				424F33491A60C28600395438 /* lua_Form.cpp in Sources */,
-				424F340B1A60C28600395438 /* lua_VerticalLayout.cpp in Sources */,
-				424F33651A60C28600395438 /* lua_Layout.cpp in Sources */,
-				424F333F1A60C28600395438 /* lua_Drawable.cpp in Sources */,
-				42CC59971809A4EF00AAD8AD /* RenderState.cpp in Sources */,
-				424F336D1A60C28600395438 /* lua_MaterialParameter.cpp in Sources */,
-				42CC59731809A4EF00AAD8AD /* PlatformAndroid.cpp in Sources */,
-				42CC55891809A4EF00AAD8AD /* AnimationClip.cpp in Sources */,
-				424F33931A60C28600395438 /* lua_PhysicsConstraint.cpp in Sources */,
-				42CC59931809A4EF00AAD8AD /* Ref.cpp in Sources */,
-				42CC595B1809A4EF00AAD8AD /* PhysicsSocketConstraint.cpp in Sources */,
-				424F338D1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionPair.cpp in Sources */,
-				42CC59EB1809A4EF00AAD8AD /* Terrain.cpp in Sources */,
-				42CC597F1809A4EF00AAD8AD /* Properties.cpp in Sources */,
-				424F33771A60C28600395438 /* lua_MeshPart.cpp in Sources */,
-				42CC5A171809A4EF00AAD8AD /* VertexAttributeBinding.cpp in Sources */,
-				424F33431A60C28600395438 /* lua_FileSystem.cpp in Sources */,
-				42CC59B31809A4EF00AAD8AD /* ScriptController.cpp in Sources */,
-				42CC55AB1809A4EF00AAD8AD /* BoundingBox.cpp in Sources */,
-				DD4FBEA61A0C0D240015D30C /* Script.cpp in Sources */,
-				424F334B1A60C28600395438 /* lua_FrameBuffer.cpp in Sources */,
-				424F33DF1A60C28600395438 /* lua_Terrain.cpp in Sources */,
-				424F33CB1A60C28600395438 /* lua_Script.cpp in Sources */,
-				424F33D71A60C28600395438 /* lua_Sprite.cpp in Sources */,
-				42CC55951809A4EF00AAD8AD /* AnimationValue.cpp in Sources */,
-				424F33291A60C28600395438 /* lua_BoundingSphere.cpp in Sources */,
-				42CC5A0F1809A4EF00AAD8AD /* Vector3.cpp in Sources */,
-				42CC55BB1809A4EF00AAD8AD /* Camera.cpp in Sources */,
-				42CC59211809A4EF00AAD8AD /* Model.cpp in Sources */,
-				424F33451A60C28600395438 /* lua_FlowLayout.cpp in Sources */,
-				424F33231A60C28600395438 /* lua_AudioListener.cpp in Sources */,
-				424F33471A60C28600395438 /* lua_Font.cpp in Sources */,
-				424F339B1A60C28600395438 /* lua_PhysicsControllerListener.cpp in Sources */,
-				42CC59EF1809A4EF00AAD8AD /* TerrainPatch.cpp in Sources */,
-				424F33151A60C28600395438 /* lua_AnimationClip.cpp in Sources */,
-				42CC557D1809A4EF00AAD8AD /* AIState.cpp in Sources */,
-				424F33811A60C28600395438 /* lua_NodeCloneContext.cpp in Sources */,
-				424F339D1A60C28600395438 /* lua_PhysicsFixedConstraint.cpp in Sources */,
-				426F8318187F72A700640CBA /* JoystickControl.cpp in Sources */,
-				424F33F31A60C28600395438 /* lua_ThemeUVs.cpp in Sources */,
-				42CC59011809A4EF00AAD8AD /* Material.cpp in Sources */,
-				424F33FB1A60C28600395438 /* lua_TransformListener.cpp in Sources */,
-				424F33571A60C28600395438 /* lua_HeightField.cpp in Sources */,
-				42CC5A1F1809A4EF00AAD8AD /* VerticalLayout.cpp in Sources */,
-				42CC59831809A4EF00AAD8AD /* Quaternion.cpp in Sources */,
-				42CC59E11809A4EF00AAD8AD /* SpriteBatch.cpp in Sources */,
-				424F33871A60C28600395438 /* lua_PhysicsCharacter.cpp in Sources */,
-				424F335D1A60C28600395438 /* lua_Joint.cpp in Sources */,
-				42CC59531809A4EF00AAD8AD /* PhysicsHingeConstraint.cpp in Sources */,
-				424F33D31A60C28600395438 /* lua_ScriptTargetEventRegistry.cpp in Sources */,
-				424F33C71A60C28600395438 /* lua_Scene.cpp in Sources */,
-				42CC55EF1809A4EF00AAD8AD /* Frustum.cpp in Sources */,
-				424F33531A60C28600395438 /* lua_Gesture.cpp in Sources */,
-				424F33611A60C28600395438 /* lua_Keyboard.cpp in Sources */,
-				42CC55911809A4EF00AAD8AD /* AnimationTarget.cpp in Sources */,
-				42CC55D71809A4EF00AAD8AD /* Effect.cpp in Sources */,
-				424F330D1A60C28600395438 /* lua_AIStateListener.cpp in Sources */,
-				42CC562D1809A4EF00AAD8AD /* Logger.cpp in Sources */,
-				42CC56291809A4EF00AAD8AD /* Light.cpp in Sources */,
-				42CC59051809A4EF00AAD8AD /* MaterialParameter.cpp in Sources */,
-				42CC55851809A4EF00AAD8AD /* Animation.cpp in Sources */,
-				42CC558D1809A4EF00AAD8AD /* AnimationController.cpp in Sources */,
-				424F33B31A60C28600395438 /* lua_Platform.cpp in Sources */,
-				424F33051A60C28600395438 /* lua_AIAgentListener.cpp in Sources */,
-				42CC59771809A4EF00AAD8AD /* PlatformiOS.mm in Sources */,
-				42CC59F31809A4EF00AAD8AD /* TextBox.cpp in Sources */,
-				424F33831A60C28600395438 /* lua_ParticleEmitter.cpp in Sources */,
-				42CC5A1B1809A4EF00AAD8AD /* VertexFormat.cpp in Sources */,
-				42CC5A071809A4EF00AAD8AD /* Transform.cpp in Sources */,
-				42CC559D1809A4EF00AAD8AD /* AudioController.cpp in Sources */,
-				424F33D11A60C28600395438 /* lua_ScriptTargetEvent.cpp in Sources */,
-				42CC55BF1809A4EF00AAD8AD /* CheckBox.cpp in Sources */,
-				424F33991A60C28600395438 /* lua_PhysicsControllerHitResult.cpp in Sources */,
-				424F335B1A60C28600395438 /* lua_ImageControl.cpp in Sources */,
-				424F33791A60C28600395438 /* lua_MeshSkin.cpp in Sources */,
-				424F33411A60C28600395438 /* lua_Effect.cpp in Sources */,
-				42CC5A0B1809A4EF00AAD8AD /* Vector2.cpp in Sources */,
-				424F33251A60C28600395438 /* lua_AudioSource.cpp in Sources */,
-				424F33C11A60C28600395438 /* lua_RenderState.cpp in Sources */,
-				424F33971A60C28600395438 /* lua_PhysicsControllerHitFilter.cpp in Sources */,
-				42CC55A11809A4EF00AAD8AD /* AudioListener.cpp in Sources */,
-				42CC5A131809A4EF00AAD8AD /* Vector4.cpp in Sources */,
-				424F33211A60C28600395438 /* lua_AudioController.cpp in Sources */,
-				424F33B51A60C28600395438 /* lua_Properties.cpp in Sources */,
-				424F33011A60C28600395438 /* lua_AbsoluteLayout.cpp in Sources */,
-				424F33BF1A60C28600395438 /* lua_Ref.cpp in Sources */,
-				424F337B1A60C28600395438 /* lua_Model.cpp in Sources */,
-				424F33691A60C28600395438 /* lua_Logger.cpp in Sources */,
-				42CC59BB1809A4EF00AAD8AD /* Slider.cpp in Sources */,
-				424F339F1A60C28600395438 /* lua_PhysicsGenericConstraint.cpp in Sources */,
-				42CC59331809A4EF00AAD8AD /* PhysicsCharacter.cpp in Sources */,
-				424F33351A60C28600395438 /* lua_Container.cpp in Sources */,
-				42CC59091809A4EF00AAD8AD /* MathUtil.cpp in Sources */,
-				42CC55EB1809A4EF00AAD8AD /* FrameBuffer.cpp in Sources */,
-				424F33BD1A60C28600395438 /* lua_Rectangle.cpp in Sources */,
-				42CC59571809A4EF00AAD8AD /* PhysicsRigidBody.cpp in Sources */,
-				424F33D91A60C28600395438 /* lua_SpriteBatch.cpp in Sources */,
-				424F33A91A60C28600395438 /* lua_PhysicsSocketConstraint.cpp in Sources */,
-				424F33391A60C28600395438 /* lua_ControlListener.cpp in Sources */,
-				424F34051A60C28600395438 /* lua_VertexAttributeBinding.cpp in Sources */,
-				4204EC461A2F878C0074FCE9 /* Sprite.cpp in Sources */,
-				424F337D1A60C28600395438 /* lua_Mouse.cpp in Sources */,
-				424F333D1A60C28600395438 /* lua_DepthStencilTarget.cpp in Sources */,
-				42CC59271809A4EF00AAD8AD /* Node.cpp in Sources */,
-				42CC592B1809A4EF00AAD8AD /* ParticleEmitter.cpp in Sources */,
-				42D9299C1A6051EC0073258D /* Drawable.cpp in Sources */,
-				424F33911A60C28600395438 /* lua_PhysicsCollisionShapeDefinition.cpp in Sources */,
-				42CC560B1809A4EF00AAD8AD /* HeightField.cpp in Sources */,
-				42CC55AF1809A4EF00AAD8AD /* BoundingSphere.cpp in Sources */,
-				424F33591A60C28600395438 /* lua_Image.cpp in Sources */,
-				424F332D1A60C28600395438 /* lua_Button.cpp in Sources */,
-				424F33B11A60C28600395438 /* lua_Plane.cpp in Sources */,
-				42CC55CF1809A4EF00AAD8AD /* DebugNew.cpp in Sources */,
-				424F33CD1A60C28600395438 /* lua_ScriptController.cpp in Sources */,
-				42CC59151809A4EF00AAD8AD /* MeshBatch.cpp in Sources */,
-				424F330F1A60C28600395438 /* lua_AIStateMachine.cpp in Sources */,
-				424F33C51A60C28600395438 /* lua_RenderTarget.cpp in Sources */,
-				424F33DB1A60C28600395438 /* lua_SpriteBatchSpriteVertex.cpp in Sources */,
-				42CC55711809A4EF00AAD8AD /* AIAgent.cpp in Sources */,
-				42CC55D31809A4EF00AAD8AD /* DepthStencilTarget.cpp in Sources */,
-				424F335F1A60C28600395438 /* lua_JoystickControl.cpp in Sources */,
-				42CC55B71809A4EF00AAD8AD /* Button.cpp in Sources */,
-				424F33A31A60C28600395438 /* lua_PhysicsHingeConstraint.cpp in Sources */,
-				42CC596B1809A4EF00AAD8AD /* Plane.cpp in Sources */,
-				42CC55E71809A4EF00AAD8AD /* Form.cpp in Sources */,
-				42CC55811809A4EF00AAD8AD /* AIStateMachine.cpp in Sources */,
-				424F33891A60C28600395438 /* lua_PhysicsCollisionObject.cpp in Sources */,
-				42CC560F1809A4EF00AAD8AD /* Image.cpp in Sources */,
-				42CC591D1809A4EF00AAD8AD /* MeshSkin.cpp in Sources */,
-				420BBC0F1817416F00C7B720 /* ControlFactory.cpp in Sources */,
-				424F33951A60C28600395438 /* lua_PhysicsController.cpp in Sources */,
-				424F331B1A60C28600395438 /* lua_AnimationTarget.cpp in Sources */,
-				424F33F71A60C28600395438 /* lua_Touch.cpp in Sources */,
-				424F34031A60C28600395438 /* lua_Vector4.cpp in Sources */,
-				424F33AF1A60C28600395438 /* lua_PhysicsVehicleWheel.cpp in Sources */,
-				424F33E71A60C28600395438 /* lua_Texture.cpp in Sources */,
-				42CC55751809A4EF00AAD8AD /* AIController.cpp in Sources */,
-				42CC59371809A4EF00AAD8AD /* PhysicsCollisionObject.cpp in Sources */,
-				424F33A11A60C28600395438 /* lua_PhysicsGhostObject.cpp in Sources */,
-				424F33671A60C28600395438 /* lua_Light.cpp in Sources */,
-				424F33EB1A60C28600395438 /* lua_Theme.cpp in Sources */,
-				424F33FD1A60C28600395438 /* lua_Uniform.cpp in Sources */,
-				42CC595F1809A4EF00AAD8AD /* PhysicsSpringConstraint.cpp in Sources */,
-				424F33AD1A60C28600395438 /* lua_PhysicsVehicle.cpp in Sources */,
-				42CC59671809A4EF00AAD8AD /* PhysicsVehicleWheel.cpp in Sources */,
-				424F33551A60C28600395438 /* lua_Global.cpp in Sources */,
-				424F33371A60C28600395438 /* lua_Control.cpp in Sources */,
-				42CC594F1809A4EF00AAD8AD /* PhysicsGhostObject.cpp in Sources */,
-				424F33091A60C28600395438 /* lua_AIMessage.cpp in Sources */,
-				42CC597D1809A4EF00AAD8AD /* PlatformWindows.cpp in Sources */,
-				42CC55B31809A4EF00AAD8AD /* Bundle.cpp in Sources */,
-				42CC592F1809A4EF00AAD8AD /* Pass.cpp in Sources */,
-				424F33631A60C28600395438 /* lua_Label.cpp in Sources */,
-				42CC55F71809A4EF00AAD8AD /* Gamepad.cpp in Sources */,
-				42CC56211809A4EF00AAD8AD /* Label.cpp in Sources */,
-				42CC59B71809A4EF00AAD8AD /* ScriptTarget.cpp in Sources */,
-				424F333B1A60C28600395438 /* lua_Curve.cpp in Sources */,
-				42CC59FF1809A4EF00AAD8AD /* ThemeStyle.cpp in Sources */,
-				424F33C91A60C28600395438 /* lua_ScreenDisplayer.cpp in Sources */,
-				42CC59A31809A4EF00AAD8AD /* SceneLoader.cpp in Sources */,
-				424F34091A60C28600395438 /* lua_VertexFormatElement.cpp in Sources */,
-				42CC556D1809A4EF00AAD8AD /* AbsoluteLayout.cpp in Sources */,
-				424F336B1A60C28600395438 /* lua_Material.cpp in Sources */,
-				424F334F1A60C28600395438 /* lua_Game.cpp in Sources */,
-				42CC59191809A4EF00AAD8AD /* MeshPart.cpp in Sources */,
-				42CC55FB1809A4EF00AAD8AD /* gameplay-main-android.cpp in Sources */,
-				424F336F1A60C28600395438 /* lua_MathUtil.cpp in Sources */,
-				42CC55791809A4EF00AAD8AD /* AIMessage.cpp in Sources */,
-				424F33B91A60C28600395438 /* lua_RadioButton.cpp in Sources */,
-				424F33071A60C28600395438 /* lua_AIController.cpp in Sources */,
-				424F338B1A60C28600395438 /* lua_PhysicsCollisionObjectCollisionListener.cpp in Sources */,
-				424F33C31A60C28600395438 /* lua_RenderStateStateBlock.cpp in Sources */,
-				42CC594B1809A4EF00AAD8AD /* PhysicsGenericConstraint.cpp in Sources */,
-				42CC593B1809A4EF00AAD8AD /* PhysicsCollisionShape.cpp in Sources */,
-				424F33131A60C28600395438 /* lua_Animation.cpp in Sources */,
-				42CC59FB1809A4EF00AAD8AD /* Theme.cpp in Sources */,
-				424F34071A60C28600395438 /* lua_VertexFormat.cpp in Sources */,
-				424F33F91A60C28600395438 /* lua_Transform.cpp in Sources */,
-				424F33191A60C28600395438 /* lua_AnimationController.cpp in Sources */,
-				424F33311A60C28600395438 /* lua_CameraListener.cpp in Sources */,
-				424F33E91A60C28600395438 /* lua_TextureSampler.cpp in Sources */,
-				424F33711A60C28600395438 /* lua_Matrix.cpp in Sources */,
-				42CC55C31809A4EF00AAD8AD /* Container.cpp in Sources */,
-				424F33CF1A60C28600395438 /* lua_ScriptTarget.cpp in Sources */,
-				424F33AB1A60C28600395438 /* lua_PhysicsSpringConstraint.cpp in Sources */,
-				42CC59791809A4EF00AAD8AD /* PlatformLinux.cpp in Sources */,
-				424F33A51A60C28600395438 /* lua_PhysicsRigidBody.cpp in Sources */,
-				42CC59471809A4EF00AAD8AD /* PhysicsFixedConstraint.cpp in Sources */,
-				424F334D1A60C28600395438 /* lua_Frustum.cpp in Sources */,
-				424F33EF1A60C28600395438 /* lua_ThemeStyle.cpp in Sources */,
-				424F33331A60C28600395438 /* lua_CheckBox.cpp in Sources */,
-				424F331F1A60C28600395438 /* lua_AudioBuffer.cpp in Sources */,
-				424F33171A60C28600395438 /* lua_AnimationClipListener.cpp in Sources */,
-				424F33F51A60C28600395438 /* lua_TileSet.cpp in Sources */,
-				424F33731A60C28600395438 /* lua_Mesh.cpp in Sources */,
-				42CC55F31809A4EF00AAD8AD /* Game.cpp in Sources */,
-				42CC59111809A4EF00AAD8AD /* Mesh.cpp in Sources */,
-				424F33E31A60C28600395438 /* lua_Text.cpp in Sources */,
-				42CC55DB1809A4EF00AAD8AD /* FileSystem.cpp in Sources */,
-				42CC59631809A4EF00AAD8AD /* PhysicsVehicle.cpp in Sources */,
-				42ECC3FB1A4EF5A00036C839 /* Text.cpp in Sources */,
-				42CC56131809A4EF00AAD8AD /* ImageControl.cpp in Sources */,
-				42CC55E31809A4EF00AAD8AD /* Font.cpp in Sources */,
-				424F332B1A60C28600395438 /* lua_Bundle.cpp in Sources */,
-				424F33F11A60C28600395438 /* lua_ThemeThemeImage.cpp in Sources */,
-				42CC56251809A4EF00AAD8AD /* Layout.cpp in Sources */,
-				42CC590D1809A4EF00AAD8AD /* Matrix.cpp in Sources */,
-				424F33B71A60C28600395438 /* lua_Quaternion.cpp in Sources */,
-				424F33031A60C28600395438 /* lua_AIAgent.cpp in Sources */,
-				424F33E51A60C28600395438 /* lua_TextBox.cpp in Sources */,
-			);
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-/* End PBXSourcesBuildPhase section */
-
-/* Begin XCBuildConfiguration section */
-		4234D99114686BB6003031B3 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = src/gameplay.h;
-				ONLY_ACTIVE_ARCH = YES;
-				SDKROOT = macosx;
-				SUPPORTED_PLATFORMS = "iphonesimulator macosx iphoneos";
-				VALID_ARCHS = "armv7 armv7s arm64 i386 x86_64";
-			};
-			name = Debug;
-		};
-		4234D99214686BB6003031B3 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				GCC_PRECOMPILE_PREFIX_HEADER = YES;
-				GCC_PREFIX_HEADER = src/gameplay.h;
-				SDKROOT = macosx;
-				SUPPORTED_PLATFORMS = "iphonesimulator macosx iphoneos";
-				VALID_ARCHS = "armv7 armv7s arm64 i386 x86_64";
-			};
-			name = Release;
-		};
-		4234D9A914686C52003031B3 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				COMBINE_HIDPI_IMAGES = YES;
-				COPY_PHASE_STRIP = NO;
-				FRAMEWORK_SEARCH_PATHS = "$(inherited)";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = (
-					"DEBUG=1",
-					"$(inherited)",
-				);
-				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_UNUSED_VARIABLE = NO;
-				HEADER_SEARCH_PATHS = "../external-deps/include";
-				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				MACOSX_DEPLOYMENT_TARGET = 10.9;
-				ONLY_ACTIVE_ARCH = YES;
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				PRODUCT_NAME = gameplay;
-				PUBLIC_HEADERS_FOLDER_PATH = "$(PROJECT_NAME)_include";
-				SHARED_PRECOMPS_DIR = "";
-				SUPPORTED_PLATFORMS = macosx;
-				USER_HEADER_SEARCH_PATHS = "";
-				VALID_ARCHS = x86_64;
-			};
-			name = Debug;
-		};
-		4234D9AA14686C52003031B3 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				COMBINE_HIDPI_IMAGES = YES;
-				COPY_PHASE_STRIP = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				FRAMEWORK_SEARCH_PATHS = "$(inherited)";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_UNUSED_VARIABLE = NO;
-				HEADER_SEARCH_PATHS = "../external-deps/include";
-				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				MACOSX_DEPLOYMENT_TARGET = 10.9;
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				PRODUCT_NAME = gameplay;
-				PUBLIC_HEADERS_FOLDER_PATH = "$(PROJECT_NAME)_include";
-				SHARED_PRECOMPS_DIR = "";
-				SUPPORTED_PLATFORMS = macosx;
-				USER_HEADER_SEARCH_PATHS = "";
-				VALID_ARCHS = x86_64;
-			};
-			name = Release;
-		};
-		5B04C5C814BFCFE100EB0071 /* Debug */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				COPY_PHASE_STRIP = NO;
-				DEPLOYMENT_LOCATION = NO;
-				FRAMEWORK_SEARCH_PATHS = "$(inherited)";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_DYNAMIC_NO_PIC = NO;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = "DEBUG=1";
-				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_UNUSED_VARIABLE = NO;
-				HEADER_SEARCH_PATHS = "../external-deps/include";
-				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				LINK_WITH_STANDARD_LIBRARIES = NO;
-				MACOSX_DEPLOYMENT_TARGET = 10.9;
-				ONLY_ACTIVE_ARCH = YES;
-				OTHER_LDFLAGS = "";
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				PRODUCT_NAME = gameplay;
-				PROVISIONING_PROFILE = "";
-				PUBLIC_HEADERS_FOLDER_PATH = include;
-				SDKROOT = iphoneos;
-				SHARED_PRECOMPS_DIR = "";
-				SKIP_INSTALL = YES;
-				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
-				TARGETED_DEVICE_FAMILY = "1,2";
-				USER_HEADER_SEARCH_PATHS = "";
-				VALID_ARCHS = "armv7 armv7s arm64 i386";
-			};
-			name = Debug;
-		};
-		5B04C5C914BFCFE100EB0071 /* Release */ = {
-			isa = XCBuildConfiguration;
-			buildSettings = {
-				ALWAYS_SEARCH_USER_PATHS = NO;
-				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
-				CLANG_CXX_LIBRARY = "libc++";
-				CODE_SIGN_IDENTITY = "iPhone Developer";
-				COPY_PHASE_STRIP = YES;
-				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
-				DEPLOYMENT_LOCATION = NO;
-				FRAMEWORK_SEARCH_PATHS = "$(inherited)";
-				GCC_C_LANGUAGE_STANDARD = gnu99;
-				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-				GCC_PREPROCESSOR_DEFINITIONS = "";
-				GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-				GCC_WARN_64_TO_32_BIT_CONVERSION = NO;
-				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
-				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
-				GCC_WARN_ABOUT_POINTER_SIGNEDNESS = NO;
-				GCC_WARN_ABOUT_RETURN_TYPE = YES;
-				GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
-				GCC_WARN_MISSING_PARENTHESES = NO;
-				GCC_WARN_UNUSED_VARIABLE = NO;
-				HEADER_SEARCH_PATHS = "../external-deps/include";
-				LIBRARY_SEARCH_PATHS = "$(inherited)";
-				LINK_WITH_STANDARD_LIBRARIES = NO;
-				MACOSX_DEPLOYMENT_TARGET = 10.9;
-				ONLY_ACTIVE_ARCH = NO;
-				OTHER_LDFLAGS = "";
-				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
-				PRODUCT_NAME = gameplay;
-				PROVISIONING_PROFILE = "";
-				PUBLIC_HEADERS_FOLDER_PATH = include;
-				SDKROOT = iphoneos;
-				SHARED_PRECOMPS_DIR = "";
-				SKIP_INSTALL = YES;
-				SUPPORTED_PLATFORMS = "iphonesimulator iphoneos";
-				TARGETED_DEVICE_FAMILY = "1,2";
-				USER_HEADER_SEARCH_PATHS = "";
-				VALID_ARCHS = "armv7 armv7s arm64 i386";
-			};
-			name = Release;
-		};
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
-		4234D98F14686BB6003031B3 /* Build configuration list for PBXProject "gameplay" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				4234D99114686BB6003031B3 /* Debug */,
-				4234D99214686BB6003031B3 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		4234D9AB14686C52003031B3 /* Build configuration list for PBXNativeTarget "gameplay-macosx" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				4234D9A914686C52003031B3 /* Debug */,
-				4234D9AA14686C52003031B3 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-		5B04C5C714BFCFE100EB0071 /* Build configuration list for PBXNativeTarget "gameplay-ios" */ = {
-			isa = XCConfigurationList;
-			buildConfigurations = (
-				5B04C5C814BFCFE100EB0071 /* Debug */,
-				5B04C5C914BFCFE100EB0071 /* Release */,
-			);
-			defaultConfigurationIsVisible = 0;
-			defaultConfigurationName = Release;
-		};
-/* End XCConfigurationList section */
-	};
-	rootObject = 4234D98C14686BB6003031B3 /* Project object */;
-}

+ 0 - 68
gameplay/gameplay.xcodeproj/xcshareddata/xcschemes/gameplay-ios.xcscheme

@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "0610"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "5B04C52B14BFCFE100EB0071"
-               BuildableName = "libgameplay.a"
-               BlueprintName = "gameplay-ios"
-               ReferencedContainer = "container:gameplay.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      buildConfiguration = "Debug">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Debug"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      allowLocationSimulation = "YES">
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "5B04C52B14BFCFE100EB0071"
-            BuildableName = "libgameplay.a"
-            BlueprintName = "gameplay-ios"
-            ReferencedContainer = "container:gameplay.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
-   </LaunchAction>
-   <ProfileAction
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Release"
-      debugDocumentVersioning = "YES">
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

+ 0 - 68
gameplay/gameplay.xcodeproj/xcshareddata/xcschemes/gameplay-macosx.xcscheme

@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "0610"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "4234D99914686C52003031B3"
-               BuildableName = "libgameplay.a"
-               BlueprintName = "gameplay-macosx"
-               ReferencedContainer = "container:gameplay.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      buildConfiguration = "Debug">
-      <Testables>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Debug"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      allowLocationSimulation = "YES">
-      <MacroExpansion>
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "4234D99914686C52003031B3"
-            BuildableName = "libgameplay.a"
-            BlueprintName = "gameplay-macosx"
-            ReferencedContainer = "container:gameplay.xcodeproj">
-         </BuildableReference>
-      </MacroExpansion>
-      <AdditionalOptions>
-      </AdditionalOptions>
-   </LaunchAction>
-   <ProfileAction
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      buildConfiguration = "Release"
-      debugDocumentVersioning = "YES">
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>

BIN
gameplay/res/design/arial.ttf


BIN
gameplay/res/design/default-theme.psd


BIN
gameplay/res/design/icon_128.ico


BIN
gameplay/res/design/icon_16.ico


BIN
gameplay/res/design/icon_32.ico


BIN
gameplay/res/design/icon_64.ico


File diff suppressed because it is too large
+ 0 - 27
gameplay/res/design/logo.ai


BIN
gameplay/res/icon.png


BIN
gameplay/res/icon_tray.png


BIN
gameplay/res/logo_black.png


BIN
gameplay/res/logo_powered_black.png


BIN
gameplay/res/logo_powered_white.png


BIN
gameplay/res/logo_white.png


+ 0 - 41
gameplay/res/materials/terrain.material

@@ -1,41 +0,0 @@
-//
-// Default Terrain material file.
-// 
-// In addition to the built-in Node material auto-bindings, the following terrain-specific
-// auto-bindings are also supported:
-//
-// TERRAIN_NORMAL_MAP                   : normal map sampler (if using a normal map)
-// TERRAIN_LAYER_MAPS                   : array of texture samplers for each terrain layer
-// TERRAIN_ROW                          : row index of the current terrain patch
-// TERRAIN_COLUMN                       : column index of the current terrain patch
-//
-// To add lighting (other than ambient) to a terrain, you can add additional pass defines and
-// uniform bindings and handle them in your specific game or renderer. See the gameplay
-// terrain sample for an example.
-//
-material terrain
-{
-    u_worldViewProjectionMatrix = WORLD_VIEW_PROJECTION_MATRIX
-
-    u_normalMatrix = INVERSE_TRANSPOSE_WORLD_VIEW_MATRIX
-    //u_normalMap = TERRAIN_NORMAL_MAP
-
-    u_surfaceLayerMaps = TERRAIN_LAYER_MAPS
-
-    u_ambientColor = SCENE_AMBIENT_COLOR
-
-    renderState
-    {
-        cullFace = true
-        depthTest = true
-    }
-
-    technique
-    {
-        pass
-        {
-            vertexShader = res/shaders/terrain.vert
-            fragmentShader = res/shaders/terrain.frag
-        }
-    }
-}

+ 0 - 144
gameplay/res/shaders/colored.frag

@@ -1,144 +0,0 @@
-#ifdef OPENGL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-
-#ifndef DIRECTIONAL_LIGHT_COUNT
-#define DIRECTIONAL_LIGHT_COUNT 0
-#endif
-#ifndef SPOT_LIGHT_COUNT
-#define SPOT_LIGHT_COUNT 0
-#endif
-#ifndef POINT_LIGHT_COUNT
-#define POINT_LIGHT_COUNT 0
-#endif
-#if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-#define LIGHTING
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform vec3 u_ambientColor;
-uniform vec4 u_diffuseColor;
-
-#if defined(LIGHTMAP)
-uniform sampler2D u_lightmapTexture;
-#endif
-
-#if defined(LIGHTING)
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0)
-uniform vec3 u_directionalLightColor[DIRECTIONAL_LIGHT_COUNT];
-uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-uniform vec3 u_pointLightColor[POINT_LIGHT_COUNT];
-uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
-uniform float u_pointLightRangeInverse[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-uniform vec3 u_spotLightColor[SPOT_LIGHT_COUNT];
-uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
-uniform float u_spotLightRangeInverse[SPOT_LIGHT_COUNT];
-uniform float u_spotLightInnerAngleCos[SPOT_LIGHT_COUNT];
-uniform float u_spotLightOuterAngleCos[SPOT_LIGHT_COUNT];
-#endif
-
-#if defined(SPECULAR)
-uniform float u_specularExponent;
-#endif
-
-#endif
-
-#if defined(MODULATE_COLOR)
-uniform vec4 u_modulateColor;
-#endif
-
-#if defined(MODULATE_ALPHA)
-uniform float u_modulateAlpha;
-#endif
-
-///////////////////////////////////////////////////////////
-// Variables
-vec4 _baseColor;
-
-///////////////////////////////////////////////////////////
-// Varyings
-#if defined(VERTEX_COLOR)
-varying vec3 v_color;
-#endif
-
-#if defined(LIGHTMAP)
-varying vec2 v_texCoord1;
-#endif
-
-#if defined(LIGHTING)
-
-varying vec3 v_normalVector;
-
-#if (POINT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-
-#if defined(SPECULAR)
-varying vec3 v_cameraDirection; 
-#endif
-
-#include "lighting.frag"
-
-#endif
-
-#if defined(CLIP_PLANE)
-varying float v_clipDistance;
-#endif
-
-void main()
-{
-    #if defined(CLIP_PLANE)
-    if(v_clipDistance < 0.0) discard;
-    #endif
- 
-    #if defined(LIGHTING)
-
-    #if defined(VERTEX_COLOR)
-	_baseColor.rgb = v_color;
-    #else
-    _baseColor = u_diffuseColor;
-	#endif
-    
-    gl_FragColor.a = _baseColor.a;
-    gl_FragColor.rgb = getLitPixel();
-    
-    #else
-    
-    #if defined(VERTEX_COLOR)
-    gl_FragColor.rgb = v_color;
-    gl_FragColor.a = 1.0;
-    #else
-    gl_FragColor = u_diffuseColor;
-    #endif
-    
-    #endif
-
-	#if defined(LIGHTMAP)
-	vec4 lightColor = texture2D(u_lightmapTexture, v_texCoord1);
-	gl_FragColor.rgb *= lightColor.rgb;
-	#endif
-
-	#if defined(MODULATE_COLOR)
-    gl_FragColor *= u_modulateColor;
-    #endif
-
-	#if defined(MODULATE_ALPHA)
-    gl_FragColor.a *= u_modulateAlpha;
-    #endif
-}

+ 0 - 149
gameplay/res/shaders/colored.vert

@@ -1,149 +0,0 @@
-#ifndef DIRECTIONAL_LIGHT_COUNT
-#define DIRECTIONAL_LIGHT_COUNT 0
-#endif
-#ifndef SPOT_LIGHT_COUNT
-#define SPOT_LIGHT_COUNT 0
-#endif
-#ifndef POINT_LIGHT_COUNT
-#define POINT_LIGHT_COUNT 0
-#endif
-#if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-#define LIGHTING
-#endif
-
-///////////////////////////////////////////////////////////
-// Attributes
-attribute vec4 a_position;
-
-#if defined(SKINNING)
-attribute vec4 a_blendWeights;
-attribute vec4 a_blendIndices;
-#endif
-
-#if defined(LIGHTMAP)
-attribute vec2 a_texCoord1;
-#endif
-
-#if defined(LIGHTING)
-attribute vec3 a_normal;
-#endif
-
-#if defined(VERTEX_COLOR)
-attribute vec3 a_color;
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform mat4 u_worldViewProjectionMatrix;
-
-#if defined(SKINNING)
-uniform vec4 u_matrixPalette[SKINNING_JOINT_COUNT * 3];
-#endif
-
-#if defined(LIGHTING)
-uniform mat4 u_inverseTransposeWorldViewMatrix;
-
-#if (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0) || defined(SPECULAR)
-uniform mat4 u_worldViewMatrix;
-#endif
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0)
-uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0) 
-uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-uniform vec3 u_spotLightPosition[SPOT_LIGHT_COUNT];
-uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-
-#if defined(SPECULAR)
-uniform vec3 u_cameraPosition;
-#endif
-
-#endif
-
-#if defined(CLIP_PLANE)
-uniform mat4 u_worldMatrix;
-uniform vec4 u_clipPlane;
-#endif
-
-///////////////////////////////////////////////////////////
-// Varyings
-#if defined(LIGHTMAP)
-varying vec2 v_texCoord1;
-#endif
-
-#if defined(VERTEX_COLOR)
-varying vec3 v_color;
-#endif
-
-#if defined(LIGHTING)
-
-varying vec3 v_normalVector;
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0) 
-varying vec3 v_lightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-
-#if defined(SPECULAR)
-varying vec3 v_cameraDirection;
-#endif
-
-#include "lighting.vert"
-
-#endif
-
-#if defined(SKINNING)
-#include "skinning.vert"
-#else
-#include "skinning-none.vert" 
-#endif
-
-#if defined(CLIP_PLANE)
-varying float v_clipDistance;
-#endif
-
-void main()
-{
-    vec4 position = getPosition();
-    gl_Position = u_worldViewProjectionMatrix * position;
-
-    #if defined (LIGHTING)
-
-    vec3 normal = getNormal();
-
-    // Transform normal to view space.
-    mat3 inverseTransposeWorldViewMatrix = mat3(u_inverseTransposeWorldViewMatrix[0].xyz, u_inverseTransposeWorldViewMatrix[1].xyz, u_inverseTransposeWorldViewMatrix[2].xyz);
-    v_normalVector = inverseTransposeWorldViewMatrix * normal;
-
-    // Apply light.
-    applyLight(position);
-
-    #endif
-
-    // Pass the lightmap texture coordinate
-    #if defined(LIGHTMAP)
-    v_texCoord1 = a_texCoord1;
-    #endif
-    
-    // Pass the vertex color
-    #if defined(VERTEX_COLOR)
-	v_color = a_color;
-    #endif
-    
-    #if defined(CLIP_PLANE)
-    v_clipDistance = dot(u_worldMatrix * position, u_clipPlane);
-    #endif    
-}

+ 0 - 40
gameplay/res/shaders/font.frag

@@ -1,40 +0,0 @@
-#ifdef OPENGL_ES
-#extension GL_OES_standard_derivatives : enable
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform sampler2D u_texture;
-
-#ifdef DISTANCE_FIELD
-uniform vec2 u_cutoff;
-#endif
-
-///////////////////////////////////////////////////////////
-// Varyings
-varying vec2 v_texCoord;
-varying vec4 v_color;
-
-
-void main()
-{ 
-    #ifdef DISTANCE_FIELD
-    
-    gl_FragColor = v_color;
-    float distance = texture2D(u_texture, v_texCoord).a;
-    float smoothing = fwidth(distance);
-    float alpha = smoothstep(0.5 - smoothing * u_cutoff.x, 0.5 + smoothing * u_cutoff.y, distance);
-    gl_FragColor.a = alpha * v_color.a;
-    
-    #else
-    
-    gl_FragColor = v_color;
-    gl_FragColor.a = texture2D(u_texture, v_texCoord).a * v_color.a;
-    
-    #endif
-}

+ 0 - 22
gameplay/res/shaders/font.vert

@@ -1,22 +0,0 @@
-///////////////////////////////////////////////////////////
-// Atttributes
-attribute vec3 a_position;
-attribute vec2 a_texCoord;
-attribute vec4 a_color;
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform mat4 u_projectionMatrix;
-
-///////////////////////////////////////////////////////////
-// Varyings
-varying vec2 v_texCoord;
-varying vec4 v_color;
-
-
-void main()
-{
-    gl_Position = u_projectionMatrix * vec4(a_position, 1);
-    v_texCoord = a_texCoord;
-    v_color = a_color;
-}

+ 0 - 92
gameplay/res/shaders/lighting.frag

@@ -1,92 +0,0 @@
-
-vec3 computeLighting(vec3 normalVector, vec3 lightDirection, vec3 lightColor, float attenuation)
-{
-    float diffuse = max(dot(normalVector, lightDirection), 0.0);
-     vec3 diffuseColor = lightColor * _baseColor.rgb * diffuse * attenuation;
-
-    #if defined(SPECULAR)
-
-	// Phong shading
-    //vec3 vertexToEye = normalize(v_cameraDirection);
-    //vec3 specularAngle = normalize(normalVector * diffuse * 2.0 - lightDirection);  
-    //vec3 specularColor = vec3(pow(clamp(dot(specularAngle, vertexToEye), 0.0, 1.0), u_specularExponent)); 
-
-    // Blinn-Phong shading
-    vec3 vertexToEye = normalize(v_cameraDirection);
-    vec3 halfVector = normalize(lightDirection + vertexToEye);
-    float specularAngle = clamp(dot(normalVector, halfVector), 0.0, 1.0);
-    vec3 specularColor = vec3(pow(specularAngle, u_specularExponent)) * attenuation;
-
-    return diffuseColor + specularColor;
-
-    #else
-    
-    return diffuseColor;
-    
-    #endif
-}
-
-vec3 getLitPixel()
-{
-    #if defined(BUMPED)
-    
-    vec3 normalVector = normalize(texture2D(u_normalmapTexture, v_texCoord).rgb * 2.0 - 1.0);
-    
-    #else
-    
-    vec3 normalVector = normalize(v_normalVector);
-    
-    #endif
-    
-    vec3 ambientColor = _baseColor.rgb * u_ambientColor;
-    vec3 combinedColor = ambientColor;
-
-    // Directional light contribution
-    #if (DIRECTIONAL_LIGHT_COUNT > 0)
-    for (int i = 0; i < DIRECTIONAL_LIGHT_COUNT; ++i)
-    {
-        #if defined(BUMPED)
-        vec3 lightDirection = normalize(v_directionalLightDirection[i] * 2.0);
-        #else
-        vec3 lightDirection = normalize(u_directionalLightDirection[i] * 2.0);
-        #endif 
-        combinedColor += computeLighting(normalVector, -lightDirection, u_directionalLightColor[i], 1.0);
-    }
-    #endif
-
-    // Point light contribution
-    #if (POINT_LIGHT_COUNT > 0)
-    for (int i = 0; i < POINT_LIGHT_COUNT; ++i)
-    {
-        vec3 ldir = v_vertexToPointLightDirection[i] * u_pointLightRangeInverse[i];
-        float attenuation = clamp(1.0 - dot(ldir, ldir), 0.0, 1.0);
-        combinedColor += computeLighting(normalVector, normalize(v_vertexToPointLightDirection[i]), u_pointLightColor[i], attenuation);
-    }
-    #endif
-
-    // Spot light contribution
-    #if (SPOT_LIGHT_COUNT > 0)
-    for (int i = 0; i < SPOT_LIGHT_COUNT; ++i)
-    {
-        // Compute range attenuation
-        vec3 ldir = v_vertexToSpotLightDirection[i] * u_spotLightRangeInverse[i];
-        float attenuation = clamp(1.0 - dot(ldir, ldir), 0.0, 1.0);
-        vec3 vertexToSpotLightDirection = normalize(v_vertexToSpotLightDirection[i]);
-
-        #if defined(BUMPED)
-            vec3 spotLightDirection = normalize(v_spotLightDirection[i] * 2.0);
-        #else
-            vec3 spotLightDirection = normalize(u_spotLightDirection[i] * 2.0);
-        #endif
-
-        // "-lightDirection" is used because light direction points in opposite direction to spot direction.
-        float spotCurrentAngleCos = dot(spotLightDirection, -vertexToSpotLightDirection);
-
-		// Apply spot attenuation
-        attenuation *= smoothstep(u_spotLightOuterAngleCos[i], u_spotLightInnerAngleCos[i], spotCurrentAngleCos);
-        combinedColor += computeLighting(normalVector, vertexToSpotLightDirection, u_spotLightColor[i], attenuation);
-    }
-    #endif
-
-    return combinedColor;
-}

+ 0 - 67
gameplay/res/shaders/lighting.vert

@@ -1,67 +0,0 @@
-
-#if defined(BUMPED)
-void applyLight(vec4 position, mat3 tangentSpaceTransformMatrix)
-{
-    #if (defined(SPECULAR) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0))
-    vec4 positionWorldViewSpace = u_worldViewMatrix * position;
-    #endif
-    
-    #if (DIRECTIONAL_LIGHT_COUNT > 0)
-    for (int i = 0; i < DIRECTIONAL_LIGHT_COUNT; ++i)
-    {
-        // Transform light direction to tangent space
-        v_directionalLightDirection[i] = tangentSpaceTransformMatrix * u_directionalLightDirection[i];
-    }
-    #endif
-    
-    #if (POINT_LIGHT_COUNT > 0)
-    for (int i = 0; i < POINT_LIGHT_COUNT; ++i)
-    {
-        // Compute the vertex to light direction, in tangent space
-        v_vertexToPointLightDirection[i] = tangentSpaceTransformMatrix * (u_pointLightPosition[i] - positionWorldViewSpace.xyz);
-    }
-    #endif
-    
-    #if (SPOT_LIGHT_COUNT > 0)
-    for (int i = 0; i < SPOT_LIGHT_COUNT; ++i)
-    {
-        // Compute the vertex to light direction, in tangent space
-	    v_vertexToSpotLightDirection[i] = tangentSpaceTransformMatrix * (u_spotLightPosition[i] - positionWorldViewSpace.xyz);
-        v_spotLightDirection[i] = tangentSpaceTransformMatrix * u_spotLightDirection[i];
-    }
-    #endif
-    
-    #if defined(SPECULAR)
-    // Compute camera direction and transform it to tangent space.
-    v_cameraDirection = tangentSpaceTransformMatrix * (u_cameraPosition - positionWorldViewSpace.xyz);
-    #endif
-}
-#else
-void applyLight(vec4 position)
-{
-    #if defined(SPECULAR) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-	vec4 positionWorldViewSpace = u_worldViewMatrix * position;
-    #endif
-
-    #if (POINT_LIGHT_COUNT > 0)
-    for (int i = 0; i < POINT_LIGHT_COUNT; ++i)
-    {
-        // Compute the light direction with light position and the vertex position.
-        v_vertexToPointLightDirection[i] = u_pointLightPosition[i] - positionWorldViewSpace.xyz;
-    }
-    #endif
-
-    #if (SPOT_LIGHT_COUNT > 0)
-    for (int i = 0; i < SPOT_LIGHT_COUNT; ++i)
-    {
-        // Compute the light direction with light position and the vertex position.
-	    v_vertexToSpotLightDirection[i] = u_spotLightPosition[i] - positionWorldViewSpace.xyz;
-    }
-    #endif
-
-    #if defined(SPECULAR)  
-	v_cameraDirection = u_cameraPosition - positionWorldViewSpace.xyz;
-    #endif
-}
-
-#endif

+ 0 - 25
gameplay/res/shaders/skinning-none.vert

@@ -1,25 +0,0 @@
-vec4 getPosition()
-{
-    return a_position;    
-}
-
-#if defined(LIGHTING)
-
-vec3 getNormal()
-{
-    return a_normal;
-}
-
-#if defined(BUMPED)
-vec3 getTangent()
-{
-    return a_tangent;
-}
-
-vec3 getBinormal()
-{
-    return a_binormal;
-}
-#endif
-
-#endif

+ 0 - 84
gameplay/res/shaders/skinning.vert

@@ -1,84 +0,0 @@
-
-vec4 _skinnedPosition;
-
-void skinPosition(float blendWeight, int matrixIndex)
-{
-    vec4 tmp;
-    tmp.x = dot(a_position, u_matrixPalette[matrixIndex]);
-    tmp.y = dot(a_position, u_matrixPalette[matrixIndex + 1]);
-    tmp.z = dot(a_position, u_matrixPalette[matrixIndex + 2]);
-    tmp.w = a_position.w;
-    _skinnedPosition += blendWeight * tmp;
-}
-
-vec4 getPosition()
-{
-    _skinnedPosition = vec4(0.0);
-    float blendWeight = a_blendWeights[0];
-    int matrixIndex = int (a_blendIndices[0]) * 3;
-    skinPosition(blendWeight, matrixIndex);
-    blendWeight = a_blendWeights[1];
-    matrixIndex = int(a_blendIndices[1]) * 3;
-    skinPosition(blendWeight, matrixIndex);
-    blendWeight = a_blendWeights[2];
-    matrixIndex = int(a_blendIndices[2]) * 3;
-    skinPosition(blendWeight, matrixIndex);
-    blendWeight = a_blendWeights[3];
-    matrixIndex = int(a_blendIndices[3]) * 3;
-    skinPosition(blendWeight, matrixIndex);
-    return _skinnedPosition;    
-}
-
-#if defined(LIGHTING)
-
-vec3 _skinnedNormal;
-
-void skinTangentSpaceVector(vec3 vector, float blendWeight, int matrixIndex)
-{
-    vec3 tmp;
-    tmp.x = dot(vector, u_matrixPalette[matrixIndex].xyz);
-    tmp.y = dot(vector, u_matrixPalette[matrixIndex + 1].xyz);
-    tmp.z = dot(vector, u_matrixPalette[matrixIndex + 2].xyz);
-    _skinnedNormal += blendWeight * tmp;
-}
-
-vec3 getTangentSpaceVector(vec3 vector)
-{
-    _skinnedNormal = vec3(0.0);
-    // Transform normal to view space using matrix palette with four matrices used to transform a vertex.
-    float blendWeight = a_blendWeights[0];
-    int matrixIndex = int (a_blendIndices[0]) * 3;
-    skinTangentSpaceVector(vector, blendWeight, matrixIndex);
-    blendWeight = a_blendWeights[1];
-    matrixIndex = int(a_blendIndices[1]) * 3;
-    skinTangentSpaceVector(vector, blendWeight, matrixIndex);
-    blendWeight = a_blendWeights[2];
-    matrixIndex = int(a_blendIndices[2]) * 3;
-    skinTangentSpaceVector(vector, blendWeight, matrixIndex);
-    blendWeight = a_blendWeights[3];
-    matrixIndex = int(a_blendIndices[3]) * 3;
-    skinTangentSpaceVector(vector, blendWeight, matrixIndex);
-    return _skinnedNormal;
-}
-
-vec3 getNormal()
-{
-    return getTangentSpaceVector(a_normal);
-}
-
-#if defined(BUMPED)
-
-vec3 getTangent()
-{
-    return getTangentSpaceVector(a_tangent);
-}
-
-vec3 getBinormal()
-{
-    return getTangentSpaceVector(a_binormal);
-}
-
-#endif
-
-#endif
-

+ 0 - 22
gameplay/res/shaders/sprite.frag

@@ -1,22 +0,0 @@
-#ifdef OPENGL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform sampler2D u_texture;
-
-///////////////////////////////////////////////////////////
-// Varyings
-varying vec2 v_texCoord;
-varying vec4 v_color;
-
-
-void main()
-{
-    gl_FragColor = v_color * texture2D(u_texture, v_texCoord);
-}

+ 0 - 22
gameplay/res/shaders/sprite.vert

@@ -1,22 +0,0 @@
-///////////////////////////////////////////////////////////
-// Attributes
-attribute vec3 a_position;
-attribute vec2 a_texCoord;
-attribute vec4 a_color;
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform mat4 u_projectionMatrix;
-
-///////////////////////////////////////////////////////////
-// Varyings
-varying vec2 v_texCoord;
-varying vec4 v_color;
-
-
-void main()
-{
-    gl_Position = u_projectionMatrix * vec4(a_position, 1);
-    v_texCoord = a_texCoord;
-    v_color = a_color;
-}

+ 0 - 152
gameplay/res/shaders/terrain.frag

@@ -1,152 +0,0 @@
-#ifdef OPENGL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-
-#ifndef DIRECTIONAL_LIGHT_COUNT
-#define DIRECTIONAL_LIGHT_COUNT 0
-#endif
-#ifndef SPOT_LIGHT_COUNT
-#define SPOT_LIGHT_COUNT 0
-#endif
-#ifndef POINT_LIGHT_COUNT
-#define POINT_LIGHT_COUNT 0
-#endif
-#if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-#define LIGHTING
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform vec3 u_ambientColor; 
-
-#if defined(LIGHTING)
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0)
-uniform vec3 u_directionalLightColor[DIRECTIONAL_LIGHT_COUNT];
-uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-uniform vec3 u_pointLightColor[POINT_LIGHT_COUNT];
-uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
-uniform float u_pointLightRangeInverse[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-uniform vec3 u_spotLightColor[SPOT_LIGHT_COUNT];
-uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
-uniform float u_spotLightRangeInverse[SPOT_LIGHT_COUNT];
-uniform float u_spotLightInnerAngleCos[SPOT_LIGHT_COUNT];
-uniform float u_spotLightOuterAngleCos[SPOT_LIGHT_COUNT];
-#endif
-
-#if defined (NORMAL_MAP)
-uniform sampler2D u_normalMap;
-uniform mat4 u_normalMatrix;
-#endif
-
-#endif
-
-#if defined(DEBUG_PATCHES)
-uniform float u_row;
-uniform float u_column;
-#endif
-
-#if (LAYER_COUNT > 0)
-uniform sampler2D u_surfaceLayerMaps[SAMPLER_COUNT];
-#endif
-
-///////////////////////////////////////////////////////////
-// Variables
-vec4 _baseColor;
-
-///////////////////////////////////////////////////////////
-// Varyings
-#if defined(LIGHTING)
-#if !defined(NORMAL_MAP)
-varying vec3 v_normalVector;
-#else
-vec3 v_normalVector;
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0)
-varying vec3 v_lightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-
-#endif
-#endif
-
-varying vec2 v_texCoord0;
-
-#if (LAYER_COUNT > 0)
-varying vec2 v_texCoordLayer0;
-#endif
-#if (LAYER_COUNT > 1)
-varying vec2 v_texCoordLayer1;
-#endif
-#if (LAYER_COUNT > 2)
-varying vec2 v_texCoordLayer2;
-#endif
-#if (LAYER_COUNT > 1)
-void blendLayer(sampler2D textureMap, vec2 texCoord, float alphaBlend)
-{
-    vec3 diffuse = texture2D(textureMap,  mod(texCoord, vec2(1,1))).rgb;
-    _baseColor.rgb = _baseColor.rgb * (1.0 - alphaBlend) + diffuse * alphaBlend;
-}
-#endif
-
-#if defined(LIGHTING)
-#include "lighting.frag"
-#endif
-
-
-void main()
-{
-    #if (LAYER_COUNT > 0)
-    // Sample base texture
-	_baseColor.rgb = texture2D(u_surfaceLayerMaps[TEXTURE_INDEX_0], mod(v_texCoordLayer0, vec2(1,1))).rgb;
-    _baseColor.a = 1.0;
-    #else
-    // If no layers are defined, simply use a white color
-    _baseColor = vec4(1, 1, 1, 1);
-    #endif
-
-    #if (LAYER_COUNT > 1)
-    blendLayer(u_surfaceLayerMaps[TEXTURE_INDEX_1], v_texCoordLayer1, texture2D(u_surfaceLayerMaps[BLEND_INDEX_1], v_texCoord0)[BLEND_CHANNEL_1]);
-    #endif
-    #if (LAYER_COUNT > 2)
-    blendLayer(u_surfaceLayerMaps[TEXTURE_INDEX_2], v_texCoordLayer2, texture2D(u_surfaceLayerMaps[BLEND_INDEX_2], v_texCoord0)[BLEND_CHANNEL_2]);
-    #endif
-
-    #if defined(DEBUG_PATCHES)
-    float tint = mod(u_row + mod(u_column, 2.0), 2.0);
-    _baseColor.rgb = _baseColor.rgb * 0.75 + vec3(1.0-tint, tint, 0) * 0.25;
-    #endif
-
-    #if defined(LIGHTING)
-
-    #if defined(NORMAL_MAP)
-    v_normalVector = texture2D(u_normalMap, v_texCoord0).xyz * 2.0 - 1.0;
-    v_normalVector = (u_normalMatrix * vec4(v_normalVector.x, v_normalVector.y, v_normalVector.z, 0)).xyz;
-    #endif
-
-    gl_FragColor.a = _baseColor.a;
-    gl_FragColor.rgb = getLitPixel();
-
-    #else
-
-    gl_FragColor.rgb = _baseColor.rgb;
-
-    #endif
-}

+ 0 - 114
gameplay/res/shaders/terrain.vert

@@ -1,114 +0,0 @@
-#ifndef DIRECTIONAL_LIGHT_COUNT
-#define DIRECTIONAL_LIGHT_COUNT 0
-#endif
-#ifndef SPOT_LIGHT_COUNT
-#define SPOT_LIGHT_COUNT 0
-#endif
-#ifndef POINT_LIGHT_COUNT
-#define POINT_LIGHT_COUNT 0
-#endif
-#if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-#define LIGHTING
-#endif
-
-///////////////////////////////////////////////////////////
-// Attributes
-attribute vec4 a_position;
-#if !defined(NORMAL_MAP) && defined(LIGHTING)
-attribute vec3 a_normal;
-#endif
-attribute vec2 a_texCoord0;
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform mat4 u_worldViewProjectionMatrix;
-#if !defined(NORMAL_MAP) && defined(LIGHTING)
-uniform mat4 u_normalMatrix;
-#endif
-
-#if defined(LIGHTING)
-
-uniform mat4 u_inverseTransposeWorldViewMatrix;
-
-#if (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-uniform mat4 u_worldViewMatrix;
-#endif
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0)
-uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0) 
-uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-uniform vec3 u_spotLightPosition[SPOT_LIGHT_COUNT];
-uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-
-#endif
-
-///////////////////////////////////////////////////////////
-// Varyings
-
-#if defined(LIGHTING)
-varying vec3 v_normalVector;
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0) 
-varying vec3 v_lightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-
-#include "lighting.vert"
-
-#endif
-
-varying vec2 v_texCoord0;
-#if LAYER_COUNT > 0
-varying vec2 v_texCoordLayer0;
-#endif
-#if LAYER_COUNT > 1
-varying vec2 v_texCoordLayer1;
-#endif
-#if LAYER_COUNT > 2
-varying vec2 v_texCoordLayer2;
-#endif
-
-
-void main()
-{
-    // Transform position to clip space.
-    gl_Position = u_worldViewProjectionMatrix * a_position;
-
-    #if defined(LIGHTING)
-
-    #if !defined(NORMAL_MAP) 
-    v_normalVector = normalize((u_normalMatrix * vec4(a_normal.x, a_normal.y, a_normal.z, 0)).xyz);
-    #endif
-
-    applyLight(a_position);
-
-    #endif
-
-    // Pass base texture coord
-    v_texCoord0 = a_texCoord0;
-
-    // Pass repeated texture coordinates for each layer
-    #if LAYER_COUNT > 0
-    v_texCoordLayer0 = a_texCoord0 * TEXTURE_REPEAT_0;
-    #endif
-    #if LAYER_COUNT > 1
-    v_texCoordLayer1 = a_texCoord0 * TEXTURE_REPEAT_1;
-    #endif
-    #if LAYER_COUNT > 2
-    v_texCoordLayer2 = a_texCoord0 * TEXTURE_REPEAT_2;
-    #endif
-}

+ 0 - 155
gameplay/res/shaders/textured.frag

@@ -1,155 +0,0 @@
-#ifdef OPENGL_ES
-#ifdef GL_FRAGMENT_PRECISION_HIGH
-precision highp float;
-#else
-precision mediump float;
-#endif
-#endif
-
-#ifndef DIRECTIONAL_LIGHT_COUNT
-#define DIRECTIONAL_LIGHT_COUNT 0
-#endif
-#ifndef SPOT_LIGHT_COUNT
-#define SPOT_LIGHT_COUNT 0
-#endif
-#ifndef POINT_LIGHT_COUNT
-#define POINT_LIGHT_COUNT 0
-#endif
-#if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-#define LIGHTING
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform vec3 u_ambientColor;
-
-uniform sampler2D u_diffuseTexture;
-
-#if defined(LIGHTMAP)
-uniform sampler2D u_lightmapTexture;
-#endif
-
-#if defined(LIGHTING)
-
-#if defined(BUMPED)
-uniform sampler2D u_normalmapTexture;
-#endif
-
-#if (DIRECTIONAL_LIGHT_COUNT > 0)
-uniform vec3 u_directionalLightColor[DIRECTIONAL_LIGHT_COUNT];
-#if !defined(BUMPED)
-uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-uniform vec3 u_pointLightColor[POINT_LIGHT_COUNT];
-uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
-uniform float u_pointLightRangeInverse[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-uniform vec3 u_spotLightColor[SPOT_LIGHT_COUNT];
-uniform float u_spotLightRangeInverse[SPOT_LIGHT_COUNT];
-uniform float u_spotLightInnerAngleCos[SPOT_LIGHT_COUNT];
-uniform float u_spotLightOuterAngleCos[SPOT_LIGHT_COUNT];
-#if !defined(BUMPED)
-uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-#endif
-
-#if defined(SPECULAR)
-uniform float u_specularExponent;
-#endif
-
-#endif
-
-#if defined(MODULATE_COLOR)
-uniform vec4 u_modulateColor;
-#endif
-
-#if defined(MODULATE_ALPHA)
-uniform float u_modulateAlpha;
-#endif
-
-///////////////////////////////////////////////////////////
-// Variables
-vec4 _baseColor;
-
-///////////////////////////////////////////////////////////
-// Varyings
-varying vec2 v_texCoord;
-
-#if defined(LIGHTMAP)
-varying vec2 v_texCoord1;
-#endif
-
-#if defined(LIGHTING)
-
-#if !defined(BUMPED)
-varying vec3 v_normalVector;
-#endif
-
-#if defined(BUMPED) && (DIRECTIONAL_LIGHT_COUNT > 0)
-varying vec3 v_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
-#if defined(BUMPED)
-varying vec3 v_spotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-#endif
-
-#if defined(SPECULAR)
-varying vec3 v_cameraDirection; 
-#endif
-
-#include "lighting.frag"
-
-#endif
-
-#if defined(CLIP_PLANE)
-varying float v_clipDistance;
-#endif
-
-
-void main()
-{
-    #if defined(CLIP_PLANE)
-    if(v_clipDistance < 0.0) discard;
-    #endif
- 
-    _baseColor = texture2D(u_diffuseTexture, v_texCoord);
- 
-    gl_FragColor.a = _baseColor.a;
-
-    #if defined(TEXTURE_DISCARD_ALPHA)
-    if (gl_FragColor.a < 0.5)
-        discard;
-    #endif
-
-    #if defined(LIGHTING)
-
-    gl_FragColor.rgb = getLitPixel();
-    #else
-    gl_FragColor.rgb = _baseColor.rgb;
-    #endif
-
-	#if defined(LIGHTMAP)
-	vec4 lightColor = texture2D(u_lightmapTexture, v_texCoord1);
-	gl_FragColor.rgb *= lightColor.rgb;
-	#endif
-
-    #if defined(MODULATE_COLOR)
-    gl_FragColor *= u_modulateColor;
-    #endif
-
-    #if defined(MODULATE_ALPHA)
-    gl_FragColor.a *= u_modulateAlpha;
-    #endif
-}

+ 0 - 180
gameplay/res/shaders/textured.vert

@@ -1,180 +0,0 @@
-#ifndef DIRECTIONAL_LIGHT_COUNT
-#define DIRECTIONAL_LIGHT_COUNT 0
-#endif
-#ifndef SPOT_LIGHT_COUNT
-#define SPOT_LIGHT_COUNT 0
-#endif
-#ifndef POINT_LIGHT_COUNT
-#define POINT_LIGHT_COUNT 0
-#endif
-#if (DIRECTIONAL_LIGHT_COUNT > 0) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-#define LIGHTING
-#endif
-
-///////////////////////////////////////////////////////////
-// Atributes
-attribute vec4 a_position;
-
-#if defined(SKINNING)
-attribute vec4 a_blendWeights;
-attribute vec4 a_blendIndices;
-#endif
-
-attribute vec2 a_texCoord;
-
-#if defined(LIGHTMAP)
-attribute vec2 a_texCoord1; 
-#endif
-
-#if defined(LIGHTING)
-attribute vec3 a_normal;
-
-#if defined(BUMPED)
-attribute vec3 a_tangent;
-attribute vec3 a_binormal;
-#endif
-
-#endif
-
-///////////////////////////////////////////////////////////
-// Uniforms
-uniform mat4 u_worldViewProjectionMatrix;
-#if defined(SKINNING)
-uniform vec4 u_matrixPalette[SKINNING_JOINT_COUNT * 3];
-#endif
-
-#if defined(LIGHTING)
-uniform mat4 u_inverseTransposeWorldViewMatrix;
-
-#if defined(SPECULAR) || (POINT_LIGHT_COUNT > 0) || (SPOT_LIGHT_COUNT > 0)
-uniform mat4 u_worldViewMatrix;
-#endif
-
-#if defined(BUMPED) && (DIRECTIONAL_LIGHT_COUNT > 0)
-uniform vec3 u_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-uniform vec3 u_pointLightPosition[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0) 
-uniform vec3 u_spotLightPosition[SPOT_LIGHT_COUNT];
-#if defined(BUMPED)
-uniform vec3 u_spotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-#endif
-
-#if defined(SPECULAR)
-uniform vec3 u_cameraPosition;
-#endif
-
-#endif
-
-#if defined(TEXTURE_REPEAT)
-uniform vec2 u_textureRepeat;
-#endif
-
-#if defined(TEXTURE_OFFSET)
-uniform vec2 u_textureOffset;
-#endif
-
-#if defined(CLIP_PLANE)
-uniform mat4 u_worldMatrix;
-uniform vec4 u_clipPlane;
-#endif
-
-///////////////////////////////////////////////////////////
-// Varyings
-varying vec2 v_texCoord;
-
-#if defined(LIGHTMAP)
-varying vec2 v_texCoord1;
-#endif
-
-#if defined(LIGHTING)
-
-#if !defined(BUMPED)
-varying vec3 v_normalVector;
-#endif
-
-#if defined(BUMPED) && (DIRECTIONAL_LIGHT_COUNT > 0)
-varying vec3 v_directionalLightDirection[DIRECTIONAL_LIGHT_COUNT];
-#endif
-
-#if (POINT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToPointLightDirection[POINT_LIGHT_COUNT];
-#endif
-
-#if (SPOT_LIGHT_COUNT > 0)
-varying vec3 v_vertexToSpotLightDirection[SPOT_LIGHT_COUNT];
-#if defined(BUMPED)
-varying vec3 v_spotLightDirection[SPOT_LIGHT_COUNT];
-#endif
-#endif
-
-#if defined(SPECULAR)
-varying vec3 v_cameraDirection;
-#endif
-
-#include "lighting.vert"
-
-#endif
-
-#if defined(SKINNING)
-#include "skinning.vert"
-#else
-#include "skinning-none.vert" 
-#endif
-
-#if defined(CLIP_PLANE)
-varying float v_clipDistance;
-#endif
-
-void main()
-{
-    vec4 position = getPosition();
-    gl_Position = u_worldViewProjectionMatrix * position;
-
-    #if defined(LIGHTING)
-    vec3 normal = getNormal();
-    // Transform the normal, tangent and binormals to view space.
-    mat3 inverseTransposeWorldViewMatrix = mat3(u_inverseTransposeWorldViewMatrix[0].xyz, u_inverseTransposeWorldViewMatrix[1].xyz, u_inverseTransposeWorldViewMatrix[2].xyz);
-    vec3 normalVector = normalize(inverseTransposeWorldViewMatrix * normal);
-    
-    #if defined(BUMPED)
-    
-    vec3 tangent = getTangent();
-    vec3 binormal = getBinormal();
-    vec3 tangentVector  = normalize(inverseTransposeWorldViewMatrix * tangent);
-    vec3 binormalVector = normalize(inverseTransposeWorldViewMatrix * binormal);
-    mat3 tangentSpaceTransformMatrix = mat3(tangentVector.x, binormalVector.x, normalVector.x, tangentVector.y, binormalVector.y, normalVector.y, tangentVector.z, binormalVector.z, normalVector.z);
-    applyLight(position, tangentSpaceTransformMatrix);
-    
-    #else
-    
-    v_normalVector = normalVector;
-    applyLight(position);
-    
-    #endif
-    
-    #endif 
-    
-    v_texCoord = a_texCoord;
-    
-    #if defined(TEXTURE_REPEAT)
-    v_texCoord *= u_textureRepeat;
-    #endif
-    
-    #if defined(TEXTURE_OFFSET)
-    v_texCoord += u_textureOffset;
-    #endif
-    
-    #if defined(LIGHTMAP)
-    v_texCoord1 = a_texCoord1;
-    #endif
-    
-    #if defined(CLIP_PLANE)
-    v_clipDistance = dot(u_worldMatrix * position, u_clipPlane);
-    #endif
-}

BIN
gameplay/res/ui/arial.gpb


BIN
gameplay/res/ui/default-theme.png


+ 0 - 474
gameplay/res/ui/default.theme

@@ -1,474 +0,0 @@
-theme mainMenu
-{
-    texture = default-theme.png
-
-    /////////////////////////////////////////////////////////////////////
-    //                    Global theme variables                       //
-    /////////////////////////////////////////////////////////////////////
-
-    ${normalColor} = #ffffffff
-    ${hoverColor} = #eeeeeeff
-    ${activeColor} = #aaaaaaff
-    ${focusColor} = ${normalColor}
-    ${textColor} = #ffffffff
-    ${font} = arial.gpb
-    ${fontSize} = 16
-    ${disabledOpacity} = 0.5
-
-    /////////////////////////////////////////////////////////////////////
-    //                        Image lists                              //
-    /////////////////////////////////////////////////////////////////////
-
-    imageList normalImages
-    {
-        color = ${normalColor}
-
-        image unchecked
-        {
-            region = 83, 3, 34, 34
-        }
-
-        image checked
-        {
-            region = 83, 37, 34, 34
-        }
-
-        image unselected
-        {
-            region = 120, 3, 34, 34
-        }
-
-        image selected
-        {
-            region = 120, 37, 34, 34
-        }
-
-        image minCap
-        {
-            region = 3, 41, 8, 17
-        }
-
-        image track
-        {
-            region = 11, 41, 62, 17
-        }
-
-        image maxCap
-        {
-            region = 73, 41, 8, 17
-        }
-
-        image marker
-        {
-            region = 6, 59, 15, 27
-        }
-
-        image textCaret
-        {
-            region = 6, 92, 7, 22
-        }
-
-        image scrollBarTopCap
-        {
-            region = 65, 59, 13, 6
-        }
-
-        image verticalScrollBar
-        {
-            region = 65, 65, 13, 2
-        }
-
-        image scrollBarBottomCap
-        {
-            region = 65, 88, 13, 6
-        }
-
-        image scrollBarLeftCap
-        {
-            region = 25, 59, 6, 13
-        }
-
-        image horizontalScrollBar
-        {
-            region = 32, 59, 2, 13
-        }
-
-        image scrollBarRightCap
-        {
-            region = 55, 59, 6, 13
-        }
-    }
-
-    imageList hoverImages : normalImages
-    {
-        color = ${hoverColor}
-
-        image textCaret
-        {
-            color = ${normalColor}
-            region = 6, 92, 7, 22
-        }
-    }
-
-    imageList activeImages : normalImages
-    {
-        color = ${activeColor}
-
-        image unchecked
-        {
-            region = 83, 37, 34, 34
-        }
-
-        image checked
-        {
-            region = 83, 37, 34, 34
-        }
-
-        image selected
-        {
-            region = 120, 37, 34, 34
-        }
-
-        image unselected
-        {
-            region = 120, 37, 34, 34
-        }
-
-        image textCaret
-        {
-            color = ${normalColor}
-            region = 6, 92, 7, 22
-        }
-    }
-
-    /////////////////////////////////////////////////////////////////////
-    //                     Skin definitions                            //
-    /////////////////////////////////////////////////////////////////////
-
-    skin FormSkin
-    {
-        border
-        {
-            left = 8
-            right = 8
-            top = 8
-            bottom = 8
-        }
-
-        region = 4, 4, 32, 32
-        color = ${normalColor}
-    }
-
-    skin ButtonSkin
-    {
-        border
-        {
-            left = 12
-            right = 12
-            top = 12
-            bottom = 12
-        }
-
-        region = 42, 3, 34, 34
-        color = ${normalColor}
-    }
-
-    skin ButtonSkinHover : ButtonSkin
-    {
-        color = ${hoverColor}
-    }
-
-    skin ButtonSkinActive : ButtonSkin
-    {
-        color = ${activeColor}
-    }
-
-    skin ButtonSkinFocus : ButtonSkin
-    {
-        color = ${focusColor}
-    }
-
-    skin TextBoxSkin
-    {
-        border
-        {
-            left = 8
-            right = 8
-            top = 8
-            bottom = 8
-        }
-
-        region = 159, 3, 34, 34
-        color = ${normalColor}
-    }
-
-    skin TextBoxSkinHover : TextBoxSkin
-    {
-        color = ${hoverColor}
-    }
-
-    skin TextBoxSkinActive : TextBoxSkin
-    {
-        color = ${normalColor}
-    }
-
-    skin PanelSkin
-    {
-        border
-        {
-            left = 10
-            right = 10
-            top = 10
-            bottom = 10
-        }
-
-        region = 83, 3, 34, 34
-        color = ${normalColor}
-    }
-
-    style Form
-    {
-        padding
-        {
-            left = 2
-            right = 2
-            top = 2
-            bottom = 2
-        }
-
-        stateNormal
-        {
-            skin = FormSkin
-            imageList = normalImages
-        }
-
-        stateHover
-        {
-            imageList = hoverImages
-        }
-
-        stateActive
-        {
-            imageList = activeImages
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    style Container
-    {
-        stateNormal
-        {
-            imageList = normalImages
-        }
-
-        stateHover
-        {
-            imageList = hoverImages
-        }
-
-        stateActive
-        {
-            imageList = activeImages
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    style Label
-    {
-        stateNormal
-        {
-            font = ${font}
-            fontSize = ${fontSize}
-            textColor = ${textColor}
-            textAlignment = ALIGN_VCENTER_LEFT
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    style Button
-    {
-        padding
-        {
-            left = 8
-            right = 8
-            top = 4
-            bottom = 4
-        }
-
-        stateNormal
-        {
-            skin = ButtonSkin
-            font = ${font}
-            textColor = ${textColor}
-            fontSize = ${fontSize}
-            textAlignment = ALIGN_VCENTER_HCENTER
-        }
-
-        stateHover
-        {
-            skin = ButtonSkinHover
-        }
-
-        stateActive
-        {
-            skin = ButtonSkinActive
-        }
-
-        stateFocus
-        {
-            skin = ButtonSkinFocus
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    style CheckBox : Label
-    {
-        stateNormal
-        {
-            imageList = normalImages
-        }
-
-        stateHover
-        {
-            imageList = hoverImages
-        }
-
-        stateActive
-        {
-            imageList = activeImages
-        }
-
-        stateFocus
-        {
-            imageList = hoverImages
-        }
-    }
-
-    style RadioButton : CheckBox
-    {
-    }
-
-    style TextBox
-    {
-        stateNormal
-        {
-            skin = TextBoxSkin
-            imageList = normalImages
-            font = ${font}
-            fontSize = ${fontSize}
-            textColor = ${textColor}
-            textAlignment = ALIGN_TOP_LEFT
-        }
-
-        stateHover
-        {
-            skin = TextBoxSkinHover
-        }
-
-        stateActive
-        {
-            skin = TextBoxSkinActive
-            imageList = activeImages
-        }
-
-        stateFocus
-        {
-            skin = TextBoxSkinHover
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    style Slider
-    {
-        stateNormal
-        {
-            imageList = normalImages
-            font = ${font}
-            fontSize = ${fontSize}
-            textColor = ${textColor}
-            textAlignment = ALIGN_TOP_LEFT
-        }
-
-        stateHover
-        {
-            imageList = hoverImages
-        }
-
-        stateActive
-        {
-            imageList = activeImages
-        }
-
-        stateFocus
-        {
-            imageList = hoverImages
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    style Image
-    {
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-
-    // Empty style that has no skin
-    style Empty
-    {
-    }
-
-    // Style that can be used as a background for a container
-    style Panel
-    {
-        stateNormal
-        {
-            skin = PanelSkin
-            font = ${font}
-            fontSize = ${fontSize}
-            textColor = ${textColor}
-            textAlignment = ALIGN_VCENTER_HCENTER
-            imageList = normalImages
-        }
-
-        stateHover
-        {
-            imageList = hoverImages
-        }
-
-        stateActive
-        {
-            imageList = activeImages
-        }
-
-        stateDisabled
-        {
-            opacity = ${disabledOpacity}
-        }
-    }
-}

+ 0 - 98
gameplay/src/AIAgent.cpp

@@ -1,98 +0,0 @@
-#include "Base.h"
-#include "AIAgent.h"
-#include "Node.h"
-
-namespace gameplay
-{
-
-AIAgent::AIAgent()
-    : _stateMachine(NULL), _node(NULL), _enabled(true), _listener(NULL), _next(NULL)
-{
-    _stateMachine = new AIStateMachine(this);
-}
-
-AIAgent::~AIAgent()
-{
-    SAFE_DELETE(_stateMachine);
-}
-
-AIAgent* AIAgent::create()
-{
-    return new AIAgent();
-}
-
-const char* AIAgent::getId() const
-{
-    if (_node)
-        return _node->getId();
-
-    return "";
-}
-
-Node* AIAgent::getNode() const
-{
-    return _node;
-}
-    
-void AIAgent::setNode(Node* node)
-{
-    _node = node;
-}
-
-AIStateMachine* AIAgent::getStateMachine()
-{
-    return _stateMachine;
-}
-
-bool AIAgent::isEnabled() const
-{
-    return (_node && _enabled);
-}
-
-void AIAgent::setEnabled(bool enabled)
-{
-    _enabled = enabled;
-}
-
-void AIAgent::setListener(Listener* listener)
-{
-    _listener = listener;
-}
-
-void AIAgent::update(float elapsedTime)
-{
-    _stateMachine->update(elapsedTime);
-}
-
-bool AIAgent::processMessage(AIMessage* message)
-{
-    // Handle built-in message types.
-    switch (message->_messageType)
-    {
-    case AIMessage::MESSAGE_TYPE_STATE_CHANGE:
-        {
-            // Change state message
-            const char* stateId = message->getString(0);
-            if (stateId)
-            {
-                AIState* state = _stateMachine->getState(stateId);
-                if (state)
-                    _stateMachine->setStateInternal(state);
-            }
-        }
-        break;
-    case AIMessage::MESSAGE_TYPE_CUSTOM:
-        break;
-    }
-
-    // Dispatch message to registered listener.
-    if (_listener && _listener->messageReceived(message))
-        return true;
-
-    if (_node && _node->fireScriptEvent<bool>(GP_GET_SCRIPT_EVENT(Node, messageReceived), dynamic_cast<void*>(_node), message))
-        return true;
-
-    return false;
-}
-
-}

+ 0 - 174
gameplay/src/AIAgent.h

@@ -1,174 +0,0 @@
-#ifndef AIAGENT_H_
-#define AIAGENT_H_
-
-#include "Ref.h"
-#include "AIStateMachine.h"
-#include "AIMessage.h"
-
-namespace gameplay
-{
-
-class Node;
-
-/**
- * Defines an AI agent that can be added to nodes in a scene.
- *
- * Agents represent a unit of intelligence in a game and can be used
- * to program logic for a character or object in a game, using constructs
- * such as state machines. By default, an AIAgent has an empty state 
- * machine.
- */
-class AIAgent : public Ref
-{
-    friend class Node;
-    friend class AIState;
-    friend class AIController;
-
-public:
-
-    /**
-     * Interface for listening to AIAgent events.
-     */
-    class Listener
-    {
-    public:
-
-        /**
-         * Virtual destructor.
-         */
-        virtual ~Listener() { };
-
-        /**
-         * Called when a new message is sent to the AIAgent.
-         *
-         * Both global/broadcast messages and messages sent explicitly to the
-         * AIAgent are sent through this method. Returning true from this method
-         * will mark the message as handled and it will dispose of the message
-         * and prevent any other possible recipients from receiving the message.
-         * Alternatively, returning false allows the message to continue being
-         * routed though the AI system.
-         *
-         * @param message The message received.
-         *
-         * @return true to mark the message as handled, false otherwise.
-         */
-        virtual bool messageReceived(AIMessage* message) = 0;
-    };
-
-    /**
-     * Creates a new AIAgent.
-     *
-     * @return A new AIAgent.
-     * @script{create}
-     */
-    static AIAgent* create();
-
-    /**
-     * Returns the identifier for the AIAgent.
-     *
-     * This method simply returns the ID of the Node which this AIAgent
-     * is bound to. If this AIAgent is not bound to a Node, this method
-     * returns an empty string.
-     *
-     * @return The identifier for the agent.
-     */
-    const char* getId() const;
-
-    /**
-     * Returns the Node this AIAgent is assigned to.
-     *
-     * @return The Node this agent is assigned to.
-     */
-    Node* getNode() const;
-
-    /**
-     * Returns the state machine for the AIAgent.
-     *
-     * @return The agent's state machine.
-     */
-    AIStateMachine* getStateMachine();
-
-    /**
-     * Determines if this AIAgent is currently enabled.
-     *
-     * Agents are always disabled until they have been associated
-     * with a valid Node though Node::setAgent(AIAgent*). In addition,
-     * an AIAgent can be explicitly enabled or disabled using the
-     * setEnabled(bool) method.
-     *
-     * @return true if the agent is enabled, false otherwise.
-     */
-    bool isEnabled() const;
-
-    /**
-     * Sets whether this AIAgent is enabled.
-     *
-     * By default, AIAgents are enabled and they can receive messages and state
-     * changes. When disabled, AIAgents stop receiving messages and their state
-     * machines are halted until they are re-enabled.
-     *
-     * @param enabled true if the AIAgent should be enabled, false otherwise.
-     */
-    void setEnabled(bool enabled);
-
-    /**
-     * Sets an event listener for this AIAgent.
-     *
-     * @param listener The new AIAgent listener, or NULL to remove any existing listener.
-     */
-    void setListener(Listener* listener);
-
-private:
-
-    /**
-     * Constructor.
-     */
-    AIAgent();
-
-    /**
-     * Destructor.
-     *
-     * Hidden, use SAFE_RELEASE instead.
-     */
-    virtual ~AIAgent();
-
-    /**
-     * Hidden copy constructor.
-     */
-    AIAgent(const AIAgent&);
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AIAgent& operator=(const AIAgent&);
-    
-    /**
-     * Set the node this agent is attached to.
-     */
-    void setNode(Node* node);
-
-    /**
-     * Called by the AIController to process a message for the AIAgent.
-     *
-     * @param message The message to be processed.
-     *
-     * @return true if the message was handled, false otherwise.
-     */
-    bool processMessage(AIMessage* message);
-
-    /**
-     * Called once per frame by the AIController to update the agent.
-     */
-    void update(float elapsedTime);
-
-    AIStateMachine* _stateMachine;
-    Node* _node;
-    bool _enabled;
-    Listener* _listener;
-    AIAgent* _next;
-
-};
-
-}
-
-#endif

+ 0 - 188
gameplay/src/AIController.cpp

@@ -1,188 +0,0 @@
-#include "Base.h"
-#include "AIController.h"
-#include "Game.h"
-
-namespace gameplay
-{
-
-AIController::AIController()
-    : _paused(false), _firstMessage(NULL), _firstAgent(NULL)
-{
-}
-
-AIController::~AIController()
-{
-}
-
-void AIController::initialize()
-{
-}
-
-void AIController::finalize()
-{
-    // Remove all agents
-    AIAgent* agent = _firstAgent;
-    while (agent)
-    {
-        AIAgent* temp = agent;
-        agent = agent->_next;
-        SAFE_RELEASE(temp);
-    }
-    _firstAgent = NULL;
-
-    // Remove all messages
-    AIMessage* message = _firstMessage;
-    while (message)
-    {
-        AIMessage* temp = message;
-        message = message->_next;
-        AIMessage::destroy(temp);
-    }
-    _firstMessage = NULL;
-}
-
-void AIController::pause()
-{
-    _paused = true;
-}
-
-void AIController::resume()
-{
-    _paused = false;
-}
-
-void AIController::sendMessage(AIMessage* message, float delay)
-{
-    if (delay <= 0)
-    {
-        // Send instantly
-        if (message->getReceiver() == NULL || strlen(message->getReceiver()) == 0)
-        {
-            // Broadcast message to all agents
-            AIAgent* agent = _firstAgent;
-            while (agent)
-            {
-                if (agent->processMessage(message))
-                    break; // message consumed by this agent - stop bubbling
-                agent = agent->_next;
-            }
-        }
-        else
-        {
-            // Single recipient
-            AIAgent* agent = findAgent(message->getReceiver());
-            if (agent)
-            {
-                agent->processMessage(message);
-            }
-            else
-            {
-                GP_WARN("Failed to locate AIAgent for message recipient: %s", message->getReceiver());
-            }
-        }
-
-        // Delete the message, since it is finished being processed
-        AIMessage::destroy(message);
-    }
-    else
-    {
-        // Queue for later delivery
-        if (_firstMessage)
-            message->_next = _firstMessage;
-        _firstMessage = message;
-    }
-}
-
-void AIController::update(float elapsedTime)
-{
-    if (_paused)
-        return;
-
-    static Game* game = Game::getInstance();
-
-    // Send all pending messages that have expired
-    AIMessage* prevMsg = NULL;
-    AIMessage* msg = _firstMessage;
-    while (msg)
-    {
-        // If the message delivery time has expired, send it (this also deletes it)
-        if (msg->getDeliveryTime() >= game->getGameTime())
-        {
-            // Link the message out of our list
-            if (prevMsg)
-                prevMsg->_next = msg->_next;
-
-            AIMessage* temp = msg;
-            msg = msg->_next;
-            temp->_next = NULL;
-            sendMessage(temp);
-        }
-        else
-        {
-            prevMsg = msg;
-            msg = msg->_next;
-        }
-    }
-
-    // Update all enabled agents
-    AIAgent* agent = _firstAgent;
-    while (agent)
-    {
-        if (agent->isEnabled())
-            agent->update(elapsedTime);
-
-        agent = agent->_next;
-    }
-}
-
-void AIController::addAgent(AIAgent* agent)
-{
-    agent->addRef();
-
-    if (_firstAgent)
-        agent->_next = _firstAgent;
-
-    _firstAgent = agent;
-}
-
-void AIController::removeAgent(AIAgent* agent)
-{
-    // Search our linked list of agents and link this agent out.
-    AIAgent* prevAgent = NULL;
-    AIAgent* itr = _firstAgent;
-    while (itr)
-    {
-        if (itr == agent)
-        {
-            if (prevAgent)
-                prevAgent->_next = agent->_next;
-            else
-                _firstAgent = agent->_next;
-
-            agent->_next = NULL;
-            agent->release();
-            break;
-        }
-
-        prevAgent = itr;
-        itr = itr->_next;
-    }
-}
-
-AIAgent* AIController::findAgent(const char* id) const
-{
-    GP_ASSERT(id);
-
-    AIAgent* agent = _firstAgent;
-    while (agent)
-    {
-        if (strcmp(id, agent->getId()) == 0)
-            return agent;
-
-        agent = agent->_next;
-    }
-
-    return NULL;
-}
-
-}

+ 0 - 107
gameplay/src/AIController.h

@@ -1,107 +0,0 @@
-#ifndef AICONTROLLER_H_
-#define AICONTROLLER_H_
-
-#include "AIAgent.h"
-#include "AIMessage.h"
-
-namespace gameplay
-{
-
-/**
- * Defines and facilitates the state machine execution and message passing
- * between AI objects in the game. This class is generally not interfaced
- * with directly.
- */
-class AIController
-{
-    friend class Game;
-    friend class Node;
-
-public:
-
-    /**
-     * Routes the specified message to its intended recipient(s).
-     *
-     * Messages are arbitrary packets of data that are sent either to a single or to multiple
-     * recipients in the game.
-     *
-     * Once the specified message has been delivered, it is automatically destroyed by the AIController.
-     * For this reason, AIMessage pointers should NOT be held or explicitly destroyed by any code after
-     * they are sent through the AIController.
-     *
-     * @param message The message to send.
-     * @param delay The delay (in milliseconds) to wait before sending the message.
-     */
-    void sendMessage(AIMessage* message, float delay = 0);
-
-    /**
-     * Searches for an AIAgent that is registered with the AIController with the specified ID.
-     *
-     * @param id ID of the agent to find.
-     *
-     * @return The first agent matching the specified ID, or NULL if no matching agent could be found.
-     */
-    AIAgent* findAgent(const char* id) const;
-
-private:
-
-    /**
-     * Constructor.
-     */
-    AIController();
-
-    /**
-     * Destructor.
-     */
-    ~AIController();
-
-    /**
-     * Hidden copy constructor.
-     */
-    AIController(const AIController&);
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AIController& operator=(const AIController&);
-
-    /**
-     * Called during startup to initialize the AIController.
-     */
-    void initialize();
-
-    /**
-     * Called during shutdown to finalize the AIController.
-     */
-    void finalize();
-
-    /**
-     * Pauses the AIController.
-     */
-    void pause();
-
-    /**
-     * Resumes the AIController.
-     */
-    void resume();
-
-    /**
-     * Called each frame to update the AIController.
-     *
-     * @param elapsedTime The elapsed time, in milliseconds.
-     */
-    void update(float elapsedTime);
-
-    void addAgent(AIAgent* agent);
-
-    void removeAgent(AIAgent* agent);
-
-    bool _paused;
-    AIMessage* _firstMessage;
-    AIAgent* _firstAgent;
-
-};
-
-}
-
-#endif

+ 0 - 204
gameplay/src/AIMessage.cpp

@@ -1,204 +0,0 @@
-#include "Base.h"
-#include "AIMessage.h"
-
-namespace gameplay
-{
-
-AIMessage::AIMessage()
-    : _id(0), _deliveryTime(0), _parameters(NULL), _parameterCount(0), _messageType(MESSAGE_TYPE_CUSTOM), _next(NULL)
-{
-}
-
-AIMessage::~AIMessage()
-{
-    SAFE_DELETE_ARRAY(_parameters);
-}
-
-AIMessage* AIMessage::create(unsigned int id, const char* sender, const char* receiver, unsigned int parameterCount)
-{
-    AIMessage* message = new AIMessage();
-    message->_id = id;
-    message->_sender = sender;
-    message->_receiver = receiver;
-    message->_parameterCount = parameterCount;
-    if (parameterCount > 0)
-        message->_parameters = new AIMessage::Parameter[parameterCount];
-    return message;
-}
-
-void AIMessage::destroy(AIMessage* message)
-{
-    SAFE_DELETE(message);
-}
-
-unsigned int AIMessage::getId() const
-{
-    return _id;
-}
-
-const char* AIMessage::getSender() const
-{
-    return _sender.c_str();
-}
-
-const char* AIMessage::getReceiver() const
-{
-    return _receiver.c_str();
-}
-
-double AIMessage::getDeliveryTime() const
-{
-    return _deliveryTime;
-}
-
-int AIMessage::getInt(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(_parameters[index].type == AIMessage::INTEGER);
-
-    return _parameters[index].intValue;
-}
-
-void AIMessage::setInt(unsigned int index, int value)
-{
-    GP_ASSERT(index < _parameterCount);
-
-    clearParameter(index);
-
-    _parameters[index].intValue = value;
-    _parameters[index].type = AIMessage::INTEGER;
-}
-
-long AIMessage::getLong(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(_parameters[index].type == AIMessage::LONG);
-
-    return _parameters[index].longValue;
-}
-
-void AIMessage::setLong(unsigned int index, long value)
-{
-    GP_ASSERT(index < _parameterCount);
-
-    clearParameter(index);
-
-    _parameters[index].longValue = value;
-    _parameters[index].type = AIMessage::LONG;
-}
-
-float AIMessage::getFloat(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(_parameters[index].type == AIMessage::FLOAT);
-
-    return _parameters[index].floatValue;
-}
-
-void AIMessage::setFloat(unsigned int index, float value)
-{
-    GP_ASSERT(index < _parameterCount);
-
-    clearParameter(index);
-
-    _parameters[index].floatValue = value;
-    _parameters[index].type = AIMessage::FLOAT;
-}
-
-double AIMessage::getDouble(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(_parameters[index].type == AIMessage::DOUBLE);
-
-    return _parameters[index].doubleValue;
-}
-
-void AIMessage::setDouble(unsigned int index, double value)
-{
-    GP_ASSERT(index < _parameterCount);
-
-    clearParameter(index);
-
-    _parameters[index].doubleValue = value;
-    _parameters[index].type = AIMessage::DOUBLE;
-}
-
-bool AIMessage::getBoolean(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(_parameters[index].type == AIMessage::BOOLEAN);
-
-    return _parameters[index].boolValue;
-}
-
-void AIMessage::setBoolean(unsigned int index, bool value)
-{
-    GP_ASSERT(index < _parameterCount);
-
-    clearParameter(index);
-
-    _parameters[index].boolValue = value;
-    _parameters[index].type = AIMessage::BOOLEAN;
-}
-
-const char* AIMessage::getString(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(_parameters[index].type == AIMessage::STRING);
-
-    return _parameters[index].stringValue;
-}
-
-void AIMessage::setString(unsigned int index, const char* value)
-{
-    GP_ASSERT(index < _parameterCount);
-    GP_ASSERT(value);
-
-    clearParameter(index);
-
-    // Copy the string into our parameter
-    size_t len = strlen(value);
-    char* buffer = new char[len + 1];
-    strcpy(buffer, value);
-    _parameters[index].stringValue = buffer;
-    _parameters[index].type = AIMessage::STRING;
-}
-
-unsigned int AIMessage::getParameterCount() const
-{
-    return _parameterCount;
-}
-
-AIMessage::ParameterType AIMessage::getParameterType(unsigned int index) const
-{
-    GP_ASSERT(index < _parameterCount);
-
-    return _parameters[index].type;
-}
-
-void AIMessage::clearParameter(unsigned int index)
-{
-    GP_ASSERT(index < _parameterCount);
-
-    _parameters[index].clear();
-}
-
-AIMessage::Parameter::Parameter()
-    : type(UNDEFINED)
-{
-}
-
-AIMessage::Parameter::~Parameter()
-{
-    clear();
-}
-
-void AIMessage::Parameter::clear()
-{
-    if (type == AIMessage::STRING)
-        SAFE_DELETE_ARRAY(stringValue);
-
-    type = AIMessage::UNDEFINED;
-}
-
-}

+ 0 - 283
gameplay/src/AIMessage.h

@@ -1,283 +0,0 @@
-#ifndef AIMESSAGE_H_
-#define AIMESSAGE_H_
-
-namespace gameplay
-{
-
-/**
- * Defines a simple message structure used for passing messages through
- * the AI system.
- *
- * Messages can store an arbitrary number of parameters. For the sake of simplicity,
- * each parameter is stored as type double, which is flexible enough to store most
- * data that needs to be passed.
- */
-class AIMessage
-{
-    friend class AIAgent;
-    friend class AIController;
-    friend class AIStateMachine;
-
-public:
-
-    /**
-     * Enumeration of supported AIMessage parameter types.
-     */
-    enum ParameterType
-    {
-        UNDEFINED,
-        INTEGER,
-        LONG,
-        FLOAT,
-        DOUBLE,
-        BOOLEAN,
-        STRING
-    };
-
-    /**
-     * Creates a new message.
-     *
-     * Once a message is constructed and populated with data, it can be routed to its
-     * intended recipient(s) by calling AIController::sendMessage(AIMessage*). The
-     * AIController will then handle scheduling and delivery of the message and it will
-     * also destroy the message after it has been successfully delivered. For this reason,
-     * once a message has been sent through AIController, it is unsafe to use or destroy
-     * the message pointer.
-     *
-     * @param id The message ID.
-     * @param sender AIAgent sender ID (can be empty or null for an anonymous message).
-     * @param receiver AIAgent receiver ID (can be empty or null for a broadcast message).
-     * @param parameterCount Number of parameters for this message.
-     *
-     * @return A new AIMessage.
-     */
-    static AIMessage* create(unsigned int id, const char* sender, const char* receiver, unsigned int parameterCount);
-
-    /**
-     * Destroys an AIMessage.
-     *
-     * Under normal circumstances this method does not need to be called since the
-     * AIController will automatically destroy an AIMessage once it has been 
-     * sent. However, in the rare case where an AIMessage is constructed and not
-     * passed to AIController::sendMessage, this method should be called to destroy
-     * the message.
-     */
-    static void destroy(AIMessage* message);
-
-    /**
-     * Returns the message ID.
-     *
-     * @return The message ID.
-     */
-    unsigned int getId() const;
-
-    /**
-     * Returns the sender for the message.
-     *
-     * @return The message sender ID.
-     */
-    const char* getSender() const;
-
-    /**
-     * Returns the receiver for the message.
-     *
-     * @return The message receiver.
-     */
-    const char* getReceiver() const;
-
-    /**
-     * Returns the value of the specified parameter as an integer.
-     *
-     * @param index Index of the parameter to get.
-     *
-     * @return The parameter value.
-     */
-    int getInt(unsigned int index) const;
-
-    /**
-     * Sets an integer parameter.
-     *
-     * @param index Index of the parameter to set.
-     * @param value The parameter value.
-     */
-    void setInt(unsigned int index, int value);
-
-    /**
-     * Returns the value of the specified parameter as a long integer.
-     *
-     * @param index Index of the parameter to get.
-     *
-     * @return The parameter value.
-     */
-    long getLong(unsigned int index) const;
-
-    /**
-     * Sets a long integer parameter.
-     *
-     * @param index Index of the parameter to set.
-     * @param value The parameter value.
-     */
-    void setLong(unsigned int index, long value);
-
-    /**
-     * Returns the value of the specified parameter as a float.
-     *
-     * @param index Index of the parameter to get.
-     *
-     * @return The parameter value.
-     */
-    float getFloat(unsigned int index) const;
-
-    /**
-     * Sets a float parameter.
-     *
-     * @param index Index of the parameter to set.
-     * @param value The parameter value.
-     */
-    void setFloat(unsigned int index, float value);
-
-    /**
-     * Returns the value of the specified parameter as a double.
-     *
-     * @param index Index of the parameter to get.
-     *
-     * @return The parameter value.
-     */
-    double getDouble(unsigned int index) const;
-
-    /**
-     * Sets a double parameter.
-     *
-     * @param index Index of the parameter to set.
-     * @param value The parameter value.
-     */
-    void setDouble(unsigned int index, double value);
-
-    /**
-     * Returns the value of the specified parameter as a boolean.
-     *
-     * @param index Index of the parameter to get.
-     *
-     * @return The parameter value.
-     */
-    bool getBoolean(unsigned int index) const;
-
-    /**
-     * Sets a long parameter.
-     *
-     * @param index Index of the parameter to set.
-     * @param value The parameter value.
-     */
-    void setBoolean(unsigned int index, bool value);
-
-    /**
-     * Returns the value of the specified parameter as a string.
-     *
-     * @param index Index of the parameter to get.
-     *
-     * @return The parameter value.
-     */
-    const char* getString(unsigned int index) const;
-
-    /**
-     * Sets a string parameter.
-     *
-     * @param index Index of the parameter to set.
-     * @param value The parameter value.
-     */
-    void setString(unsigned int index, const char* value);
-
-    /**
-     * Returns the number of parameters for this message.
-     * 
-     * @return The number of message parameters.
-     */
-    unsigned int getParameterCount() const;
-
-    /** 
-     * Returns the type of the specified parameter.
-     *
-     * @param index Index of the parameter to query.
-     *
-     * @return The parameter type.
-     */
-    ParameterType getParameterType(unsigned int index) const;
-
-private:
-
-    /**
-     * Internal message type enumeration.
-     */
-    enum MessageType
-    {
-        MESSAGE_TYPE_STATE_CHANGE,
-        MESSAGE_TYPE_CUSTOM
-    };
-
-    /**
-     * Defines a flexible message parameter.
-     */
-    struct Parameter
-    {
-        Parameter();
-
-        ~Parameter();
-
-        void clear();
-
-        union
-        {
-            int intValue;
-            long longValue;
-            float floatValue;
-            double doubleValue;
-            bool boolValue;
-            char* stringValue;
-        };
-
-        AIMessage::ParameterType type;
-    };
-
-    /**
-     * Constructor.
-     */
-    AIMessage();
-
-    /**
-     * Hidden copy constructor.
-     */
-    AIMessage(const AIMessage&);
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AIMessage& operator=(const AIMessage&);
-
-    /**
-     * Destructor (hidden - use AIMessage::destroy instead).
-     */
-    ~AIMessage();
-
-    /**
-     * Returns the delivery time for the message.
-     *
-     * @return The delivery time for the message, or zero if the message is not currently scheduled to be delivered.
-     */
-    double getDeliveryTime() const;
-
-    void clearParameter(unsigned int index);
-
-    unsigned int _id;
-    std::string _sender;
-    std::string _receiver;
-    double _deliveryTime;
-    Parameter* _parameters;
-    unsigned int _parameterCount;
-    MessageType _messageType;
-    AIMessage* _next;
-
-};
-
-}
-
-#endif

+ 0 - 82
gameplay/src/AIState.cpp

@@ -1,82 +0,0 @@
-#include "Base.h"
-#include "AIState.h"
-#include "AIAgent.h"
-#include "AIStateMachine.h"
-#include "Node.h"
-
-namespace gameplay
-{
-
-AIState* AIState::_empty = NULL;
-
-AIState::AIState(const char* id)
-    : _id(id), _listener(NULL)
-{
-}
-
-AIState::~AIState()
-{
-}
-
-AIState* AIState::create(const char* id)
-{
-    return new AIState(id);
-}
-
-const char* AIState::getId() const
-{
-    return _id.c_str();
-}
-
-void AIState::setListener(Listener* listener)
-{
-    _listener = listener;
-}
-
-void AIState::enter(AIStateMachine* stateMachine)
-{
-    if (_listener)
-        _listener->stateEnter(stateMachine->getAgent(), this);
-
-    Node* node = stateMachine->_agent->_node;
-    if (node)
-        node->fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(Node, stateEnter), dynamic_cast<void*>(node), this);
-}
-
-void AIState::exit(AIStateMachine* stateMachine)
-{
-    if (_listener)
-        _listener->stateExit(stateMachine->getAgent(), this);
-
-    Node* node = stateMachine->_agent->_node;
-    if (node)
-        node->fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(Node, stateExit), dynamic_cast<void*>(node), this);
-}
-
-void AIState::update(AIStateMachine* stateMachine, float elapsedTime)
-{
-    if (_listener)
-        _listener->stateUpdate(stateMachine->getAgent(), this, elapsedTime);
-
-    Node* node = stateMachine->_agent->_node;
-    if (node)
-        node->fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(Node, stateUpdate), dynamic_cast<void*>(node), this, elapsedTime);
-}
-
-AIState::Listener::~Listener()
-{
-}
-
-void AIState::Listener::stateEnter(AIAgent* agent, AIState* state)
-{
-}
-
-void AIState::Listener::stateExit(AIAgent* agent, AIState* state)
-{
-}
-
-void AIState::Listener::stateUpdate(AIAgent* agent, AIState* state, float elapsedTime)
-{
-}
-
-}

+ 0 - 136
gameplay/src/AIState.h

@@ -1,136 +0,0 @@
-#ifndef AISTATE_H_
-#define AISTATE_H_
-
-#include "Ref.h"
-
-namespace gameplay
-{
-
-class AIAgent;
-class AIStateMachine;
-
-/**
- * Defines a single state in an AIStateMachine.
- *
- * An AIState encapsulates a state and unit of work within an AI
- * state machine. Events can be programmed or scripted when the
- * state is entered, exited and each frame/tick in its update event.
- */
-class AIState : public Ref
-{
-    friend class AIStateMachine;
-
-public:
-
-    /**
-     * Interface for listening to AIState events.
-     */
-    class Listener
-    {
-    public:
-
-        /**
-         * Virtual destructor.
-         */
-        virtual ~Listener();
-
-        /** 
-         * Called when a state is entered.
-         *
-         * @param agent The AIAgent this state event is for.
-         * @param state The state that was entered.
-         */
-        virtual void stateEnter(AIAgent* agent, AIState* state);
-
-        /**
-         * Called when a state is exited.
-         *
-         * @param agent The AIAgent this state event is for.
-         * @param state The state that was exited.
-         */
-        virtual void stateExit(AIAgent* agent, AIState* state);
-
-        /**
-         * Called once per frame when for a state when it is active.
-         *
-         * This method is normally where the logic for a state is implemented.
-         *
-         * @param agent The AIAgent this state event is for.
-         * @param state The active AIState.
-         * @param elapsedTime The elapsed time, in milliseconds.
-         */
-        virtual void stateUpdate(AIAgent* agent, AIState* state, float elapsedTime);
-    };
-
-    /**
-     * Creates a new AISTate.
-     *
-     * @param id The ID of the new AIState.
-     *
-     * @return The new AIState.
-     * @script{create}
-     */
-    static AIState* create(const char* id);
-
-    /**
-     * Returns the ID of this state.
-     *
-     * @return The state ID.
-     */
-    const char* getId() const;
-
-    /**
-     * Sets a listener to dispatch state events to.
-     * 
-     * @param listener Listener to dispatch state events to, or NULL to disable event dispatching.
-     */
-    void setListener(Listener* listener);
-
-private:
-
-    /**
-     * Constructs a new AIState.
-     */
-    AIState(const char* id);
-
-    /**
-     * Destructor.
-     */
-    ~AIState();
-
-    /**
-     * Hidden copy constructor.
-     */
-    AIState(const AIState&);
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AIState& operator=(const AIState&);
-
-    /**
-     * Called by AIStateMachine when this state is being entered.
-     */
-    void enter(AIStateMachine* stateMachine);
-
-    /**
-     * Called by AIStateMachine when this state is being exited.
-     */
-    void exit(AIStateMachine* stateMachine);
-
-    /**
-     * Called by AIStateMachine once per frame to update this state when it is active.
-     */
-    void update(AIStateMachine* stateMachine, float elapsedTime);
-
-    std::string _id;
-    Listener* _listener;
-
-    // The default/empty state.
-    static AIState* _empty;
-
-};
-
-}
-
-#endif

+ 0 - 143
gameplay/src/AIStateMachine.cpp

@@ -1,143 +0,0 @@
-#include "Base.h"
-#include "AIStateMachine.h"
-#include "AIAgent.h"
-#include "AIMessage.h"
-#include "Game.h"
-
-namespace gameplay
-{
-
-AIStateMachine::AIStateMachine(AIAgent* agent)
-    : _agent(agent)
-{
-    GP_ASSERT(agent);
-    if (AIState::_empty)
-        AIState::_empty->addRef();
-    else
-        AIState::_empty = new AIState("");
-    _currentState = AIState::_empty;
-}
-
-AIStateMachine::~AIStateMachine()
-{
-    // Release all states
-    for (std::list<AIState*>::iterator itr = _states.begin(); itr != _states.end(); ++itr)
-    {
-        (*itr)->release();
-    }
-
-    if (AIState::_empty)
-    {
-        if (AIState::_empty->getRefCount() == 1)
-        {
-            SAFE_RELEASE(AIState::_empty);
-        }
-        else
-        {
-            AIState::_empty->release();
-        }
-    }
-}
-
-AIAgent* AIStateMachine::getAgent() const
-{
-    return _agent;
-}
-
-AIState* AIStateMachine::addState(const char* id)
-{
-    AIState* state = AIState::create(id);
-    _states.push_back(state);
-    return state;
-}
-
-void AIStateMachine::addState(AIState* state)
-{
-    state->addRef();
-    _states.push_back(state);
-}
-
-void AIStateMachine::removeState(AIState* state)
-{
-    std::list<AIState*>::iterator itr = std::find(_states.begin(), _states.end(), state);
-    if (itr != _states.end())
-    {
-        _states.erase(itr);
-        state->release();
-    }
-}
-
-AIState* AIStateMachine::getState(const char* id) const
-{
-    GP_ASSERT(id);
-
-    for (std::list<AIState*>::const_iterator itr = _states.begin(); itr != _states.end(); ++itr)
-    {
-        AIState* state = (*itr);
-
-        if (strcmp(id, state->getId()) == 0)
-            return state;
-    }
-
-    return NULL;
-}
-
-AIState* AIStateMachine::getActiveState() const
-{
-    return _currentState;
-}
-
-bool AIStateMachine::hasState(AIState* state) const
-{
-    GP_ASSERT(state);
-
-    return (std::find(_states.begin(), _states.end(), state) != _states.end());
-}
-
-AIState* AIStateMachine::setState(const char* id)
-{
-    AIState* state = getState(id);
-    if (state)
-        sendChangeStateMessage(state);
-    return state;
-}
-
-bool AIStateMachine::setState(AIState* state)
-{
-    if (hasState(state))
-    {
-        sendChangeStateMessage(state);
-        return true;
-    }
-
-    return false;
-}
-
-void AIStateMachine::sendChangeStateMessage(AIState* newState)
-{
-    AIMessage* message = AIMessage::create(0, _agent->getId(), _agent->getId(), 1);
-    message->_messageType = AIMessage::MESSAGE_TYPE_STATE_CHANGE;
-    message->setString(0, newState->getId());
-    Game::getInstance()->getAIController()->sendMessage(message);
-}
-
-void AIStateMachine::setStateInternal(AIState* state)
-{
-    GP_ASSERT(hasState(state));
-
-    // Fire the exit event for the current state
-    _currentState->exit(this);
-
-    // Set the new state
-    _currentState = state;
-
-    // Fire the enter event for the new state
-    _currentState->enter(this);
-}
-
-void AIStateMachine::update(float elapsedTime)
-{
-    _currentState->update(this, elapsedTime);
-}
-
-}

+ 0 - 161
gameplay/src/AIStateMachine.h

@@ -1,161 +0,0 @@
-#ifndef AISTATEMACHINE_H_
-#define AISTATEMACHINE_H_
-
-#include "AIState.h"
-
-namespace gameplay
-{
-
-class AIAgent;
-
-/**
- * Defines a simple AI state machine that can be used to program logic
- * for an AIAgent in a game.
- *
- * A state machine uses AIState objects to represent different states
- * of an object in the game. The state machine provides access to the
- * current state of an AI agent and it controls state changes as well.
- * When a new state is set, the stateExited event will be called for the
- * previous state, the stateEntered event will be called for the new state
- * and then the stateUpdate event will begin to be called each frame
- * while the new state is active.
- *
- * Communication of state changes is facilitated through the AIMessage class.
- * Messages are dispatched by the AIController and can be used for purposes
- * other than state changes as well. Messages may be sent to the state
- * machines of any other agents in a game and can contain any arbitrary
- * information. This mechanism provides a simple, flexible and easily
- * debuggable method for communicating between AI objects in a game.
- */
-class AIStateMachine
-{
-    friend class AIAgent;
-    friend class AIState;
-
-public:
-
-    /**
-     * Returns the AIAgent that owns this state machine.
-     *
-     * @return The AIAgent that owns this state machine.
-     */
-    AIAgent* getAgent() const;
-
-    /**
-     * Creates and adds a new state to the state machine.
-     *
-     * @param id ID of the new state.
-     *
-     * @return The newly created and added state.
-     */
-    AIState* addState(const char* id);
-
-    /**
-     * Adds a state to the state machine.
-     *
-     * The specified state may be shared by other state machines.
-     * Its reference count is increased while it is held by
-     * this state machine.
-     *
-     * @param state The state to add.
-     */
-    void addState(AIState* state);
-
-    /**
-     * Removes a state from the state machine.
-     *
-     * @param state The state to remove.
-     */
-    void removeState(AIState* state);
-
-    /**
-     * Returns a state registered with this state machine.
-     *
-     * @param id The ID of the state to return.
-     *
-     * @return The state with the given ID, or NULL if no such state exists.
-     */
-    AIState* getState(const char* id) const;
-
-    /**
-     * Returns the active state for this state machine.
-     *
-     * @return The active state for this state machine.
-     */
-    AIState* getActiveState() const;
-
-    /**
-     * Changes the state of this state machine to the given state.
-     *
-     * If no state with the given ID exists within this state machine,
-     * this method does nothing.
-     *
-     * @param id The ID of the new state.
-     *
-     * @return The new state, or NULL if no matching state could be found.
-     */
-    AIState* setState(const char* id);
-
-    /**
-     * Changes the state of this state machine to the given state.
-     *
-     * If the given state is not registered with this state machine,
-     * this method does nothing.
-     *
-     * @param state The new state.
-     *
-     * @return true if the state is successfully changed, false otherwise.
-     */
-    bool setState(AIState* state);
-
-private:
-
-    /**
-     * Constructor.
-     */
-    AIStateMachine(AIAgent* agent);
-
-    /**
-     * Destructor.
-     */
-    ~AIStateMachine();
-
-    /**
-     * Hidden copy constructor.
-     */
-    AIStateMachine(const AIStateMachine&);
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AIStateMachine& operator=(const AIStateMachine&);
-
-    /**
-     * Sends a message to change the state of this state machine.
-     */
-    void sendChangeStateMessage(AIState* newState);
-
-    /**
-     * Changes the active state of the state machine.
-     */
-    void setStateInternal(AIState* state);
-
-    /**
-     * Determines if the specified state exists within this state machine.
-     */
-    bool hasState(AIState* state) const;
-
-    /**
-     * Called by AIController to update the state machine each frame.
-     */
-    void update(float elapsedTime);
-
-    AIAgent* _agent;
-    AIState* _currentState;
-    std::list<AIState*> _states;
-
-};
-
-}
-
-#endif

+ 0 - 44
gameplay/src/AbsoluteLayout.cpp

@@ -1,44 +0,0 @@
-#include "Base.h"
-#include "Control.h"
-#include "AbsoluteLayout.h"
-#include "Container.h"
-
-namespace gameplay
-{
-
-static AbsoluteLayout* __instance;
-
-AbsoluteLayout::AbsoluteLayout()
-{
-}
-
-AbsoluteLayout::~AbsoluteLayout()
-{
-    __instance = NULL;
-}
-
-AbsoluteLayout* AbsoluteLayout::create()
-{
-    if (!__instance)
-    {
-        __instance = new AbsoluteLayout();
-    }
-    else
-    {
-        __instance->addRef();
-    }
-
-    return __instance;
-}
-
-Layout::Type AbsoluteLayout::getType()
-{
-    return Layout::LAYOUT_ABSOLUTE;
-}
-
-void AbsoluteLayout::update(const Container* container)
-{
-    // Nothing to do for absolute layout
-}
-
-}

+ 0 - 67
gameplay/src/AbsoluteLayout.h

@@ -1,67 +0,0 @@
-#ifndef ABSOLUTELAYOUT_H_
-#define ABSOLUTELAYOUT_H_
-
-#include "Layout.h"
-
-namespace gameplay
-{
-
-/**
- * Defines a Layout for forms and containers that requires the user
- * to specify absolute positions for all contained controls.
- */
-class AbsoluteLayout : public Layout
-{
-    friend class Form;
-    friend class Container;
-
-public:
-
-    /**
-     * Get the type of this Layout.
-     *
-     * @return Layout::LAYOUT_ABSOLUTE
-     */
-    Layout::Type getType();
-
-protected:
-
-    /**
-     * Update the controls contained by the specified container.
-     *
-     * An AbsoluteLayout does nothing to modify the layout of controls.
-     * It simply calls update() on any control that is dirty.
-     *
-     * @param container The container to update.
-     */
-    void update(const Container* container);
-
-private:
-    
-    /*
-     * Constructor.
-     */
-    AbsoluteLayout();
-    
-    /*
-     * Constructor.
-     */
-    AbsoluteLayout(const AbsoluteLayout& copy);
-    
-    /*
-     * Destructor.
-     */
-    virtual ~AbsoluteLayout();
-
-    /**
-     * Create an AbsoluteLayout.
-     *
-     * @return An AbsoluteLayout object.
-     */
-    static AbsoluteLayout* create();
-
-};
-
-}
-
-#endif

+ 0 - 478
gameplay/src/Animation.cpp

@@ -1,478 +0,0 @@
-#include "Base.h"
-#include "Animation.h"
-#include "AnimationController.h"
-#include "AnimationClip.h"
-#include "AnimationTarget.h"
-#include "Game.h"
-#include "Transform.h"
-#include "Properties.h"
-
-#define ANIMATION_INDEFINITE_STR "INDEFINITE"
-#define ANIMATION_DEFAULT_CLIP 0
-#define ANIMATION_ROTATE_OFFSET 0
-#define ANIMATION_SRT_OFFSET 3
-
-namespace gameplay
-{
-
-Animation::Animation(const char* id, AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, unsigned int type)
-    : _controller(Game::getInstance()->getAnimationController()), _id(id), _duration(0L), _defaultClip(NULL), _clips(NULL)
-{
-    createChannel(target, propertyId, keyCount, keyTimes, keyValues, type);
-
-    // Release the animation because a newly created animation has a ref count of 1 and the channels hold the ref to animation.
-    release();
-    GP_ASSERT(getRefCount() == 1);
-}
-
-Animation::Animation(const char* id, AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, float* keyInValue, float* keyOutValue, unsigned int type)
-    : _controller(Game::getInstance()->getAnimationController()), _id(id), _duration(0L), _defaultClip(NULL), _clips(NULL)
-{
-    createChannel(target, propertyId, keyCount, keyTimes, keyValues, keyInValue, keyOutValue, type);
-    // Release the animation because a newly created animation has a ref count of 1 and the channels hold the ref to animation.
-    release();
-    GP_ASSERT(getRefCount() == 1);
-}
-
-Animation::Animation(const char* id)
-    : _controller(Game::getInstance()->getAnimationController()), _id(id), _duration(0L), _defaultClip(NULL), _clips(NULL)
-{
-}
-
-Animation::~Animation()
-{
-    _channels.clear();
-
-    if (_defaultClip)
-    {
-        if (_defaultClip->isClipStateBitSet(AnimationClip::CLIP_IS_PLAYING_BIT))
-        {
-            GP_ASSERT(_controller);
-            _controller->unschedule(_defaultClip);
-        }
-        SAFE_RELEASE(_defaultClip);
-    }
-
-    if (_clips)
-    {
-        std::vector<AnimationClip*>::iterator clipIter = _clips->begin();
-
-        while (clipIter != _clips->end())
-        {
-            AnimationClip* clip = *clipIter;
-            GP_ASSERT(clip);
-            if (clip->isClipStateBitSet(AnimationClip::CLIP_IS_PLAYING_BIT))
-            {
-                GP_ASSERT(_controller);
-                _controller->unschedule(clip);
-            }
-            SAFE_RELEASE(clip);
-            clipIter++;
-        }
-        _clips->clear();
-    }
-    SAFE_DELETE(_clips);
-}
-
-Animation::Channel::Channel(Animation* animation, AnimationTarget* target, int propertyId, Curve* curve, unsigned long duration)
-    : _animation(animation), _target(target), _propertyId(propertyId), _curve(curve), _duration(duration)
-{
-    GP_ASSERT(_animation);
-    GP_ASSERT(_target);
-    GP_ASSERT(_curve);
-
-    // get property component count, and ensure the property exists on the AnimationTarget by getting the property component count.
-    GP_ASSERT(_target->getAnimationPropertyComponentCount(propertyId));
-    _curve->addRef();
-    _target->addChannel(this);
-    _animation->addRef();
-}
-
-Animation::Channel::Channel(const Channel& copy, Animation* animation, AnimationTarget* target)
-    : _animation(animation), _target(target), _propertyId(copy._propertyId), _curve(copy._curve), _duration(copy._duration)
-{
-    GP_ASSERT(_curve);
-    GP_ASSERT(_target);
-    GP_ASSERT(_animation);
-
-    _curve->addRef();
-    _target->addChannel(this);
-    _animation->addRef();
-}
-
-Animation::Channel::~Channel()
-{
-    SAFE_RELEASE(_curve);
-    SAFE_RELEASE(_animation);
-}
-
-Curve* Animation::Channel::getCurve() const
-{
-    return _curve;
-}
-
-const char* Animation::getId() const
-{
-    return _id.c_str();
-}
-
-unsigned long Animation::getDuration() const
-{
-    return _duration;
-}
-
-void Animation::createClips(const char* url)
-{
-    Properties* properties = Properties::create(url);
-    GP_ASSERT(properties);
-
-    Properties* pAnimation = (strlen(properties->getNamespace()) > 0) ? properties : properties->getNextNamespace();
-    GP_ASSERT(pAnimation);
-
-    int frameCount = pAnimation->getInt("frameCount");
-    if (frameCount <= 0)
-        GP_ERROR("The animation's frame count must be greater than 0.");
-
-    createClips(pAnimation, (unsigned int)frameCount);
-
-    SAFE_DELETE(properties);
-}
-
-AnimationClip* Animation::createClip(const char* id, unsigned long begin, unsigned long end)
-{
-    AnimationClip* clip = new AnimationClip(id, this, begin, end);
-    addClip(clip);
-    return clip;
-}
-
-AnimationClip* Animation::getClip(const char* id)
-{
-    // If id is NULL return the default clip.
-    if (id == NULL)
-    {
-        if (_defaultClip == NULL)
-            createDefaultClip();
-
-        return _defaultClip;
-    }
-    else
-    {
-        return findClip(id);
-    }
-}
-
-AnimationClip* Animation::getClip(unsigned int index) const
-{
-    if (_clips)
-        return _clips->at(index);
-
-    return NULL;
-}
-
-unsigned int Animation::getClipCount() const
-{
-    return _clips ? (unsigned int)_clips->size() : 0;
-}
-
-void Animation::play(const char* clipId)
-{
-    // If id is NULL, play the default clip.
-    if (clipId == NULL)
-    {
-        if (_defaultClip == NULL)
-            createDefaultClip();
-
-        _defaultClip->play();
-    }
-    else
-    {
-        // Find animation clip and play.
-        AnimationClip* clip = findClip(clipId);
-        if (clip != NULL)
-            clip->play();
-    }
-}
-
-void Animation::stop(const char* clipId)
-{
-    // If id is NULL, play the default clip.
-    if (clipId == NULL)
-    {
-        if (_defaultClip)
-            _defaultClip->stop();
-    }
-    else
-    {
-        // Find animation clip and play.
-        AnimationClip* clip = findClip(clipId);
-        if (clip != NULL)
-            clip->stop();
-    }
-}
-
-void Animation::pause(const char * clipId)
-{
-    if (clipId == NULL)
-    {
-        if (_defaultClip)
-            _defaultClip->pause();
-    }
-    else
-    {
-        AnimationClip* clip = findClip(clipId);
-        if (clip != NULL)
-            clip->pause();
-    }
-}
-
-bool Animation::targets(AnimationTarget* target) const
-{
-    for (std::vector<Animation::Channel*>::const_iterator itr = _channels.begin(); itr != _channels.end(); ++itr)
-    {
-        GP_ASSERT(*itr);
-        if ((*itr)->_target == target)
-        {
-            return true;
-        }
-    }
-    return false;
-}
-
-
-void Animation::createDefaultClip()
-{
-    _defaultClip = new AnimationClip("default_clip", this, 0.0f, _duration);
-}
-
-void Animation::createClips(Properties* animationProperties, unsigned int frameCount)
-{
-    GP_ASSERT(animationProperties);
-
-    Properties* pClip = animationProperties->getNextNamespace();
-
-    while (pClip != NULL && std::strcmp(pClip->getNamespace(), "clip") == 0)
-    {
-        int begin = pClip->getInt("begin");
-        int end = pClip->getInt("end");
-
-        AnimationClip* clip = createClip(pClip->getId(), ((float)begin / frameCount) * _duration, ((float)end / frameCount) * _duration);
-
-        const char* repeat = pClip->getString("repeatCount");
-        if (repeat)
-        {
-            if (strcmp(repeat, ANIMATION_INDEFINITE_STR) == 0)
-            {
-                clip->setRepeatCount(AnimationClip::REPEAT_INDEFINITE);
-            }
-            else
-            {
-                float value;
-                sscanf(repeat, "%f", &value);
-                clip->setRepeatCount(value);
-            }
-        }
-
-        const char* speed = pClip->getString("speed");
-        if (speed)
-        {
-            float value;
-            sscanf(speed, "%f", &value);
-            clip->setSpeed(value);
-        }
-
-        clip->setLoopBlendTime(pClip->getFloat("loopBlendTime")); // returns zero if not specified
-
-        pClip = animationProperties->getNextNamespace();
-    }
-}
-
-void Animation::addClip(AnimationClip* clip)
-{
-    if (_clips == NULL)
-        _clips = new std::vector<AnimationClip*>;
-
-    GP_ASSERT(clip);
-    _clips->push_back(clip);
-}
-
-AnimationClip* Animation::findClip(const char* id) const
-{
-    if (_clips)
-    {
-        size_t clipCount = _clips->size();
-        for (size_t i = 0; i < clipCount; i++)
-        {
-            AnimationClip* clip = _clips->at(i);
-            GP_ASSERT(clip);
-            if (clip->_id.compare(id) == 0)
-            {
-                return clip;
-            }
-        }
-    }
-    return NULL;
-}
-
-Animation::Channel* Animation::createChannel(AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, unsigned int type)
-{
-    GP_ASSERT(target);
-    GP_ASSERT(keyTimes);
-    GP_ASSERT(keyValues);
-
-    unsigned int propertyComponentCount = target->getAnimationPropertyComponentCount(propertyId);
-    GP_ASSERT(propertyComponentCount > 0);
-
-    Curve* curve = Curve::create(keyCount, propertyComponentCount);
-    GP_ASSERT(curve);
-    if (target->_targetType == AnimationTarget::TRANSFORM)
-        setTransformRotationOffset(curve, propertyId);
-
-    unsigned int lowest = keyTimes[0];
-    unsigned long duration = keyTimes[keyCount-1] - lowest;
-
-    float* normalizedKeyTimes = new float[keyCount];
-
-    normalizedKeyTimes[0] = 0.0f;
-    curve->setPoint(0, normalizedKeyTimes[0], keyValues, (Curve::InterpolationType) type);
-
-    unsigned int pointOffset = propertyComponentCount;
-    unsigned int i = 1;
-    for (; i < keyCount - 1; i++)
-    {
-        normalizedKeyTimes[i] = (float) (keyTimes[i] - lowest) / (float) duration;
-        curve->setPoint(i, normalizedKeyTimes[i], (keyValues + pointOffset), (Curve::InterpolationType) type);
-        pointOffset += propertyComponentCount;
-    }
-    if (keyCount > 1) {
-        i = keyCount - 1;
-        normalizedKeyTimes[i] = 1.0f;
-        curve->setPoint(i, normalizedKeyTimes[i], keyValues + pointOffset, (Curve::InterpolationType) type);
-    }
-
-    SAFE_DELETE_ARRAY(normalizedKeyTimes);
-
-    Channel* channel = new Channel(this, target, propertyId, curve, duration);
-    curve->release();
-    addChannel(channel);
-    return channel;
-}
-
-Animation::Channel* Animation::createChannel(AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, float* keyInValue, float* keyOutValue, unsigned int type)
-{
-    GP_ASSERT(target);
-    GP_ASSERT(keyTimes);
-    GP_ASSERT(keyValues);
-
-    unsigned int propertyComponentCount = target->getAnimationPropertyComponentCount(propertyId);
-    GP_ASSERT(propertyComponentCount > 0);
-
-    Curve* curve = Curve::create(keyCount, propertyComponentCount);
-    GP_ASSERT(curve);
-    if (target->_targetType == AnimationTarget::TRANSFORM)
-        setTransformRotationOffset(curve, propertyId);
-
-    unsigned long lowest = keyTimes[0];
-    unsigned long duration = keyTimes[keyCount-1] - lowest;
-
-    float* normalizedKeyTimes = new float[keyCount];
-
-    normalizedKeyTimes[0] = 0.0f;
-    curve->setPoint(0, normalizedKeyTimes[0], keyValues, (Curve::InterpolationType) type, keyInValue, keyOutValue);
-
-    unsigned int pointOffset = propertyComponentCount;
-    unsigned int i = 1;
-    for (; i < keyCount - 1; i++)
-    {
-        normalizedKeyTimes[i] = (float) (keyTimes[i] - lowest) / (float) duration;
-        curve->setPoint(i, normalizedKeyTimes[i], (keyValues + pointOffset), (Curve::InterpolationType) type, (keyInValue + pointOffset), (keyOutValue + pointOffset));
-        pointOffset += propertyComponentCount;
-    }
-    i = keyCount - 1;
-    normalizedKeyTimes[i] = 1.0f;
-    curve->setPoint(i, normalizedKeyTimes[i], keyValues + pointOffset, (Curve::InterpolationType) type, keyInValue + pointOffset, keyOutValue + pointOffset);
-
-    SAFE_DELETE_ARRAY(normalizedKeyTimes);
-
-    Channel* channel = new Channel(this, target, propertyId, curve, duration);
-    curve->release();
-    addChannel(channel);
-    return channel;
-}
-
-void Animation::addChannel(Channel* channel)
-{
-    GP_ASSERT(channel);
-    _channels.push_back(channel);
-
-    if (channel->_duration > _duration)
-        _duration = channel->_duration;
-}
-
-void Animation::removeChannel(Channel* channel)
-{
-    std::vector<Animation::Channel*>::iterator itr = _channels.begin();
-    while (itr != _channels.end())
-    {
-        Animation::Channel* chan = *itr;
-        if (channel == chan)
-        {
-            _channels.erase(itr);
-            return;
-        }
-        else
-        {
-            itr++;
-        }
-    }
-}
-
-void Animation::setTransformRotationOffset(Curve* curve, unsigned int propertyId)
-{
-    GP_ASSERT(curve);
-
-    switch (propertyId)
-    {
-    case Transform::ANIMATE_ROTATE:
-    case Transform::ANIMATE_ROTATE_TRANSLATE:
-        curve->setQuaternionOffset(ANIMATION_ROTATE_OFFSET);
-        return;
-    case Transform::ANIMATE_SCALE_ROTATE:
-    case Transform::ANIMATE_SCALE_ROTATE_TRANSLATE:
-        curve->setQuaternionOffset(ANIMATION_SRT_OFFSET);
-        return;
-    }
-
-    return;
-}
-
-Animation* Animation::clone(Channel* channel, AnimationTarget* target)
-{
-    GP_ASSERT(channel);
-
-    Animation* animation = new Animation(getId());
-
-    Animation::Channel* channelCopy = new Animation::Channel(*channel, animation, target);
-    animation->addChannel(channelCopy);
-    // Release the animation because a newly created animation has a ref count of 1 and the channels hold the ref to animation.
-    animation->release();
-    GP_ASSERT(animation->getRefCount() == 1);
-
-    // Clone the clips
-    
-    if (_defaultClip)
-    {
-        animation->_defaultClip = _defaultClip->clone(animation);
-    }
-    
-    if (_clips)
-    {
-        for (std::vector<AnimationClip*>::iterator it = _clips->begin(); it != _clips->end(); ++it)
-        {
-            AnimationClip* newClip = (*it)->clone(animation);
-            animation->addClip(newClip);
-        }
-    }
-    return animation;
-}
-
-}

+ 0 - 241
gameplay/src/Animation.h

@@ -1,241 +0,0 @@
-#ifndef ANIMATION_H_
-#define ANIMATION_H_
-
-#include "Ref.h"
-#include "Properties.h"
-#include "Curve.h"
-
-namespace gameplay
-{
-
-class AnimationTarget;
-class AnimationController;
-class AnimationClip;
-
-/**
- * Defines a generic property animation.
- *
- * To run an animation you must play an AnimationClip.
- * Every Animation has the default clip which will run from begin-end time.
- * You can create additional clips to run only parts of an animation and control
- * various runtime characteristics, such as repeat count, etc.
- *
- * @see http://gameplay3d.github.io/GamePlay/docs/file-formats.html#wiki-Animation
- */
-class Animation : public Ref
-{
-    friend class AnimationClip;
-    friend class AnimationTarget;
-    friend class Bundle;
-
-public:
-
-    /**
-     * Gets the Animation's ID.
-     *
-     * @return The Animation's ID.
-     */
-    const char* getId() const;
-
-    /**
-     * Gets the Animation's duration.
-     *
-     * @return The Animation's duration (in milliseconds).
-     */
-    unsigned long getDuration() const;
-
-    /**
-     * Creates an AnimationClip from the Properties object defined at the specified URL,
-     * where the URL is of the format "<file-path>.<extension>#<namespace-id>/<namespace-id>/.../<namespace-id>"
-     * (and "#<namespace-id>/<namespace-id>/.../<namespace-id>" is optional).
-     *
-     * @param url The URL pointing to the Properties object containing the clip definitions.
-     */
-    void createClips(const char* url);
-
-    /**
-     * Creates an AnimationClip from the Animation.
-     *
-     * @param id The ID to the give the AnimationClip.
-     * @param begin The begin time (in milliseconds) or keyframe(for keyframe animations).
-     * @param end The end time (in milliseconds) or keyframe (for keyframe animations).
-     *
-     * @return The newly created AnimationClip; NULL if an AnimationClip already exists with the same ID.
-     * @script{create}
-     */
-    AnimationClip* createClip(const char* id, unsigned long begin, unsigned long end);
-
-    /**
-     * Finds the AnimationClip with the specified name. If NULL, gets the default clip.
-     *
-     * @param clipId The ID of the AnimationClip to get.
-     *
-     * @return The AnimationClip with the specified ID; NULL if an AnimationClip with the given ID is not found.
-     */
-    AnimationClip* getClip(const char* clipId = NULL);
-
-    /**
-     * Returns the AnimationClip at the given index.
-     *
-     * @param index Index of the clip to return.
-     */
-    AnimationClip* getClip(unsigned int index) const;
-
-    /**
-     * Returns the number of animation clips in this animation.
-     */
-    unsigned int getClipCount() const;
-
-    /**
-     * Plays the AnimationClip with the specified name.
-     *
-     * @param clipId The ID of the AnimationClip to play. If NULL, plays the default clip.
-     */
-    void play(const char* clipId = NULL);
-
-    /**
-     * Stops the AnimationClip with the specified name.
-     *
-     * @param clipId The ID of the AnimationClip to stop. If NULL, stops the default clip.
-     */
-    void stop(const char* clipId = NULL);
-
-    /**
-     * Pauses the AnimationClip with the specified name.
-     *
-     * @param clipId The ID of the AnimationClip to pause. If NULL, pauses the default clip.
-     */
-    void pause(const char* clipId = NULL);
-
-    /**
-     * Returns true if this animation targets the given AnimationTarget.
-     */
-    bool targets(AnimationTarget* target) const;
-
-private:
-
-    /**
-     * Defines a channel which holds the target, target property, curve values, and duration.
-     *
-     * An animation can have 1 or more channels. All typical simple property animations
-     * will have 1 channel. Skeletal animation will have 1 channel per joint to be animated.
-     */
-    class Channel
-    {
-        friend class AnimationClip;
-        friend class Animation;
-        friend class AnimationTarget;
-
-    private:
-
-        Channel(Animation* animation, AnimationTarget* target, int propertyId, Curve* curve, unsigned long duration);
-        Channel(const Channel& copy, Animation* animation, AnimationTarget* target);
-        Channel(const Channel&); // Hidden copy constructor.
-        ~Channel();
-        Channel& operator=(const Channel&); // Hidden copy assignment operator.
-        Curve* getCurve() const;
-
-        Animation* _animation;                // Reference to the animation this channel belongs to.
-        AnimationTarget* _target;             // The target of this channel.
-        int _propertyId;                      // The target property this channel targets.
-        Curve* _curve;                        // The curve used to represent the animation data.
-        unsigned long _duration;              // The length of the animation (in milliseconds).
-    };
-
-    /**
-     * Hidden copy constructor.
-     */
-    Animation(const Animation& copy);
-
-    /**
-     * Constructor.
-     */
-    Animation(const char* id, AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, float* keyInValue, float* keyOutValue, unsigned int type);
-
-    /**
-     * Constructor.
-     */
-    Animation(const char* id, AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, unsigned int type);
-
-    /**
-     * Constructor.
-     */
-    Animation(const char* id);
-
-    /**
-     * Destructor.
-     */
-    ~Animation();
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    Animation& operator=(const Animation&);
-
-    /**
-     * Creates the default clip.
-     */
-    void createDefaultClip();
-
-    /**
-     * Creates AnimationClip's for this Animation from the specified Property object.
-     */
-    void createClips(Properties* animationProperties, unsigned int frameCount);
-
-    /**
-     * Adds a clip to this Animation.
-     */
-    void addClip(AnimationClip* clip);
-
-    /**
-     * Finds the clip with the given ID.
-     */
-    AnimationClip* findClip(const char* id) const;
-
-    /**
-     * Creates a channel within this animation.
-     */
-    Channel* createChannel(AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, unsigned int type);
-
-    /**
-     * Creates a channel within this animation.
-     */
-    Channel* createChannel(AnimationTarget* target, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, float* keyInValue, float* keyOutValue, unsigned int type);
-
-    /**
-     * Adds a channel to the animation.
-     */
-    void addChannel(Channel* channel);
-
-    /**
-     * Removes a channel from the animation.
-     */
-    void removeChannel(Channel* channel);
-
-    /**
-     * Sets the rotation offset in a Curve representing a Transform's animation data.
-     */
-    void setTransformRotationOffset(Curve* curve, unsigned int propertyId);
-
-    /**
-     * Clones this animation.
-     *
-     * @param channel The channel to clone and add to the animation.
-     * @param target The target of the animation.
-     *
-     * @return The newly created animation.
-     */
-    Animation* clone(Channel* channel, AnimationTarget* target);
-
-    AnimationController* _controller;       // The AnimationController that this Animation will run on.
-    std::string _id;                        // The Animation's ID.
-    unsigned long _duration;                // the length of the animation (in milliseconds).
-    std::vector<Channel*> _channels;        // The channels within this Animation.
-    AnimationClip* _defaultClip;            // The Animation's default clip.
-    std::vector<AnimationClip*>* _clips;    // All the clips created from this Animation.
-
-};
-
-}
-
-#endif

+ 0 - 692
gameplay/src/AnimationClip.cpp

@@ -1,692 +0,0 @@
-#include "Base.h"
-#include "AnimationClip.h"
-#include "Animation.h"
-#include "AnimationTarget.h"
-#include "Game.h"
-#include "Quaternion.h"
-#include "ScriptController.h"
-
-namespace gameplay
-{
-
-extern void splitURL(const std::string& url, std::string* file, std::string* id);
-
-AnimationClip::AnimationClip(const char* id, Animation* animation, unsigned long startTime, unsigned long endTime)
-    : _id(id), _animation(animation), _startTime(startTime), _endTime(endTime), _duration(_endTime - _startTime), 
-      _stateBits(0x00), _repeatCount(1.0f), _loopBlendTime(0), _activeDuration(_duration * _repeatCount), _speed(1.0f), _timeStarted(0), 
-      _elapsedTime(0), _crossFadeToClip(NULL), _crossFadeOutElapsed(0), _crossFadeOutDuration(0), _blendWeight(1.0f),
-      _beginListeners(NULL), _endListeners(NULL), _listeners(NULL), _listenerItr(NULL)
-{
-    GP_REGISTER_SCRIPT_EVENTS();
-
-    GP_ASSERT(_animation);
-    GP_ASSERT(0 <= startTime && startTime <= _animation->_duration && 0 <= endTime && endTime <= _animation->_duration);
-
-    for (size_t i = 0, count = _animation->_channels.size(); i < count; i++)
-    {
-        GP_ASSERT(_animation->_channels[i]);
-        GP_ASSERT(_animation->_channels[i]->getCurve());
-        _values.push_back(new AnimationValue(_animation->_channels[i]->getCurve()->getComponentCount()));
-    }
-}
-
-AnimationClip::~AnimationClip()
-{
-    std::vector<AnimationValue*>::iterator valueIter = _values.begin();
-    while (valueIter != _values.end())
-    {
-        SAFE_DELETE(*valueIter);
-        valueIter++;
-    }
-    _values.clear();
-
-    SAFE_RELEASE(_crossFadeToClip);
-    SAFE_DELETE(_beginListeners);
-    SAFE_DELETE(_endListeners);
-
-    if (_listeners)
-    {
-        *_listenerItr = _listeners->begin();
-        while (*_listenerItr != _listeners->end())
-        {
-            ListenerEvent* lEvt = **_listenerItr;
-            SAFE_DELETE(lEvt);
-            ++(*_listenerItr);
-        }
-        SAFE_DELETE(_listeners);
-    }
-    SAFE_DELETE(_listenerItr);
-}
-
-AnimationClip::ListenerEvent::ListenerEvent(Listener* listener, unsigned long eventTime)
-{
-    _listener = listener;
-    _eventTime = eventTime;
-}
-
-AnimationClip::ListenerEvent::~ListenerEvent()
-{
-}
-
-const char* AnimationClip::getTypeName() const
-{
-    return "AnimationClip";
-}
-
-const char* AnimationClip::getId() const
-{
-    return _id.c_str();
-}
-
-Animation* AnimationClip::getAnimation() const
-{
-    return _animation;
-}
-
-unsigned long AnimationClip::getStartTime() const
-{
-    return _startTime;
-}
-
-unsigned long AnimationClip::getEndTime() const
-{
-    return _endTime;
-}
-
-float AnimationClip::getElapsedTime() const
-{
-    return _elapsedTime;
-}
-
-void AnimationClip::setRepeatCount(float repeatCount)
-{
-    GP_ASSERT(repeatCount == REPEAT_INDEFINITE || repeatCount > 0.0f);
-
-    _repeatCount = repeatCount;
-
-    if (repeatCount == REPEAT_INDEFINITE)
-    {
-        _activeDuration = _duration + _loopBlendTime;
-    }
-    else
-    {
-        _activeDuration = _duration * _repeatCount;
-
-        if (repeatCount > 1.0f && _loopBlendTime > 0.0f)
-            _activeDuration += std::ceil(repeatCount - 1.0f) * _loopBlendTime;
-    }
-}
-
-float AnimationClip::getRepeatCount() const
-{
-    return _repeatCount;
-}
-
-void AnimationClip::setActiveDuration(unsigned long duration)
-{
-    GP_ASSERT(duration >= 0);
-
-    if (duration == REPEAT_INDEFINITE)
-    {
-        _activeDuration = _duration + _loopBlendTime;
-    }
-    else
-    {
-        _activeDuration = duration;
-        _repeatCount = (float)_activeDuration / (float)_duration;
-    }
-}
-
-unsigned long AnimationClip::getActiveDuration() const
-{
-    if (_repeatCount == REPEAT_INDEFINITE)
-        return REPEAT_INDEFINITE;
-
-    return _activeDuration;
-}
-
-unsigned long AnimationClip::getDuration() const
-{
-    return _duration;
-}
-
-void AnimationClip::setSpeed(float speed)
-{
-    _speed = speed;
-}
-
-float AnimationClip::getSpeed() const
-{
-    return _speed;
-}
-
-void AnimationClip::setBlendWeight(float blendWeight)
-{
-    _blendWeight = blendWeight;
-}
-
-float AnimationClip::getBlendWeight() const
-{
-    return _blendWeight;
-}
-
-void AnimationClip::setLoopBlendTime(float loopBlendTime)
-{
-    if (loopBlendTime < 0.0f)
-    {
-        _loopBlendTime = 0;
-    }
-    else
-    {
-        _loopBlendTime = (unsigned int)loopBlendTime;
-    }
-}
-
-float AnimationClip::getLoopBlendTime() const
-{
-    return _loopBlendTime;
-}
-
-bool AnimationClip::isPlaying() const
-{
-    return (isClipStateBitSet(CLIP_IS_PLAYING_BIT) && !isClipStateBitSet(CLIP_IS_PAUSED_BIT));
-}
-
-void AnimationClip::play()
-{
-    if (isClipStateBitSet(CLIP_IS_PLAYING_BIT))
-    {
-        // If paused, reset the bit and return.
-        if (isClipStateBitSet(CLIP_IS_PAUSED_BIT))
-        {
-            resetClipStateBit(CLIP_IS_PAUSED_BIT);
-            return;
-        }
-
-        // If the clip is set to be removed, reset the flag.
-        if (isClipStateBitSet(CLIP_IS_MARKED_FOR_REMOVAL_BIT))
-            resetClipStateBit(CLIP_IS_MARKED_FOR_REMOVAL_BIT);
-
-        // Set the state bit to restart.
-        setClipStateBit(CLIP_IS_RESTARTED_BIT);
-    }
-    else
-    {
-        setClipStateBit(CLIP_IS_PLAYING_BIT);
-        GP_ASSERT(_animation);
-        GP_ASSERT(_animation->_controller);
-        _animation->_controller->schedule(this);
-    }
-    
-    _timeStarted = Game::getGameTime();
-}
-
-void AnimationClip::stop()
-{
-    if (isClipStateBitSet(CLIP_IS_PLAYING_BIT))
-    {
-        // Reset the restarted and paused bits. 
-        resetClipStateBit(CLIP_IS_RESTARTED_BIT);
-        resetClipStateBit(CLIP_IS_PAUSED_BIT);
-
-        // Mark the clip to removed from the AnimationController.
-        setClipStateBit(CLIP_IS_MARKED_FOR_REMOVAL_BIT);
-    }
-}
-
-void AnimationClip::pause()
-{
-    if (isClipStateBitSet(CLIP_IS_PLAYING_BIT) && !isClipStateBitSet(CLIP_IS_MARKED_FOR_REMOVAL_BIT))
-    {
-        setClipStateBit(CLIP_IS_PAUSED_BIT);
-    }
-}
-
-void AnimationClip::crossFade(AnimationClip* clip, unsigned long duration)
-{
-    GP_ASSERT(clip);
-
-    // Check if the given clip is fading into this clip.
-    // We should reset the clip from fading out, and this one from fading in 
-    // in order to start the crossfade back the other way.
-    if (clip->isClipStateBitSet(CLIP_IS_FADING_OUT_BIT) && clip->_crossFadeToClip == this)
-    {
-        clip->resetClipStateBit(CLIP_IS_FADING_OUT_BIT);
-        clip->_crossFadeToClip->resetClipStateBit(CLIP_IS_FADING_IN_BIT);
-        SAFE_RELEASE(clip->_crossFadeToClip);
-    }
-
-    // If I already have a clip I'm fading to and it's not the same as the given clip release it.
-    // Assign the new clip and increase it's ref count.
-    if (_crossFadeToClip)
-    {
-        SAFE_RELEASE(_crossFadeToClip);
-    }
-
-    // Set and initialize the crossfade clip
-    _crossFadeToClip = clip;
-    _crossFadeToClip->addRef();
-    _crossFadeToClip->setClipStateBit(CLIP_IS_FADING_IN_BIT);
-    _crossFadeToClip->_blendWeight = 0.0f;
-    
-    // Set and initialize this clip to fade out
-    setClipStateBit(CLIP_IS_FADING_OUT_STARTED_BIT);
-    setClipStateBit(CLIP_IS_FADING_OUT_BIT);
-    _crossFadeOutElapsed = 0.0f;
-    _crossFadeOutDuration = duration;
-    
-    // If this clip is currently not playing, we should start playing it.
-    if (!isClipStateBitSet(CLIP_IS_PLAYING_BIT))
-        play();
-
-    // Start playing the cross fade clip.
-    _crossFadeToClip->play(); 
-}
-
-void AnimationClip::addListener(AnimationClip::Listener* listener, unsigned long eventTime)
-{
-    GP_ASSERT(listener);
-    GP_ASSERT(eventTime < _activeDuration);
-
-    ListenerEvent* listenerEvent = new ListenerEvent(listener, eventTime);
-
-    if (!_listeners)
-    {
-        _listeners = new std::list<ListenerEvent*>;
-        _listeners->push_front(listenerEvent);
-
-        _listenerItr = new std::list<ListenerEvent*>::iterator;
-        if (isClipStateBitSet(CLIP_IS_PLAYING_BIT))
-            *_listenerItr = _listeners->begin();
-    }
-    else
-    {
-        for (std::list<ListenerEvent*>::iterator itr = _listeners->begin(); itr != _listeners->end(); itr++)
-        {
-            GP_ASSERT(*itr);
-            if (eventTime < (*itr)->_eventTime)
-            {
-                itr = _listeners->insert(itr, listenerEvent);
-
-                // If playing, update the iterator if we need to.
-                // otherwise, it will just be set the next time the clip gets played.
-                if (isClipStateBitSet(CLIP_IS_PLAYING_BIT))
-                {
-                    float currentTime = fmodf(_elapsedTime, (float)_duration);
-                    GP_ASSERT(**_listenerItr || *_listenerItr == _listeners->end());
-                    if ((_speed >= 0.0f && currentTime < eventTime && (*_listenerItr == _listeners->end() || eventTime < (**_listenerItr)->_eventTime)) ||
-                        (_speed <= 0 && currentTime > eventTime && (*_listenerItr == _listeners->begin() || eventTime > (**_listenerItr)->_eventTime)))
-                    {
-                        *_listenerItr = itr;
-                    }
-                }
-                return;
-            }
-        }
-        _listeners->push_back(listenerEvent);
-    }
-}
-
-void AnimationClip::removeListener(AnimationClip::Listener* listener, unsigned long eventTime)
-{
-    if (_listeners)
-    {
-        GP_ASSERT(listener);
-        std::list<ListenerEvent*>::iterator iter = std::find_if(_listeners->begin(), _listeners->end(), [&](ListenerEvent* lst){ return lst->_eventTime == eventTime && lst->_listener == listener; });
-        if (iter != _listeners->end())
-        {
-            if (isClipStateBitSet(CLIP_IS_PLAYING_BIT))
-            {
-                float currentTime = fmodf(_elapsedTime, (float)_duration);
-                GP_ASSERT(**_listenerItr || *_listenerItr == _listeners->end());
-
-                // We the listener has not been triggered yet, then check if it is next to be triggered, remove it, and update the iterator
-                if (((_speed >= 0.0f && currentTime < eventTime) || (_speed <= 0 && currentTime > eventTime)) &&
-                    *iter == **_listenerItr)
-                {
-                    *_listenerItr = _listeners->erase(iter);
-                    return;
-                }
-            }
-            _listeners->erase(iter);
-        }
-    }
-}
-
-void AnimationClip::addBeginListener(AnimationClip::Listener* listener)
-{
-    if (!_beginListeners)
-        _beginListeners = new std::vector<Listener*>;
-
-    GP_ASSERT(listener);
-    _beginListeners->push_back(listener);
-}
-
-void AnimationClip::removeBeginListener(AnimationClip::Listener* listener)
-{
-    if (_beginListeners)
-    {
-        GP_ASSERT(listener);
-        std::vector<Listener*>::iterator iter = std::find(_beginListeners->begin(), _beginListeners->end(), listener);
-        if (iter != _beginListeners->end())
-        {
-            _beginListeners->erase(iter);
-        }
-    }
-}
-
-void AnimationClip::addEndListener(AnimationClip::Listener* listener)
-{
-    if (!_endListeners)
-        _endListeners = new std::vector<Listener*>;
-
-    GP_ASSERT(listener);
-    _endListeners->push_back(listener);
-}
-
-void AnimationClip::removeEndListener(AnimationClip::Listener* listener)
-{
-    if (_endListeners)
-    {
-        GP_ASSERT(listener);
-        std::vector<Listener*>::iterator iter = std::find(_endListeners->begin(), _endListeners->end(), listener);
-        if (iter != _endListeners->end())
-        {
-            _endListeners->erase(iter);
-        }
-    }
-}
-
-bool AnimationClip::update(float elapsedTime)
-{
-    if (isClipStateBitSet(CLIP_IS_PAUSED_BIT))
-    {
-        return false;
-    }
-
-    if (isClipStateBitSet(CLIP_IS_MARKED_FOR_REMOVAL_BIT))
-    {
-        // If the marked for removal bit is set, it means stop() was called on the AnimationClip at some point
-        // after the last update call. Reset the flag, and return true so the AnimationClip is removed from the 
-        // running clips on the AnimationController.
-        onEnd();
-        return true;
-    }
-
-    if (!isClipStateBitSet(CLIP_IS_STARTED_BIT))
-    {
-        // Clip is just starting
-        onBegin();
-    }
-    else
-    {
-        // Clip was already running
-        _elapsedTime += elapsedTime * _speed;
-
-        if (_repeatCount == REPEAT_INDEFINITE && _elapsedTime <= 0)
-        {
-            // Elapsed time is moving backwards, so wrap it back around the end when it falls below zero
-            _elapsedTime = _activeDuration + _elapsedTime;
-
-            // TODO: account for _loopBlendTime
-        }
-    }
-
-    // Current time within a loop of the clip
-    float currentTime = 0.0f;
-
-    // Check to see if clip is complete.
-    if (_repeatCount != REPEAT_INDEFINITE && ((_speed >= 0.0f && _elapsedTime >= _activeDuration) || (_speed <= 0.0f && _elapsedTime <= 0.0f)))
-    {
-        // We finished our active duration (including repeats), so clamp to our end value.
-        resetClipStateBit(CLIP_IS_STARTED_BIT);
-
-        // Ensure we end off at the endpoints of our clip (-speed==0, +speed==_duration)
-        currentTime = _speed < 0.0f ? 0.0f : _duration;
-    }
-    else
-    {
-        // If _duration == 0, we have a "pose". Just set currentTime to 0.
-        if (_duration == 0)
-        {
-            currentTime = 0.0f;
-        }
-        else
-        {
-            // Animation is running normally.
-            currentTime = fmodf(_elapsedTime, _duration + _loopBlendTime);
-        }
-    }
-
-    // Notify any listeners of Animation events.
-    if (_listeners)
-    {
-        GP_ASSERT(_listenerItr);
-
-        if (_speed >= 0.0f)
-        {
-            while (*_listenerItr != _listeners->end() && _elapsedTime >= (long) (**_listenerItr)->_eventTime)
-            {
-                GP_ASSERT(_listenerItr);
-                GP_ASSERT(**_listenerItr);
-                GP_ASSERT((**_listenerItr)->_listener);
-
-                (**_listenerItr)->_listener->animationEvent(this, Listener::TIME);
-                ++(*_listenerItr);
-            }
-        }
-        else
-        {
-            while (*_listenerItr != _listeners->begin() && _elapsedTime <= (long) (**_listenerItr)->_eventTime)
-            {
-                GP_ASSERT(_listenerItr);
-                GP_ASSERT(**_listenerItr);
-                GP_ASSERT((**_listenerItr)->_listener);
-
-                (**_listenerItr)->_listener->animationEvent(this, Listener::TIME);
-                --(*_listenerItr);
-            }
-        }
-    }
-
-    // Fire script update event
-    fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(AnimationClip, clipUpdate), this, _elapsedTime);
-
-    // Add back in start time, and divide by the total animation's duration to get the actual percentage complete
-    GP_ASSERT(_animation);
-
-    // Compute percentage complete for the current loop (prevent a divide by zero if _duration==0).
-    // Note that we don't use (currentTime/(_duration+_loopBlendTime)). That's because we want a
-    // % value that is outside the 0-1 range for loop smoothing/blending purposes.
-    float percentComplete = _duration == 0 ? 1 : currentTime / (float)_duration;
-
-    if (_loopBlendTime == 0.0f)
-        percentComplete = MATH_CLAMP(percentComplete, 0.0f, 1.0f);
-
-    // If we're cross fading, compute blend weights
-    if (isClipStateBitSet(CLIP_IS_FADING_OUT_BIT))
-    {
-        GP_ASSERT(_crossFadeToClip);
-        GP_ASSERT(_crossFadeOutDuration > 0);
-
-        if (isClipStateBitSet(CLIP_IS_FADING_OUT_STARTED_BIT)) // Calculate elapsed time since the fade out begin.
-        {
-            GP_ASSERT(_crossFadeToClip);
-            _crossFadeOutElapsed = (Game::getGameTime() - _crossFadeToClip->_timeStarted) * fabs(_speed); 
-            resetClipStateBit(CLIP_IS_FADING_OUT_STARTED_BIT);
-        }
-        else
-        {
-            // continue tracking elapsed time.
-            _crossFadeOutElapsed += elapsedTime * fabs(_speed);
-        }
-
-        if (_crossFadeOutElapsed < _crossFadeOutDuration)
-        {
-            // Calculate this clip's blend weight.
-            float tempBlendWeight = ((float)_crossFadeOutDuration - _crossFadeOutElapsed) / (float)_crossFadeOutDuration;
-            
-            // If this clip is fading in, adjust the crossfade clip's weight to be a percentage of your current blend weight
-            if (isClipStateBitSet(CLIP_IS_FADING_IN_BIT))
-            {
-                _crossFadeToClip->_blendWeight = (1.0f - tempBlendWeight) * _blendWeight;
-                _blendWeight -= _crossFadeToClip->_blendWeight;
-            }
-            else
-            {
-                // Just set the blend weight.
-                _crossFadeToClip->_blendWeight = (1.0f - tempBlendWeight);
-                _blendWeight = tempBlendWeight;
-            }
-        }
-        else
-        {
-            // Fade is done.
-            _crossFadeToClip->_blendWeight = 1.0f;
-            _blendWeight = 0.0f;
-            resetClipStateBit(CLIP_IS_STARTED_BIT);            
-            resetClipStateBit(CLIP_IS_FADING_OUT_BIT);
-            _crossFadeToClip->resetClipStateBit(CLIP_IS_FADING_IN_BIT);
-            SAFE_RELEASE(_crossFadeToClip);
-        }
-    }
-    
-    // Evaluate this clip.
-    Animation::Channel* channel = NULL;
-    AnimationValue* value = NULL;
-    AnimationTarget* target = NULL;
-    size_t channelCount = _animation->_channels.size();
-    float percentageStart = (float)_startTime / (float)_animation->_duration;
-    float percentageEnd = (float)_endTime / (float)_animation->_duration;
-    float percentageBlend = (float)_loopBlendTime / (float)_animation->_duration;
-    for (size_t i = 0; i < channelCount; i++)
-    {
-        channel = _animation->_channels[i];
-        GP_ASSERT(channel);
-        target = channel->_target;
-        GP_ASSERT(target);
-        value = _values[i];
-        GP_ASSERT(value);
-
-        // Evaluate the point on Curve
-        GP_ASSERT(channel->getCurve());
-        channel->getCurve()->evaluate(percentComplete, percentageStart, percentageEnd, percentageBlend, value->_value);
-
-        // Set the animation value on the target property.
-        target->setAnimationPropertyValue(channel->_propertyId, value, _blendWeight);
-    }
-
-    // When ended. Probably should move to it's own method so we can call it when the clip is ended early.
-    if (isClipStateBitSet(CLIP_IS_MARKED_FOR_REMOVAL_BIT) || !isClipStateBitSet(CLIP_IS_STARTED_BIT))
-    {
-        onEnd();
-        return true;
-    }
-
-    return false;
-}
-
-void AnimationClip::onBegin()
-{
-    this->addRef();
-
-    // Initialize animation to play.
-    setClipStateBit(CLIP_IS_STARTED_BIT);
-    if (_speed >= 0)
-    {
-        _elapsedTime = (Game::getGameTime() - _timeStarted) * _speed;
-
-        if (_listeners)
-            *_listenerItr = _listeners->begin();
-    }
-    else
-    {
-        _elapsedTime = _activeDuration + (Game::getGameTime() - _timeStarted) * _speed;
-
-        if (_listeners)
-            *_listenerItr = _listeners->end();
-    }
-    
-    // Notify begin listeners if any.
-    if (_beginListeners)
-    {
-        std::vector<Listener*>::iterator listener = _beginListeners->begin();
-        while (listener != _beginListeners->end())
-        {
-            GP_ASSERT(*listener);
-            (*listener)->animationEvent(this, Listener::BEGIN);
-            listener++;
-        }
-    }
-
-    // Fire script begin event
-    fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(AnimationClip, clipBegin), this);
-
-    this->release();
-}
-
-void AnimationClip::onEnd()
-{
-    this->addRef();
-
-    _blendWeight = 1.0f;
-    resetClipStateBit(CLIP_ALL_BITS);
-
-    // Notify end listeners if any.
-    if (_endListeners)
-    {
-        std::vector<Listener*>::iterator listener = _endListeners->begin();
-        while (listener != _endListeners->end())
-        {
-            GP_ASSERT(*listener);
-            (*listener)->animationEvent(this, Listener::END);
-            listener++;
-        }
-    }
-
-    // Fire script end event
-    fireScriptEvent<void>(GP_GET_SCRIPT_EVENT(AnimationClip, clipEnd), this);
-
-    this->release();
-}
-
-bool AnimationClip::isClipStateBitSet(unsigned char bit) const
-{
-    return (_stateBits & bit) == bit;
-}
-
-void AnimationClip::setClipStateBit(unsigned char bit)
-{
-    _stateBits |= bit;
-}
-
-void AnimationClip::resetClipStateBit(unsigned char bit)
-{
-    _stateBits &= ~bit;
-}
-
-AnimationClip* AnimationClip::clone(Animation* animation) const
-{
-    // Don't clone the elapsed time, listeners or crossfade information.
-    AnimationClip* newClip = new AnimationClip(getId(), animation, getStartTime(), getEndTime());
-    newClip->setSpeed(getSpeed());
-    newClip->setRepeatCount(getRepeatCount());
-    newClip->setBlendWeight(getBlendWeight());
-    
-    size_t size = _values.size();
-    newClip->_values.resize(size, NULL);
-    for (size_t i = 0; i < size; ++i)
-    {
-        if (newClip->_values[i] == NULL)
-        {
-            newClip->_values[i] = new AnimationValue(*_values[i]);
-        }
-        else
-        {
-            *newClip->_values[i] = *_values[i];
-        }
-    }
-    return newClip;
-}
-
-}

+ 0 - 414
gameplay/src/AnimationClip.h

@@ -1,414 +0,0 @@
-#ifndef ANIMATIONCLIP_H_
-#define ANIMATIONCLIP_H_
-
-#include "AnimationValue.h"
-#include "Curve.h"
-#include "Animation.h"
-#include "ScriptTarget.h"
-
-namespace gameplay
-{
-
-class Animation;
-class AnimationValue;
-
-/**
- * Defines the runtime session of an Animation to be played.
- */
-class AnimationClip : public Ref, public ScriptTarget
-{
-    friend class AnimationController;
-    friend class Animation;
-
-    GP_SCRIPT_EVENTS_START();
-    GP_SCRIPT_EVENT(clipBegin, "<AnimationClip>");
-    GP_SCRIPT_EVENT(clipEnd, "<AnimationClip>");
-    GP_SCRIPT_EVENT(clipUpdate, "<AnimationClip>f");
-    GP_SCRIPT_EVENTS_END();
-
-public:
-
-    /**
-     * Defines a constant for indefinitely repeating an AnimationClip.
-     */
-    static const unsigned int REPEAT_INDEFINITE = 0;
-
-    /**
-     * Defines an animation event listener.
-     */
-    class Listener
-    {
-        friend class AnimationClip;
-
-    public:
-
-        /**
-         * Constructor.
-         */
-        Listener() 
-        {
-        }
-
-        /**
-         * The type of animation event.
-         */
-        enum EventType 
-        {
-            /**
-             * Event fired when the clip begins.
-             */
-            BEGIN,
-
-            /**
-             * Event fired when the clip ends.
-             */
-            END,
-
-            /**
-             * Event fired at a specified time during a clip update.
-             */
-            TIME
-        };
-        
-        /*
-         * Destructor.
-         */
-        virtual ~Listener() { }
-
-        /**
-         * Handles when animation event occurs.
-         */
-        virtual void animationEvent(AnimationClip* clip, EventType type) = 0;
-    };
-
-    /**
-     * Extends ScriptTarget::getTypeName() to return the type name of this class.
-     *
-     * @return The type name of this class: "AnimationClip"
-     * @see ScriptTarget::getTypeName()
-     */
-    const char* getTypeName() const;
-
-    /**
-     * Gets the AnimationClip's ID.
-     *
-     * @return The AnimationClip's ID.
-     */
-    const char* getId() const;
-
-    /**
-     * Gets the Animation that this AnimationClip was created from.
-     * 
-     * @return The Animation that this clip was created from.
-     */
-    Animation* getAnimation() const;
-
-    /**
-     * Gets the AnimationClip's start time.
-     *
-     * @return The time (in milliseconds) that the AnimationClip starts playing from.
-     */
-    unsigned long getStartTime() const;
-
-    /**
-     * Gets the AnimationClip's end time.
-     * 
-     * @return The time (in milliseconds) that the AnimationClip will end.
-     */
-    unsigned long getEndTime() const;
-
-    /**
-     * Gets the AnimationClip's elapsed time.
-     *
-     * @return The elapsed time of the AnimationClip (in milliseconds).
-     */
-    float getElapsedTime() const;
-
-    /**
-     * Sets the AnimationClip's repeat count. Overrides repeat duration.
-     *
-     * Use REPEAT_INDEFINITE to play the AnimationClip indefinitely.
-     * 
-     * @param repeatCount The repeat count to set on the AnimationClip.
-     */
-    void setRepeatCount(float repeatCount);
-
-    /**
-     * Gets the AnimationClip's repeat count.
-     *
-     * @return The repeat count that is set on the AnimationClip.
-     */
-    float getRepeatCount() const;
-
-    /**
-     * Sets the AnimationClip's active duration. Overrides repeat count.
-     *
-     * Use REPEAT_INDEFINITE to play the AnimationClip indefinitely.
-     *
-     * @param duration The active duration that is set on the AnimationClip, in milliseconds.
-     */
-    void setActiveDuration(unsigned long duration);
-
-    /**
-     * Gets the AnimationClip's active duration.
-     * 
-     * @return the AnimationClip's active duration.
-     */
-    unsigned long getActiveDuration() const;
-
-    /**
-     * Gets the AnimationClip's duration.
-     *
-     * @return the AnimationClip's duration, in milliseconds.
-     */
-    unsigned long getDuration() const;
-
-    /**
-     * Set the AnimationClip's running speed. 
-     *
-     * @param speed The clips running speed.
-     */
-    void setSpeed(float speed);
-
-    /**
-     * Gets the AninimationClip's running speed.
-     *
-     * @return The AninimationClip's running speed.
-     */
-    float getSpeed() const;
-
-    /**
-     * Sets the blend weight of the AnimationClip.
-     *
-     * @param blendWeight The blend weight to apply to the clip.
-     */
-    void setBlendWeight(float blendWeight);
-
-    /** 
-     * Gets the blend weight of the AnimationClip.
-     *
-     * @return The blendweight of the AnimationClip.
-     */
-    float getBlendWeight() const;
-
-    /**
-     * Sets the time (in milliseconds) to append to the clip's active duration
-     * to use for blending the end points of the clip when looping.
-     *
-     * @param loopBlendTime Time spent blending end points of clip when looping.
-     */
-    void setLoopBlendTime(float loopBlendTime);
-
-    /**
-     * Returns the amount of time (in milliseconds) spent blending the clip's 
-     * end points when looping.
-     *
-     * @return Time spent blending end points of the clip when looping.
-     */
-    float getLoopBlendTime() const;
-
-    /**
-     * Checks if the AnimationClip is playing.
-     *
-     * @return true if the AnimationClip is playing; false if the AnimationClip is not playing.
-     */
-    bool isPlaying() const;
-
-    /**
-     * Plays the AnimationClip.
-     */
-    void play();
-
-    /**
-     * Stops the AnimationClip.
-     */
-    void stop();
-
-    /**
-     * Pauses the AnimationClip.
-     */
-    void pause();
-
-    /**
-     * Fades this clip out, and the specified clip in over the given duration.
-     *
-     * @param clip The clip to fade into.
-     * @param duration The duration of the fade.
-     */
-    void crossFade(AnimationClip* clip, unsigned long duration);
-
-    /**
-     * Adds an animation begin listener.
-     *
-     * @param listener The listener to be called when an AnimationClip begins.
-     */
-    void addBeginListener(AnimationClip::Listener* listener);
-
-    /**
-     * Removes an animation begin listener.
-     *
-     * @param listener The listener to be removed.
-     */
-    void removeBeginListener(AnimationClip::Listener* listener);
-
-    /**
-     * Adds an animation end listener.
-     *
-     * @param listener The listener to be called when an AnimationClip ends.
-     */
-    void addEndListener(AnimationClip::Listener* listener);
-
-    /**
-     * Removes an animation end listener.
-     *
-     * @param listener The listener to be removed.
-     */
-    void removeEndListener(AnimationClip::Listener* listener);
-
-    /**
-     * Adds an animation listener to be called back at the specified eventTime during the playback 
-     * of the AnimationClip.
-     *
-     * @param listener The listener to be called when the AnimationClip reaches the 
-     *      specified time in its playback.
-     * @param eventTime The time the listener will be called during the playback of the AnimationClip. 
-     *      Must be between 0 and the duration of the AnimationClip.
-     */
-    void addListener(AnimationClip::Listener* listener, unsigned long eventTime);
-
-    /**
-     * Removes an animation listener assigned to the specified eventTime.
-     *
-     * @param listener The listener to be removed with the specified time.
-     * @param eventTime The time of the listener to be removed.
-     */
-    void removeListener(AnimationClip::Listener* listener, unsigned long eventTime);
-
-private:
-    
-    static const unsigned char CLIP_IS_PLAYING_BIT = 0x01;             // Bit representing whether AnimationClip is a running clip in AnimationController
-    static const unsigned char CLIP_IS_STARTED_BIT = 0x02;             // Bit representing whether the AnimationClip has actually been started (ie: received first call to update())
-    static const unsigned char CLIP_IS_FADING_OUT_STARTED_BIT = 0x04;  // Bit representing that a cross fade has started.
-    static const unsigned char CLIP_IS_FADING_OUT_BIT = 0x08;          // Bit representing whether the clip is fading out.
-    static const unsigned char CLIP_IS_FADING_IN_BIT = 0x10;           // Bit representing whether the clip is fading out.
-    static const unsigned char CLIP_IS_MARKED_FOR_REMOVAL_BIT = 0x20;  // Bit representing whether the clip has ended and should be removed from the AnimationController.
-    static const unsigned char CLIP_IS_RESTARTED_BIT = 0x40;           // Bit representing if the clip should be restarted by the AnimationController.
-    static const unsigned char CLIP_IS_PAUSED_BIT = 0x80;              // Bit representing if the clip is currently paused.
-    static const unsigned char CLIP_ALL_BITS = 0xFF;                   // Bit mask for all the state bits.
-
-    /**
-     * ListenerEvent.
-     *
-     * Internal structure used for storing the event time at which an AnimationClip::Listener should be called back.
-     */
-    struct ListenerEvent
-    {
-        /** 
-         * Constructor.
-         */
-        ListenerEvent(Listener* listener, unsigned long eventTime);
-
-        /**
-         * Destructor.
-         */
-        ~ListenerEvent();
-
-        /**
-         * Hidden copy assignment operator.
-         */
-        ListenerEvent& operator=(const ListenerEvent&);
-
-        Listener* _listener;        // This listener to call back when this event is triggered.
-        unsigned long _eventTime;   // The time at which the listener will be called back at during the playback of the AnimationClip.
-    };
-
-    /**
-     * Constructor.
-     */
-    AnimationClip(const char* id, Animation* animation, unsigned long startTime, unsigned long endTime);
-
-    /**
-     * Constructor.
-     */
-    AnimationClip();
-
-    /**
-     * Constructor.
-     */
-    AnimationClip(const AnimationClip& copy);
-
-    /**
-     * Destructor.
-     */
-    ~AnimationClip();
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AnimationClip& operator=(const AnimationClip&);
-
-    /**
-     * Updates the animation with the elapsed time.
-     */
-    bool update(float elapsedTime);
-
-    /**
-     * Handles when the AnimationClip begins.
-     */
-    void onBegin();
-
-    /**
-     * Handles when the AnimationClip ends.
-     */
-    void onEnd();
-
-    /**
-     * Determines whether the given bit is set in the AnimationClip's state.
-     */
-    bool isClipStateBitSet(unsigned char bit) const;
-
-    /**
-     * Sets the given bit in the AnimationClip's state.
-     */
-    void setClipStateBit(unsigned char bit);
-
-    /**
-     * Resets the given bit in the AnimationClip's state.
-     */
-    void resetClipStateBit(unsigned char bit);
-
-    /**
-     * Clones the animation clip.
-     * 
-     * @param animation The animation that the new clip belongs to.
-     * 
-     * @return The newly created animation clip.
-     */
-    AnimationClip* clone(Animation* animation) const;
-
-    std::string _id;                                    // AnimationClip ID.
-    Animation* _animation;                              // The Animation this clip is created from.
-    unsigned long _startTime;                           // Start time of the clip.
-    unsigned long _endTime;                             // End time of the clip.
-    unsigned long _duration;                            // The total duration.
-    unsigned char _stateBits;                           // Bit flag used to keep track of the clip's current state.
-    float _repeatCount;                                 // The clip's repeat count.
-    unsigned int _loopBlendTime;                        // Time spent blending the last frame of animation with the first frame, when looping.
-    unsigned long _activeDuration;                      // The active duration of the clip.
-    float _speed;                                       // The speed that the clip is playing. Default is 1.0. Negative goes in reverse.
-    double _timeStarted;                                // The game time when this clip was actually started.
-    float _elapsedTime;                                 // Time elapsed while the clip is running.
-    AnimationClip* _crossFadeToClip;                    // The clip to cross fade to.
-    float _crossFadeOutElapsed;                         // The amount of time that has elapsed for the crossfade.
-    unsigned long _crossFadeOutDuration;                // The duration of the cross fade.
-    float _blendWeight;                                 // The clip's blendweight.
-    std::vector<AnimationValue*> _values;               // AnimationValue holder.
-    std::vector<Listener*>* _beginListeners;            // Collection of begin listeners on the clip.
-    std::vector<Listener*>* _endListeners;              // Collection of end listeners on the clip.
-    std::list<ListenerEvent*>* _listeners;              // Ordered collection of listeners on the clip.
-    std::list<ListenerEvent*>::iterator* _listenerItr;  // Iterator that points to the next listener event to be triggered.
-};
-
-}
-
-#endif

+ 0 - 136
gameplay/src/AnimationController.cpp

@@ -1,136 +0,0 @@
-#include "Base.h"
-#include "AnimationController.h"
-#include "Game.h"
-#include "Curve.h"
-
-namespace gameplay
-{
-
-AnimationController::AnimationController()
-    : _state(STOPPED)
-{
-}
-
-AnimationController::~AnimationController()
-{
-}
-
-void AnimationController::stopAllAnimations() 
-{
-    std::list<AnimationClip*>::iterator clipIter = _runningClips.begin();
-    while (clipIter != _runningClips.end())
-    {
-        AnimationClip* clip = *clipIter;
-        GP_ASSERT(clip);
-        clip->stop();
-        clipIter++;
-    }
-}
-
-AnimationController::State AnimationController::getState() const
-{
-    return _state;
-}
-
-void AnimationController::initialize()
-{
-    _state = IDLE;
-}
-
-void AnimationController::finalize()
-{
-    std::list<AnimationClip*>::iterator itr = _runningClips.begin();
-    for ( ; itr != _runningClips.end(); itr++)
-    {
-        AnimationClip* clip = *itr;
-        SAFE_RELEASE(clip);
-    }
-    _runningClips.clear();
-    _state = STOPPED;
-}
-
-void AnimationController::resume()
-{
-    if (_runningClips.empty())
-        _state = IDLE;
-    else
-        _state = RUNNING;
-}
-
-void AnimationController::pause()
-{
-    _state = PAUSED;
-}
-
-void AnimationController::schedule(AnimationClip* clip)
-{
-    if (_runningClips.empty())
-    {
-        _state = RUNNING;
-    }
-
-    GP_ASSERT(clip);
-    clip->addRef();
-    _runningClips.push_back(clip);
-}
-
-void AnimationController::unschedule(AnimationClip* clip)
-{
-    std::list<AnimationClip*>::iterator clipItr = _runningClips.begin();
-    while (clipItr != _runningClips.end())
-    {
-        AnimationClip* rClip = (*clipItr);
-        if (rClip == clip)
-        {
-            _runningClips.erase(clipItr);
-            SAFE_RELEASE(clip);
-            break;
-        }
-        clipItr++;
-    }
-
-    if (_runningClips.empty())
-        _state = IDLE;
-}
-
-void AnimationController::update(float elapsedTime)
-{
-    if (_state != RUNNING)
-        return;
-    
-    Transform::suspendTransformChanged();
-
-    // Loop through running clips and call update() on them.
-    std::list<AnimationClip*>::iterator clipIter = _runningClips.begin();
-    while (clipIter != _runningClips.end())
-    {
-        AnimationClip* clip = (*clipIter);
-        GP_ASSERT(clip);
-        clip->addRef();
-        if (clip->isClipStateBitSet(AnimationClip::CLIP_IS_RESTARTED_BIT))
-        {   // If the CLIP_IS_RESTARTED_BIT is set, we should end the clip and 
-            // move it from where it is in the running clips list to the back.
-            clip->onEnd();
-            clip->setClipStateBit(AnimationClip::CLIP_IS_PLAYING_BIT);
-            _runningClips.push_back(clip);
-            clipIter = _runningClips.erase(clipIter);
-        }
-        else if (clip->update(elapsedTime))
-        {
-            clip->release();
-            clipIter = _runningClips.erase(clipIter);
-        }
-        else
-        {
-            clipIter++;
-        }
-        clip->release();
-    }
-
-    Transform::resumeTransformChanged();
-
-    if (_runningClips.empty())
-        _state = IDLE;
-}
-
-}

+ 0 - 106
gameplay/src/AnimationController.h

@@ -1,106 +0,0 @@
-#ifndef ANIMATIONCONTROLLER_H_
-#define ANIMATIONCONTROLLER_H_
-
-#include "AnimationClip.h"
-#include "Animation.h"
-#include "AnimationTarget.h"
-#include "Properties.h"
-
-namespace gameplay
-{
-
-/**
- * Defines a class for controlling game animation.
- */
-class AnimationController
-{
-    friend class Game;
-    friend class Animation;
-    friend class AnimationClip;
-    friend class SceneLoader;
-
-public:
-
-    /** 
-     * Stops all AnimationClips currently playing on the AnimationController.
-     */
-    void stopAllAnimations();
-       
-private:
-
-    /**
-     * The states that the AnimationController may be in.
-     */
-    enum State
-    {
-        RUNNING,
-        IDLE,
-        PAUSED,
-        STOPPED
-    };
-
-    /**
-     * Constructor.
-     */
-    AnimationController();
-
-    /**
-     * Constructor.
-     */
-    AnimationController(const AnimationController& copy);
-
-    /**
-     * Destructor.
-     */
-    ~AnimationController();
-
-    /**
-     * Gets the controller's state.
-     *
-     * @return The current state.
-     */
-    State getState() const;
-
-    /**
-     * Callback for when the controller is initialized.
-     */
-    void initialize();
-
-    /*
-     * Callback for when the controller is finalized.
-     */
-    void finalize();
-
-    /**
-     * Resumes the AnimationController.
-     */
-    void resume();
-    
-    /**
-     * Pauses the AnimationController.
-     */
-    void pause();
-
-    /**
-     * Schedules an AnimationClip to run.
-     */
-    void schedule(AnimationClip* clip);
-
-    /**
-     * Unschedules an AnimationClip.
-     */
-    void unschedule(AnimationClip* clip);
-    
-    /**
-     * Callback for when the controller receives a frame update event.
-     */
-    void update(float elapsedTime);
-    
-    State _state;                                 // The current state of the AnimationController.
-    std::list<AnimationClip*> _runningClips;      // A list of running AnimationClips.
-};
-
-}
-
-#endif
-

+ 0 - 561
gameplay/src/AnimationTarget.cpp

@@ -1,561 +0,0 @@
-#include "Base.h"
-#include "AnimationTarget.h"
-#include "Animation.h"
-#include "Game.h"
-#include "Node.h"
-#include "MaterialParameter.h"
-
-#define ANIMATION_TARGET_INDEFINITE_STR "INDEFINITE"
-
-namespace gameplay
-{
-
-AnimationTarget::AnimationTarget()
-    : _targetType(SCALAR), _animationChannels(NULL)
-{
-}
-
-AnimationTarget::~AnimationTarget()
-{
-    if (_animationChannels)
-    {
-        std::vector<Animation::Channel*>::iterator itr = _animationChannels->begin();
-        while (itr != _animationChannels->end())
-        {
-            Animation::Channel* channel = (*itr);
-            GP_ASSERT(channel);
-            GP_ASSERT(channel->_animation);
-            channel->_animation->removeChannel(channel);
-            SAFE_DELETE(channel);
-            itr++;
-        }
-        _animationChannels->clear();
-        SAFE_DELETE(_animationChannels);
-    }
-}
-
-Animation* AnimationTarget::createAnimation(const char* id, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, Curve::InterpolationType type)
-{
-    GP_ASSERT(type != Curve::BEZIER && type != Curve::HERMITE);
-    GP_ASSERT(keyCount >= 1 && keyTimes && keyValues);
-
-    Animation* animation = new Animation(id, this, propertyId, keyCount, keyTimes, keyValues, type);
-
-    return animation;
-}
-
-Animation* AnimationTarget::createAnimation(const char* id, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, float* keyInValue, float* keyOutValue, Curve::InterpolationType type)
-{
-    GP_ASSERT(keyCount >= 1 && keyTimes && keyValues && keyInValue && keyOutValue);
-    Animation* animation = new Animation(id, this, propertyId, keyCount, keyTimes, keyValues, keyInValue, keyOutValue, type);
-
-    return animation;
-}
-
-Animation* AnimationTarget::createAnimation(const char* id, const char* url)
-{
-    Properties* p = Properties::create(url);
-    GP_ASSERT(p);
-
-    Animation* animation = createAnimation(id, (strlen(p->getNamespace()) > 0) ? p : p->getNextNamespace());
-
-    SAFE_DELETE(p);
-
-    return animation;
-}
-
-Animation* AnimationTarget::createAnimationFromTo(const char* id, int propertyId, float* from, float* to, Curve::InterpolationType type, unsigned long duration)
-{
-    GP_ASSERT(from);
-    GP_ASSERT(to);
-
-    const unsigned int propertyComponentCount = getAnimationPropertyComponentCount(propertyId);
-    GP_ASSERT(propertyComponentCount > 0);
-    float* keyValues = new float[2 * propertyComponentCount];
-
-    memcpy(keyValues, from, sizeof(float) * propertyComponentCount);
-    memcpy(keyValues + propertyComponentCount, to, sizeof(float) * propertyComponentCount);
-
-    unsigned int* keyTimes = new unsigned int[2];
-    keyTimes[0] = 0;
-    keyTimes[1] = (unsigned int)duration;
-
-    Animation* animation = createAnimation(id, propertyId, 2, keyTimes, keyValues, type);
-
-    SAFE_DELETE_ARRAY(keyValues);
-    SAFE_DELETE_ARRAY(keyTimes);
-
-    return animation;
-}
-
-Animation* AnimationTarget::createAnimationFromBy(const char* id, int propertyId, float* from, float* by, Curve::InterpolationType type, unsigned long duration)
-{
-    GP_ASSERT(from);
-    GP_ASSERT(by);
-
-    const unsigned int propertyComponentCount = getAnimationPropertyComponentCount(propertyId);
-    GP_ASSERT(propertyComponentCount > 0);
-    float* keyValues = new float[2 * propertyComponentCount];
-
-    memcpy(keyValues, from, sizeof(float) * propertyComponentCount);
-
-    convertByValues(propertyId, propertyComponentCount, from, by);
-    memcpy(keyValues + propertyComponentCount, by, sizeof(float) * propertyComponentCount);
-
-    unsigned int* keyTimes = new unsigned int[2];
-    keyTimes[0] = 0;
-    keyTimes[1] = (unsigned int)duration;
-
-    Animation* animation = createAnimation(id, propertyId, 2, keyTimes, keyValues, type);
-
-    SAFE_DELETE_ARRAY(keyValues);
-    SAFE_DELETE_ARRAY(keyTimes);
-
-    return animation;
-}
-
-Animation* AnimationTarget::createAnimation(const char* id, Properties* animationProperties)
-{
-    GP_ASSERT(animationProperties);
-    if (std::strcmp(animationProperties->getNamespace(), "animation") != 0)
-    {
-        GP_ERROR("Invalid animation namespace '%s'.", animationProperties->getNamespace());
-        return NULL;
-    }
-
-    const char* propertyIdStr = animationProperties->getString("property");
-    if (propertyIdStr == NULL)
-    {
-        GP_ERROR("Attribute 'property' must be specified for an animation.");
-        return NULL;
-    }
-
-    // Get animation target property id
-	int propertyId = getPropertyId(_targetType, propertyIdStr);
-    if (propertyId == -1)
-    {
-        GP_ERROR("Property ID is invalid.");
-        return NULL;
-    }
-
-    unsigned int keyCount = animationProperties->getInt("keyCount");
-    if (keyCount == 0)
-    {
-        GP_ERROR("Attribute 'keyCount' must be specified for an animation.");
-        return NULL;
-    }
-
-    const char* keyTimesStr = animationProperties->getString("keyTimes");
-    if (keyTimesStr == NULL)
-    {
-        GP_ERROR("Attribute 'keyTimes' must be specified for an animation.");
-        return NULL;
-    }
-
-    const char* keyValuesStr = animationProperties->getString("keyValues");
-    if (keyValuesStr == NULL)
-    {
-        GP_ERROR("Attribute 'keyValues' must be specified for an animation.");
-        return NULL;
-    }
-
-    const char* curveStr = animationProperties->getString("curve");
-    if (curveStr == NULL)
-    {
-        GP_ERROR("Attribute 'curve' must be specified for an animation.");
-        return NULL;
-    }
-
-    char delimeter = ' ';
-    size_t startOffset = 0;
-    size_t endOffset = std::string::npos;
-
-    unsigned int* keyTimes = new unsigned int[keyCount];
-    for (size_t i = 0; i < keyCount; i++)
-    {
-        endOffset = static_cast<std::string>(keyTimesStr).find_first_of(delimeter, startOffset);
-        if (endOffset != std::string::npos)
-        {
-            keyTimes[i] = std::strtoul(static_cast<std::string>(keyTimesStr).substr(startOffset, endOffset - startOffset).c_str(), NULL, 0);
-        }
-        else
-        {
-            keyTimes[i] = std::strtoul(static_cast<std::string>(keyTimesStr).substr(startOffset, static_cast<std::string>(keyTimesStr).length()).c_str(), NULL, 0);
-        }
-        startOffset = endOffset + 1;
-    }
-
-    startOffset = 0;
-    endOffset = std::string::npos;
-
-    int componentCount = getAnimationPropertyComponentCount(propertyId);
-    GP_ASSERT(componentCount > 0);
-
-    unsigned int components = keyCount * componentCount;
-
-    float* keyValues = new float[components];
-    for (unsigned int i = 0; i < components; i++)
-    {
-        endOffset = static_cast<std::string>(keyValuesStr).find_first_of(delimeter, startOffset);
-        if (endOffset != std::string::npos)
-        {
-            keyValues[i] = std::atof(static_cast<std::string>(keyValuesStr).substr(startOffset, endOffset - startOffset).c_str());
-        }
-        else
-        {
-            keyValues[i] = std::atof(static_cast<std::string>(keyValuesStr).substr(startOffset, static_cast<std::string>(keyValuesStr).length()).c_str());
-        }
-        startOffset = endOffset + 1;
-    }
-
-    const char* keyInStr = animationProperties->getString("keyIn");
-    float* keyIn = NULL;
-    if (keyInStr)
-    {
-        keyIn = new float[components];
-        startOffset = 0;
-        endOffset = std::string::npos;
-        for (unsigned int i = 0; i < components; i++)
-        {
-            endOffset = static_cast<std::string>(keyInStr).find_first_of(delimeter, startOffset);
-            if (endOffset != std::string::npos)
-            {
-                keyIn[i] = std::atof(static_cast<std::string>(keyInStr).substr(startOffset, endOffset - startOffset).c_str());
-            }
-            else
-            {
-                keyIn[i] = std::atof(static_cast<std::string>(keyInStr).substr(startOffset, static_cast<std::string>(keyInStr).length()).c_str());
-            }
-            startOffset = endOffset + 1;
-        }
-    }
-
-    const char* keyOutStr = animationProperties->getString("keyOut");
-    float* keyOut = NULL;
-    if (keyOutStr)
-    {
-        keyOut = new float[components];
-        startOffset = 0;
-        endOffset = std::string::npos;
-        for (unsigned int i = 0; i < components; i++)
-        {
-            endOffset = static_cast<std::string>(keyOutStr).find_first_of(delimeter, startOffset);
-            if (endOffset != std::string::npos)
-            {
-                keyOut[i] = std::atof(static_cast<std::string>(keyOutStr).substr(startOffset, endOffset - startOffset).c_str());
-            }
-            else
-            {
-                keyOut[i] = std::atof(static_cast<std::string>(keyOutStr).substr(startOffset, static_cast<std::string>(keyOutStr).length()).c_str());
-            }
-            startOffset = endOffset + 1;
-        }
-    }
-
-    int curve = Curve::getInterpolationType(curveStr);
-
-    Animation* animation = NULL;
-    if (keyIn && keyOut)
-    {
-        animation = createAnimation(id, propertyId, keyCount, keyTimes, keyValues, keyIn, keyOut, (Curve::InterpolationType)curve);
-    }
-    else
-    {
-        animation = createAnimation(id, propertyId, keyCount, keyTimes, keyValues, (Curve::InterpolationType) curve);
-    }
-
-    const char* repeat = animationProperties->getString("repeatCount");
-    if (repeat)
-    {
-        if (strcmp(repeat, ANIMATION_TARGET_INDEFINITE_STR) == 0)
-        {
-            animation->getClip()->setRepeatCount(AnimationClip::REPEAT_INDEFINITE);
-        }
-        else
-        {
-            float value;
-            sscanf(repeat, "%f", &value);
-            animation->getClip()->setRepeatCount(value);
-        }
-    }
-    
-    SAFE_DELETE_ARRAY(keyOut);
-    SAFE_DELETE_ARRAY(keyIn);
-    SAFE_DELETE_ARRAY(keyValues);
-    SAFE_DELETE_ARRAY(keyTimes);
-
-    Properties* pClip = animationProperties->getNextNamespace();
-    if (pClip && std::strcmp(pClip->getNamespace(), "clip") == 0)
-    {
-        int frameCount = animationProperties->getInt("frameCount");
-        if (frameCount <= 0)
-        {
-            GP_ERROR("Frame count must be greater than zero for a clip.");
-            return animation;
-        }
-        animation->createClips(animationProperties, (unsigned int) frameCount);
-    }
-    
-    return animation;
-}
-
-void AnimationTarget::destroyAnimation(const char* id)
-{
-    // Find the animation with the specified ID.
-    Animation::Channel* channel = getChannel(id);
-    if (channel == NULL)
-        return;
-
-    // Remove this target's channel from animation, and from the target's list of channels.
-    GP_ASSERT(channel->_animation);
-    channel->_animation->removeChannel(channel);
-    removeChannel(channel);
-
-    SAFE_DELETE(channel);
-}
-
-Animation* AnimationTarget::getAnimation(const char* id) const
-{
-    if (_animationChannels)
-    {
-        std::vector<Animation::Channel*>::iterator itr = _animationChannels->begin();
-        GP_ASSERT(*itr);
-
-        if (id == NULL)
-            return (*itr)->_animation;
-
-        Animation::Channel* channel = NULL;
-        for (; itr != _animationChannels->end(); itr++)
-        {
-            channel = (Animation::Channel*)(*itr);
-            GP_ASSERT(channel);
-            GP_ASSERT(channel->_animation);
-            if (channel->_animation->_id.compare(id) == 0)
-            {
-                return channel->_animation;
-            }
-        }
-    }
-
-    return NULL;
-}
-
-int AnimationTarget::getPropertyId(TargetType type, const char* propertyIdStr)
-{
-    GP_ASSERT(propertyIdStr);
-
-    if (type == AnimationTarget::TRANSFORM)
-    {
-        if (strcmp(propertyIdStr, "ANIMATE_SCALE") == 0)
-        {
-            return Transform::ANIMATE_SCALE;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_SCALE_X") == 0)
-        {
-            return Transform::ANIMATE_SCALE_X;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_SCALE_Y") == 0)
-        {
-            return Transform::ANIMATE_SCALE_Y;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_SCALE_Z") == 0)
-        {
-            return Transform::ANIMATE_SCALE_Z;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_ROTATE") == 0)
-        {
-            return Transform::ANIMATE_ROTATE;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_TRANSLATE") == 0)
-        {
-            return Transform::ANIMATE_TRANSLATE;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_TRANSLATE_X") == 0)
-        {
-            return Transform::ANIMATE_TRANSLATE_X;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_TRANSLATE_Y") == 0)
-        {
-            return Transform::ANIMATE_TRANSLATE_Y;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_TRANSLATE_Z") == 0)
-        {
-            return Transform::ANIMATE_TRANSLATE_Z;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_ROTATE_TRANSLATE") == 0)
-        {
-            return Transform::ANIMATE_ROTATE_TRANSLATE;
-        }
-        else if (strcmp(propertyIdStr, "ANIMATE_SCALE_ROTATE_TRANSLATE") == 0)
-        {
-            return Transform::ANIMATE_SCALE_ROTATE_TRANSLATE;
-        }
-    }
-    else
-    {
-        if (strcmp(propertyIdStr, "ANIMATE_UNIFORM") == 0)
-        {
-            return MaterialParameter::ANIMATE_UNIFORM;
-        }
-    }
-
-    return -1;
-}
-
-void AnimationTarget::addChannel(Animation::Channel* channel)
-{
-    if (_animationChannels == NULL)
-        _animationChannels = new std::vector<Animation::Channel*>;
-
-    GP_ASSERT(channel);
-    _animationChannels->push_back(channel);
-}
-
-void AnimationTarget::removeChannel(Animation::Channel* channel)
-{
-    if (_animationChannels)
-    {
-        std::vector<Animation::Channel*>::iterator itr = _animationChannels->begin();
-        for ( ; itr != _animationChannels->end(); itr++)
-        {
-            Animation::Channel* temp = *itr;
-            if (channel == temp)
-            {
-                _animationChannels->erase(itr);
-
-                if (_animationChannels->empty())
-                    SAFE_DELETE(_animationChannels);
-
-                return;
-            }
-        }
-    }
-}
-
-Animation::Channel* AnimationTarget::getChannel(const char* id) const
-{
-    if (_animationChannels)
-    {
-        std::vector<Animation::Channel*>::iterator itr = _animationChannels->begin();
-
-        if (id == NULL)
-            return (*itr);
-
-        Animation::Channel* channel = NULL;
-        for (; itr != _animationChannels->end(); itr++)
-        {
-            channel = (Animation::Channel*)(*itr);
-            GP_ASSERT(channel);
-            if (channel->_animation->_id.compare(id) == 0)
-            {
-                return channel;
-            }
-        }
-    }
-
-    return NULL;
-}
-
-void AnimationTarget::cloneInto(AnimationTarget* target, NodeCloneContext &context) const
-{
-    if (_animationChannels)
-    {
-        for (std::vector<Animation::Channel*>::const_iterator it = _animationChannels->begin(); it != _animationChannels->end(); ++it)
-        {
-            Animation::Channel* channel = *it;
-            GP_ASSERT(channel);
-            GP_ASSERT(channel->_animation);
-
-            Animation* animation = context.findClonedAnimation(channel->_animation);
-            if (animation != NULL)
-            {
-                Animation::Channel* channelCopy = new Animation::Channel(*channel, animation, target);
-                animation->addChannel(channelCopy);
-            }
-            else
-            {
-                // Clone the animation and register it with the context so that it only gets cloned once.
-                animation = channel->_animation->clone(channel, target);
-                context.registerClonedAnimation(channel->_animation, animation);
-            }
-        }
-    }
-}
-
-void AnimationTarget::convertByValues(unsigned int propertyId, unsigned int componentCount, float* from, float* by)
-{
-    if (_targetType == AnimationTarget::TRANSFORM)
-    {
-        switch(propertyId)
-        {
-            case Transform::ANIMATE_SCALE:
-            case Transform::ANIMATE_SCALE_UNIT:
-            case Transform::ANIMATE_SCALE_X:
-            case Transform::ANIMATE_SCALE_Y:
-            case Transform::ANIMATE_SCALE_Z:
-            {
-                convertScaleByValues(from, by, componentCount);
-                break;
-            }
-            case Transform::ANIMATE_TRANSLATE:
-            case Transform::ANIMATE_TRANSLATE_X:
-            case Transform::ANIMATE_TRANSLATE_Y:
-            case Transform::ANIMATE_TRANSLATE_Z:
-            {
-                convertByValues(from, by, componentCount);
-                break;
-            }
-            case Transform::ANIMATE_ROTATE:
-            {
-                convertQuaternionByValues(from, by);
-                break;
-            }
-            case Transform::ANIMATE_ROTATE_TRANSLATE:
-            {
-                convertQuaternionByValues(from, by);
-                convertByValues(from + 4, by + 4, 3);
-                break;
-            }
-            case Transform::ANIMATE_SCALE_ROTATE_TRANSLATE:
-            {
-                convertScaleByValues(from, by, 3);
-                convertQuaternionByValues(from + 3, by + 3);
-                convertByValues(from + 7, by + 7, 3);
-                break;
-            }
-        }
-    }
-    else
-    {
-        convertByValues(from, by, componentCount);
-    }
-}
-
-void AnimationTarget::convertQuaternionByValues(float* from, float* by)
-{
-    Quaternion qFrom(from);
-    Quaternion qBy(by);
-    qBy.multiply(qFrom);
-    memcpy(by, (float*)&qBy, sizeof(float) * 4);
-}
-
-void AnimationTarget::convertScaleByValues(float* from, float* by, unsigned int componentCount)
-{
-    for (unsigned int i = 0; i < componentCount; i++)
-    {
-        by[i] *= from[i];
-    }
-}
-
-void AnimationTarget::convertByValues(float* from, float* by, unsigned int componentCount)
-{
-    for (unsigned int i = 0; i < componentCount; i++)
-    {
-        by[i] += from[i];
-    }
-}
-
-}
-
-
-

+ 0 - 248
gameplay/src/AnimationTarget.h

@@ -1,248 +0,0 @@
-#ifndef ANIMATIONTARGET_H_
-#define ANIMATIONTARGET_H_
-
-#include "Curve.h"
-#include "AnimationController.h"
-
-namespace gameplay
-{
-
-class Animation;
-class AnimationValue;
-class NodeCloneContext;
-
-/**
- * Defines an interface allowing animation to target
- * an object for changing its animation properties.
- */
-class AnimationTarget
-{
-    friend class Animation;
-    friend class AnimationClip;
-
-public:
-
-    /**
-     * Creates an animation on this target from a set of key value and key time pairs.
-     * Cannot use Curve::BEZIER or CURVE::HERMITE as the interpolation type since they require tangents/control points.
-     *
-     * @param id The ID of the animation.
-     * @param propertyId The property on this target to animate.
-     * @param keyCount The number of keyframes in the animation. Must be greater than one.
-     * @param keyTimes The list of key times for the animation (in milliseconds).
-     * @param keyValues The list of key values for the animation.
-     * @param type The curve interpolation type.
-     *
-     * @return The newly created animation.
-     */
-    Animation* createAnimation(const char* id, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, Curve::InterpolationType type);
-
-    /**
-     * Creates an animation on this target from a set of key value and key time pairs.
-     *
-     * @param id The ID of the animation.
-     * @param propertyId The property on this target to animate.
-     * @param keyCount The number of keyframes in the animation. Must be greater than one.
-     * @param keyTimes The list of key times for the animation (in milliseconds).
-     * @param keyValues The list of key values for the animation.
-     * @param keyInValue The list of key in values for the animation.
-     * @param keyOutValue The list of key out values for the animation.
-     * @param type The curve interpolation type.
-     *
-     * @return The newly created animation.
-     */
-    Animation* createAnimation(const char* id, int propertyId, unsigned int keyCount, unsigned int* keyTimes, float* keyValues, float* keyInValue, float* keyOutValue, Curve::InterpolationType type);
-
-    /**
-     * Creates an animation on this target using the data from the Properties object defined at the specified URL,
-     * where the URL is of the format "<file-path>.<extension>#<namespace-id>/<namespace-id>/.../<namespace-id>"
-     * (and "#<namespace-id>/<namespace-id>/.../<namespace-id>" is optional).
-     *
-     * @param id The ID of the animation.
-     * @param url The URL pointing to the Properties object defining the animation data.
-     *
-     * @return The newly created animation.
-     */
-    Animation* createAnimation(const char* id, const char* url);
-
-    /**
-     * Creates an animation on this target using the data from the given properties object.
-     *
-     * @param id The ID of the animation.
-     * @param animationProperties The properties object defining the animation data.
-     *
-     * @return The newly created animation.
-     */
-    Animation* createAnimation(const char* id, Properties* animationProperties);
-
-    /**
-     * Creates a simple two keyframe from-to animation.
-     * Cannot use Curve::BEZIER or CURVE::HERMITE as the interpolation type since they require tangents/control points.
-     *
-     * @param id The ID of the animation.
-     * @param propertyId The property on this target to animate.
-     * @param from The values to animate from.
-     * @param to The values to animate to.
-     * @param type The curve interpolation type.
-     * @param duration The duration of the animation (in milliseconds).
-     *
-     * @return The newly created animation.
-     */
-    Animation* createAnimationFromTo(const char* id, int propertyId, float* from, float* to, Curve::InterpolationType type, unsigned long duration);
-
-    /**
-     * Creates a simple two keyframe from-by animation.
-     * Cannot use Curve::BEZIER or CURVE::HERMITE as the interpolation type since they require tangents/control points.
-     *
-     * @param id The ID of the animation.
-     * @param propertyId The property on this target to animate.
-     * @param from The values to animate from.
-     * @param by The values to animate by.
-     * @param type The curve interpolation type.
-     * @param duration The duration of the animation (in milliseconds).
-     *
-     * @return The newly created animation.
-     */
-    Animation* createAnimationFromBy(const char* id, int propertyId, float* from, float* by, Curve::InterpolationType type, unsigned long duration);
-
-    /**
-     * Destroys the animation with the specified ID. Destroys the first animation if ID is NULL.
-     *
-     * @param id The ID of the animation to destroy.
-     */
-    void destroyAnimation(const char* id = NULL);
-
-    /**
-     * Abstract method to return the property component count of the given property ID on the AnimationTarget.
-     *
-     * @param propertyId The ID of the property on the AnimationTarget to obtain the component count for.
-     *
-     * @return The property component count of the given property.
-     */
-    virtual unsigned int getAnimationPropertyComponentCount(int propertyId) const = 0;
-
-    /**
-     * Abstract method for getting the animation property value for the given property ID on the AnimationTarget.
-     *
-     * @param propertyId The ID of the property on the AnimationTarget to get the animation property value for.
-     * @param value The container to get the animation property value in.
-     */
-    virtual void getAnimationPropertyValue(int propertyId, AnimationValue* value) = 0;
-
-    /**
-     * Abstract method for setting the animation property value for the given property ID on the AnimationTarget.
-     *
-     * @param propertyId The ID of the property on the AnimationTarget to set the animation property value on.
-     * @param value The container to set the animation property value in.
-     * @param blendWeight The blend weight.
-     */
-    virtual void setAnimationPropertyValue(int propertyId, AnimationValue* value, float blendWeight = 1.0f) = 0;
-
-    /**
-     * Gets the animation with the specified ID. If the ID is NULL, this function will return the first animation it finds.
-     *
-     * @param id The name of the animation to get.
-     */
-    Animation* getAnimation(const char* id = NULL) const;
-
-protected:
-
-    /**
-     * The type of animation target.
-     */
-    enum TargetType
-    {
-        SCALAR,
-        TRANSFORM
-    };
-
-    /**
-     * Constructor.
-     */
-    AnimationTarget();
-
-    /**
-     * Destructor.
-     */
-    virtual ~AnimationTarget();
-
-	/**
-     * Gets the TargetType's property ID value for the specified property ID string.
-     *
-     * @param type The TargetType of the AnimationTarget.
-     * @param propertyIdStr The property ID string.
-     * @return The property ID value for the property ID string; -1 if the propertyIdStr does not exist
-     *    for the TargetType.
-     */
-    virtual int getPropertyId(TargetType type, const char* propertyIdStr);
-
-    /**
-     * Adds the given animation channel to this animation target.
-     *
-     * @param channel The animation channel to add.
-     */
-    void addChannel(Animation::Channel* channel);
-
-    /**
-     * Removes the given animation channel from this animation target.
-     *
-     * @param channel The animation channel to delete.
-     */
-    void removeChannel(Animation::Channel* channel);
-
-    /**
-     * Gets the Animation::Channel that belongs to the Animation with the specified ID.
-     *
-     * @param id The ID of the Animation the Channel belongs to.
-     */
-    Animation::Channel* getChannel(const char* id) const;
-
-    /**
-     * Copies data from this animation target into the given target for the purpose of cloning.
-     *
-     * @param target The target to copy into.
-     * @param context The clone context.
-     */
-    void cloneInto(AnimationTarget* target, NodeCloneContext &context) const;
-
-    /**
-     * The target's type.
-     *
-     * @see TargetType::SCALAR
-     * @see TargetType::TRANSFORM
-     */
-    TargetType _targetType;
-
-private:
-
-    /**
-     * Constructor.
-     */
-    AnimationTarget(const AnimationTarget& copy);
-
-    /**
-     * Converts by-value animations to to-value animations.
-     */
-    void convertByValues(unsigned int propertyId, unsigned int componentCount, float* from, float* by);
-
-    /**
-     * Converts a Quaternion by-value into a to-value.
-     */
-    void convertQuaternionByValues(float* from, float* by);
-
-    /**
-     * Converts a Scale by-value into a to-value.
-     */
-    void convertScaleByValues(float* from, float* by, unsigned int componentCount);
-
-    /**
-     * Converts a by-value into a to-value.
-     */
-    void convertByValues(float* from, float* by, unsigned int componentCount);
-
-    std::vector<Animation::Channel*>* _animationChannels;   // Collection of all animation channels that target the AnimationTarget
-
-};
-}
-
-#endif

+ 0 - 73
gameplay/src/AnimationValue.cpp

@@ -1,73 +0,0 @@
-#include "Base.h"
-#include "AnimationValue.h"
-
-namespace gameplay
-{
-
-AnimationValue::AnimationValue(unsigned int componentCount)
-  : _componentCount(componentCount), _componentSize(componentCount * sizeof(float))
-{
-    GP_ASSERT(_componentCount > 0);
-    _value = new float[_componentCount];
-}
-
-AnimationValue::AnimationValue(const AnimationValue& copy)
-{
-    _value = new float[copy._componentCount];
-    _componentSize = copy._componentSize;
-    _componentCount = copy._componentCount;
-    memcpy(_value, copy._value, _componentSize);
-}
-
-AnimationValue::~AnimationValue()
-{
-    SAFE_DELETE_ARRAY(_value);
-}
-
-AnimationValue& AnimationValue::operator=(const AnimationValue& v)
-{
-    if (this != &v)
-    {
-        if (_value == NULL || _componentSize != v._componentSize || _componentCount != v._componentCount)
-        {
-            _componentSize = v._componentSize;
-            _componentCount = v._componentCount;
-            SAFE_DELETE_ARRAY(_value);
-            _value = new float[v._componentCount];
-        }
-        memcpy(_value, v._value, _componentSize);
-    }
-    return *this;
-}
-
-float AnimationValue::getFloat(unsigned int index) const
-{
-    GP_ASSERT(index < _componentCount);
-    GP_ASSERT(_value);
-
-    return _value[index];
-}
-
-void AnimationValue::setFloat(unsigned int index, float value)
-{
-    GP_ASSERT(index < _componentCount);
-    GP_ASSERT(_value);
-
-    _value[index] = value;
-}
-
-void AnimationValue::getFloats(unsigned int index, float* values, unsigned int count) const
-{
-    GP_ASSERT(_value && values && index < _componentCount && (index + count) <= _componentCount);
-
-    memcpy(values, &_value[index], count * sizeof(float));
-}
-
-void AnimationValue::setFloats(unsigned int index, float* values, unsigned int count)
-{
-    GP_ASSERT(_value && values && index < _componentCount && (index + count) <= _componentCount);
-
-    memcpy(&_value[index], values, count * sizeof(float));
-}
-
-}

+ 0 - 88
gameplay/src/AnimationValue.h

@@ -1,88 +0,0 @@
-#ifndef ANIMATIONVALUE_H_
-#define ANIMATIONVALUE_H_
-
-#include "Animation.h"
-
-namespace gameplay
-{
-
-/**
- * Defines a running animation value which can have one or more floats.
- */
-class AnimationValue
-{
-    friend class AnimationClip;
-
-public:
-
-    /**
-     * Gets the value at the specified index.
-     *
-     * @param index The index of the component to get the value for.
-     *
-     * @return The float value at the specified index.
-     */
-    float getFloat(unsigned int index) const;
-
-    /**
-     * Sets the value at the specified index.
-     *
-     * @param index The index of the component to set the value for.
-     * @param value The value to set the component to.
-     */
-    void setFloat(unsigned int index, float value);
-
-    /**
-     * Copies one or more float values from this AnimationValue into the specified array.
-     *
-     * @param index The index to start copying from.
-     * @param values Pointer to float array to copy values into.
-     * @param count Number of values to copy.
-     */
-    void getFloats(unsigned int index, float* values, unsigned int count) const;
-
-    /**
-     * Copies one or more float values into the AnimationValue.
-     *
-     * @param index The index of the first component to set the value for.
-     * @param values Array of values to copy into the AnimationValue.
-     * @param count Number of values to in the array to copy in.
-     */
-    void setFloats(unsigned int index, float* values, unsigned int count);
-
-private:
-
-    /**
-     * Constructor.
-     */
-    AnimationValue();
-
-    /**
-     * Constructor.
-     */
-    AnimationValue(unsigned int componentCount);
-
-    /**
-     * Constructor.
-     */
-    AnimationValue(const AnimationValue& copy);
-
-    /**
-     * Destructor.
-     */
-    ~AnimationValue();
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AnimationValue& operator=(const AnimationValue& v);
-
-    unsigned int _componentCount;   // The number of float values for the property.
-    unsigned int _componentSize;    // The number of bytes of memory the property is.
-    float* _value;                  // The current value of the property.
-
-};
-
-}
-
-#endif

+ 0 - 516
gameplay/src/AudioBuffer.cpp

@@ -1,516 +0,0 @@
-#include "Base.h"
-#include "AudioBuffer.h"
-#include "FileSystem.h"
-
-namespace gameplay
-{
-
-// Audio buffer cache
-static std::vector<AudioBuffer*> __buffers;
-
-// Callbacks for loading an ogg file using Stream
-static size_t readStream(void* ptr, size_t size, size_t nmemb, void* datasource)
-{
-    GP_ASSERT(datasource);
-    Stream* stream = reinterpret_cast<Stream*>(datasource);
-    return stream->read(ptr, size, nmemb);
-}
-
-static int seekStream(void *datasource, ogg_int64_t offset, int whence)
-{
-    GP_ASSERT(datasource);
-    Stream* stream = reinterpret_cast<Stream*>(datasource);
-    return !stream->seek(offset, whence);
-}
-
-static int closeStream(void *datasource)
-{
-    GP_ASSERT(datasource);
-    Stream* stream = reinterpret_cast<Stream*>(datasource);
-    stream->close();
-    return 0;
-}
-
-static long tellStream(void* datasource)
-{
-    GP_ASSERT(datasource);
-    Stream* stream = reinterpret_cast<Stream*>(datasource);
-    return stream->position();
-}
-
-AudioBuffer::AudioBuffer(const char* path, ALuint* buffer, bool streamed)
-: _filePath(path), _streamed(streamed), _buffersNeededCount(0)
-{
-    memcpy(_alBufferQueue, buffer, sizeof(_alBufferQueue));
-}
-
-AudioBuffer::~AudioBuffer()
-{
-    // Remove the buffer from the cache.
-    unsigned int bufferCount = (unsigned int)__buffers.size();
-
-    if (!_streamed)
-    {
-        unsigned int bufferCount = (unsigned int)__buffers.size();
-        for (unsigned int i = 0; i < bufferCount; i++)
-        {
-            if (this == __buffers[i])
-            {
-                __buffers.erase(__buffers.begin() + i);
-                break;
-            }
-        }
-    }
-    else if (_streamStateOgg.get())
-    {
-        ov_clear(&_streamStateOgg->oggFile);
-    }
-
-    for (int i = 0; i < STREAMING_BUFFER_QUEUE_SIZE; i++)
-    {
-        if (_alBufferQueue[i])
-        {
-            AL_CHECK(alDeleteBuffers(1, &_alBufferQueue[i]));
-            _alBufferQueue[i] = 0;
-        }
-    }
-}
-
-AudioBuffer* AudioBuffer::create(const char* path, bool streamed)
-{
-    GP_ASSERT(path);
-
-    AudioBuffer* buffer = NULL;
-    if (!streamed)
-    {
-        unsigned int bufferCount = (unsigned int)__buffers.size();
-        for (unsigned int i = 0; i < bufferCount; i++)
-        {
-            buffer = __buffers[i];
-            GP_ASSERT(buffer);
-            if (buffer->_filePath.compare(path) == 0)
-            {
-                buffer->addRef();
-                return buffer;
-            }
-        }
-    }
-    ALuint alBuffer[STREAMING_BUFFER_QUEUE_SIZE];
-    memset(alBuffer, 0, sizeof(alBuffer));
-
-    // Create 1 buffer for non-streamed sounds or full queue for streamed ones.
-    unsigned int queueSize = streamed ? STREAMING_BUFFER_QUEUE_SIZE : 1;
-    for (unsigned int i = 0; i < queueSize; i++)
-    {
-        // Load audio data into a buffer.
-        AL_CHECK(alGenBuffers(1, &alBuffer[i]));
-        if (AL_LAST_ERROR())
-        {
-            GP_ERROR("Failed to create OpenAL buffer; alGenBuffers error: %d", AL_LAST_ERROR());
-            AL_CHECK(alDeleteBuffers(1, &alBuffer[i]));
-            return NULL;
-        }
-    }
-    
-    std::unique_ptr<AudioStreamStateWav> streamStateWav;
-    std::unique_ptr<AudioStreamStateOgg> streamStateOgg;
-
-    // Load sound file.
-    std::unique_ptr<Stream> stream(FileSystem::open(path));
-    if (stream.get() == NULL || !stream->canRead())
-    {
-        GP_ERROR("Failed to load audio file %s.", path);
-        goto cleanup;
-    }
-    
-    // Read the file header
-    char header[12];
-    if (stream->read(header, 1, 12) != 12)
-    {
-        GP_ERROR("Invalid header for audio file %s.", path);
-        goto cleanup;
-    }
-    
-    // Check the file format
-    if (memcmp(header, "RIFF", 4) == 0)
-    {
-        // Fill at least one buffer with sound data.
-        streamStateWav.reset(new AudioStreamStateWav());
-        if (!AudioBuffer::loadWav(stream.get(), alBuffer[0], streamed, streamStateWav.get()))
-        {
-            GP_ERROR("Invalid wave file: %s", path);
-            goto cleanup;
-        }
-    }
-    else if (memcmp(header, "OggS", 4) == 0)
-    {
-        // Fill at least one buffer with sound data.
-        streamStateOgg.reset(new AudioStreamStateOgg());
-        if (!AudioBuffer::loadOgg(stream.get(), alBuffer[0], streamed, streamStateOgg.get()))
-        {
-            GP_ERROR("Invalid ogg file: %s", path);
-            goto cleanup;
-        }
-    }
-    else
-    {
-        GP_ERROR("Unsupported audio file: %s", path);
-        goto cleanup;
-    }
-
-    buffer = new AudioBuffer(path, alBuffer, streamed);
-
-    buffer->_fileStream.reset(stream.release());
-    buffer->_streamStateWav.reset(streamStateWav.release());
-    buffer->_streamStateOgg.reset(streamStateOgg.release());
-    if (buffer->_streamStateWav.get())
-        buffer->_buffersNeededCount = (buffer->_streamStateWav->dataSize + STREAMING_BUFFER_SIZE - 1) / STREAMING_BUFFER_SIZE;
-    else if (buffer->_streamStateOgg.get())
-        buffer->_buffersNeededCount = (buffer->_streamStateOgg->dataSize + STREAMING_BUFFER_SIZE - 1) / STREAMING_BUFFER_SIZE;
-
-    if (!streamed)
-        __buffers.push_back(buffer);
-
-    return buffer;
-    
-cleanup:
-    for (unsigned int i = 0; i < STREAMING_BUFFER_QUEUE_SIZE; i++)
-    {
-        if (alBuffer[i])
-            AL_CHECK(alDeleteBuffers(1, &alBuffer[i]));
-    }
-    return NULL;
-}
-
-bool AudioBuffer::loadWav(Stream* stream, ALuint buffer, bool streamed, AudioStreamStateWav* streamState)
-{
-    GP_ASSERT(stream);
-
-    unsigned char data[12];
-    
-    // Verify the wave fmt magic value meaning format.
-    if (stream->read(data, 1, 8) != 8 || memcmp(data, "fmt ", 4) != 0 )
-    {
-        GP_ERROR("Failed to verify the magic value for the wave file format.");
-        return false;
-    }
-    
-    unsigned int section_size;
-    section_size  = data[7]<<24;
-    section_size |= data[6]<<16;
-    section_size |= data[5]<<8;
-    section_size |= data[4];
-
-    // Check for a valid pcm format.
-    if (stream->read(data, 1, 2) != 2 || data[1] != 0 || data[0] != 1)
-    {
-        GP_ERROR("Unsupported audio file format (must be a valid PCM format).");
-        return false;
-    }
-    
-    // Get the channel count (16-bit little-endian).
-    int channels;
-    if (stream->read(data, 1, 2) != 2)
-    {
-        GP_ERROR("Failed to read the wave file's channel count.");
-        return false;
-    }
-    channels  = data[1]<<8;
-    channels |= data[0];
-    
-    // Get the sample frequency (32-bit little-endian).
-    ALuint frequency;
-    if (stream->read(data, 1, 4) != 4)
-    {
-        GP_ERROR("Failed to read the wave file's sample frequency.");
-        return false;
-    }
-
-    frequency  = data[3]<<24;
-    frequency |= data[2]<<16;
-    frequency |= data[1]<<8;
-    frequency |= data[0];
-    
-    // The next 6 bytes hold the block size and bytes-per-second. 
-    // We don't need that info, so just read and ignore it. 
-    // We could use this later if we need to know the duration.
-    if (stream->read(data, 1, 6) != 6)
-    {
-        GP_ERROR("Failed to read past the wave file's block size and bytes-per-second.");
-        return false;
-    }
-    
-    // Get the bit depth (16-bit little-endian).
-    int bits;
-    if (stream->read(data, 1, 2) != 2)
-    {
-        GP_ERROR("Failed to read the wave file's bit depth.");
-        return false;
-    }
-    bits  = data[1]<<8;
-    bits |= data[0];
-    
-    // Now convert the given channel count and bit depth into an OpenAL format. 
-    ALuint format = 0;
-    if (bits == 8)
-    {
-        if (channels == 1)
-            format = AL_FORMAT_MONO8;
-        else if (channels == 2)
-            format = AL_FORMAT_STEREO8;
-    }
-    else if (bits == 16)
-    {
-        if (channels == 1)
-            format = AL_FORMAT_MONO16;
-        else if (channels == 2)
-            format = AL_FORMAT_STEREO16;
-    }
-    else
-    {
-        GP_ERROR("Incompatible wave file format: (%d, %d)", channels, bits);
-        return false;
-    }
-    
-    // Check against the size of the format header as there may be more data that we need to read.
-    if (section_size > 16)
-    {
-        unsigned int length = section_size - 16;
-
-        // Extension size is 2 bytes.
-        if (stream->read(data, 1, length) != length)
-        {
-            GP_ERROR("Failed to read extension size from wave file.");
-            return false;
-        }
-    }
-
-    // Read in the rest of the file a chunk (section) at a time.
-    while (true)
-    {
-        // Check if we are at the end of the file without reading the data.
-        if (stream->eof())
-        {
-            GP_ERROR("Failed to load wave file; file appears to have no data.");
-            return false;
-        }
-
-        // Read in the type of the next section of the file.
-        if (stream->read(data, 1, 4) != 4)
-        {
-            GP_ERROR("Failed to read next section type from wave file.");
-            return false;
-        }
-
-        // Data chunk.
-        if (memcmp(data, "data", 4) == 0)
-        {
-            // Read how much data is remaining and buffer it up.
-            unsigned int dataSize;
-            if (stream->read(&dataSize, sizeof(int), 1) != 1)
-            {
-                GP_ERROR("Failed to read size of data section from wave file.");
-                return false;
-            }
-
-            if (streamed)
-            {
-                // Save streaming state for later use.
-                streamState->dataStart = stream->position();
-                streamState->dataSize = dataSize;
-                streamState->format = format;
-                streamState->frequency = frequency;
-            
-                // Limit data size to STREAMING_BUFFER_SIZE.
-                if (dataSize > STREAMING_BUFFER_SIZE)
-                    dataSize = STREAMING_BUFFER_SIZE;
-            }
-
-            char* data = new char[dataSize];
-            if (stream->read(data, sizeof(char), dataSize) != dataSize)
-            {
-                GP_ERROR("Failed to load wave file; file is missing data.");
-                SAFE_DELETE_ARRAY(data);
-                return false;
-            }
-
-            AL_CHECK( alBufferData(buffer, format, data, dataSize, frequency) );
-            SAFE_DELETE_ARRAY(data);
-
-            // We've read the data, so return now.
-            return true;
-        }
-        // Other chunk - could be any of the following:
-        // - Fact ("fact")
-        // - Wave List ("wavl")
-        // - Silent ("slnt")
-        // - Cue ("cue ")
-        // - Playlist ("plst")
-        // - Associated Data List ("list")
-        // - Label ("labl")
-        // - Note ("note")
-        // - Labeled Text ("ltxt")
-        // - Sampler ("smpl")
-        // - Instrument ("inst")
-        else
-        {
-            // Store the name of the chunk so we can report errors informatively.
-            char chunk[5] = { 0 };
-            memcpy(chunk, data, 4);
-
-            // Read the chunk size.
-            if (stream->read(data, 1, 4) != 4)
-            {
-                GP_ERROR("Failed to read size of '%s' chunk from wave file.", chunk);
-                return false;
-            }
-
-            section_size  = data[3]<<24;
-            section_size |= data[2]<<16;
-            section_size |= data[1]<<8;
-            section_size |= data[0];
-
-            // Seek past the chunk.
-            if (stream->seek(section_size, SEEK_CUR) == false)
-            {
-                GP_ERROR("Failed to seek past '%s' chunk in wave file.", chunk);
-                return false;
-            }
-        }
-    }
-    return false;
-}
-
-bool AudioBuffer::loadOgg(Stream* stream, ALuint buffer, bool streamed, AudioStreamStateOgg* streamState)
-{
-    GP_ASSERT(stream);
-
-    vorbis_info* info;
-    ALenum format;
-    long result;
-    int section;
-    long size = 0;
-
-    stream->rewind();
-
-    ov_callbacks callbacks;
-    callbacks.read_func = readStream;
-    callbacks.seek_func = seekStream;
-    callbacks.close_func = closeStream;
-    callbacks.tell_func = tellStream;
-
-    if ((result = ov_open_callbacks(stream, &streamState->oggFile, NULL, 0, callbacks)) < 0)
-    {
-        GP_ERROR("Failed to open ogg file.");
-        return false;
-    }
-
-    info = ov_info(&streamState->oggFile, -1);
-    GP_ASSERT(info);
-    if (info->channels == 1)
-        format = AL_FORMAT_MONO16;
-    else
-        format = AL_FORMAT_STEREO16;
-
-    // size = #samples * #channels * 2 (for 16 bit).
-    long data_size = ov_pcm_total(&streamState->oggFile, -1) * info->channels * 2;
-
-    if (streamed)
-    {
-        // Save streaming state for later use.
-        streamState->dataStart = ov_pcm_tell(&streamState->oggFile);
-        streamState->dataSize = data_size;
-        streamState->format = format;
-        streamState->frequency = info->rate;
-        
-        // Limit data size to STREAMING_BUFFER_SIZE.
-        if (data_size > STREAMING_BUFFER_SIZE)
-            data_size = STREAMING_BUFFER_SIZE;
-    }
-
-    char* data = new char[data_size];
-
-    while (size < data_size)
-    {
-        result = ov_read(&streamState->oggFile, data + size, data_size - size, 0, 2, 1, &section);
-        if (result > 0)
-        {
-            size += result;
-        }
-        else if (result < 0)
-        {
-            SAFE_DELETE_ARRAY(data);
-            GP_ERROR("Failed to read ogg file; file is missing data.");
-            return false;
-        }
-        else
-        {
-            break;
-        }
-    }
-    
-    if (size == 0)
-    {
-        SAFE_DELETE_ARRAY(data);
-        GP_ERROR("Filed to read ogg file; unable to read any data.");
-        return false;
-    }
-
-    AL_CHECK(alBufferData(buffer, format, data, size, info->rate));
-
-    SAFE_DELETE_ARRAY(data);
-
-    if (!streamed)
-        ov_clear(&streamState->oggFile);
-
-    return true;
-}
-
-bool AudioBuffer::streamData(ALuint buffer, bool looped)
-{
-    static char buffers[STREAMING_BUFFER_SIZE];
-    
-    if (_streamStateWav.get())
-    {
-        ALsizei bytesRead = _fileStream->read(buffers, sizeof(char), STREAMING_BUFFER_SIZE);
-        if (bytesRead != STREAMING_BUFFER_SIZE)
-        {
-            if (looped)
-                _fileStream->seek(_streamStateWav->dataStart, SEEK_SET);
-        }
-        if (bytesRead > 0)
-            AL_CHECK(alBufferData(buffer, _streamStateWav->format, buffers, bytesRead, _streamStateWav->frequency));
-        
-        return bytesRead > 0 || looped;
-    }
-    else if (_streamStateOgg.get())
-    {
-        int section;
-        int result = 0;
-        ALsizei bytesRead = 0;
-
-        while (bytesRead < STREAMING_BUFFER_SIZE)
-        {
-            result = ov_read(&_streamStateOgg->oggFile, buffers + bytesRead, STREAMING_BUFFER_SIZE - bytesRead, 0, 2, 1, &section);
-            if (result > 0)
-            {
-                bytesRead += result;
-            }
-            else
-            {
-                if (looped)
-                    ov_pcm_seek(&_streamStateOgg->oggFile, _streamStateOgg->dataStart);
-                break;
-            }
-        }
-
-        if (bytesRead > 0)
-            AL_CHECK(alBufferData(buffer, _streamStateOgg->format, buffers, bytesRead, _streamStateOgg->frequency));
-        
-        return (bytesRead > 0) || looped;
-    }
-    
-    return false;
-}
-
-}

+ 0 - 84
gameplay/src/AudioBuffer.h

@@ -1,84 +0,0 @@
-#ifndef AUDIOBUFFER_H_
-#define AUDIOBUFFER_H_
-
-#include "Ref.h"
-#include "Stream.h"
-
-namespace gameplay
-{
-
-class AudioSource;
-
-/**
- * Defines the actual audio buffer data.
- *
- * Currently only supports supported formats: .ogg, .wav, .au and .raw files.
- */
-class AudioBuffer : public Ref
-{
-    friend class AudioSource;
-
-private:
-    
-    /**
-     * Constructor.
-     */
-    AudioBuffer(const char* path, ALuint* buffers, bool streamed);
-
-    /**
-     * Destructor.
-     */
-    virtual ~AudioBuffer();
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AudioBuffer& operator=(const AudioBuffer&);
-
-    /**
-     * Creates an audio buffer from a file.
-     * 
-     * @param path The path to the audio buffer on the filesystem.
-     * 
-     * @return The buffer from a file.
-     */
-    static AudioBuffer* create(const char* path, bool streamed);
-
-    struct AudioStreamStateWav
-    {
-        long dataStart;
-        unsigned int dataSize;
-        ALuint format;
-        ALuint frequency;
-    };
-
-    struct AudioStreamStateOgg
-    {
-        long dataStart;
-        unsigned int dataSize;
-        ALuint format;
-        ALuint frequency;
-        OggVorbis_File oggFile;
-    };
-
-    enum { STREAMING_BUFFER_QUEUE_SIZE = 3 };
-    enum { STREAMING_BUFFER_SIZE = 48000 };
-
-    static bool loadWav(Stream* stream, ALuint buffer, bool streamed, AudioStreamStateWav* streamState);
-    
-    static bool loadOgg(Stream* stream, ALuint buffer, bool streamed, AudioStreamStateOgg* streamState);
-
-    bool streamData(ALuint buffer, bool looped);
-
-    ALuint _alBufferQueue[STREAMING_BUFFER_QUEUE_SIZE];
-    std::string _filePath;
-    bool _streamed;
-    std::unique_ptr<Stream> _fileStream;
-    std::unique_ptr<AudioStreamStateWav> _streamStateWav;
-    std::unique_ptr<AudioStreamStateOgg> _streamStateOgg;
-    int _buffersNeededCount;
-};
-
-}
-
-#endif

+ 0 - 177
gameplay/src/AudioController.cpp

@@ -1,177 +0,0 @@
-#include "Base.h"
-#include "AudioController.h"
-#include "AudioListener.h"
-#include "AudioBuffer.h"
-#include "AudioSource.h"
-
-namespace gameplay
-{
-
-AudioController::AudioController() 
-: _alcDevice(NULL), _alcContext(NULL), _pausingSource(NULL), _streamingThreadActive(true)
-{
-}
-
-AudioController::~AudioController()
-{
-}
-
-void AudioController::initialize()
-{
-    _alcDevice = alcOpenDevice(NULL);
-    if (!_alcDevice)
-    {
-        GP_ERROR("Unable to open OpenAL device.\n");
-        return;
-    }
-    
-    _alcContext = alcCreateContext(_alcDevice, NULL);
-    ALCenum alcErr = alcGetError(_alcDevice);
-    if (!_alcContext || alcErr != ALC_NO_ERROR)
-    {
-        alcCloseDevice(_alcDevice);
-        GP_ERROR("Unable to create OpenAL context. Error: %d\n", alcErr);
-        return;
-    }
-    
-    alcMakeContextCurrent(_alcContext);
-    alcErr = alcGetError(_alcDevice);
-    if (alcErr != ALC_NO_ERROR)
-    {
-        GP_ERROR("Unable to make OpenAL context current. Error: %d\n", alcErr);
-    }
-    _streamingMutex.reset(new std::mutex());
-}
-
-void AudioController::finalize()
-{
-    GP_ASSERT(_streamingSources.empty());
-    if (_streamingThread.get())
-    {
-        _streamingThreadActive = false;
-        _streamingThread->join();
-        _streamingThread.reset(NULL);
-    }
-
-    alcMakeContextCurrent(NULL);
-    if (_alcContext)
-    {
-        alcDestroyContext(_alcContext);
-        _alcContext = NULL;
-    }
-    if (_alcDevice)
-    {
-        alcCloseDevice(_alcDevice);
-        _alcDevice = NULL;
-    }
-}
-
-void AudioController::pause()
-{
-    std::set<AudioSource*>::iterator itr = _playingSources.begin();
-
-    // For each source that is playing, pause it.
-    AudioSource* source = NULL;
-    while (itr != _playingSources.end())
-    {
-        GP_ASSERT(*itr);
-        source = *itr;
-        _pausingSource = source;
-        source->pause();
-        _pausingSource = NULL;
-        itr++;
-    }
-#ifdef ALC_SOFT_pause_device
-    alcDevicePauseSOFT(_alcDevice);
-#endif
-}
-
-void AudioController::resume()
-{   
-    alcMakeContextCurrent(_alcContext);
-#ifdef ALC_SOFT_pause_device
-    alcDeviceResumeSOFT(_alcDevice);
-#endif
-
-    std::set<AudioSource*>::iterator itr = _playingSources.begin();
-
-    // For each source that is playing, resume it.
-    AudioSource* source = NULL;
-    while (itr != _playingSources.end())
-    {
-        GP_ASSERT(*itr);
-        source = *itr;
-        source->resume();
-        itr++;
-    }
-}
-
-void AudioController::update(float elapsedTime)
-{
-    AudioListener* listener = AudioListener::getInstance();
-    if (listener)
-    {
-        AL_CHECK( alListenerf(AL_GAIN, listener->getGain()) );
-        AL_CHECK( alListenerfv(AL_ORIENTATION, (ALfloat*)listener->getOrientation()) );
-        AL_CHECK( alListenerfv(AL_VELOCITY, (ALfloat*)&listener->getVelocity()) );
-        AL_CHECK( alListenerfv(AL_POSITION, (ALfloat*)&listener->getPosition()) );
-    }
-}
-
-void AudioController::addPlayingSource(AudioSource* source)
-{
-    if (_playingSources.find(source) == _playingSources.end())
-    {
-        _playingSources.insert(source);
-
-        if (source->isStreamed())
-        {
-            GP_ASSERT(_streamingSources.find(source) == _streamingSources.end());
-            bool startThread = _streamingSources.empty() && _streamingThread.get() == NULL;
-            _streamingMutex->lock();
-            _streamingSources.insert(source);
-            _streamingMutex->unlock();
-
-            if (startThread)
-                _streamingThread.reset(new std::thread(&streamingThreadProc, this));
-        }
-    }
-}
-
-void AudioController::removePlayingSource(AudioSource* source)
-{
-    if (_pausingSource != source)
-    {
-        std::set<AudioSource*>::iterator iter = _playingSources.find(source);
-        if (iter != _playingSources.end())
-        {
-            _playingSources.erase(iter);
- 
-            if (source->isStreamed())
-            {
-                GP_ASSERT(_streamingSources.find(source) != _streamingSources.end());
-                _streamingMutex->lock();
-                _streamingSources.erase(source);
-                _streamingMutex->unlock();
-            }
-        }
-    } 
-}
-
-void AudioController::streamingThreadProc(void* arg)
-{
-    AudioController* controller = (AudioController*)arg;
-
-    while (controller->_streamingThreadActive)
-    {
-        controller->_streamingMutex->lock();
-
-        std::for_each(controller->_streamingSources.begin(), controller->_streamingSources.end(), std::mem_fn(&AudioSource::streamDataIfNeeded));
-        
-        controller->_streamingMutex->unlock();
-   
-        std::this_thread::sleep_for(std::chrono::milliseconds(50));
-    }
-}
-
-}

+ 0 - 76
gameplay/src/AudioController.h

@@ -1,76 +0,0 @@
-#ifndef AUDIOCONTROLLER_H_
-#define AUDIOCONTROLLER_H_
-
-namespace gameplay
-{
-
-class AudioListener;
-class AudioSource;
-
-/**
- * Defines a class for controlling game audio.
- */
-class AudioController
-{
-    friend class Game;
-    friend class AudioSource;
-
-public:
-    
-    /**
-     * Destructor.
-     */
-    virtual ~AudioController();
-
-private:
-    
-    /**
-     * Constructor.
-     */
-    AudioController();
-
-    /**
-     * Controller initialize.
-     */
-    void initialize();
-
-    /**
-     * Controller finalize.
-     */
-    void finalize();
-
-    /**
-     * Controller pause.
-     */
-    void pause();
-
-    /**
-     * Controller resume.
-     */
-    void resume();
-
-    /**
-     * Controller update.
-     */
-    void update(float elapsedTime);
-
-    void addPlayingSource(AudioSource* source);
-    
-    void removePlayingSource(AudioSource* source);
-
-    static void streamingThreadProc(void* arg);
-
-    ALCdevice* _alcDevice;
-    ALCcontext* _alcContext;
-    std::set<AudioSource*> _playingSources;
-    std::set<AudioSource*> _streamingSources;
-    AudioSource* _pausingSource;
-
-    bool _streamingThreadActive;
-    std::unique_ptr<std::thread> _streamingThread;
-    std::unique_ptr<std::mutex> _streamingMutex;
-};
-
-}
-
-#endif

+ 0 - 147
gameplay/src/AudioListener.cpp

@@ -1,147 +0,0 @@
-#include "Base.h"
-#include "Node.h"
-#include "AudioListener.h"
-#include "Game.h"
-
-namespace gameplay
-{
-
-AudioListener::AudioListener()
-    : _gain(1.0f), _camera(NULL)
-{
-}
-
-AudioListener::~AudioListener()
-{
-	// Call setCamera() to release camera and cause transform listener
-	// to be removed.
-	setCamera(NULL);
-}
-
-AudioListener* AudioListener::getInstance()
-{
-    return Game::getInstance()->getAudioListener();
-}
-
-float AudioListener::getGain() const 
-{ 
-    return _gain; 
-}
-
-void AudioListener::setGain(float gain)
-{
-    _gain = gain;
-}
-
-const Vector3& AudioListener::getPosition() const 
-{ 
-    return _position; 
-}
-
-void AudioListener::setPosition(const Vector3& position)
-{
-    _position = position;
-}
-
-void AudioListener::setPosition(float x, float y, float z)
-{
-    _position.set(x, y, z);
-}
-
-const Vector3& AudioListener::getVelocity() const 
-{ 
-    return _velocity; 
-}
-
-void AudioListener::setVelocity(const Vector3& velocity)
-{
-    _velocity = velocity;
-}
-
-void AudioListener::setVelocity(float x, float y, float z)
-{
-    _velocity.set(x, y, z);
-}
-
-const float* AudioListener::getOrientation() const
-{
-    return (const float*)&_orientation[0];
-}
-
-const Vector3& AudioListener::getOrientationForward() const 
-{ 
-    return _orientation[0]; 
-}
-
-const Vector3& AudioListener::getOrientationUp() const 
-{ 
-    return _orientation[1]; 
-}
-
-void AudioListener::setOrientation(const Vector3& forward, const Vector3& up)
-{
-    _orientation[0].x = forward.x;
-    _orientation[0].y = forward.y;
-    _orientation[0].z = forward.z;
-
-    _orientation[1].x = up.x;
-    _orientation[1].y = up.y;
-    _orientation[1].z = up.z;
-}
-
-void AudioListener::setOrientation(float forwardX, float forwardY, float forwardZ, float upX, float upY, float upZ)
-{
-    _orientation[0].set(forwardX, forwardY, forwardZ);
-    _orientation[1].set(upX, upY, upZ);
-}
-
-Camera* AudioListener::getCamera() const
-{
-    return _camera;
-}
-
-void AudioListener::setCamera(Camera* camera)
-{
-    if (_camera == camera)
-        return;
-
-    // Disconnect our current camera.
-    if (_camera)
-    {
-        _camera->removeListener(this);
-        SAFE_RELEASE(_camera);
-    }
-
-    // Connect the new camera.
-    _camera = camera;
-    if (_camera)
-    {
-        _camera->addRef();
-        _camera->addListener(this);
-    }
-}
-
-void AudioListener::cameraChanged(Camera* camera)
-{
-    if (_camera != camera)
-        setCamera(camera);
-   
-    if (_camera)
-    {
-        Node* node = camera->getNode();
-        if (node)
-        {
-            setPosition(node->getTranslationWorld());
-            Vector3 up;
-            node->getWorldMatrix().getUpVector(&up);
-            setOrientation(node->getForwardVectorWorld(), up);
-        }
-        else
-        {
-            setPosition(Vector3::zero());
-            setOrientation(Vector3::unitY(), -Vector3::unitZ());
-        }
-    }
-}
-
-}

+ 0 - 176
gameplay/src/AudioListener.h

@@ -1,176 +0,0 @@
-#ifndef AUDIOLISTENER_H_
-#define AUDIOLISTENER_H_
-
-#include "Vector3.h"
-#include "Transform.h"
-#include "Camera.h"
-
-namespace gameplay
-{
-
-/**
- * Defines an audio listener in 3D space.
- *
- * The audio listener represents where you are listening from.
- * In a 3D scene this is usually the active camera.
- * 
- * @see Scene::bindAudioListenerToCamera
- */
-class AudioListener : public Camera::Listener
-{
-    friend class AudioController;
-    friend class Game;
-
-public:
-
-    /**
-     * Gets the single instance of the audio listener.
-     *
-     * @return The single instance of the audio listener.
-     */
-    static AudioListener* getInstance();
-
-    /**
-     * Gets the current position of the audio listener.
-     *
-     * @return The position of the audio listener
-     */
-    const Vector3& getPosition() const;
-
-    /**
-     * Sets the position of the audio source.
-     *
-     * @param position The position to set the listener to.
-     */
-    void setPosition(const Vector3& position);
-
-    /**
-     * Sets the position of the audio source.
-     * 
-     * @param x The x coordinate of the position.
-     * @param y The y coordinate of the position.
-     * @param z The z coordinate of the position.
-     */
-    void setPosition(float x, float y, float z);
-
-    /**
-     * Returns the gain of the audio listener.
-     *
-     * @return The gain of the audio listener.
-     */
-    float getGain() const;
-
-    /**
-     * Sets the gain/volume of the audio listener.
-     *
-     * @param gain The gain/volume of the listener.
-     */
-    void setGain(float gain);
-
-    /**
-     * Gets the velocity of the audio source.
-     *
-     * @return The velocity as a vector.
-     */
-    const Vector3& getVelocity() const;
-
-    /**
-     * Sets the velocity of the audio source
-     *
-     * @param velocity A vector representing the velocity.
-     */
-    void setVelocity(const Vector3& velocity);
-
-    /**
-     * Sets the velocity of the audio source
-     * 
-     * @param x The x coordinate of the velocity.
-     * @param y The y coordinate of the velocity.
-     * @param z The z coordinate of the velocity.
-     */
-    void setVelocity(float x, float y, float z);
-
-    /**
-     * Gets the float pointer to the orientation of the audio listener.
-     * Orientation is represented as 6 floats. (forward.x, forward.y, forward.z, up.x, up.y, up.z).
-     * 
-     * @return Pointer to the 6 orientation float values.
-     * @script{ignore}
-     */
-    const float* getOrientation() const;
-
-    /**
-     * Gets the forward orientation vector of the audio listener.
-     *
-     * @return The forward vector.
-     */
-    const Vector3& getOrientationForward() const;
-
-    /**
-     * Gets the up orientation vector of the audio listener.
-     *
-     * @return The up vector.
-     */
-    const Vector3& getOrientationUp() const;
-
-    /**
-     * Sets the orientation of the audio listener.
-     *
-     * @param forward The forward vector.
-     * @param up The up vector.
-     */
-    void setOrientation(const Vector3& forward, const Vector3& up);
-
-    /**
-     * Sets the orientation of the audio listener.
-     * 
-     * @param forwardX The x coordinate of the forward vector.
-     * @param forwardY The y coordinate of the forward vector.
-     * @param forwardZ The z coordinate of the forward vector.
-     * @param upX The x coordinate of the up vector.
-     * @param upY The y coordinate of the up vector.
-     * @param upZ The z coordinate of the up vector.
-     */
-    void setOrientation(float forwardX, float forwardY, float forwardZ, float upX, float upY, float upZ);
-
-    /**
-     * Gets the camera currently associated with the audio listener.
-     *
-     * @return camera The camera currently associated with the audio listener.
-     */
-    Camera* getCamera() const;
-
-    /**
-     * Sets the camera that is associated with the audio listener. This should usually be the current camera.
-     *
-     * @param camera The camera that is associated with the audio listener
-     */
-    void setCamera(Camera* camera);
-
-private:
-
-    /**
-    * Constructor.
-    */
-    AudioListener();
-
-    /**
-    * Destructor.
-    */
-    ~AudioListener();
-
-    /**
-    * @see Camera::Listener::cameraChanged
-    */
-    void cameraChanged(Camera* camera);
-
-    float _gain;
-    Vector3 _position;
-    Vector3 _velocity;
-    Vector3 _orientation[2];
-    Camera* _camera;
-};
-
-}
-
-#endif

+ 0 - 364
gameplay/src/AudioSource.cpp

@@ -1,364 +0,0 @@
-#include "Base.h"
-#include "Node.h"
-#include "AudioBuffer.h"
-#include "AudioController.h"
-#include "AudioSource.h"
-#include "Game.h"
-#include "Node.h"
-
-namespace gameplay
-{
-
-AudioSource::AudioSource(AudioBuffer* buffer, ALuint source) 
-    : _alSource(source), _buffer(buffer), _looped(false), _gain(1.0f), _pitch(1.0f), _node(NULL)
-{
-    GP_ASSERT(buffer);
-
-    if (isStreamed())
-        AL_CHECK(alSourceQueueBuffers(_alSource, 1, &buffer->_alBufferQueue[0]));
-    else
-        AL_CHECK(alSourcei(_alSource, AL_BUFFER, buffer->_alBufferQueue[0]));
-    
-    AL_CHECK(alSourcei(_alSource, AL_LOOPING, _looped && !isStreamed()));
-    
-    AL_CHECK( alSourcef(_alSource, AL_PITCH, _pitch) );
-    AL_CHECK( alSourcef(_alSource, AL_GAIN, _gain) );
-    AL_CHECK( alSourcefv(_alSource, AL_VELOCITY, (const ALfloat*)&_velocity) );
-}
-
-AudioSource::~AudioSource()
-{
-    if (_alSource)
-    {
-        // Remove the source from the controller's set of currently playing sources
-        // regardless of the source's state. E.g. when the AudioController::pause is called
-        // all sources are paused but still remain in controller's set of currently 
-        // playing sources. When the source is deleted afterwards, it should be removed
-        // from controller's set regardless of its playing state.
-        AudioController* audioController = Game::getInstance()->getAudioController();
-        GP_ASSERT(audioController);
-        audioController->removePlayingSource(this);
-
-        AL_CHECK(alDeleteSources(1, &_alSource));
-        _alSource = 0;
-    }
-    SAFE_RELEASE(_buffer);
-}
-
-AudioSource* AudioSource::create(const char* url, bool streamed)
-{
-    // Load from a .audio file.
-    std::string pathStr = url;
-    if (pathStr.find(".audio") != std::string::npos)
-    {
-        Properties* properties = Properties::create(url);
-        if (properties == NULL)
-        {
-            GP_ERROR("Failed to create audio source from .audio file.");
-            return NULL;
-        }
-
-        AudioSource* audioSource = create((strlen(properties->getNamespace()) > 0) ? properties : properties->getNextNamespace());
-        SAFE_DELETE(properties);
-        return audioSource;
-    }
-
-    // Create an audio buffer from this URL.
-    AudioBuffer* buffer = AudioBuffer::create(url, streamed);
-    if (buffer == NULL)
-        return NULL;
-
-    // Load the audio source.
-    ALuint alSource = 0;
-
-    AL_CHECK( alGenSources(1, &alSource) );
-    if (AL_LAST_ERROR())
-    {
-        SAFE_RELEASE(buffer);
-        GP_ERROR("Error generating audio source.");
-        return NULL;
-    }
-    
-    return new AudioSource(buffer, alSource);
-}
-
-AudioSource* AudioSource::create(Properties* properties)
-{
-    // Check if the properties is valid and has a valid namespace.
-    GP_ASSERT(properties);
-    if (!properties || !(strcmp(properties->getNamespace(), "audio") == 0))
-    {
-        GP_ERROR("Failed to load audio source from properties object: must be non-null object and have namespace equal to 'audio'.");
-        return NULL;
-    }
-
-    std::string path;
-    if (!properties->getPath("path", &path))
-    {
-        GP_ERROR("Audio file failed to load; the file path was not specified.");
-        return NULL;
-    }
-
-    bool streamed = false;
-    if (properties->exists("streamed"))
-    {
-        streamed = properties->getBool("streamed");
-    }
-
-    // Create the audio source.
-    AudioSource* audio = AudioSource::create(path.c_str(), streamed);
-    if (audio == NULL)
-    {
-        GP_ERROR("Audio file '%s' failed to load properly.", path.c_str());
-        return NULL;
-    }
-
-    // Set any properties that the user specified in the .audio file.
-    if (properties->exists("looped"))
-    {
-        audio->setLooped(properties->getBool("looped"));
-    }
-    if (properties->exists("gain"))
-    {
-        audio->setGain(properties->getFloat("gain"));
-    }
-    if (properties->exists("pitch"))
-    {
-        audio->setPitch(properties->getFloat("pitch"));
-    }
-    Vector3 v;
-    if (properties->getVector3("velocity", &v))
-    {
-        audio->setVelocity(v);
-    }
-
-    return audio;
-}
-
-AudioSource::State AudioSource::getState() const
-{
-    ALint state;
-    AL_CHECK( alGetSourcei(_alSource, AL_SOURCE_STATE, &state) );
-
-    switch (state)
-    {
-        case AL_PLAYING: 
-            return PLAYING;
-        case AL_PAUSED:  
-            return PAUSED;
-        case AL_STOPPED: 
-            return STOPPED;
-        default:         
-            return INITIAL;
-    }
-    return INITIAL;
-}
-
-bool AudioSource::isStreamed() const
-{
-    GP_ASSERT(_buffer);
-    return _buffer->_streamed;
-}
-
-void AudioSource::play()
-{
-    AL_CHECK( alSourcePlay(_alSource) );
-
-    // Add the source to the controller's list of currently playing sources.
-    AudioController* audioController = Game::getInstance()->getAudioController();
-    GP_ASSERT(audioController);
-    audioController->addPlayingSource(this);
-}
-
-void AudioSource::pause()
-{
-    AL_CHECK( alSourcePause(_alSource) );
-
-    // Remove the source from the controller's set of currently playing sources
-    // if the source is being paused by the user and not the controller itself.
-    AudioController* audioController = Game::getInstance()->getAudioController();
-    GP_ASSERT(audioController);
-    audioController->removePlayingSource(this);
-}
-
-void AudioSource::resume()
-{
-    if (getState() == PAUSED)
-    {
-        play();
-    }
-}
-
-void AudioSource::stop()
-{
-    AL_CHECK( alSourceStop(_alSource) );
-
-    // Remove the source from the controller's set of currently playing sources.
-    AudioController* audioController = Game::getInstance()->getAudioController();
-    GP_ASSERT(audioController);
-    audioController->removePlayingSource(this);
-}
-
-void AudioSource::rewind()
-{
-    AL_CHECK( alSourceRewind(_alSource) );
-}
-
-bool AudioSource::isLooped() const
-{
-    return _looped;
-}
-
-void AudioSource::setLooped(bool looped)
-{
-    AL_CHECK(alSourcei(_alSource, AL_LOOPING, (looped && !isStreamed()) ? AL_TRUE : AL_FALSE));
-    if (AL_LAST_ERROR())
-    {
-        GP_ERROR("Failed to set audio source's looped attribute with error: %d", AL_LAST_ERROR());
-    }
-    _looped = looped;
-}
-
-float AudioSource::getGain() const
-{
-    return _gain;
-}
-
-void AudioSource::setGain(float gain)
-{
-    AL_CHECK( alSourcef(_alSource, AL_GAIN, gain) );
-    _gain = gain;
-}
-
-float AudioSource::getPitch() const
-{
-    return _pitch;
-}
-
-void AudioSource::setPitch(float pitch)
-{
-    AL_CHECK( alSourcef(_alSource, AL_PITCH, pitch) );
-    _pitch = pitch;
-}
-
-const Vector3& AudioSource::getVelocity() const
-{
-    return _velocity;
-}
-
-void AudioSource::setVelocity(const Vector3& velocity)
-{
-    AL_CHECK( alSourcefv(_alSource, AL_VELOCITY, (ALfloat*)&velocity) );
-    _velocity = velocity;
-}
-
-void AudioSource::setVelocity(float x, float y, float z)
-{
-    setVelocity(Vector3(x, y, z));
-}
-
-Node* AudioSource::getNode() const
-{
-    return _node;
-}
-
-void AudioSource::setNode(Node* node)
-{
-    if (_node != node)
-    {
-        // Disconnect our current transform.
-        if (_node)
-        {
-            _node->removeListener(this);
-        }
-
-        // Connect the new node.
-        _node = node;
-
-        if (_node)
-        {
-            _node->addListener(this);
-            // Update the audio source position.
-            transformChanged(_node, 0);
-        }
-    }
-}
-
-void AudioSource::transformChanged(Transform* transform, long cookie)
-{
-    if (_node)
-    {
-        Vector3 translation = _node->getTranslationWorld();
-        AL_CHECK( alSourcefv(_alSource, AL_POSITION, (const ALfloat*)&translation.x) );
-    }
-}
-
-AudioSource* AudioSource::clone(NodeCloneContext& context)
-{
-    GP_ASSERT(_buffer);
-
-    ALuint alSource = 0;
-    AL_CHECK( alGenSources(1, &alSource) );
-    if (AL_LAST_ERROR())
-    {
-        GP_ERROR("Unable to cloning audio.");
-        return NULL;
-    }
-    AudioSource* audioClone = new AudioSource(_buffer, alSource);
-
-    _buffer->addRef();
-    audioClone->setLooped(isLooped());
-    audioClone->setGain(getGain());
-    audioClone->setPitch(getPitch());
-    audioClone->setVelocity(getVelocity());
-    if (Node* node = getNode())
-    {
-        Node* clonedNode = context.findClonedNode(node);
-        if (clonedNode)
-        {
-            audioClone->setNode(clonedNode);
-        }
-    }
-    return audioClone;
-}
-
-bool AudioSource::streamDataIfNeeded()
-{
-    GP_ASSERT( isStreamed() );
-    if( getState() != PLAYING )
-        return false;
-
-    int queuedBuffers;
-    alGetSourcei(_alSource, AL_BUFFERS_QUEUED, &queuedBuffers);
- 
-    int buffersNeeded = std::min<int>(_buffer->_buffersNeededCount, AudioBuffer::STREAMING_BUFFER_QUEUE_SIZE);
-    if (queuedBuffers < buffersNeeded)
-    {
-        while (queuedBuffers < buffersNeeded)
-        {
-            if (!_buffer->streamData(_buffer->_alBufferQueue[queuedBuffers], _looped))
-                return false;
-            
-            AL_CHECK( alSourceQueueBuffers(_alSource, 1, &_buffer->_alBufferQueue[queuedBuffers]) );
-            queuedBuffers++;
-        }
-    }
-    else
-    {
-        int processedBuffers;
-        alGetSourcei(_alSource, AL_BUFFERS_PROCESSED, &processedBuffers);
- 
-        while (processedBuffers-- > 0)
-        {
-            ALuint bufferID;
-            AL_CHECK( alSourceUnqueueBuffers(_alSource, 1, &bufferID) );
-            if (!_buffer->streamData(bufferID, _looped))
-                return false;
-            
-            AL_CHECK( alSourceQueueBuffers(_alSource, 1, &bufferID) );
-        }
-    }
-    return true;
-}
-
-}

+ 0 - 220
gameplay/src/AudioSource.h

@@ -1,220 +0,0 @@
-#ifndef AUDIOSOURCE_H_
-#define AUDIOSOURCE_H_
-
-#include "Vector3.h"
-#include "Ref.h"
-#include "Transform.h"
-
-namespace gameplay
-{
-
-class AudioBuffer;
-class Node;
-class NodeCloneContext;
-
-/**
- * Defines an audio source in 3D space.
- *
- * This can be attached to a Node for applying its 3D transformation.
- *
- * @see http://gameplay3d.github.io/GamePlay/docs/file-formats.html#wiki-Audio
- */
-class AudioSource : public Ref, public Transform::Listener
-{
-public:
-
-    friend class Node;
-    friend class AudioController;
-
-    /**
-     * The audio source's audio state.
-     */
-    enum State
-    {
-        INITIAL,
-        PLAYING,
-        PAUSED,
-        STOPPED
-    };
-
-    /**
-     * Create an audio source. This is used to instantiate an Audio Source. Currently only wav, au, and raw files are supported.
-     * Alternately, a URL specifying a Properties object that defines an audio source can be used (where the URL is of the format
-     * "<file-path>.<extension>#<namespace-id>/<namespace-id>/.../<namespace-id>" and "#<namespace-id>/<namespace-id>/.../<namespace-id>" is optional).
-     * 
-     * @param url The relative location on disk of the sound file or a URL specifying a Properties object defining an audio source.
-     * @param streamed Don't read the entire audio buffer first before playing, instead play immediately from a stream that is read on demand.
-     * @return The newly created audio source, or NULL if an audio source cannot be created.
-     * @script{create}
-     */
-    static AudioSource* create(const char* url, bool streamed = false);
-
-    /**
-     * Create an audio source from the given properties object.
-     * 
-     * @param properties The properties object defining the audio source (must have namespace equal to 'audio').
-     * @return The newly created audio source, or <code>NULL</code> if the audio source failed to load.
-     * @script{create}
-     */
-    static AudioSource* create(Properties* properties);
-
-    /**
-     * Plays the audio source.
-     */
-    void play();
-
-    /**
-     * Pauses the playing of the audio source.
-     */
-    void pause();
-
-    /**
-     * Resumes playing of the audio source.
-     */
-    void resume();
-
-    /**
-     * Stops the playing of the audio source.
-     */
-    void stop();
-
-    /**
-     * Rewinds the audio source to the beginning.
-     */
-    void rewind();
-
-    /**
-     * Gets the current state of the audio source.
-     *
-     * @return PLAYING if the source is playing, STOPPED if the source is stopped, PAUSED if the source is paused and INITIAL otherwise.
-     */
-    AudioSource::State getState() const;
-
-    /**
-     * Determines whether the audio source is streaming or not.
-     *
-     * @return true if the audio source is streaming, false if not.
-     */
-    bool isStreamed() const;
-
-    /**
-     * Determines whether the audio source is looped or not.
-     *
-     * @return true if the audio source is looped, false if not.
-     */
-    bool isLooped() const;
-
-    /**
-     * Sets the state of the audio source to be looping or not.
-     *
-     * @param looped true to loop the sound, false to not loop it.
-     */
-    void setLooped(bool looped);
-
-    /**
-     * Returns the gain of the audio source.
-     *
-     * @return The gain.
-     */
-    float getGain() const;
-
-    /**
-     * Sets the gain/volume of the audio source.
-     *
-     * @param gain The gain/volume of the source.
-     */
-    void setGain(float gain);
-
-    /**
-     * Returns the pitch of the audio source.
-     *
-     * @return The pitch.
-     */
-    float getPitch() const;
-
-    /**
-     * Sets the pitch of the audio source.
-     *
-     * @param pitch The pitch of the source.
-     */
-    void setPitch(float pitch);
-
-    /**
-     * Gets the velocity of the audio source.
-     *
-     * @return The velocity as a vector.
-     */
-    const Vector3& getVelocity() const;
-
-    /**
-     * Sets the velocity of the audio source.
-     *
-     * @param velocity A vector representing the velocity.
-     */
-    void setVelocity(const Vector3& velocity);
-
-    /**
-     * Sets the velocity of the audio source.
-     *
-     * @param x The x coordinate of the velocity.
-     * @param y The y coordinate of the velocity.
-     * @param z The z coordinate of the velocity.
-     */
-    void setVelocity(float x, float y, float z);
-
-    /**
-     * Gets the node that this source is attached to.
-     * 
-     * @return The node that this audio source is attached to.
-     */
-    Node* getNode() const;
-
-private:
-
-    /**
-     * Constructor that takes an AudioBuffer.
-     */
-    AudioSource(AudioBuffer* buffer, ALuint source);
-
-    /**
-     * Destructor.
-     */
-    virtual ~AudioSource();
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    AudioSource& operator=(const AudioSource&);
-
-    /**
-     * Sets the node for this audio source.
-     */
-    void setNode(Node* node);
-
-    /**
-     * @see Transform::Listener::transformChanged
-     */
-    void transformChanged(Transform* transform, long cookie);
-
-    /**
-     * Clones the audio source and returns a new audio source.
-     * 
-     * @param context The clone context.
-     * @return The newly created audio source.
-     */
-    AudioSource* clone(NodeCloneContext& context);
-
-    bool streamDataIfNeeded();
-
-    ALuint _alSource;
-    AudioBuffer* _buffer;
-    bool _looped;
-    float _gain;
-    float _pitch;
-    Vector3 _velocity;
-    Node* _node;
-};
-
-}
-
-#endif

+ 0 - 350
gameplay/src/Base.h

@@ -1,350 +0,0 @@
-#ifndef BASE_H_
-#define BASE_H_
-
-// C/C++
-#include <new>
-#include <memory>
-#include <cstdio>
-#include <cstdlib>
-#include <cassert>
-#include <cwchar>
-#include <cwctype>
-#include <cctype>
-#include <cmath>
-#include <cstdarg>
-#include <ctime>
-#include <iostream>
-#include <sstream>
-#include <string>
-#include <cstring>
-#include <vector>
-#include <list>
-#include <set>
-#include <stack>
-#include <map>
-#include <unordered_map>
-#include <queue>
-#include <algorithm>
-#include <limits>
-#include <functional>
-#include <bitset>
-#include <typeinfo>
-#include <thread>
-#include <mutex>
-#include <chrono>
-#include "Logger.h"
-
-// Bring common functions from C into global namespace
-using std::memcpy;
-using std::fabs;
-using std::sqrt;
-using std::cos;
-using std::sin;
-using std::tan;
-using std::isspace;
-using std::isdigit;
-using std::toupper;
-using std::tolower;
-using std::size_t;
-using std::min;
-using std::max;
-using std::modf;
-using std::atoi;
-
-// Common
-#ifndef NULL
-#define NULL     0
-#endif
-
-namespace gameplay
-{
-/**
- * Print logging (implemented per platform).
- * @script{ignore}
- */
-extern void print(const char* format, ...);
-
-// Define a platform-independent case-insensitive ASCII string comparison function.
-extern int strcmpnocase(const char* s1, const char* s2);
-}
-
-// Current function macro.
-#ifdef WIN32
-#define __current__func__ __FUNCTION__
-#else
-#define __current__func__ __func__
-#endif
-
-// Assert macros.
-#ifdef _DEBUG
-#define GP_ASSERT(expression) assert(expression)
-#else
-#define GP_ASSERT(expression)
-#endif
-
-#if defined(WIN32) && defined(_MSC_VER)
-#define DEBUG_BREAK() __debugbreak()
-#else
-#define DEBUG_BREAK()
-#endif
-
-// Error macro.
-#ifdef GP_ERRORS_AS_WARNINGS
-#define GP_ERROR GP_WARN
-#else
-#define GP_ERROR(...) do \
-    { \
-        gameplay::Logger::log(gameplay::Logger::LEVEL_ERROR, "%s -- ", __current__func__); \
-        gameplay::Logger::log(gameplay::Logger::LEVEL_ERROR, __VA_ARGS__); \
-        gameplay::Logger::log(gameplay::Logger::LEVEL_ERROR, "\n"); \
-        DEBUG_BREAK(); \
-        assert(0); \
-        std::exit(-1); \
-    } while (0)
-#endif
-
-// Warning macro.
-#define GP_WARN(...) do \
-    { \
-        gameplay::Logger::log(gameplay::Logger::LEVEL_WARN, "%s -- ", __current__func__); \
-        gameplay::Logger::log(gameplay::Logger::LEVEL_WARN, __VA_ARGS__); \
-        gameplay::Logger::log(gameplay::Logger::LEVEL_WARN, "\n"); \
-    } while (0)
-
-#if defined(WIN32)
-    #pragma warning( disable : 4005 )
-    #pragma warning( disable : 4172 )
-    #pragma warning( disable : 4244 )
-    #pragma warning( disable : 4267 )
-    #pragma warning( disable : 4311 )
-    #pragma warning( disable : 4316 )
-    #pragma warning( disable : 4390 )
-    #pragma warning( disable : 4800 )
-    #pragma warning( disable : 4996 )
-#endif
-
-// Bullet Physics
-#include <btBulletDynamicsCommon.h>
-#include <BulletCollision/CollisionDispatch/btGhostObject.h>
-#define BV(v) (btVector3((v).x, (v).y, (v).z))
-#define BQ(q) (btQuaternion((q).x, (q).y, (q).z, (q).w))
-
-// Debug new for memory leak detection
-#include "DebugNew.h"
-
-// Object deletion macro
-#define SAFE_DELETE(x) \
-    { \
-        delete x; \
-        x = NULL; \
-    }
-
-// Array deletion macro
-#define SAFE_DELETE_ARRAY(x) \
-    { \
-        delete[] x; \
-        x = NULL; \
-    }
-
-// Ref cleanup macro
-#define SAFE_RELEASE(x) \
-    if (x) \
-    { \
-        (x)->release(); \
-        x = NULL; \
-    }
-
-// Math
-#define MATH_DEG_TO_RAD(x)          ((x) * 0.0174532925f)
-#define MATH_RAD_TO_DEG(x)          ((x)* 57.29577951f)
-#define MATH_RANDOM_MINUS1_1()      ((2.0f*((float)rand()/RAND_MAX))-1.0f)      // Returns a random float between -1 and 1.
-#define MATH_RANDOM_0_1()           ((float)rand()/RAND_MAX)                    // Returns a random float between 0 and 1.
-#define MATH_FLOAT_SMALL            1.0e-37f
-#define MATH_TOLERANCE              2e-37f
-#define MATH_E                      2.71828182845904523536f
-#define MATH_LOG10E                 0.4342944819032518f
-#define MATH_LOG2E                  1.442695040888963387f
-#define MATH_PI                     3.14159265358979323846f
-#define MATH_PIOVER2                1.57079632679489661923f
-#define MATH_PIOVER4                0.785398163397448309616f
-#define MATH_PIX2                   6.28318530717958647693f
-#define MATH_EPSILON                0.000001f
-#define MATH_CLAMP(x, lo, hi)       ((x < lo) ? lo : ((x > hi) ? hi : x))
-#ifndef M_1_PI
-#define M_1_PI                      0.31830988618379067154
-#endif
-
-// NOMINMAX makes sure that windef.h doesn't add macros min and max
-#ifdef WIN32
-    #define NOMINMAX
-#endif
-
-// Audio (OpenAL)
-#ifdef __ANDROID__
-    #include <AL/al.h>
-    #include <AL/alc.h>
-    #define AL_ALEXT_PROTOTYPES
-    #include <AL/alext.h>
-#elif WIN32
-    #define AL_LIBTYPE_STATIC
-    #include <AL/al.h>
-    #include <AL/alc.h>
-#elif __linux__
-    #include <AL/al.h>
-    #include <AL/alc.h>
-#elif __APPLE__
-    #include <OpenAL/al.h>
-    #include <OpenAL/alc.h>
-#endif
-
-// Compressed Media
-#include <vorbis/vorbisfile.h>
-
-// Image
-#include <png.h>
-
-// Scripting
-using std::va_list;
-#include <lua/lua.hpp>
-
-#define WINDOW_VSYNC        1
-
-// Graphics (OpenGL)
-#ifdef __ANDROID__
-    #include <EGL/egl.h>
-    #include <GLES2/gl2.h>
-    #include <GLES2/gl2ext.h>
-    extern PFNGLBINDVERTEXARRAYOESPROC glBindVertexArray;
-    extern PFNGLDELETEVERTEXARRAYSOESPROC glDeleteVertexArrays;
-    extern PFNGLGENVERTEXARRAYSOESPROC glGenVertexArrays;
-    extern PFNGLISVERTEXARRAYOESPROC glIsVertexArray;
-    extern PFNGLMAPBUFFEROESPROC glMapBuffer;
-    extern PFNGLUNMAPBUFFEROESPROC glUnmapBuffer;
-    #define GL_WRITE_ONLY GL_WRITE_ONLY_OES
-    #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES
-    #define glClearDepth glClearDepthf
-    #define OPENGL_ES
-    #define GP_USE_VAO
-#elif WIN32
-        #define WIN32_LEAN_AND_MEAN
-        #define GLEW_STATIC
-        #include <GL/glew.h>
-        #define GP_USE_VAO
-#elif __linux__
-        #define GLEW_STATIC
-        #include <GL/glew.h>
-        #define GP_USE_VAO
-#elif __APPLE__
-    #include "TargetConditionals.h"
-    #if TARGET_OS_IPHONE || TARGET_IPHONE_SIMULATOR
-        #include <OpenGLES/ES2/gl.h>
-        #include <OpenGLES/ES2/glext.h>
-        #define glBindVertexArray glBindVertexArrayOES
-        #define glDeleteVertexArrays glDeleteVertexArraysOES
-        #define glGenVertexArrays glGenVertexArraysOES
-        #define glIsVertexArray glIsVertexArrayOES
-        #define glMapBuffer glMapBufferOES
-        #define glUnmapBuffer glUnmapBufferOES
-        #define GL_WRITE_ONLY GL_WRITE_ONLY_OES
-        #define GL_DEPTH24_STENCIL8 GL_DEPTH24_STENCIL8_OES
-        #define glClearDepth glClearDepthf
-        #define OPENGL_ES
-        #define GP_USE_VAO
-    #elif TARGET_OS_MAC
-        #include <OpenGL/gl.h>
-        #include <OpenGL/glext.h>
-        #define glBindVertexArray glBindVertexArrayAPPLE
-        #define glDeleteVertexArrays glDeleteVertexArraysAPPLE
-        #define glGenVertexArrays glGenVertexArraysAPPLE
-        #define glIsVertexArray glIsVertexArrayAPPLE
-        #define GP_USE_VAO
-    #else
-        #error "Unsupported Apple Device"
-    #endif
-#endif
-
-// Graphics (GLSL)
-#define VERTEX_ATTRIBUTE_POSITION_NAME              "a_position"
-#define VERTEX_ATTRIBUTE_NORMAL_NAME                "a_normal"
-#define VERTEX_ATTRIBUTE_COLOR_NAME                 "a_color"
-#define VERTEX_ATTRIBUTE_TANGENT_NAME               "a_tangent"
-#define VERTEX_ATTRIBUTE_BINORMAL_NAME              "a_binormal"
-#define VERTEX_ATTRIBUTE_BLENDWEIGHTS_NAME          "a_blendWeights"
-#define VERTEX_ATTRIBUTE_BLENDINDICES_NAME          "a_blendIndices"
-#define VERTEX_ATTRIBUTE_TEXCOORD_PREFIX_NAME       "a_texCoord"
-
-// Hardware buffer
-namespace gameplay
-{
-/** Vertex attribute. */
-typedef GLint VertexAttribute;
-/** Vertex buffer handle. */
-typedef GLuint VertexBufferHandle;
-/** Index buffer handle. */
-typedef GLuint IndexBufferHandle;
-/** Texture handle. */
-typedef GLuint TextureHandle;
-/** Frame buffer handle. */
-typedef GLuint FrameBufferHandle;
-/** Render buffer handle. */
-typedef GLuint RenderBufferHandle;
-
-/** Gamepad handle */
-#ifdef __ANDROID__
-typedef unsigned int GamepadHandle;
-#else
-typedef unsigned long GamepadHandle;
-#endif
-}
-
-/**
- * GL assertion that can be used for any OpenGL function call.
- *
- * This macro will assert if an error is detected when executing
- * the specified GL code. This macro will do nothing in release
- * mode and is therefore safe to use for realtime/per-frame GL
- * function calls.
- */
-#if defined(NDEBUG) || (defined(__APPLE__) && !defined(DEBUG))
-#define GL_ASSERT( gl_code ) gl_code
-#else
-#define GL_ASSERT( gl_code ) do \
-    { \
-        gl_code; \
-        __gl_error_code = glGetError(); \
-        GP_ASSERT(__gl_error_code == GL_NO_ERROR); \
-    } while(0)
-#endif
-
-/** Global variable to hold GL errors
- * @script{ignore} */
-extern GLenum __gl_error_code;
-
-/**
- * Executes the specified AL code and checks the AL error afterwards
- * to ensure it succeeded.
- *
- * The AL_LAST_ERROR macro can be used afterwards to check whether a AL error was
- * encountered executing the specified code.
- */
-#define AL_CHECK( al_code ) do \
-    { \
-        while (alGetError() != AL_NO_ERROR) ; \
-        al_code; \
-        __al_error_code = alGetError(); \
-        if (__al_error_code != AL_NO_ERROR) \
-        { \
-            GP_ERROR(#al_code ": %d", (int)__al_error_code); \
-        } \
-    } while(0)
-
-/** Global variable to hold AL errors
- * @script{ignore} */
-extern ALenum __al_error_code;
-
-/**
- * Accesses the most recently set global AL error.
- */
-#define AL_LAST_ERROR() __al_error_code
-
-#endif

+ 0 - 349
gameplay/src/BoundingBox.cpp

@@ -1,349 +0,0 @@
-#include "Base.h"
-#include "BoundingBox.h"
-#include "BoundingSphere.h"
-#include "Plane.h"
-
-namespace gameplay
-{
-
-BoundingBox::BoundingBox()
-{
-}
-
-BoundingBox::BoundingBox(const Vector3& min, const Vector3& max)
-{
-    set(min, max);
-}
-
-BoundingBox::BoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
-{
-    set(minX, minY, minZ, maxX, maxY, maxZ);
-}
-
-BoundingBox::BoundingBox(const BoundingBox& copy)
-{
-    set(copy);
-}
-
-BoundingBox::~BoundingBox()
-{
-}
-
-const BoundingBox& BoundingBox::empty()
-{
-    static BoundingBox b;
-    return b;
-}
-
-void BoundingBox::getCorners(Vector3* dst) const
-{
-    GP_ASSERT(dst);
-
-    // Near face, specified counter-clockwise looking towards the origin from the positive z-axis.
-    // Left-top-front.
-    dst[0].set(min.x, max.y, max.z);
-    // Left-bottom-front.
-    dst[1].set(min.x, min.y, max.z);
-    // Right-bottom-front.
-    dst[2].set(max.x, min.y, max.z);
-    // Right-top-front.
-    dst[3].set(max.x, max.y, max.z);
-
-    // Far face, specified counter-clockwise looking towards the origin from the negative z-axis.
-    // Right-top-back.
-    dst[4].set(max.x, max.y, min.z);
-    // Right-bottom-back.
-    dst[5].set(max.x, min.y, min.z);
-    // Left-bottom-back.
-    dst[6].set(min.x, min.y, min.z);
-    // Left-top-back.
-    dst[7].set(min.x, max.y, min.z);
-}
-
-Vector3 BoundingBox::getCenter() const
-{
-    Vector3 center;
-    getCenter(&center);
-    return center;
-}
-
-void BoundingBox::getCenter(Vector3* dst) const
-{
-    GP_ASSERT(dst);
-
-    dst->set(min, max);
-    dst->scale(0.5f);
-    dst->add(min);
-}
-
-bool BoundingBox::intersects(const BoundingSphere& sphere) const
-{
-    return sphere.intersects(*this);
-}
-
-bool BoundingBox::intersects(const BoundingBox& box) const
-{
-    return ((min.x >= box.min.x && min.x <= box.max.x) || (box.min.x >= min.x && box.min.x <= max.x)) &&
-            ((min.y >= box.min.y && min.y <= box.max.y) || (box.min.y >= min.y && box.min.y <= max.y)) &&
-            ((min.z >= box.min.z && min.z <= box.max.z) || (box.min.z >= min.z && box.min.z <= max.z));
-}
-
-bool BoundingBox::intersects(const Frustum& frustum) const
-{
-    // The box must either intersect or be in the positive half-space of all six planes of the frustum.
-    return (intersects(frustum.getNear()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getFar()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getLeft()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getRight()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getBottom()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getTop()) != Plane::INTERSECTS_BACK);
-}
-
-float BoundingBox::intersects(const Plane& plane) const
-{
-    // Calculate the distance from the center of the box to the plane.
-    Vector3 center((min.x + max.x) * 0.5f, (min.y + max.y) * 0.5f, (min.z + max.z) * 0.5f);
-    float distance = plane.distance(center);
-
-    // Get the extents of the box from its center along each axis.
-    float extentX = (max.x - min.x) * 0.5f;
-    float extentY = (max.y - min.y) * 0.5f;
-    float extentZ = (max.z - min.z) * 0.5f;
-
-    const Vector3& planeNormal = plane.getNormal();
-    if (fabsf(distance) <= (fabsf(extentX * planeNormal.x) + fabsf(extentY * planeNormal.y) + fabsf(
-        extentZ * planeNormal.z)))
-    {
-        return Plane::INTERSECTS_INTERSECTING;
-    }
-
-    return (distance > 0.0f) ? (float)Plane::INTERSECTS_FRONT : (float)Plane::INTERSECTS_BACK;
-}
-
-float BoundingBox::intersects(const Ray& ray) const
-{
-    // Intermediate calculation variables.
-    float dnear = 0.0f;
-    float dfar = 0.0f;
-    float tmin = 0.0f;
-    float tmax = 0.0f;
-
-    const Vector3& origin = ray.getOrigin();
-    const Vector3& direction = ray.getDirection();
-
-    // X direction.
-    float div = 1.0f / direction.x;
-    if (div >= 0.0f)
-    {
-        tmin = (min.x - origin.x) * div;
-        tmax = (max.x - origin.x) * div;
-    }
-    else
-    {
-        tmin = (max.x - origin.x) * div;
-        tmax = (min.x - origin.x) * div;
-    }
-    dnear = tmin;
-    dfar = tmax;
-
-    // Check if the ray misses the box.
-    if (dnear > dfar || dfar < 0.0f)
-    {
-        return Ray::INTERSECTS_NONE;
-    }
-
-    // Y direction.
-    div = 1.0f / direction.y;
-    if (div >= 0.0f)
-    {
-        tmin = (min.y - origin.y) * div;
-        tmax = (max.y - origin.y) * div;
-    }
-    else
-    {
-        tmin = (max.y - origin.y) * div;
-        tmax = (min.y - origin.y) * div;
-    }
-
-    // Update the near and far intersection distances.
-    if (tmin > dnear)
-    {
-        dnear = tmin;
-    }
-    if (tmax < dfar)
-    {
-        dfar = tmax;
-    }
-    // Check if the ray misses the box.
-    if (dnear > dfar || dfar < 0.0f)
-    {
-        return Ray::INTERSECTS_NONE;
-    }
-
-    // Z direction.
-    div = 1.0f / direction.z;
-    if (div >= 0.0f)
-    {
-        tmin = (min.z - origin.z) * div;
-        tmax = (max.z - origin.z) * div;
-    }
-    else
-    {
-        tmin = (max.z - origin.z) * div;
-        tmax = (min.z - origin.z) * div;
-    }
-
-    // Update the near and far intersection distances.
-    if (tmin > dnear)
-    {
-        dnear = tmin;
-    }
-    if (tmax < dfar)
-    {
-        dfar = tmax;
-    }
-
-    // Check if the ray misses the box.
-    if (dnear > dfar || dfar < 0.0f)
-    {
-        return Ray::INTERSECTS_NONE;
-    }
-    // The ray intersects the box (and since the direction of a Ray is normalized, dnear is the distance to the ray).
-    return dnear;
-}
-
-bool BoundingBox::isEmpty() const
-{
-    return min.x == max.x && min.y == max.y && min.z == max.z;
-}
-
-void BoundingBox::merge(const BoundingBox& box)
-{
-    // Calculate the new minimum point.
-    min.x = std::min(min.x, box.min.x);
-    min.y = std::min(min.y, box.min.y);
-    min.z = std::min(min.z, box.min.z);
-
-    // Calculate the new maximum point.
-    max.x = std::max(max.x, box.max.x);
-    max.y = std::max(max.y, box.max.y);
-    max.z = std::max(max.z, box.max.z);
-}
-
-void BoundingBox::merge(const BoundingSphere& sphere)
-{
-    const Vector3& center = sphere.center;
-    float radius = sphere.radius;
-
-    // Calculate the new minimum point for the merged bounding box.
-    min.x = std::min(min.x, center.x - radius);
-    min.y = std::min(min.y, center.y - radius);
-    min.z = std::min(min.z, center.z - radius);
-
-    // Calculate the new maximum point for the merged bounding box.
-    max.x = std::max(max.x, center.x + radius);
-    max.y = std::max(max.y, center.y + radius);
-    max.z = std::max(max.z, center.z + radius);
-}
-
-void BoundingBox::set(const Vector3& min, const Vector3& max)
-{
-    this->min = min;
-    this->max = max;
-}
-
-void BoundingBox::set(float minX, float minY, float minZ, float maxX, float maxY, float maxZ)
-{
-    min.set(minX, minY, minZ);
-    max.set(maxX, maxY, maxZ);
-}
-
-static void updateMinMax(Vector3* point, Vector3* min, Vector3* max)
-{
-    GP_ASSERT(point);
-    GP_ASSERT(min);
-    GP_ASSERT(max);
-
-    // Leftmost point.
-    if (point->x < min->x)
-    {
-        min->x = point->x;
-    }
-
-    // Rightmost point.
-    if (point->x > max->x)
-    {
-        max->x = point->x;
-    }
-
-    // Lowest point.
-    if (point->y < min->y)
-    {
-        min->y = point->y;
-    }
-
-    // Highest point.
-    if (point->y > max->y)
-    {
-        max->y = point->y;
-    }
-
-    // Farthest point.
-    if (point->z < min->z)
-    {
-        min->z = point->z;
-    }
-
-    // Nearest point.
-    if (point->z > max->z)
-    {
-        max->z = point->z;
-    }
-}
-
-void BoundingBox::set(const BoundingBox& box)
-{
-    min = box.min;
-    max = box.max;
-}
-
-void BoundingBox::set(const BoundingSphere& sphere)
-{
-    const Vector3& center = sphere.center;
-    float radius = sphere.radius;
-
-    // Calculate the minimum point for the box.
-    min.x = center.x - radius;
-    min.y = center.y - radius;
-    min.z = center.z - radius;
-
-    // Calculate the maximum point for the box.
-    max.x = center.x + radius;
-    max.y = center.y + radius;
-    max.z = center.z + radius;
-}
-
-void BoundingBox::transform(const Matrix& matrix)
-{
-    // Calculate the corners.
-    Vector3 corners[8];
-    getCorners(corners);
-
-    // Transform the corners, recalculating the min and max points along the way.
-    matrix.transformPoint(&corners[0]);
-    Vector3 newMin = corners[0];
-    Vector3 newMax = corners[0];
-    for (int i = 1; i < 8; i++)
-    {
-        matrix.transformPoint(&corners[i]);
-        updateMinMax(&corners[i], &newMin, &newMax);
-    }
-    this->min.x = newMin.x;
-    this->min.y = newMin.y;
-    this->min.z = newMin.z;
-    this->max.x = newMax.x;
-    this->max.y = newMax.y;
-    this->max.z = newMax.z;
-}
-
-}

+ 0 - 233
gameplay/src/BoundingBox.h

@@ -1,233 +0,0 @@
-#ifndef BOUNDINGBOX_H_
-#define BOUNDINGBOX_H_
-
-#include "Frustum.h"
-
-namespace gameplay
-{
-
-/**
- * Defines a 3-dimensional axis-aligned bounding box.
- */
-class BoundingBox
-{
-public:
-
-    /**
-     * The minimum point.
-     */
-    Vector3 min;
-
-    /**
-     * The maximum point.
-     */
-    Vector3 max;
-
-    /**
-     * Constructs an empty bounding box at the origin.
-     */
-    BoundingBox();
-
-    /**
-     * Constructs a new bounding box from the specified values.
-     *
-     * @param min The minimum point of the bounding box.
-     * @param max The maximum point of the bounding box.
-     */
-    BoundingBox(const Vector3& min, const Vector3& max);
-
-    /**
-     * Constructs a new bounding box from the specified values.
-     * 
-     * @param minX The x coordinate of the minimum point of the bounding box.
-     * @param minY The y coordinate of the minimum point of the bounding box.
-     * @param minZ The z coordinate of the minimum point of the bounding box.
-     * @param maxX The x coordinate of the maximum point of the bounding box.
-     * @param maxY The y coordinate of the maximum point of the bounding box.
-     * @param maxZ The z coordinate of the maximum point of the bounding box.
-     */
-    BoundingBox(float minX, float minY, float minZ, float maxX, float maxY, float maxZ);
-
-    /**
-     * Constructs a new bounding box from the given bounding box.
-     *
-     * @param copy The bounding box to copy.
-     */
-    BoundingBox(const BoundingBox& copy);
-
-    /**
-     * Destructor.
-     */
-    ~BoundingBox();
-
-    /**
-     * Returns an empty bounding box.
-     */
-    static const BoundingBox& empty();
-
-    /**
-     * Gets the center point of the bounding box.
-     *
-     * This method computes the center point of the box from its min and max.
-     *
-     * @return The center point of the bounding box.
-     */
-    Vector3 getCenter() const;
-
-    /**
-     * Gets the center point of the bounding box.
-     *
-     * This method computes the center point of the box from its min and max
-     * points and stores the result in dst.
-     *
-     * @param dst The vector to store the result in.
-     */
-    void getCenter(Vector3* dst) const;
-
-    /**
-     * Gets the corners of the bounding box in the specified array.
-     *
-     * The corners are returned as follows: 0 to 3 specify the near face starting at the upper left point
-     * when looking towards the origin from the positive z-axis in a counter-clockwise fashion; 4 to 7
-     * specify the far face starting at the upper left point when looking towards the origin from the negative
-     * z-axis in a counter-clockwise fashion.
-     *
-     * @param dst The array to store the corners in. Must be size 8.
-     */
-    void getCorners(Vector3* dst) const;
-
-    /**
-     * Tests whether this bounding box intersects the specified bounding object.
-     *
-     * @param box The bounding box to test intersection with.
-     * 
-     * @return true if the specified bounding box intersects this bounding box; false otherwise.
-     */
-    bool intersects(const BoundingBox& box) const;
-
-    /**
-     * Tests whether this bounding box intersects the specified bounding sphere.
-     *
-     * @param sphere The bounding sphere to test intersection with.
-     * 
-     * @return true if the specified bounding sphere intersects this bounding box; false otherwise.
-     */
-    bool intersects(const BoundingSphere& sphere) const;
-
-    /**
-     * Tests whether this bounding box intersects the specified frustum.
-     *
-     * @param frustum The frustum to test intersection with.
-     * 
-     * @return true if this bounding sphere intersects the specified frustum; false otherwise.
-     */
-    bool intersects(const Frustum& frustum) const;
-
-    /**
-     * Tests whether this bounding box intersects the specified plane.
-     *
-     * @param plane The plane to test intersection with.
-     * 
-     * @return Plane::INTERSECTS_BACK INTERSECTS_BACK if this bounding box is in the negative half-space of
-     *  the plane, Plane::INTERSECTS_FRONT INTERSECTS_FRONT if it is in the positive half-space of the plane;
-     *  and Plane::INTERSECTS_INTERSECTING INTERSECTS_INTERSECTING if it intersects the plane.
-     */
-    float intersects(const Plane& plane) const;
-
-    /**
-     * Tests whether this bounding box intersects the specified ray.
-     *
-     * @param ray The ray to test intersection with.
-     * 
-     * @return The distance from the origin of the ray to this bounding box or
-     *  INTERSECTS_NONE INTERSECTS_NONE if the ray does not intersect this bounding box.
-     */
-    float intersects(const Ray& ray) const;
-
-    /**
-     * Determines if this bounding box is empty.
-     *
-     * @return true if this bounding box is empty; false otherwise.
-     */
-    bool isEmpty() const;
-
-    /**
-     * Sets this bounding box to the smallest bounding box
-     * that contains both this bounding box and the specified bounding sphere.
-     *
-     * @param sphere The bounding sphere to merge with.
-     */
-    void merge(const BoundingSphere& sphere);
-
-    /**
-     * Sets this bounding box to the smallest bounding box
-     * that contains both this bounding object and the specified bounding box.
-     *
-     * @param box The bounding box to merge with.
-     */
-    void merge(const BoundingBox& box);
-
-    /**
-     * Sets this bounding box to the specified values.
-     *
-     * @param min The minimum point of the bounding box.
-     * @param max The maximum point of the bounding box.
-     */
-    void set(const Vector3& min, const Vector3& max);
-
-    /**
-     * Sets this bounding box to the specified values.
-     * 
-     * @param minX The x coordinate of the minimum point of the bounding box.
-     * @param minY The y coordinate of the minimum point of the bounding box.
-     * @param minZ The z coordinate of the minimum point of the bounding box.
-     * @param maxX The x coordinate of the maximum point of the bounding box.
-     * @param maxY The y coordinate of the maximum point of the bounding box.
-     * @param maxZ The z coordinate of the maximum point of the bounding box.
-     */
-    void set(float minX, float minY, float minZ, float maxX, float maxY, float maxZ);
-
-    /**
-     * Sets this bounding box to the specified bounding box.
-     *
-     * @param box The bounding box to set to.
-     */
-    void set(const BoundingBox& box);
-
-    /**
-     * Sets this box to tightly contain the specified bounding sphere.
-     *
-     * @param sphere The sphere to contain.
-     */
-    void set(const BoundingSphere& sphere);
-
-    /**
-     * Transforms the bounding box by the given transformation matrix.
-     *
-     * @param matrix The transformation matrix to transform by.
-     */
-    void transform(const Matrix& matrix);
-
-    /**
-     * Transforms this bounding box by the given matrix.
-     * 
-     * @param matrix The matrix to transform by.
-     * @return This bounding box, after the transformation occurs.
-     */
-    inline BoundingBox& operator*=(const Matrix& matrix);
-};
-
-/**
- * Transforms the given bounding box by the given matrix.
- * 
- * @param matrix The matrix to transform by.
- * @param box The bounding box to transform.
- * @return The resulting transformed bounding box.
- */
-inline const BoundingBox operator*(const Matrix& matrix, const BoundingBox& box);
-
-}
-
-#include "BoundingBox.inl"
-
-#endif

+ 0 - 19
gameplay/src/BoundingBox.inl

@@ -1,19 +0,0 @@
-#include "BoundingBox.h"
-
-namespace gameplay
-{
-
-inline BoundingBox& BoundingBox::operator*=(const Matrix& matrix)
-{
-    transform(matrix);
-    return *this;
-}
-
-inline const BoundingBox operator*(const Matrix& matrix, const BoundingBox& box)
-{
-    BoundingBox b(box);
-    b.transform(matrix);
-    return b;
-}
-
-}

+ 0 - 324
gameplay/src/BoundingSphere.cpp

@@ -1,324 +0,0 @@
-#include "Base.h"
-#include "BoundingSphere.h"
-#include "BoundingBox.h"
-
-namespace gameplay
-{
-
-BoundingSphere::BoundingSphere()
-    : radius(0)
-{
-}
-
-BoundingSphere::BoundingSphere(const Vector3& center, float radius)
-{
-    set(center, radius);
-}
-
-BoundingSphere::BoundingSphere(const BoundingSphere& copy)
-{
-    set(copy);
-}
-
-BoundingSphere::~BoundingSphere()
-{
-}
-
-const BoundingSphere& BoundingSphere::empty()
-{
-    static BoundingSphere s;
-    return s;
-}
-
-bool BoundingSphere::intersects(const BoundingSphere& sphere) const
-{
-    // If the distance between the spheres' centers is less than or equal
-    // to the sum of their radii, then the spheres intersect.
-    float vx = sphere.center.x - center.x;
-    float vy = sphere.center.y - center.y;
-    float vz = sphere.center.z - center.z;
-
-    return sqrt(vx * vx + vy * vy + vz * vz) <= (radius + sphere.radius);
-}
-
-bool BoundingSphere::intersects(const BoundingBox& box) const
-{
-    // Determine what point is closest; if the distance to that
-    // point is less than the radius, then this sphere intersects.
-    float cpX = center.x;
-    float cpY = center.y;
-    float cpZ = center.z;
-
-    const Vector3& boxMin = box.min;
-    const Vector3& boxMax = box.max;
-    // Closest x value.
-    if (center.x < boxMin.x)
-    {
-        cpX = boxMin.x;
-    }
-    else if (center.x > boxMax.x)
-    {
-        cpX = boxMax.x;
-    }
-
-    // Closest y value.
-    if (center.y < boxMin.y)
-    {
-        cpY = boxMin.y;
-    }
-    else if (center.y > boxMax.y)
-    {
-        cpY = boxMax.y;
-    }
-
-    // Closest z value.
-    if (center.z < boxMin.z)
-    {
-        cpZ = boxMin.z;
-    }
-    else if (center.z > boxMax.z)
-    {
-        cpZ = boxMax.z;
-    }
-
-    // Find the distance to the closest point and see if it is less than or equal to the radius.
-    cpX -= center.x;
-    cpY -= center.y;
-    cpZ -= center.z;
-
-    return sqrt(cpX * cpX + cpY * cpY + cpZ * cpZ) <= radius;
-}
-
-bool BoundingSphere::intersects(const Frustum& frustum) const
-{
-    // The sphere must either intersect or be in the positive half-space of all six planes of the frustum.
-    return (intersects(frustum.getNear()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getFar()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getLeft()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getRight()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getBottom()) != Plane::INTERSECTS_BACK &&
-            intersects(frustum.getTop()) != Plane::INTERSECTS_BACK );
-}
-
-float BoundingSphere::intersects(const Plane& plane) const
-{
-    float distance = plane.distance(center);
-
-    if (fabsf(distance) <= radius)
-    {
-        return Plane::INTERSECTS_INTERSECTING;
-    }
-    else if (distance > 0.0f)
-    {
-        return Plane::INTERSECTS_FRONT;
-    }
-    else
-    {
-        return Plane::INTERSECTS_BACK;
-    }
-}
-
-float BoundingSphere::intersects(const Ray& ray) const
-{
-    const Vector3& origin = ray.getOrigin();
-    const Vector3& direction = ray.getDirection();
-
-    // Calculate the vector and the square of the distance from the ray's origin to this sphere's center.
-    float vx = origin.x - center.x;
-    float vy = origin.y - center.y;
-    float vz = origin.z - center.z;
-    float d2 = vx * vx + vy * vy + vz * vz;
-
-    // Solve the quadratic equation using the ray's and sphere's equations together.
-    // Since the ray's direction is guaranteed to be 1 by the Ray, we don't need to
-    // calculate and use A (A=ray.getDirection().lengthSquared()).
-    float B = 2.0f * (vx * direction.x + vy * direction.y + vz * direction.z);
-    float C = d2 - radius * radius;
-    float discriminant = B * B - 4.0f * C;
-
-    // If the discriminant is negative, then there is no intersection.
-    if (discriminant < 0.0f)
-    {
-        return Ray::INTERSECTS_NONE;
-    }
-    else
-    {
-        // The intersection is at the smaller positive root.
-        float sqrtDisc = sqrt(discriminant);
-        float t0 = (-B - sqrtDisc) * 0.5f;
-        float t1 = (-B + sqrtDisc) * 0.5f;
-        return (t0 > 0.0f && t0 < t1) ? t0 : t1;
-    }
-}
-
-bool BoundingSphere::isEmpty() const
-{
-    return radius == 0.0f;
-}
-
-void BoundingSphere::merge(const BoundingSphere& sphere)
-{
-    if (sphere.isEmpty())
-        return;
-
-    // Calculate the distance between the two centers.
-    float vx = center.x - sphere.center.x;
-    float vy = center.y - sphere.center.y;
-    float vz = center.z - sphere.center.z;
-    float d = sqrt(vx * vx + vy * vy + vz * vz);
-
-    // If one sphere is contained inside the other, set to the larger sphere.
-    if (d <= (sphere.radius - radius))
-    {
-        center = sphere.center;
-        radius = sphere.radius;
-        return;
-    }
-    else if (d <= (radius - sphere.radius))
-    {
-        return;
-    }
-
-    // Calculate the unit vector between the two centers.
-    GP_ASSERT(d != 0.0f);
-    float dI = 1.0f / d;
-    vx *= dI;
-    vy *= dI;
-    vz *= dI;
-
-    // Calculate the new radius.
-    float r = (radius + sphere.radius + d) * 0.5f;
-
-    // Calculate the new center.
-    float scaleFactor = (r - sphere.radius);
-    vx = vx * scaleFactor + sphere.center.x;
-    vy = vy * scaleFactor + sphere.center.y;
-    vz = vz * scaleFactor + sphere.center.z;
-
-    // Set the new center and radius.
-    center.x = vx;
-    center.y = vy;
-    center.z = vz;
-    radius = r;
-}
-
-void BoundingSphere::merge(const BoundingBox& box)
-{
-    if (box.isEmpty())
-        return;
-
-    const Vector3& min = box.min;
-    const Vector3& max = box.max;
-
-    // Find the corner of the bounding box that is farthest away from this sphere's center.
-    float v1x = min.x - center.x;
-    float v1y = min.y - center.y;
-    float v1z = min.z - center.z;
-    float v2x = max.x - center.x;
-    float v2y = max.y - center.y;
-    float v2z = max.z - center.z;
-    float fx = min.x;
-    float fy = min.y;
-    float fz = min.z;
-
-    if (v2x > v1x)
-    {
-        fx = max.x;
-    }
-    if (v2y > v1y)
-    {
-        fy = max.y;
-    }
-    if (v2z > v1z)
-    {
-        fz = max.z;
-    }
-
-    // Calculate the unit vector and the distance between the center and the farthest point.
-    v1x = center.x - fx;
-    v1y = center.y - fy;
-    v1z = center.z - fz;
-    float distance = sqrt(v1x * v1x + v1y * v1y + v1z * v1z);
-
-    // If the box is inside the sphere, we are done.
-    if (distance <= radius)
-    {
-        return;
-    }
-
-    // Calculate the unit vector between the center and the farthest point.
-    GP_ASSERT(distance != 0.0f);
-    float dI = 1.0f / distance;
-    v1x *= dI;
-    v1y *= dI;
-    v1z *= dI;
-
-    // Calculate the new radius.
-    float r = (radius + distance) * 0.5f;
-
-    // Calculate the new center.
-    v1x = v1x * r + fx;
-    v1y = v1y * r + fy;
-    v1z = v1z * r + fz;
-
-    // Set the new center and radius.
-    center.x = v1x;
-    center.y = v1y;
-    center.z = v1z;
-    radius = r;
-}
-
-void BoundingSphere::set(const Vector3& center, float radius)
-{
-    this->center = center;
-    this->radius = radius;
-}
-
-void BoundingSphere::set(const BoundingSphere& sphere)
-{
-    center = sphere.center;
-    radius = sphere.radius;
-}
-
-void BoundingSphere::set(const BoundingBox& box)
-{
-    center.x = (box.min.x + box.max.x) * 0.5f;
-    center.y = (box.min.y + box.max.y) * 0.5f;
-    center.z = (box.min.z + box.max.z) * 0.5f;
-    radius = center.distance(box.max);
-}
-
-void BoundingSphere::transform(const Matrix& matrix)
-{
-    // Translate the center point.
-    matrix.transformPoint(center, &center);
-
-    // Scale the sphere's radius by the scale fo the matrix
-    Vector3 scale;
-    matrix.decompose(&scale, NULL, NULL);
-    float r = radius * scale.x;
-    r = max(r, radius * scale.y);
-    r = max(r, radius * scale.z);
-    radius = r;
-}
-
-float BoundingSphere::distance(const BoundingSphere& sphere, const Vector3& point)
-{
-    return sqrt((point.x - sphere.center.x) * (point.x - sphere.center.x) +
-                 (point.y - sphere.center.y) * (point.y - sphere.center.x) +
-                 (point.z - sphere.center.z) * (point.z - sphere.center.x));
-}
-
-bool BoundingSphere::contains(const BoundingSphere& sphere, Vector3* points, unsigned int count)
-{
-    for (unsigned int i = 0; i < count; i++)
-    {
-        if (distance(sphere, points[i]) > sphere.radius)
-        {
-            return false;
-        }
-    }
-    return true;
-}
-
-}

+ 0 - 184
gameplay/src/BoundingSphere.h

@@ -1,184 +0,0 @@
-#ifndef BOUNDINGSPHERE_H_
-#define BOUNDINGSPHERE_H_
-
-#include "Frustum.h"
-
-namespace gameplay
-{
-
-/**
- * Defines a 3-dimensional bounding sphere.
- */
-class BoundingSphere
-{
-public:
-
-    /**
-     * The center point.
-     */
-    Vector3 center;
-
-    /**
-     * The sphere radius.
-     */
-    float radius;
-
-    /**
-     *  Constructs a new bounding sphere initialized to all zeros.
-     */
-    BoundingSphere();
-
-    /**
-     * Constructs a new bounding sphere initialized to the specified values.
-     *
-     * @param center The center of the sphere.
-     * @param radius The radius of the sphere.
-     */
-    BoundingSphere(const Vector3& center, float radius);
-
-    /**
-     * Constructs a bounding sphere from the given bounding sphere.
-     *
-     * @param copy The bounding sphere to copy.
-     */
-    BoundingSphere(const BoundingSphere& copy);
-
-    /**
-     * Destructor.
-     */
-    ~BoundingSphere();
-
-    /**
-     * Returns an empty bounding sphere.
-     */
-    static const BoundingSphere& empty();
-
-    /**
-     * Tests whether this bounding sphere intersects the specified bounding sphere.
-     *
-     * @param sphere The bounding sphere to test intersection with.
-     * 
-     * @return true if the specified bounding sphere intersects this bounding sphere; false otherwise.
-     */
-    bool intersects(const BoundingSphere& sphere) const;
-
-    /**
-     * Tests whether this bounding sphere intersects the specified bounding box.
-     *
-     * @param box The bounding box to test intersection with.
-     * 
-     * @return true if the specified bounding box intersects this bounding sphere; false otherwise.
-     */
-    bool intersects(const BoundingBox& box) const;
-
-    /**
-     * Tests whether this bounding sphere intersects the specified frustum.
-     *
-     * @param frustum The frustum to test intersection with.
-     * 
-     * @return true if this bounding sphere intersects the specified frustum; false otherwise.
-     */
-    bool intersects(const Frustum& frustum) const;
-
-    /**
-     * Tests whether this bounding sphere intersects the specified plane.
-     *
-     * @param plane The plane to test intersection with.
-     * 
-     * @return Plane::INTERSECTS_BACK INTERSECTS_BACK if this bounding sphere is in the negative half-space of
-     *  the plane, Plane::INTERSECTS_FRONT INTERSECTS_FRONT if it is in the positive half-space of the plane,
-     *  and Plane::INTERSECTS_INTERSECTING INTERSECTS_INTERSECTING if it intersects the plane.
-     */
-    float intersects(const Plane& plane) const;
-
-    /**
-     * Tests whether this bounding sphere intersects the specified ray.
-     *
-     * @param ray The ray to test intersection with.
-     * 
-     * @return The distance from the origin of the ray to this bounding sphere or
-     *  Ray::INTERSECTS_NONE INTERSECTS_NONE if the ray does not intersect this bounding sphere.
-     */
-    float intersects(const Ray& ray) const;
-
-    /**
-     * Determines if this bounding sphere is empty.
-     *
-     * @return true if this bounding sphere is empty; false otherwise.
-     */
-    bool isEmpty() const;
-
-    /**
-     * Sets this bounding sphere to the smallest bounding sphere
-     * that contains both this bounding sphere and the specified bounding sphere.
-     *
-     * @param sphere The bounding sphere to merge with.
-     */
-    void merge(const BoundingSphere& sphere);
-
-    /**
-     * Sets this bounding sphere to the smallest bounding sphere
-     * that contains both this bounding sphere and the specified bounding box.
-     *
-     * @param box The bounding box to merge with.
-     */
-    void merge(const BoundingBox& box);
-
-    /**
-     * Sets this bounding sphere to the specified values.
-     *
-     * @param center The center of the sphere.
-     * @param radius The radius of the sphere.
-     */
-    void set(const Vector3& center, float radius);
-
-    /**
-     * Sets this bounding sphere to the specified bounding sphere.
-     *
-     * @param sphere The bounding sphere to set to.
-     */
-    void set(const BoundingSphere& sphere);
-
-    /**
-     * Sets this bounding sphere to tightly contain the specified bounding box.
-     *
-     * @param box The box to contain.
-     */
-    void set(const BoundingBox& box);
-
-    /**
-     * Transforms the bounding sphere by the given transformation matrix.
-     *
-     * @param matrix The transformation matrix to transform by.
-     */
-    void transform(const Matrix& matrix);
-
-    /**
-     * Transforms this bounding sphere by the given matrix.
-     * 
-     * @param matrix The matrix to transform by.
-     * @return This bounding sphere, after the transformation occurs.
-     */
-    inline BoundingSphere& operator*=(const Matrix& matrix);
-
-private:
-
-    float distance(const BoundingSphere& sphere, const Vector3&);
-
-    bool contains(const BoundingSphere& sphere, Vector3* points, unsigned int count);
-};
-
-/**
- * Transforms the given bounding sphere by the given matrix.
- * 
- * @param matrix The matrix to transform by.
- * @param sphere The bounding sphere to transform.
- * @return The resulting transformed bounding sphere.
- */
-inline const BoundingSphere operator*(const Matrix& matrix, const BoundingSphere& sphere);
-
-}
-
-#include "BoundingSphere.inl"
-
-#endif

+ 0 - 19
gameplay/src/BoundingSphere.inl

@@ -1,19 +0,0 @@
-#include "BoundingSphere.h"
-
-namespace gameplay
-{
-
-inline BoundingSphere& BoundingSphere::operator*=(const Matrix& matrix)
-{
-    transform(matrix);
-    return *this;
-}
-
-inline const BoundingSphere operator*(const Matrix& matrix, const BoundingSphere& sphere)
-{
-    BoundingSphere s(sphere);
-    s.transform(matrix);
-    return s;
-}
-
-}

+ 0 - 1898
gameplay/src/Bundle.cpp

@@ -1,1898 +0,0 @@
-#include "Base.h"
-#include "Bundle.h"
-#include "FileSystem.h"
-#include "MeshPart.h"
-#include "Scene.h"
-#include "Joint.h"
-
-// Minimum version numbers supported
-#define BUNDLE_VERSION_MAJOR_REQUIRED   1 
-#define BUNDLE_VERSION_MINOR_REQUIRED   2
-
-#define BUNDLE_TYPE_SCENE               1
-#define BUNDLE_TYPE_NODE                2
-#define BUNDLE_TYPE_ANIMATIONS          3
-#define BUNDLE_TYPE_ANIMATION           4
-#define BUNDLE_TYPE_ANIMATION_CHANNEL   5
-#define BUNDLE_TYPE_MODEL               10
-#define BUNDLE_TYPE_MATERIAL            16
-#define BUNDLE_TYPE_EFFECT              18
-#define BUNDLE_TYPE_CAMERA              32
-#define BUNDLE_TYPE_LIGHT               33
-#define BUNDLE_TYPE_MESH                34
-#define BUNDLE_TYPE_MESHPART            35
-#define BUNDLE_TYPE_MESHSKIN            36
-#define BUNDLE_TYPE_FONT                128
-
-// For sanity checking string reads
-#define BUNDLE_MAX_STRING_LENGTH        5000
-
-#define BUNDLE_VERSION_MAJOR_FONT_FORMAT  1
-#define BUNDLE_VERSION_MINOR_FONT_FORMAT  5
-
-namespace gameplay
-{
-
-static std::vector<Bundle*> __bundleCache;
-
-Bundle::Bundle(const char* path) :
-    _path(path), _referenceCount(0), _references(NULL), _stream(NULL), _trackedNodes(NULL)
-{
-}
-
-Bundle::~Bundle()
-{
-    clearLoadSession();
-
-    // Remove this Bundle from the cache.
-    std::vector<Bundle*>::iterator itr = std::find(__bundleCache.begin(), __bundleCache.end(), this);
-    if (itr != __bundleCache.end())
-    {
-        __bundleCache.erase(itr);
-    }
-
-    SAFE_DELETE_ARRAY(_references);
-
-    if (_stream)
-    {
-        SAFE_DELETE(_stream);
-    }
-}
-
-unsigned int Bundle::getVersionMajor() const
-{
-    return (unsigned int)_version[0];
-}
-
-unsigned int Bundle::getVersionMinor() const
-{
-    return (unsigned int)_version[1];
-}
-
-template <class T>
-bool Bundle::readArray(unsigned int* length, T** ptr)
-{
-    GP_ASSERT(length);
-    GP_ASSERT(ptr);
-    GP_ASSERT(_stream);
-
-    if (!read(length))
-    {
-        GP_ERROR("Failed to read the length of an array of data (to be read into an array).");
-        return false;
-    }
-    if (*length > 0)
-    {
-        *ptr = new T[*length];
-        if (_stream->read(*ptr, sizeof(T), *length) != *length)
-        {
-            GP_ERROR("Failed to read an array of data from bundle (into an array).");
-            SAFE_DELETE_ARRAY(*ptr);
-            return false;
-        }
-    }
-    return true;
-}
-
-template <class T>
-bool Bundle::readArray(unsigned int* length, std::vector<T>* values)
-{
-    GP_ASSERT(length);
-    GP_ASSERT(_stream);
-
-    if (!read(length))
-    {
-        GP_ERROR("Failed to read the length of an array of data (to be read into a std::vector).");
-        return false;
-    }
-    if (*length > 0 && values)
-    {
-        values->resize(*length);
-        if (_stream->read(&(*values)[0], sizeof(T), *length) != *length)
-        {
-            GP_ERROR("Failed to read an array of data from bundle (into a std::vector).");
-            return false;
-        }
-    }
-    return true;
-}
-
-template <class T>
-bool Bundle::readArray(unsigned int* length, std::vector<T>* values, unsigned int readSize)
-{
-    GP_ASSERT(length);
-    GP_ASSERT(_stream);
-    GP_ASSERT(sizeof(T) >= readSize);
-
-    if (!read(length))
-    {
-        GP_ERROR("Failed to read the length of an array of data (to be read into a std::vector with a specified single element read size).");
-        return false;
-    }
-    if (*length > 0 && values)
-    {
-        values->resize(*length);
-        if (_stream->read(&(*values)[0], readSize, *length) != *length)
-        {
-            GP_ERROR("Failed to read an array of data from bundle (into a std::vector with a specified single element read size).");
-            return false;
-        }
-    }
-    return true;
-}
-
-static std::string readString(Stream* stream)
-{
-    GP_ASSERT(stream);
-
-    unsigned int length;
-    if (stream->read(&length, 4, 1) != 1)
-    {
-        GP_ERROR("Failed to read the length of a string from a bundle.");
-        return std::string();
-    }
-
-    // Sanity check to detect if string length is far too big.
-    GP_ASSERT(length < BUNDLE_MAX_STRING_LENGTH);
-
-    std::string str;
-    if (length > 0)
-    {
-        str.resize(length);
-        if (stream->read(&str[0], 1, length) != length)
-        {
-            GP_ERROR("Failed to read string from bundle.");
-            return std::string();
-        }
-    }
-    return str;
-}
-
-Bundle* Bundle::create(const char* path)
-{
-    GP_ASSERT(path);
-
-    // Search the cache for this bundle.
-    for (size_t i = 0, count = __bundleCache.size(); i < count; ++i)
-    {
-        Bundle* p = __bundleCache[i];
-        GP_ASSERT(p);
-        if (p->_path == path)
-        {
-            // Found a match
-            p->addRef();
-            return p;
-        }
-    }
-
-    // Open the bundle.
-    Stream* stream = FileSystem::open(path);
-    if (!stream)
-    {
-        GP_WARN("Failed to open file '%s'.", path);
-        return NULL;
-    }
-
-    // Read the GPB header info.
-    char sig[9];
-    if (stream->read(sig, 1, 9) != 9 || memcmp(sig, "\xABGPB\xBB\r\n\x1A\n", 9) != 0)
-    {
-        SAFE_DELETE(stream);
-        GP_WARN("Invalid GPB header for bundle '%s'.", path);
-        return NULL;
-    }
-
-    // Read version.
-    unsigned char version[2];
-    if (stream->read(version, 1, 2) != 2)
-    {
-        SAFE_DELETE(stream);
-        GP_WARN("Failed to read GPB version for bundle '%s'.", path);
-        return NULL;
-    }
-    // Check for the minimal 
-    if (version[0] != BUNDLE_VERSION_MAJOR_REQUIRED || version[1] < BUNDLE_VERSION_MINOR_REQUIRED)
-    {
-        SAFE_DELETE(stream);
-        GP_WARN("Unsupported version (%d.%d) for bundle '%s' (expected %d.%d).", (int)version[0], (int)version[1], path, BUNDLE_VERSION_MAJOR_REQUIRED, BUNDLE_VERSION_MINOR_REQUIRED);
-        return NULL;
-    }
-
-    // Read ref table.
-    unsigned int refCount;
-    if (stream->read(&refCount, 4, 1) != 1)
-    {
-        SAFE_DELETE(stream);
-        GP_WARN("Failed to read ref table for bundle '%s'.", path);
-        return NULL;
-    }
-
-    // Read all refs.
-    Reference* refs = new Reference[refCount];
-    for (unsigned int i = 0; i < refCount; ++i)
-    {
-        if ((refs[i].id = readString(stream)).empty() ||
-            stream->read(&refs[i].type, 4, 1) != 1 ||
-            stream->read(&refs[i].offset, 4, 1) != 1)
-        {
-            SAFE_DELETE(stream);
-            GP_WARN("Failed to read ref number %d for bundle '%s'.", i, path);
-            SAFE_DELETE_ARRAY(refs);
-            return NULL;
-        }
-    }
-
-    // Keep file open for faster reading later.
-    Bundle* bundle = new Bundle(path);
-    bundle->_version[0] = version[0];
-    bundle->_version[1] = version[1];
-    bundle->_referenceCount = refCount;
-    bundle->_references = refs;
-    bundle->_stream = stream;
-
-    return bundle;
-}
-
-Bundle::Reference* Bundle::find(const char* id) const
-{
-    GP_ASSERT(id);
-    GP_ASSERT(_references);
-
-    // Search the ref table for the given id (case-sensitive).
-    for (unsigned int i = 0; i < _referenceCount; ++i)
-    {
-        if (_references[i].id == id)
-        {
-            // Found a match
-            return &_references[i];
-        }
-    }
-
-    return NULL;
-}
-
-void Bundle::clearLoadSession()
-{
-    for (size_t i = 0, count = _meshSkins.size(); i < count; ++i)
-    {
-        SAFE_DELETE(_meshSkins[i]);
-    }
-    _meshSkins.clear();
-}
-
-const char* Bundle::getIdFromOffset() const
-{
-    GP_ASSERT(_stream);
-    return getIdFromOffset((unsigned int) _stream->position());
-}
-
-const char* Bundle::getIdFromOffset(unsigned int offset) const
-{
-    // Search the ref table for the given offset.
-    if (offset > 0)
-    {
-        GP_ASSERT(_references);
-        for (unsigned int i = 0; i < _referenceCount; ++i)
-        {
-            if (_references[i].offset == offset && _references[i].id.length() > 0)
-            {
-                return _references[i].id.c_str();
-            }
-        }
-    }
-    return NULL;
-}
-
-const std::string& Bundle::getMaterialPath()
-{
-    if (_materialPath.empty())
-    {
-        int pos = _path.find_last_of('.');
-        if (pos > 2)
-        {
-            _materialPath = _path.substr(0, pos);
-            _materialPath.append(".material");
-            if (!FileSystem::fileExists(_materialPath.c_str()))
-            {
-                _materialPath.clear();
-            }
-        }
-    }
-    return _materialPath;
-}
-
-Bundle::Reference* Bundle::seekTo(const char* id, unsigned int type)
-{
-    Reference* ref = find(id);
-    if (ref == NULL)
-    {
-        GP_ERROR("No object with name '%s' in bundle '%s'.", id, _path.c_str());
-        return NULL;
-    }
-
-    if (ref->type != type)
-    {
-        GP_ERROR("Object '%s' in bundle '%s' has type %d (expected type %d).", id, _path.c_str(), (int)ref->type, (int)type);
-        return NULL;
-    }
-
-    // Seek to the offset of this object.
-    GP_ASSERT(_stream);
-    if (_stream->seek(ref->offset, SEEK_SET) == false)
-    {
-        GP_ERROR("Failed to seek to object '%s' in bundle '%s'.", id, _path.c_str());
-        return NULL;
-    }
-
-    return ref;
-}
-
-Bundle::Reference* Bundle::seekToFirstType(unsigned int type)
-{
-    GP_ASSERT(_references);
-    GP_ASSERT(_stream);
-
-    for (unsigned int i = 0; i < _referenceCount; ++i)
-    {
-        Reference* ref = &_references[i];
-        if (ref->type == type)
-        {
-            // Found a match.
-            if (_stream->seek(ref->offset, SEEK_SET) == false)
-            {
-                GP_ERROR("Failed to seek to object '%s' in bundle '%s'.", ref->id.c_str(), _path.c_str());
-                return NULL;
-            }
-            return ref;
-        }
-    }
-    return NULL;
-}
-
-bool Bundle::read(unsigned int* ptr)
-{
-    return _stream->read(ptr, sizeof(unsigned int), 1) == 1;
-}
-
-bool Bundle::read(unsigned char* ptr)
-{
-    return _stream->read(ptr, sizeof(unsigned char), 1) == 1;
-}
-
-bool Bundle::read(float* ptr)
-{
-    return _stream->read(ptr, sizeof(float), 1) == 1;
-}
-
-bool Bundle::readMatrix(float* m)
-{
-    return _stream->read(m, sizeof(float), 16) == 16;
-}
-
-Scene* Bundle::loadScene(const char* id)
-{
-    clearLoadSession();
-
-    Reference* ref = NULL;
-    if (id)
-    {
-        ref = seekTo(id, BUNDLE_TYPE_SCENE);
-        if (!ref)
-        {
-            GP_ERROR("Failed to load scene with id '%s' from bundle.", id);
-            return NULL;
-        }
-    }
-    else
-    {
-        ref = seekToFirstType(BUNDLE_TYPE_SCENE);
-        if (!ref)
-        {
-            GP_ERROR("Failed to load scene from bundle; bundle contains no scene objects.");
-            return NULL;
-        }
-    }
-
-    Scene* scene = Scene::create(getIdFromOffset());
-
-    // Read the number of children.
-    unsigned int childrenCount;
-    if (!read(&childrenCount))
-    {
-        GP_ERROR("Failed to read the scene's number of children.");
-        SAFE_RELEASE(scene);
-        return NULL;
-    }
-    if (childrenCount > 0)
-    {
-        // Read each child directly into the scene.
-        for (unsigned int i = 0; i < childrenCount; i++)
-        {
-            Node* node = readNode(scene, NULL);
-            if (node)
-            {
-                scene->addNode(node);
-                node->release(); // scene now owns node
-            }
-        }
-    }
-    // Read active camera.
-    std::string xref = readString(_stream);
-    if (xref.length() > 1 && xref[0] == '#') // TODO: Handle full xrefs
-    {
-        Node* node = scene->findNode(xref.c_str() + 1, true);
-        GP_ASSERT(node);
-        Camera* camera = node->getCamera();
-        GP_ASSERT(camera);
-        scene->setActiveCamera(camera);
-    }
-
-    // Read ambient color.
-    float red, blue, green;
-    if (!read(&red))
-    {
-        GP_ERROR("Failed to read red component of the scene's ambient color in bundle '%s'.", _path.c_str());
-        SAFE_RELEASE(scene);
-        return NULL;
-    }
-    if (!read(&green))
-    {
-        GP_ERROR("Failed to read green component of the scene's ambient color in bundle '%s'.", _path.c_str());
-        SAFE_RELEASE(scene);
-        return NULL;
-    }
-    if (!read(&blue))
-    {
-        GP_ERROR("Failed to read blue component of the scene's ambient color in bundle '%s'.", _path.c_str());
-        SAFE_RELEASE(scene);
-        return NULL;
-    }
-    scene->setAmbientColor(red, green, blue);
-
-    // Parse animations.
-    GP_ASSERT(_references);
-    GP_ASSERT(_stream);
-    for (unsigned int i = 0; i < _referenceCount; ++i)
-    {
-        Reference* ref = &_references[i];
-        if (ref->type == BUNDLE_TYPE_ANIMATIONS)
-        {
-            // Found a match.
-            if (_stream->seek(ref->offset, SEEK_SET) == false)
-            {
-                GP_ERROR("Failed to seek to object '%s' in bundle '%s'.", ref->id.c_str(), _path.c_str());
-                return NULL;
-            }
-            readAnimations(scene);
-        }
-    }
-
-    resolveJointReferences(scene, NULL);
-
-    return scene;
-}
-
-Node* Bundle::loadNode(const char* id)
-{
-    return loadNode(id, NULL);
-}
-
-Node* Bundle::loadNode(const char* id, Scene* sceneContext)
-{
-    GP_ASSERT(id);
-    GP_ASSERT(_references);
-    GP_ASSERT(_stream);
-
-    clearLoadSession();
-
-    // Load the node and any referenced joints with node tracking enabled.
-    _trackedNodes = new std::map<std::string, Node*>();
-    Node* node = loadNode(id, sceneContext, NULL);
-    if (node)
-        resolveJointReferences(sceneContext, node);
-
-    // Load all animations targeting any nodes or mesh skins under this node's hierarchy.
-    for (unsigned int i = 0; i < _referenceCount; i++)
-    {
-        Reference* ref = &_references[i];
-        if (ref->type == BUNDLE_TYPE_ANIMATIONS)
-        {
-            if (_stream->seek(ref->offset, SEEK_SET) == false)
-            {
-                GP_ERROR("Failed to seek to object '%s' in bundle '%s'.", ref->id.c_str(), _path.c_str());
-                SAFE_DELETE(_trackedNodes);
-                return NULL;
-            }
-
-            // Read the number of animations in this object.
-            unsigned int animationCount;
-            if (!read(&animationCount))
-            {
-                GP_ERROR("Failed to read the number of animations for object '%s'.", ref->id.c_str());
-                SAFE_DELETE(_trackedNodes);
-                return NULL;
-            }
-
-            for (unsigned int j = 0; j < animationCount; j++)
-            {
-                const std::string id = readString(_stream);
-
-                // Read the number of animation channels in this animation.
-                unsigned int animationChannelCount;
-                if (!read(&animationChannelCount))
-                {
-                    GP_ERROR("Failed to read the number of animation channels for animation '%s'.", "animationChannelCount", id.c_str());
-                    SAFE_DELETE(_trackedNodes);
-                    return NULL;
-                }
-
-                Animation* animation = NULL;
-                for (unsigned int k = 0; k < animationChannelCount; k++)
-                {
-                    // Read target id.
-                    std::string targetId = readString(_stream);
-                    if (targetId.empty())
-                    {
-                        GP_ERROR("Failed to read target id for animation '%s'.", id.c_str());
-                        SAFE_DELETE(_trackedNodes);
-                        return NULL;
-                    }
-
-                    // If the target is one of the loaded nodes/joints, then load the animation.
-                    std::map<std::string, Node*>::iterator iter = _trackedNodes->find(targetId);
-                    if (iter != _trackedNodes->end())
-                    {
-                        // Read target attribute.
-                        unsigned int targetAttribute;
-                        if (!read(&targetAttribute))
-                        {
-                            GP_ERROR("Failed to read target attribute for animation '%s'.", id.c_str());
-                            SAFE_DELETE(_trackedNodes);
-                            return NULL;
-                        }
-
-                        AnimationTarget* target = iter->second;
-                        if (!target)
-                        {
-                            GP_ERROR("Failed to read %s for %s: %s", "animation target", targetId.c_str(), id.c_str());
-                            SAFE_DELETE(_trackedNodes);
-                            return NULL;
-                        }
-
-                        animation = readAnimationChannelData(animation, id.c_str(), target, targetAttribute);
-                    }
-                    else
-                    {
-                        // Skip over the target attribute.
-                        unsigned int data;
-                        if (!read(&data))
-                        {
-                            GP_ERROR("Failed to skip over target attribute for animation '%s'.", id.c_str());
-                            SAFE_DELETE(_trackedNodes);
-                            return NULL;
-                        }
-
-                        // Skip the animation channel (passing a target attribute of
-                        // 0 causes the animation to not be created).
-                        readAnimationChannelData(NULL, id.c_str(), NULL, 0);
-                    }
-                }
-            }
-        }
-    }
-
-    SAFE_DELETE(_trackedNodes);
-    return node;
-}
-
-Node* Bundle::loadNode(const char* id, Scene* sceneContext, Node* nodeContext)
-{
-    GP_ASSERT(id);
-
-    Node* node = NULL;
-
-    // Search the passed in loading contexts (scene/node) first to see
-    // if we've already loaded this node during this load session.
-    if (sceneContext)
-    {
-        node = sceneContext->findNode(id, true);
-        if (node)
-            node->addRef();
-    }
-    if (node == NULL && nodeContext)
-    {
-        node = nodeContext->findNode(id, true);
-        if (node)
-            node->addRef();
-    }
-
-    if (node == NULL)
-    {
-        // If not yet found, search the ref table and read.
-        Reference* ref = seekTo(id, BUNDLE_TYPE_NODE);
-        if (ref == NULL)
-        {
-            return NULL;
-        }
-
-        node = readNode(sceneContext, nodeContext);
-    }
-
-    return node;
-}
-
-bool Bundle::skipNode()
-{
-    const char* id = getIdFromOffset();
-    GP_ASSERT(id);
-    GP_ASSERT(_stream);
-
-    // Skip the node's type.
-    unsigned int nodeType;
-    if (!read(&nodeType))
-    {
-        GP_ERROR("Failed to skip node type for node '%s'.", id);
-        return false;
-    }
-
-    // Skip over the node's transform and parent ID.
-    if (_stream->seek(sizeof(float) * 16, SEEK_CUR) == false)
-    {
-        GP_ERROR("Failed to skip over node transform for node '%s'.", id);
-        return false;
-    }
-    readString(_stream);
-
-    // Skip over the node's children.
-    unsigned int childrenCount;
-    if (!read(&childrenCount))
-    {
-        GP_ERROR("Failed to skip over node's children count for node '%s'.", id);
-        return false;
-    }
-    else if (childrenCount > 0)
-    {
-        for (unsigned int i = 0; i < childrenCount; i++)
-        {
-            if (!skipNode())
-                return false;
-        }
-    }
-
-    // Skip over the node's camera, light, and model attachments.
-    Camera* camera = readCamera();
-    SAFE_RELEASE(camera);
-    Light* light = readLight();
-    SAFE_RELEASE(light);
-    Model* model = readModel(id);
-    SAFE_RELEASE(model);
-
-    return true;
-}
-
-Node* Bundle::readNode(Scene* sceneContext, Node* nodeContext)
-{
-    const char* id = getIdFromOffset();
-    GP_ASSERT(id);
-    GP_ASSERT(_stream);
-
-    // If we are tracking nodes and it's not in the set yet, add it.
-    if (_trackedNodes)
-    {
-        std::map<std::string, Node*>::iterator iter = _trackedNodes->find(id);
-        if (iter != _trackedNodes->end())
-        {
-            // Skip over this node since we previously read it
-            if (!skipNode())
-                return NULL;
-
-            iter->second->addRef();
-            return iter->second;
-        }
-    }
-
-    // Read node type.
-    unsigned int nodeType;
-    if (!read(&nodeType))
-    {
-        GP_ERROR("Failed to read node type for node '%s'.", id);
-        return NULL;
-    }
-
-    Node* node = NULL;
-    switch (nodeType)
-    {
-    case Node::NODE:
-        node = Node::create(id);
-        break;
-    case Node::JOINT:
-        node = Joint::create(id);
-        break;
-    default:
-        return NULL;
-    }
-
-    if (_trackedNodes)
-    {
-        // Add the new node to the list of tracked nodes
-        _trackedNodes->insert(std::make_pair(id, node));
-    }
-
-    // If no loading context is set, set this node as the loading context.
-    if (sceneContext == NULL && nodeContext == NULL)
-    {
-        nodeContext = node;
-    }
-
-    // Read transform.
-    float transform[16];
-    if (_stream->read(transform, sizeof(float), 16) != 16)
-    {
-        GP_ERROR("Failed to read transform for node '%s'.", id);
-        SAFE_RELEASE(node);
-        return NULL;
-    }
-    setTransform(transform, node);
-
-    // Skip the parent ID.
-    readString(_stream);
-
-    // Read children.
-    unsigned int childrenCount;
-    if (!read(&childrenCount))
-    {
-        GP_ERROR("Failed to read children count for node '%s'.", id);
-        SAFE_RELEASE(node);
-        return NULL;
-    }
-    if (childrenCount > 0)
-    {
-        // Read each child.
-        for (unsigned int i = 0; i < childrenCount; i++)
-        {
-            // Search the passed in loading contexts (scene/node) first to see
-            // if we've already loaded this child node during this load session.
-            Node* child = NULL;
-            id = getIdFromOffset();
-            GP_ASSERT(id);
-
-            if (sceneContext)
-            {
-                child = sceneContext->findNode(id, true);
-            }
-            if (child == NULL && nodeContext)
-            {
-                child = nodeContext->findNode(id, true);
-            }
-
-            // If the child was already loaded, skip it, otherwise read it
-            if (child)
-            {
-                skipNode();
-            }
-            else
-            {
-                child = readNode(sceneContext, nodeContext);
-            }
-
-            if (child)
-            {
-                node->addChild(child);
-                child->release(); // 'node' now owns this child
-            }
-        }
-    }
-
-    // Read camera.
-    Camera* camera = readCamera();
-    if (camera)
-    {
-        node->setCamera(camera);
-        SAFE_RELEASE(camera);
-    }
-
-    // Read light.
-    Light* light = readLight();
-    if (light)
-    {
-        node->setLight(light);
-        SAFE_RELEASE(light);
-    }
-
-    // Read model.
-    Model* model = readModel(node->getId());
-    if (model)
-    {
-        node->setDrawable(model);
-        SAFE_RELEASE(model);
-    }
-    return node;
-}
-
-Camera* Bundle::readCamera()
-{
-    unsigned char cameraType;
-    if (!read(&cameraType))
-    {
-        GP_ERROR("Failed to load camera type in bundle '%s'.", _path.c_str());
-        return NULL;
-    }
-
-    // Check if there isn't a camera to load.
-    if (cameraType == 0)
-    {
-        return NULL;
-    }
-
-    float aspectRatio;
-    if (!read(&aspectRatio))
-    {
-        GP_ERROR("Failed to load camera aspect ratio in bundle '%s'.", _path.c_str());
-        return NULL;
-    }
-
-    float nearPlane;
-    if (!read(&nearPlane))
-    {
-        GP_ERROR("Failed to load camera near plane in bundle '%s'.", _path.c_str());
-        return NULL;
-    }
-
-    float farPlane;
-    if (!read(&farPlane))
-    {
-        GP_ERROR("Failed to load camera far plane in bundle '%s'.", _path.c_str());
-        return NULL;
-    }
-
-    Camera* camera = NULL;
-    if (cameraType == Camera::PERSPECTIVE)
-    {
-        float fieldOfView;
-        if (!read(&fieldOfView))
-        {
-            GP_ERROR("Failed to load camera field of view in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-
-        camera = Camera::createPerspective(fieldOfView, aspectRatio, nearPlane, farPlane);
-    }
-    else if (cameraType == Camera::ORTHOGRAPHIC)
-    {
-        float zoomX;
-        if (!read(&zoomX))
-        {
-            GP_ERROR("Failed to load camera zoomX in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-
-        float zoomY;
-        if (!read(&zoomY))
-        {
-            GP_ERROR("Failed to load camera zoomY in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-
-        camera = Camera::createOrthographic(zoomX, zoomY, aspectRatio, nearPlane, farPlane);
-    }
-    else
-    {
-        GP_ERROR("Unsupported camera type (%d) in bundle '%s'.", cameraType, _path.c_str());
-        return NULL;
-    }
-    return camera;
-}
-
-Light* Bundle::readLight()
-{
-    unsigned char type;
-    if (!read(&type))
-    {
-        GP_ERROR("Failed to load light type in bundle '%s'.", _path.c_str());
-        return NULL;
-    }
-
-    // Check if there isn't a light to load.
-    if (type == 0)
-    {
-        return NULL;
-    }
-
-    // Read color.
-    float red, blue, green;
-    if (!read(&red) || !read(&blue) || !read(&green))
-    {
-        GP_ERROR("Failed to load light color in bundle '%s'.", _path.c_str());
-        return NULL;
-    }
-    Vector3 color(red, blue, green);
-
-    Light* light = NULL;
-    if (type == Light::DIRECTIONAL)
-    {
-        light = Light::createDirectional(color);
-    }
-    else if (type == Light::POINT)
-    {
-        float range;
-        if (!read(&range))
-        {
-            GP_ERROR("Failed to load point light range in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-        light = Light::createPoint(color, range);
-    }
-    else if (type == Light::SPOT)
-    {
-        float range, innerAngle, outerAngle;
-        if (!read(&range))
-        {
-            GP_ERROR("Failed to load spot light range in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-        if (!read(&innerAngle))
-        {
-            GP_ERROR("Failed to load spot light inner angle in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-        if (!read(&outerAngle))
-        {
-            GP_ERROR("Failed to load spot light outer angle in bundle '%s'.", _path.c_str());
-            return NULL;
-        }
-        light = Light::createSpot(color, range, innerAngle, outerAngle);
-    }
-    else
-    {
-        GP_ERROR("Unsupported light type (%d) in bundle '%s'.", type, _path.c_str());
-        return NULL;
-    }
-    return light;
-}
-
-Model* Bundle::readModel(const char* nodeId)
-{
-    std::string xref = readString(_stream);
-    if (xref.length() > 1 && xref[0] == '#') // TODO: Handle full xrefs
-    {
-        Mesh* mesh = loadMesh(xref.c_str() + 1, nodeId);
-        if (mesh)
-        {
-            Model* model = Model::create(mesh);
-            SAFE_RELEASE(mesh);
-
-            // Read skin.
-            unsigned char hasSkin;
-            if (!read(&hasSkin))
-            {
-                GP_ERROR("Failed to load whether model with mesh '%s' has a mesh skin in bundle '%s'.", xref.c_str() + 1, _path.c_str());
-                return NULL;
-            }
-            if (hasSkin)
-            {
-                MeshSkin* skin = readMeshSkin();
-                if (skin)
-                {
-                    model->setSkin(skin);
-                }
-            }
-            // Read material.
-            unsigned int materialCount;
-            if (!read(&materialCount))
-            {
-                GP_ERROR("Failed to load material count for model with mesh '%s' in bundle '%s'.", xref.c_str() + 1, _path.c_str());
-                return NULL;
-            }
-            if (materialCount > 0)
-            {
-                for (unsigned int i = 0; i < materialCount; ++i)
-                {
-                    std::string materialName = readString(_stream);
-                    std::string materialPath = getMaterialPath();
-                    if (materialPath.length() > 0)
-                    {
-                        materialPath.append("#");
-                        materialPath.append(materialName);
-                        Material* material = Material::create(materialPath.c_str());
-                        if (material)
-                        {
-                            int partIndex = model->getMesh()->getPartCount() > 0 ? i : -1;
-                            model->setMaterial(material, partIndex);
-                            SAFE_RELEASE(material);
-                        }
-                    }
-                }
-            }
-            return model;
-        }
-    }
-
-    return NULL;
-}
-
-MeshSkin* Bundle::readMeshSkin()
-{
-    MeshSkin* meshSkin = new MeshSkin();
-
-    // Read bindShape.
-    float bindShape[16];
-    if (!readMatrix(bindShape))
-    {
-        GP_ERROR("Failed to load bind shape for mesh skin in bundle '%s'.", _path.c_str());
-        SAFE_DELETE(meshSkin);
-        return NULL;
-    }
-    meshSkin->setBindShape(bindShape);
-
-    MeshSkinData* skinData = new MeshSkinData();
-    skinData->skin = meshSkin;
-
-    // Read joint count.
-    unsigned int jointCount;
-    if (!read(&jointCount))
-    {
-        GP_ERROR("Failed to load joint count for mesh skin in bundle '%s'.", _path.c_str());
-        SAFE_DELETE(meshSkin);
-        SAFE_DELETE(skinData);
-        return NULL;
-    }
-    if (jointCount == 0)
-    {
-        GP_ERROR("Invalid joint count (must be greater than 0) for mesh skin in bundle '%s'.", _path.c_str());
-        SAFE_DELETE(meshSkin);
-        SAFE_DELETE(skinData);
-        return NULL;
-    }
-    meshSkin->setJointCount(jointCount);
-
-    // Read joint xref strings for all joints in the list.
-    for (unsigned int i = 0; i < jointCount; i++)
-    {
-        skinData->joints.push_back(readString(_stream));
-    }
-
-    // Read bind poses.
-    unsigned int jointsBindPosesCount;
-    if (!read(&jointsBindPosesCount))
-    {
-        GP_ERROR("Failed to load number of joint bind poses in bundle '%s'.", _path.c_str());
-        SAFE_DELETE(meshSkin);
-        SAFE_DELETE(skinData);
-        return NULL;
-    }
-    if (jointsBindPosesCount > 0)
-    {
-        GP_ASSERT(jointCount * 16 == jointsBindPosesCount);
-        float m[16];
-        for (unsigned int i = 0; i < jointCount; i++)
-        {
-            if (!readMatrix(m))
-            {
-                GP_ERROR("Failed to load joint bind pose matrix (for joint with index %d) in bundle '%s'.", i, _path.c_str());
-                SAFE_DELETE(meshSkin);
-                SAFE_DELETE(skinData);
-                return NULL;
-            }
-            skinData->inverseBindPoseMatrices.push_back(m);
-        }
-    }
-
-    // Store the MeshSkinData so we can go back and resolve all joint references later.
-    _meshSkins.push_back(skinData);
-
-    return meshSkin;
-}
-
-void Bundle::resolveJointReferences(Scene* sceneContext, Node* nodeContext)
-{
-    GP_ASSERT(_stream);
-
-    for (size_t i = 0, skinCount = _meshSkins.size(); i < skinCount; ++i)
-    {
-        MeshSkinData* skinData = _meshSkins[i];
-        GP_ASSERT(skinData);
-        GP_ASSERT(skinData->skin);
-
-        // Resolve all joints in skin joint list.
-        size_t jointCount = skinData->joints.size();
-        for (size_t j = 0; j < jointCount; ++j)
-        {
-            // TODO: Handle full xrefs (not just local # xrefs).
-            std::string jointId = skinData->joints[j];
-            if (jointId.length() > 1 && jointId[0] == '#')
-            {
-                jointId = jointId.substr(1, jointId.length() - 1);
-
-                Node* n = loadNode(jointId.c_str(), sceneContext, nodeContext);
-                if (n && n->getType() == Node::JOINT)
-                {
-                    Joint* joint = static_cast<Joint*>(n);
-                    joint->setInverseBindPose(skinData->inverseBindPoseMatrices[j]);
-                    skinData->skin->setJoint(joint, (unsigned int)j);
-                    SAFE_RELEASE(joint);
-                }
-            }
-        }
-
-        // Set the root joint.
-        if (jointCount > 0)
-        {
-            Joint* rootJoint = skinData->skin->getJoint((unsigned int)0);
-            Node* node = rootJoint;
-            GP_ASSERT(node);
-            Node* parent = node->getParent();
-
-            std::vector<Node*> loadedNodes;
-            while (true)
-            {
-                if (parent)
-                {
-                    if (skinData->skin->getJointIndex(static_cast<Joint*>(parent)) != -1)
-                    {
-                        // Parent is a joint in the MeshSkin, so treat it as the new root.
-                        rootJoint = static_cast<Joint*>(parent);
-                    }
-
-                    node = parent;
-                    parent = node->getParent();
-                }
-                else
-                {
-                    // No parent currently set for this joint.
-                    // Lookup its parentID in case it references a node that was not yet loaded as part
-                    // of the mesh skin's joint list.
-                    std::string nodeId = node->getId();
-
-                    while (true)
-                    {
-                        // Get the node's type.
-                        Reference* ref = find(nodeId.c_str());
-                        if (ref == NULL)
-                        {
-                            GP_ERROR("No object with name '%s' in bundle '%s'.", nodeId.c_str(), _path.c_str());
-                            return;
-                        }
-
-                        // Seek to the current node in the file so we can get it's parent ID.
-                        seekTo(nodeId.c_str(), ref->type);
-
-                        // Skip over the node type (1 unsigned int) and transform (16 floats) and read the parent id.
-                        if (_stream->seek(sizeof(unsigned int) + sizeof(float)*16, SEEK_CUR) == false)
-                        {
-                            GP_ERROR("Failed to skip over node type and transform for node '%s' in bundle '%s'.", nodeId.c_str(), _path.c_str());
-                            return;
-                        }
-                        std::string parentID = readString(_stream);
-
-                        if (!parentID.empty())
-                            nodeId = parentID;
-                        else
-                            break;
-                    }
-
-                    if (nodeId != rootJoint->getId())
-                        loadedNodes.push_back(loadNode(nodeId.c_str(), sceneContext, nodeContext));
-
-                    break;
-                }
-            }
-
-            skinData->skin->setRootJoint(rootJoint);
-
-            // Release all the nodes that we loaded since the nodes are now owned by the mesh skin/joints.
-            for (unsigned int i = 0; i < loadedNodes.size(); i++)
-            {
-                SAFE_RELEASE(loadedNodes[i]);
-            }
-        }
-
-        // Remove the joint hierarchy from the scene since it is owned by the mesh skin.
-        if (sceneContext)
-            sceneContext->removeNode(skinData->skin->_rootNode);
-
-        // Done with this MeshSkinData entry.
-        SAFE_DELETE(_meshSkins[i]);
-    }
-    _meshSkins.clear();
-}
-
-void Bundle::readAnimation(Scene* scene)
-{
-    const std::string animationId = readString(_stream);
-
-    // Read the number of animation channels in this animation.
-    unsigned int animationChannelCount;
-    if (!read(&animationChannelCount))
-    {
-        GP_ERROR("Failed to read animation channel count for animation '%s'.", animationId.c_str());
-        return;
-    }
-
-    Animation* animation = NULL;
-    for (unsigned int i = 0; i < animationChannelCount; i++)
-    {
-        animation = readAnimationChannel(scene, animation, animationId.c_str());
-    }
-}
-
-void Bundle::readAnimations(Scene* scene)
-{
-    // Read the number of animations in this object.
-    unsigned int animationCount;
-    if (!read(&animationCount))
-    {
-        GP_ERROR("Failed to read the number of animations in the scene.");
-        return;
-    }
-
-    for (unsigned int i = 0; i < animationCount; i++)
-    {
-        readAnimation(scene);
-    }
-}
-
-Animation* Bundle::readAnimationChannel(Scene* scene, Animation* animation, const char* animationId)
-{
-    GP_ASSERT(animationId);
-
-    // Read target id.
-    std::string targetId = readString(_stream);
-    if (targetId.empty())
-    {
-        GP_ERROR("Failed to read target id for animation '%s'.", animationId);
-        return NULL;
-    }
-
-    // Read target attribute.
-    unsigned int targetAttribute;
-    if (!read(&targetAttribute))
-    {
-        GP_ERROR("Failed to read target attribute for animation '%s'.", animationId);
-        return NULL;
-    }
-
-    AnimationTarget* target = NULL;
-
-    // Search for a node that matches the target.
-    if (!target)
-    {
-        target = scene->findNode(targetId.c_str());
-        if (!target)
-        {
-            GP_ERROR("Failed to find the animation target (with id '%s') for animation '%s'.", targetId.c_str(), animationId);
-            return NULL;
-        }
-    }
-
-    return readAnimationChannelData(animation, animationId, target, targetAttribute);
-}
-
-Animation* Bundle::readAnimationChannelData(Animation* animation, const char* id, AnimationTarget* target, unsigned int targetAttribute)
-{
-    GP_ASSERT(id);
-
-    std::vector<unsigned int> keyTimes;
-    std::vector<float> values;
-    std::vector<float> tangentsIn;
-    std::vector<float> tangentsOut;
-    std::vector<unsigned int> interpolation;
-
-    // Length of the arrays.
-    unsigned int keyTimesCount;
-    unsigned int valuesCount;
-    unsigned int tangentsInCount;
-    unsigned int tangentsOutCount;
-    unsigned int interpolationCount;
-
-    // Read key times.
-    if (!readArray(&keyTimesCount, &keyTimes, sizeof(unsigned int)))
-    {
-        GP_ERROR("Failed to read key times for animation '%s'.", id);
-        return NULL;
-    }
-
-    // Read key values.
-    if (!readArray(&valuesCount, &values))
-    {
-        GP_ERROR("Failed to read key values for animation '%s'.", id);
-        return NULL;
-    }
-
-    // Read in-tangents.
-    if (!readArray(&tangentsInCount, &tangentsIn))
-    {
-        GP_ERROR("Failed to read in tangents for animation '%s'.", id);
-        return NULL;
-    }
-
-    // Read out-tangents.
-    if (!readArray(&tangentsOutCount, &tangentsOut))
-    {
-        GP_ERROR("Failed to read out tangents for animation '%s'.", id);
-        return NULL;
-    }
-
-    // Read interpolations.
-    if (!readArray(&interpolationCount, &interpolation, sizeof(unsigned int)))
-    {
-        GP_ERROR("Failed to read the interpolation values for animation '%s'.", id);
-        return NULL;
-    }
-
-    if (targetAttribute > 0)
-    {
-        GP_ASSERT(target);
-        GP_ASSERT(keyTimes.size() > 0 && values.size() > 0);
-        if (animation == NULL)
-        {
-            // TODO: This code currently assumes LINEAR only.
-            animation = target->createAnimation(id, targetAttribute, keyTimesCount, &keyTimes[0], &values[0], Curve::LINEAR);
-        }
-        else
-        {
-            animation->createChannel(target, targetAttribute, keyTimesCount, &keyTimes[0], &values[0], Curve::LINEAR);
-        }
-    }
-
-    return animation;
-}
-
-Mesh* Bundle::loadMesh(const char* id)
-{
-    return loadMesh(id, NULL);
-}
-
-Mesh* Bundle::loadMesh(const char* id, const char* nodeId)
-{
-    GP_ASSERT(_stream);
-    GP_ASSERT(id);
-
-    // Save the file position.
-    long position = _stream->position();
-    if (position == -1L)
-    {
-        GP_ERROR("Failed to save the current file position before loading mesh '%s'.", id);
-        return NULL;
-    }
-
-    // Seek to the specified mesh.
-    Reference* ref = seekTo(id, BUNDLE_TYPE_MESH);
-    if (ref == NULL)
-    {
-        GP_ERROR("Failed to locate ref for mesh '%s'.", id);
-        return NULL;
-    }
-
-    // Read mesh data.
-    MeshData* meshData = readMeshData();
-    if (meshData == NULL)
-    {
-        GP_ERROR("Failed to load mesh data for mesh '%s'.", id);
-        return NULL;
-    }
-
-    // Create mesh.
-    Mesh* mesh = Mesh::createMesh(meshData->vertexFormat, meshData->vertexCount, false);
-    if (mesh == NULL)
-    {
-        GP_ERROR("Failed to create mesh '%s'.", id);
-        SAFE_DELETE_ARRAY(meshData);
-        return NULL;
-    }
-
-    mesh->_url = _path;
-    mesh->_url += "#";
-    mesh->_url += id;
-
-    mesh->setVertexData((float*)meshData->vertexData, 0, meshData->vertexCount);
-
-    mesh->_boundingBox.set(meshData->boundingBox);
-    mesh->_boundingSphere.set(meshData->boundingSphere);
-
-    // Create mesh parts.
-    for (unsigned int i = 0; i < meshData->parts.size(); ++i)
-    {
-        MeshPartData* partData = meshData->parts[i];
-        GP_ASSERT(partData);
-
-        MeshPart* part = mesh->addPart(partData->primitiveType, partData->indexFormat, partData->indexCount, false);
-        if (part == NULL)
-        {
-            GP_ERROR("Failed to create mesh part (with index %d) for mesh '%s'.", i, id);
-            SAFE_DELETE(meshData);
-            return NULL;
-        }
-        part->setIndexData(partData->indexData, 0, partData->indexCount);
-    }
-
-    SAFE_DELETE(meshData);
-
-    // Restore file pointer.
-    if (_stream->seek(position, SEEK_SET) == false)
-    {
-        GP_ERROR("Failed to restore file pointer after loading mesh '%s'.", id);
-        return NULL;
-    }
-
-    return mesh;
-}
-
-Bundle::MeshData* Bundle::readMeshData()
-{
-    // Read vertex format/elements.
-    unsigned int vertexElementCount;
-    if (_stream->read(&vertexElementCount, 4, 1) != 1)
-    {
-        GP_ERROR("Failed to load vertex element count.");
-        return NULL;
-    }
-    if (vertexElementCount < 1)
-    {
-        GP_ERROR("Failed to load mesh data; invalid vertex element count (must be greater than 0).");
-        return NULL;
-    }
-
-    VertexFormat::Element* vertexElements = new VertexFormat::Element[vertexElementCount];
-    for (unsigned int i = 0; i < vertexElementCount; ++i)
-    {
-        unsigned int vUsage, vSize;
-        if (_stream->read(&vUsage, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to load vertex usage.");
-            SAFE_DELETE_ARRAY(vertexElements);
-            return NULL;
-        }
-        if (_stream->read(&vSize, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to load vertex size.");
-            SAFE_DELETE_ARRAY(vertexElements);
-            return NULL;
-        }
-
-        vertexElements[i].usage = (VertexFormat::Usage)vUsage;
-        vertexElements[i].size = vSize;
-    }
-
-    MeshData* meshData = new MeshData(VertexFormat(vertexElements, vertexElementCount));
-    SAFE_DELETE_ARRAY(vertexElements);
-
-    // Read vertex data.
-    unsigned int vertexByteCount;
-    if (_stream->read(&vertexByteCount, 4, 1) != 1)
-    {
-        GP_ERROR("Failed to load vertex byte count.");
-        SAFE_DELETE(meshData);
-        return NULL;
-    }
-    if (vertexByteCount == 0)
-    {
-        GP_ERROR("Failed to load mesh data; invalid vertex byte count of 0.");
-        SAFE_DELETE(meshData);
-        return NULL;
-    }
-
-    GP_ASSERT(meshData->vertexFormat.getVertexSize());
-    meshData->vertexCount = vertexByteCount / meshData->vertexFormat.getVertexSize();
-    meshData->vertexData = new unsigned char[vertexByteCount];
-    if (_stream->read(meshData->vertexData, 1, vertexByteCount) != vertexByteCount)
-    {
-        GP_ERROR("Failed to load vertex data.");
-        SAFE_DELETE(meshData);
-        return NULL;
-    }
-
-    // Read mesh bounds (bounding box and bounding sphere).
-    if (_stream->read(&meshData->boundingBox.min.x, 4, 3) != 3 || _stream->read(&meshData->boundingBox.max.x, 4, 3) != 3)
-    {
-        GP_ERROR("Failed to load mesh bounding box.");
-        SAFE_DELETE(meshData);
-        return NULL;
-    }
-    if (_stream->read(&meshData->boundingSphere.center.x, 4, 3) != 3 || _stream->read(&meshData->boundingSphere.radius, 4, 1) != 1)
-    {
-        GP_ERROR("Failed to load mesh bounding sphere.");
-        SAFE_DELETE(meshData);
-        return NULL;
-    }
-
-    // Read mesh parts.
-    unsigned int meshPartCount;
-    if (_stream->read(&meshPartCount, 4, 1) != 1)
-    {
-        GP_ERROR("Failed to load mesh part count.");
-        SAFE_DELETE(meshData);
-        return NULL;
-    }
-    for (unsigned int i = 0; i < meshPartCount; ++i)
-    {
-        // Read primitive type, index format and index count.
-        unsigned int pType, iFormat, iByteCount;
-        if (_stream->read(&pType, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to load primitive type for mesh part with index %d.", i);
-            SAFE_DELETE(meshData);
-            return NULL;
-        }
-        if (_stream->read(&iFormat, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to load index format for mesh part with index %d.", i);
-            SAFE_DELETE(meshData);
-            return NULL;
-        }
-        if (_stream->read(&iByteCount, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to load index byte count for mesh part with index %d.", i);
-            SAFE_DELETE(meshData);
-            return NULL;
-        }
-
-        MeshPartData* partData = new MeshPartData();
-        meshData->parts.push_back(partData);
-
-        partData->primitiveType = (Mesh::PrimitiveType)pType;
-        partData->indexFormat = (Mesh::IndexFormat)iFormat;
-
-        unsigned int indexSize = 0;
-        switch (partData->indexFormat)
-        {
-        case Mesh::INDEX8:
-            indexSize = 1;
-            break;
-        case Mesh::INDEX16:
-            indexSize = 2;
-            break;
-        case Mesh::INDEX32:
-            indexSize = 4;
-            break;
-        default:
-            GP_ERROR("Unsupported index format for mesh part with index %d.", i);
-            return NULL;
-        }
-
-        GP_ASSERT(indexSize);
-        partData->indexCount = iByteCount / indexSize;
-
-        partData->indexData = new unsigned char[iByteCount];
-        if (_stream->read(partData->indexData, 1, iByteCount) != iByteCount)
-        {
-            GP_ERROR("Failed to read index data for mesh part with index %d.", i);
-            SAFE_DELETE(meshData);
-            return NULL;
-        }
-    }
-
-    return meshData;
-}
-
-Bundle::MeshData* Bundle::readMeshData(const char* url)
-{
-    GP_ASSERT(url);
-
-    size_t len = strlen(url);
-    if (len == 0)
-    {
-        GP_ERROR("Mesh data URL must be non-empty.");
-        return NULL;
-    }
-
-    // Parse URL (formatted as 'bundle#id').
-    std::string urlstring(url);
-    size_t pos = urlstring.find('#');
-    if (pos == std::string::npos)
-    {
-        GP_ERROR("Invalid mesh data URL '%s' (must be of the form 'bundle#id').", url);
-        return NULL;
-    }
-
-    std::string file = urlstring.substr(0, pos);
-    std::string id = urlstring.substr(pos + 1);
-
-    // Load bundle.
-    Bundle* bundle = Bundle::create(file.c_str());
-    if (bundle == NULL)
-    {
-        GP_ERROR("Failed to load bundle '%s'.", file.c_str());
-        return NULL;
-    }
-
-    // Seek to mesh with specified ID in bundle.
-    Reference* ref = bundle->seekTo(id.c_str(), BUNDLE_TYPE_MESH);
-    if (ref == NULL)
-    {
-        GP_ERROR("Failed to load ref from bundle '%s' for mesh with id '%s'.", file.c_str(), id.c_str());
-        return NULL;
-    }
-
-    // Read mesh data from current file position.
-    MeshData* meshData = bundle->readMeshData();
-
-    SAFE_RELEASE(bundle);
-
-    return meshData;
-}
-
-Font* Bundle::loadFont(const char* id)
-{
-    GP_ASSERT(id);
-    GP_ASSERT(_stream);
-
-    // Seek to the specified font.
-    Reference* ref = seekTo(id, BUNDLE_TYPE_FONT);
-    if (ref == NULL)
-    {
-        GP_ERROR("Failed to load ref for font '%s'.", id);
-        return NULL;
-    }
-
-    // Read font family.
-    std::string family = readString(_stream);
-    if (family.empty())
-    {
-        GP_ERROR("Failed to read font family for font '%s'.", id);
-        return NULL;
-    }
-
-    // Read font style
-    unsigned int style;
-    if (_stream->read(&style, 4, 1) != 1)
-    {
-        GP_ERROR("Failed to read style for font '%s'.", id);
-        return NULL;
-    }
-
-    // In bundle version 1.4 we introduced storing multiple font sizes per font
-    unsigned int fontSizeCount = 1;
-    if (getVersionMajor() >= 1 && getVersionMinor() >= 4)
-    {
-        if (_stream->read(&fontSizeCount, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to read font size count for font '%s'.", id);
-            return NULL;
-        }
-    }
-
-    Font* masterFont = NULL;
-
-    for (unsigned int i = 0; i < fontSizeCount; ++i)
-    {
-        // Read font size
-        unsigned int size;
-        if (_stream->read(&size, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to read size for font '%s'.", id);
-            return NULL;
-        }
-
-        // Read character set.
-        std::string charset = readString(_stream);
-
-        // Read font glyphs.
-        unsigned int glyphCount;
-        if (_stream->read(&glyphCount, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to read glyph count for font '%s'.", id);
-            return NULL;
-        }
-        if (glyphCount == 0)
-        {
-            GP_ERROR("Invalid glyph count (must be greater than 0) for font '%s'.", id);
-            return NULL;
-        }
-
-        Font::Glyph* glyphs = new Font::Glyph[glyphCount];
-        for (unsigned j = 0; j < glyphCount; j++)
-        {
-            if (_stream->read(&glyphs[j].code, 4, 1) != 1)
-            {
-                GP_ERROR("Failed to read glyph #%d code for font '%s'.", j, id);
-                SAFE_DELETE_ARRAY(glyphs);
-                return NULL;
-            }
-            if (_stream->read(&glyphs[j].width, 4, 1) != 1)
-            {
-                GP_ERROR("Failed to read glyph #%d width for font '%s'.", j, id);
-                SAFE_DELETE_ARRAY(glyphs);
-                return NULL;
-            }
-            if (getVersionMajor() >= 1 && getVersionMinor() >= 5)
-            {
-                if (_stream->read(&glyphs[j].bearingX, 4, 1) != 1)
-                {
-                    GP_ERROR("Failed to read glyph #%d bearingX for font '%s'.", j, id);
-                    SAFE_DELETE_ARRAY(glyphs);
-                    return NULL;
-                }
-                if (_stream->read(&glyphs[j].advance, 4, 1) != 1)
-                {
-                    GP_ERROR("Failed to read glyph #%d advance for font '%s'.", j, id);
-                    SAFE_DELETE_ARRAY(glyphs);
-                    return NULL;
-                }
-            }
-            else
-            {
-                // Fallback values for older GBP format.
-                glyphs[j].bearingX = 0;
-                glyphs[j].advance = glyphs[j].width;
-            }
-            if (_stream->read(&glyphs[j].uvs, 4, 4) != 4)
-            {
-                GP_ERROR("Failed to read glyph #%d uvs for font '%s'.", j, id);
-                SAFE_DELETE_ARRAY(glyphs);
-                return NULL;
-            }
-        }
-
-        // Read texture attributes.
-        unsigned int width, height, textureByteCount;
-        if (_stream->read(&width, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to read texture width for font '%s'.", id);
-            SAFE_DELETE_ARRAY(glyphs);
-            return NULL;
-        }
-        if (_stream->read(&height, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to read texture height for font '%s'.", id);
-            SAFE_DELETE_ARRAY(glyphs);
-            return NULL;
-        }
-        if (_stream->read(&textureByteCount, 4, 1) != 1)
-        {
-            GP_ERROR("Failed to read texture byte count for font '%s'.", id);
-            SAFE_DELETE_ARRAY(glyphs);
-            return NULL;
-        }
-        if (textureByteCount != (width * height))
-        {
-            GP_ERROR("Invalid texture byte count for font '%s'.", id);
-            SAFE_DELETE_ARRAY(glyphs);
-            return NULL;
-        }
-
-        // Read texture data.
-        unsigned char* textureData = new unsigned char[textureByteCount];
-        if (_stream->read(textureData, 1, textureByteCount) != textureByteCount)
-        {
-            GP_ERROR("Failed to read texture data for font '%s'.", id);
-            SAFE_DELETE_ARRAY(glyphs);
-            SAFE_DELETE_ARRAY(textureData);
-            return NULL;
-        }
-
-        unsigned int format = Font::BITMAP;
-
-        // In bundle version 1.3 we added a format field
-        if (getVersionMajor() >= 1 && getVersionMinor() >= 3)
-        {
-            if (_stream->read(&format, 4, 1) != 1)
-            {
-                GP_ERROR("Failed to font format'%u'.", format);
-                SAFE_DELETE_ARRAY(glyphs);
-                SAFE_DELETE_ARRAY(textureData);
-                return NULL;
-            }
-        }
-
-        // Create the texture for the font.
-        Texture* texture = Texture::create(Texture::ALPHA, width, height, textureData, true);
-
-        // Free the texture data (no longer needed).
-        SAFE_DELETE_ARRAY(textureData);
-
-        if (texture == NULL)
-        {
-            GP_ERROR("Failed to create texture for font '%s'.", id);
-            SAFE_DELETE_ARRAY(glyphs);
-            return NULL;
-        }
-
-        // Create the font for this size
-        Font* font = Font::create(family.c_str(), Font::PLAIN, size, glyphs, glyphCount, texture, (Font::Format)format);
-
-        // Free the glyph array.
-        SAFE_DELETE_ARRAY(glyphs);
-
-        // Release the texture since the Font now owns it.
-        SAFE_RELEASE(texture);
-
-        if (font)
-        {
-            font->_path = _path;
-            font->_id = id;
-
-            if (masterFont)
-                masterFont->_sizes.push_back(font);
-            else
-                masterFont = font;
-        }
-    }
-
-    return masterFont;
-}
-
-void Bundle::setTransform(const float* values, Transform* transform)
-{
-    GP_ASSERT(transform);
-
-    // Load array into transform.
-    Matrix matrix(values);
-    Vector3 scale, translation;
-    Quaternion rotation;
-    matrix.decompose(&scale, &rotation, &translation);
-    transform->setScale(scale);
-    transform->setTranslation(translation);
-    transform->setRotation(rotation);
-}
-
-bool Bundle::contains(const char* id) const
-{
-    return (find(id) != NULL);
-}
-
-unsigned int Bundle::getObjectCount() const
-{
-    return _referenceCount;
-}
-
-const char* Bundle::getObjectId(unsigned int index) const
-{
-    GP_ASSERT(_references);
-    return (index >= _referenceCount ? NULL : _references[index].id.c_str());
-}
-
-Bundle::Reference::Reference()
-    : type(0), offset(0)
-{
-}
-
-Bundle::Reference::~Reference()
-{
-}
-
-Bundle::MeshPartData::MeshPartData() :
-		primitiveType(Mesh::TRIANGLES), indexFormat(Mesh::INDEX32), indexCount(0), indexData(NULL)
-{
-}
-
-Bundle::MeshPartData::~MeshPartData()
-{
-    SAFE_DELETE_ARRAY(indexData);
-}
-
-Bundle::MeshData::MeshData(const VertexFormat& vertexFormat)
-    : vertexFormat(vertexFormat), vertexCount(0), vertexData(NULL), primitiveType(Mesh::TRIANGLES)
-{
-}
-
-Bundle::MeshData::~MeshData()
-{
-    SAFE_DELETE_ARRAY(vertexData);
-
-    for (unsigned int i = 0; i < parts.size(); ++i)
-    {
-        SAFE_DELETE(parts[i]);
-    }
-}
-
-}

+ 0 - 466
gameplay/src/Bundle.h

@@ -1,466 +0,0 @@
-#ifndef BUNDLE_H_
-#define BUNDLE_H_
-
-#include "Mesh.h"
-#include "Font.h"
-#include "Node.h"
-#include "Game.h"
-#include "MeshSkin.h"
-
-namespace gameplay
-{
-
-/**
- * Defines a gameplay bundle file (.gpb) that contains a
- * collection of binary game assets that can be loaded.
- */
-class Bundle : public Ref
-{
-    friend class PhysicsController;
-    friend class SceneLoader;
-
-public:
-
-    /**
-     * Returns a Bundle for the given resource path.
-     *
-     * The specified path must reference a valid gameplay bundle file.
-     * If the bundle is already loaded, the existing bundle is returned
-     * with its reference count incremented. When no longer needed, the
-     * release() method must be called. Note that calling release() does
-     * NOT free any actual game objects created/returned from the Bundle
-     * instance and those objects must be released separately.
-     * 
-     * @return The new Bundle or NULL if there was an error.
-     * @script{create}
-     */
-    static Bundle* create(const char* path);
-
-    /**
-     * Loads the scene with the specified ID from the bundle.
-     * If id is NULL then the first scene found is loaded.
-     * 
-     * @param id The ID of the scene to load (NULL to load the first scene).
-     * 
-     * @return The loaded scene, or NULL if the scene could not be loaded.
-     * @script{create}
-     */
-    Scene* loadScene(const char* id = NULL);
-
-    /**
-     * Loads a node with the specified ID from the bundle.
-     *
-     * @param id The ID of the node to load in the bundle.
-     * 
-     * @return The loaded node, or NULL if the node could not be loaded.
-     * @script{create}
-     */
-    Node* loadNode(const char* id);
-
-    /**
-     * Loads a mesh with the specified ID from the bundle.
-     *
-     * @param id The ID of the mesh to load.
-     * 
-     * @return The loaded mesh, or NULL if the mesh could not be loaded.
-     * @script{create}
-     */
-    Mesh* loadMesh(const char* id);
-
-    /**
-     * Loads a font with the specified ID from the bundle.
-     *
-     * @param id The ID of the font to load.
-     * 
-     * @return The loaded font, or NULL if the font could not be loaded.
-     * @script{create}
-     */
-    Font* loadFont(const char* id);
-
-    /**
-     * Determines if this bundle contains a top-level object with the given ID.
-     *
-     * This method performs a case-sensitive comparison.
-     *
-     * @param id The ID of the object to search for.
-     */
-    bool contains(const char* id) const;
-
-    /**
-     * Returns the number of top-level objects in this bundle.
-     */
-    unsigned int getObjectCount() const;
-
-    /**
-     * Gets the unique identifier of the top-level object at the specified index in this bundle.
-     *
-     * @param index The index of the object.
-     * 
-     * @return The ID of the object at the given index, or NULL if index is invalid.
-     */
-    const char* getObjectId(unsigned int index) const;
-
-    /**
-     * Gets the major version of the loaded bundle.
-     *
-     * @return The major version of the loaded bundle.
-     */
-    unsigned int getVersionMajor() const;
-
-    /**
-     * Gets the minor version of the loaded bundle.
-     *
-     * @return The minor version of the loaded bundle.
-     */
-    unsigned int getVersionMinor() const;
-
-private:
-
-    class Reference
-    {
-    public:
-        std::string id;
-        unsigned int type;
-        unsigned int offset;
-
-        /**
-         * Constructor.
-         */
-        Reference();
-
-        /**
-         * Destructor.
-         */
-        ~Reference();
-    };
-
-    struct MeshSkinData
-    {
-        MeshSkin* skin;
-        std::vector<std::string> joints;
-        std::vector<Matrix> inverseBindPoseMatrices;
-    };
-
-    struct MeshPartData
-    {
-        MeshPartData();
-        ~MeshPartData();
-
-        Mesh::PrimitiveType primitiveType;
-        Mesh::IndexFormat indexFormat;
-        unsigned int indexCount;
-        unsigned char* indexData;
-    };
-
-    struct MeshData
-    {
-        MeshData(const VertexFormat& vertexFormat);
-        ~MeshData();
-
-        VertexFormat vertexFormat;
-        unsigned int vertexCount;
-        unsigned char* vertexData;
-        BoundingBox boundingBox;
-        BoundingSphere boundingSphere;
-        Mesh::PrimitiveType primitiveType;
-        std::vector<MeshPartData*> parts;
-    };
-
-    Bundle(const char* path);
-
-    /**
-     * Destructor.
-     */
-    ~Bundle();
-
-    /**
-     * Hidden copy assignment operator.
-     */
-    Bundle& operator=(const Bundle&);
-
-    /**
-     * Finds a reference by ID.
-     */
-    Reference* find(const char* id) const;
-
-    /**
-     * Resets any load session specific state for the bundle.
-     */
-    void clearLoadSession();
-
-    /**
-     * Returns the ID of the object at the current file position.
-     * Returns NULL if not found.
-     * 
-     * @return The ID string or NULL if not found.
-     */
-    const char* getIdFromOffset() const;
-
-    /**
-     * Returns the ID of the object at the given file offset by searching through the reference table.
-     * Returns NULL if not found.
-     *
-     * @param offset The file offset.
-     * 
-     * @return The ID string or NULL if not found.
-     */
-    const char* getIdFromOffset(unsigned int offset) const;
-
-    /**
-     * Gets the path to the bundle's default material file, if it exists.
-     * 
-     * @return The bundle's default material path. Returns an empty string if the default material does not exist.
-     */
-    const std::string& getMaterialPath();
-
-    /**
-     * Seeks the file pointer to the object with the given ID and type
-     * and returns the relevant Reference.
-     *
-     * @param id The ID string to search for.
-     * @param type The object type.
-     * 
-     * @return The reference object or NULL if there was an error.
-     */
-    Reference* seekTo(const char* id, unsigned int type);
-
-    /**
-     * Seeks the file pointer to the first object that matches the given type.
-     * 
-     * @param type The object type.
-     * 
-     * @return The reference object or NULL if there was an error.
-     */
-    Reference* seekToFirstType(unsigned int type);
-
-    /**
-     * Internal method to load a node.
-     *
-     * Only one of node or scene should be passed as non-NULL (or neither).
-     */
-    Node* loadNode(const char* id, Scene* sceneContext, Node* nodeContext);
-
-    /**
-     * Internal method for SceneLoader to load a node into a scene.
-     */
-    Node* loadNode(const char* id, Scene* sceneContext);
-
-    /**
-     * Loads a mesh with the specified ID from the bundle.
-     *
-     * @param id The ID of the mesh to load.
-     * @param nodeId The id of the mesh's model's parent node.
-     * 
-     * @return The loaded mesh, or NULL if the mesh could not be loaded.
-     */
-    Mesh* loadMesh(const char* id, const char* nodeId);
-
-    /**
-     * Reads an unsigned int from the current file position.
-     *
-     * @param ptr A pointer to load the value into.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    bool read(unsigned int* ptr);
-
-    /**
-     * Reads an unsigned char from the current file position.
-     * 
-     * @param ptr A pointer to load the value into.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    bool read(unsigned char* ptr);
-
-    /**
-     * Reads a float from the current file position.
-     * 
-     * @param ptr A pointer to load the value into.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    bool read(float* ptr);
-
-    /**
-     * Reads an array of values and the array length from the current file position.
-     * 
-     * @param length A pointer to where the length of the array will be copied to.
-     * @param ptr A pointer to the array where the data will be copied to.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    template <class T>
-    bool readArray(unsigned int* length, T** ptr);
-
-    /**
-     * Reads an array of values and the array length from the current file position.
-     * 
-     * @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.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    template <class T>
-    bool readArray(unsigned int* length, std::vector<T>* values);
-
-    /**
-     * Reads an array of values and the array length from the current file position.
-     * 
-     * @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 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.
-     */
-    template <class T>
-    bool readArray(unsigned int* length, std::vector<T>* values, unsigned int readSize);
-    
-    /**
-     * Reads 16 floats from the current file position.
-     *
-     * @param m A pointer to float array of size 16.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    bool readMatrix(float* m);
-
-    /**
-     * Reads an xref string from the current file position.
-     * 
-     * @param id The string to load the ID string into.
-     * 
-     * @return True if successful, false if an error occurred.
-     */
-    bool readXref(std::string& id);
-
-    /**
-     * Recursively reads nodes from the current file position.
-     * This method will load cameras, lights and models in the nodes.
-     * 
-     * @return A pointer to new node or NULL if there was an error.
-     */
-    Node* readNode(Scene* sceneContext, Node* nodeContext);
-
-    /**
-     * Reads a camera from the current file position.
-     *
-     * @return A pointer to a new camera or NULL if there was an error.
-     */
-    Camera* readCamera();
-
-    /**
-     * Reads a light from the current file position.
-     *
-     * @return A pointer to a new light or NULL if there was an error.
-     */
-    Light* readLight();
-
-    /**
-     * Reads a model from the current file position.
-     * 
-     * @return A pointer to a new model or NULL if there was an error.
-     */
-    Model* readModel(const char* nodeId);
-
-    /**
-     * Reads mesh data from the current file position.
-     */
-    MeshData* readMeshData();
-
-    /**
-     * Reads mesh data for the specified URL.
-     *
-     * The specified URL should be formatted as 'bundle#id', where
-     * 'bundle' is the bundle file containing the mesh and 'id' is the ID
-     * of the mesh to read data for.
-     *
-     * @param url The URL to read mesh data from.
-     *
-     * @return The mesh rigid body data.
-     */
-    static MeshData* readMeshData(const char* url);
-
-    /**
-     * Reads a mesh skin from the current file position.
-     *
-     * @return A pointer to a new mesh skin or NULL if there was an error.
-     */
-    MeshSkin* readMeshSkin();
-
-    /**
-     * Reads an animation from the current file position.
-     * 
-     * @param scene The scene to load the animations into.
-     */
-    void readAnimation(Scene* scene);
-
-    /**
-     * Reads an "animations" object from the current file position and all of the animations contained in it.
-     * 
-     * @param scene The scene to load the animations into.
-     */
-    void readAnimations(Scene* scene);
-
-    /**
-     * Reads an animation channel at the current file position into the given animation.
-     * 
-     * @param scene The scene that the animation is in.
-     * @param animation The animation to the load channel into.
-     * @param animationId The ID of the animation that this channel is loaded into.
-     * 
-     * @return The animation that the channel was loaded into.
-     */
-    Animation* readAnimationChannel(Scene* scene, Animation* animation, const char* animationId);
-
-    /**
-     * Reads the animation channel data at the current file position into the given animation
-     * (with the given animation target and target attribute).
-     * 
-     * Note: this is used by Bundle::loadNode(const char*, Scene*) and Bundle::readAnimationChannel(Scene*, Animation*, const char*).
-     * 
-     * @param animation The animation to the load channel into.
-     * @param id The ID of the animation that this channel is loaded into.
-     * @param target The animation target.
-     * @param targetAttribute The target attribute being animated.
-     * 
-     * @return The animation that the channel was loaded into.
-     */
-    Animation* readAnimationChannelData(Animation* animation, const char* id, AnimationTarget* target, unsigned int targetAttribute);
-
-    /**
-     * Sets the transformation matrix.
-     *
-     * @param values A pointer to array of 16 floats.
-     * @param transform The transform to set the values in.
-     */
-    void setTransform(const float* values, Transform* transform);
-
-    /**
-     * Resolves joint references for all pending mesh skins.
-     */
-    void resolveJointReferences(Scene* sceneContext, Node* nodeContext);
-
-private:
-
-    /**
-     * Skips over a Node's data within a bundle.
-     *
-     * @return True if the Node was successfully skipped; false otherwise.
-     */
-    bool skipNode();
-
-    unsigned char _version[2];
-    std::string _path;
-    std::string _materialPath;
-    unsigned int _referenceCount;
-    Reference* _references;
-    Stream* _stream;
-
-    std::vector<MeshSkinData*> _meshSkins;
-    std::map<std::string, Node*>* _trackedNodes;
-};
-
-}
-
-#endif

Some files were not shown because too many files changed in this diff