Procházet zdrojové kódy

Merge branch 'master' of https://github.com/ivansafrin/Polycode

Paul Smith před 13 roky
rodič
revize
8603f8999f
100 změnil soubory, kde provedl 5213 přidání a 304 odebrání
  1. 10 0
      .gitignore
  2. 4 0
      BUILD.md
  3. 8 3
      BUILD.txt
  4. 3 0
      Bindings/Scripts/create_lua_library/create_lua_library.py
  5. 2 2
      CMake/ExternalAssimp.cmake
  6. 1 0
      CMake/ExternalBullet.cmake
  7. 2 2
      CMake/ExternalPhysFS.cmake
  8. 313 0
      CMake/assimp_patch/BlenderModifier.cpp
  9. 586 0
      CMake/assimp_patch/LWOAnimation.cpp
  10. 304 0
      CMake/assimp_patch/Vertex.h
  11. 1 1
      CMake/openal.cmake
  12. 5 1
      Core/Contents/Include/PolyCocoaCore.h
  13. 18 9
      Core/Contents/Include/PolyCore.h
  14. 8 3
      Core/Contents/Include/PolySDLCore.h
  15. 17 13
      Core/Contents/Include/PolyWinCore.h
  16. 279 0
      Core/Contents/Include/PolyWinCore.h~
  17. 2 1
      Core/Contents/PolycodeView/Linux/PolycodeView.cpp
  18. 2 1
      Core/Contents/PolycodeView/Linux/PolycodeView.h
  19. 46 5
      Core/Contents/PolycodeView/MSVC/PolycodeView.cpp
  20. 1 1
      Core/Contents/PolycodeView/MSVC/PolycodeView.h
  21. 27 2
      Core/Contents/Source/OSBasics.cpp
  22. 47 3
      Core/Contents/Source/PolyCocoaCore.mm
  23. 2 2
      Core/Contents/Source/PolyColor.cpp
  24. 3 1
      Core/Contents/Source/PolyFont.cpp
  25. 10 12
      Core/Contents/Source/PolyGLRenderer.cpp
  26. 6 4
      Core/Contents/Source/PolyLabel.cpp
  27. 156 16
      Core/Contents/Source/PolySDLCore.cpp
  28. 5 2
      Core/Contents/Source/PolySocket.cpp
  29. 3 0
      Core/Contents/Source/PolyString.cpp
  30. 3 1
      Core/Contents/Source/PolyTween.cpp
  31. 316 6
      Core/Contents/Source/PolyWinCore.cpp
  32. 8 2
      Examples/C++/Build/Windows/PolycodeExamples/2DAudio/2DAudio.vcxproj
  33. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DParticles/2DParticles.vcxproj
  34. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_Basic/2DPhysics_Basic.vcxproj
  35. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_CollisionOnly/2DPhysics_CollisionOnly.vcxproj
  36. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_Contacts/2DPhysics_Contacts.vcxproj
  37. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_Joints/2DPhysics_Joints.vcxproj
  38. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_PointCollision/2DPhysics_PointCollision.vcxproj
  39. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DShapes/2DShapes.vcxproj
  40. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/2DTransforms/2DTransforms.vcxproj
  41. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/3DAudio/3DAudio.vcxproj
  42. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/3DBasics/3DBasics.vcxproj
  43. 10 4
      Examples/C++/Build/Windows/PolycodeExamples/3DMeshParticles/3DMeshParticles.vcxproj
  44. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/3DParticles/3DParticles.vcxproj
  45. 12 6
      Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Basic/3DPhysics_Basic.vcxproj
  46. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Character/3DPhysics_Character.vcxproj
  47. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_CollisionOnly/3DPhysics_CollisionOnly.vcxproj
  48. 12 6
      Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Contacts/3DPhysics_Contacts.vcxproj
  49. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_RayTest/3DPhysics_RayTest.vcxproj
  50. 12 6
      Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Vehicle/3DPhysics_Vehicle.vcxproj
  51. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/AdvancedLighting/AdvancedLighting.vcxproj
  52. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/BasicImage/BasicImage.vcxproj
  53. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/BasicLighting/BasicLighting.vcxproj
  54. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/BasicText/BasicText.vcxproj
  55. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/EventHandling/EventHandling.vcxproj
  56. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/KeyboardInput/KeyboardInput.vcxproj
  57. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/MouseInput/MouseInput.vcxproj
  58. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/Networking_Client/Networking_Client.vcxproj
  59. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/Networking_Server/Networking_Server.vcxproj
  60. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/PlayingSounds/PlayingSounds.vcxproj
  61. 1 1
      Examples/C++/Build/Windows/PolycodeExamples/PolycodeExample.cpp
  62. 188 20
      Examples/C++/Build/Windows/PolycodeExamples/PolycodeExamples.sln
  63. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/ScreenEntities/ScreenEntities.vcxproj
  64. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/ScreenSprites/ScreenSprites.vcxproj
  65. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/SkeletalAnimation/SkeletalAnimation.vcxproj
  66. 98 0
      Examples/C++/Build/Windows/PolycodeExamples/UpdateLoop/UpdateLoop.vcxproj
  67. 1 5
      Examples/C++/Contents/2DAudio/HelloPolycodeApp.cpp
  68. 1 5
      Examples/C++/Contents/2DParticles/HelloPolycodeApp.cpp
  69. 1 5
      Examples/C++/Contents/2DPhysics_Basic/HelloPolycodeApp.cpp
  70. 2 6
      Examples/C++/Contents/2DPhysics_CollisionOnly/HelloPolycodeApp.cpp
  71. 1 5
      Examples/C++/Contents/2DPhysics_Contacts/HelloPolycodeApp.cpp
  72. 1 5
      Examples/C++/Contents/2DPhysics_Joints/HelloPolycodeApp.cpp
  73. 1 5
      Examples/C++/Contents/2DPhysics_PointCollision/HelloPolycodeApp.cpp
  74. 1 5
      Examples/C++/Contents/2DShapes/HelloPolycodeApp.cpp
  75. 1 5
      Examples/C++/Contents/2DTransforms/HelloPolycodeApp.cpp
  76. 1 5
      Examples/C++/Contents/3DAudio/HelloPolycodeApp.cpp
  77. 1 5
      Examples/C++/Contents/3DBasics/HelloPolycodeApp.cpp
  78. 1 5
      Examples/C++/Contents/3DMeshParticles/HelloPolycodeApp.cpp
  79. 1 5
      Examples/C++/Contents/3DParticles/HelloPolycodeApp.cpp
  80. 1 5
      Examples/C++/Contents/3DPhysics_Basic/HelloPolycodeApp.cpp
  81. 1 5
      Examples/C++/Contents/3DPhysics_Character/HelloPolycodeApp.cpp
  82. 1 5
      Examples/C++/Contents/3DPhysics_CollisionOnly/HelloPolycodeApp.cpp
  83. 1 5
      Examples/C++/Contents/3DPhysics_Contacts/HelloPolycodeApp.cpp
  84. 1 5
      Examples/C++/Contents/3DPhysics_RayTest/HelloPolycodeApp.cpp
  85. 1 5
      Examples/C++/Contents/3DPhysics_Vehicle/HelloPolycodeApp.cpp
  86. 1 5
      Examples/C++/Contents/AdvancedLighting/HelloPolycodeApp.cpp
  87. 1 5
      Examples/C++/Contents/BasicImage/HelloPolycodeApp.cpp
  88. 1 5
      Examples/C++/Contents/BasicLighting/HelloPolycodeApp.cpp
  89. 1 5
      Examples/C++/Contents/BasicText/HelloPolycodeApp.cpp
  90. 1 5
      Examples/C++/Contents/EventHandling/HelloPolycodeApp.cpp
  91. 1 5
      Examples/C++/Contents/KeyboardInput/HelloPolycodeApp.cpp
  92. 1 5
      Examples/C++/Contents/MouseInput/HelloPolycodeApp.cpp
  93. 1 5
      Examples/C++/Contents/Networking_Client/HelloPolycodeApp.cpp
  94. 1 5
      Examples/C++/Contents/Networking_Server/HelloPolycodeApp.cpp
  95. 1 5
      Examples/C++/Contents/PlayingSounds/HelloPolycodeApp.cpp
  96. 1 5
      Examples/C++/Contents/ScreenEntities/HelloPolycodeApp.cpp
  97. 1 5
      Examples/C++/Contents/ScreenSprites/HelloPolycodeApp.cpp
  98. 1 5
      Examples/C++/Contents/SkeletalAnimation/HelloPolycodeApp.cpp
  99. 1 5
      Examples/C++/Contents/UpdateLoop/HelloPolycodeApp.cpp
  100. 2 2
      Examples/C++/Resources/example.mat

+ 10 - 0
.gitignore

@@ -77,6 +77,16 @@ Player/Build/Mac OS X/Polycode Player.xcodeproj/project.xcworkspace/xcuserdata/i
 
 
 /IDE/Contents/Resources/Standalone
 /IDE/Contents/Resources/Standalone
 
 
+/IDE/Build/Windows/*
+!/IDE/Build/Windows/main.cpp
+!/IDE/Build/Windows/Polycode.props
+!/IDE/Build/Windows/Polycode.sln
+!/IDE/Build/Windows/Polycode.vcxproj
+!/IDE/Build/Windows/Polycode.vcxproj.filters
+!/IDE/Build/Windows/Polycode.vcxproj.user
+
+/IDE/Build/Linux/Build
+
 /Core/Build/Mac\ OS\ X/build
 /Core/Build/Mac\ OS\ X/build
 /IDE/Build/Mac\ OS\ X/build
 /IDE/Build/Mac\ OS\ X/build
 /Modules/Build/Mac\ OS\ X/build
 /Modules/Build/Mac\ OS\ X/build

+ 4 - 0
BUILD.md

@@ -195,6 +195,10 @@ of variables to the cmake commands above. To build the bindings, you
 need a python installation with the PLY python module. You can get
 need a python installation with the PLY python module. You can get
 the PLY module at http://www.dabeaz.com/ply/
 the PLY module at http://www.dabeaz.com/ply/
 
 
+Note: You will need python 2 for this step. If you have python 3 installed,
+pass -DPYTHON_EXECUTABLE=/usr/bin/python2 or whatever the full path to
+the python2 executable is on your system.
+
 To enable the bindings and the player, add the following options to the
 To enable the bindings and the player, add the following options to the
 cmake command. Otherwise, the steps are exactly the same as the regular 
 cmake command. Otherwise, the steps are exactly the same as the regular 
 Polycode build for your system.
 Polycode build for your system.

+ 8 - 3
BUILD.txt

@@ -79,9 +79,10 @@ directory from a command prompt (for VS2010):
     cd Build
     cd Build
     cmake -G "Visual Studio 10" ..
     cmake -G "Visual Studio 10" ..
     
     
-This generates a PolycodeDependencies.sln in the Build directory.
-Building the ALL_BUILD project in the solution in Visual Studio will download,
-build and install the dependencies. Note that you need to build both Debug and Release.
+This generates a PolycodeDependencies.sln in the Build directory. 
+Building the ALL_BUILD project in the solution in Visual Studio will download, build and 
+install the dependencies. Note that you need to build both Debug and
+Release.
 
 
 You will also need to manually build the "glext" and "wglext" projects.
 You will also need to manually build the "glext" and "wglext" projects.
 
 
@@ -194,6 +195,10 @@ of variables to the cmake commands above. To build the bindings, you
 need a python installation with the PLY python module. You can get
 need a python installation with the PLY python module. You can get
 the PLY module at http://www.dabeaz.com/ply/
 the PLY module at http://www.dabeaz.com/ply/
 
 
+Note: You will need python 2 for this step. If you have python 3 installed,
+pass -DPYTHON_EXECUTABLE=/usr/bin/python2 or whatever the full path to
+the python2 executable is on your system.
+
 To enable the bindings and the player, add the following options to the
 To enable the bindings and the player, add the following options to the
 cmake command. Otherwise, the steps are exactly the same as the regular 
 cmake command. Otherwise, the steps are exactly the same as the regular 
 Polycode build for your system.
 Polycode build for your system.

+ 3 - 0
Bindings/Scripts/create_lua_library/create_lua_library.py

@@ -596,6 +596,9 @@ def createLUABindings(inputPath, prefix, mainInclude, libSmallName, libName, api
 										wrappersHeaderOut += "\t\tlua_rawseti(L, -2, i+1);\n"
 										wrappersHeaderOut += "\t\tlua_rawseti(L, -2, i+1);\n"
 										wrappersHeaderOut += "\t}\n"
 										wrappersHeaderOut += "\t}\n"
 										wrappersHeaderOut += "\treturn 1;\n"
 										wrappersHeaderOut += "\treturn 1;\n"
+									else:
+										wrappersHeaderOut += "\treturn 0;\n"
+										
 							# else If void-typed:
 							# else If void-typed:
 							elif pm["rtnType"] == "void" or pm["rtnType"] == "static void" or pm["rtnType"] == "virtual void" or pm["rtnType"] == "inline void":
 							elif pm["rtnType"] == "void" or pm["rtnType"] == "static void" or pm["rtnType"] == "virtual void" or pm["rtnType"] == "inline void":
 								wrappersHeaderOut += "\t%s;\n" % (call)
 								wrappersHeaderOut += "\t%s;\n" % (call)

+ 2 - 2
CMake/ExternalAssimp.cmake

@@ -25,8 +25,8 @@ ExternalProject_Add(assimp
 
 
     DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
     DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
 
 
-    PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/assimp.cmake <SOURCE_DIR>/code/CMakeLists.txt
-
+    PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/assimp.cmake <SOURCE_DIR>/code/CMakeLists.txt && ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/assimp_patch/Vertex.h <SOURCE_DIR>/code/Vertex.h  && ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/assimp_patch/BlenderModifier.cpp <SOURCE_DIR>/code/BlenderModifier.cpp  && ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/assimp_patch/LWOAnimation.cpp <SOURCE_DIR>/code/LWOAnimation.cpp
+    
     URL http://download.sourceforge.net/assimp/assimp--2.0.863-sdk.zip
     URL http://download.sourceforge.net/assimp/assimp--2.0.863-sdk.zip
     URL_MD5 9f41662501bd9d9533c4cf03b7c25d5b
     URL_MD5 9f41662501bd9d9533c4cf03b7c25d5b
 
 

+ 1 - 0
CMake/ExternalBullet.cmake

@@ -9,6 +9,7 @@ SET(bullet_CMAKE_ARGS
     -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
     -DCMAKE_OSX_ARCHITECTURES=${CMAKE_OSX_ARCHITECTURES}
     -DCMAKE_DEBUG_POSTFIX=_d
     -DCMAKE_DEBUG_POSTFIX=_d
     -DINSTALL_LIBS=ON
     -DINSTALL_LIBS=ON
+    -DUSE_MSVC_RUNTIME_LIBRARY_DLL=ON
     -DBUILD_DEMOS=OFF
     -DBUILD_DEMOS=OFF
     -DBUILD_EXTRAS=OFF
     -DBUILD_EXTRAS=OFF
     -DBUILD_UNIT_TESTS=OFF
     -DBUILD_UNIT_TESTS=OFF

+ 2 - 2
CMake/ExternalPhysFS.cmake

@@ -19,8 +19,8 @@ ExternalProject_Add(physfs
 
 
     DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
     DOWNLOAD_DIR ${POLYCODE_DEPS_DOWNLOAD_DIR}
 
 
-    URL http://offload1.icculus.org:9090/physfs/downloads/physfs-2.0.2.tar.gz
-    URL_MD5 4e8927c3d30279b03e2592106eb9184a
+    URL http://icculus.org/physfs/downloads/physfs-2.0.3.tar.bz2
+    URL_MD5 c2c727a8a8deb623b521b52d0080f613
 
 
     PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/physfs.cmake <SOURCE_DIR>/CMakeLists.txt
     PATCH_COMMAND ${CMAKE_COMMAND} -E copy_if_different ${PolycodeDependencies_SOURCE_DIR}/../CMake/physfs.cmake <SOURCE_DIR>/CMakeLists.txt
 
 

+ 313 - 0
CMake/assimp_patch/BlenderModifier.cpp

@@ -0,0 +1,313 @@
+/*
+Open Asset Import Library (ASSIMP)
+----------------------------------------------------------------------
+
+Copyright (c) 2006-2010, ASSIMP Development Team
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, 
+with or without modification, are permitted provided that the 
+following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of the ASSIMP team, nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission of the ASSIMP Development Team.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+*/
+
+/** @file  BlenderModifier.cpp
+ *  @brief Implementation of some blender modifiers (i.e subdivision, mirror).
+ */
+
+#include <functional>
+#include "AssimpPCH.h"
+
+#ifndef ASSIMP_BUILD_NO_BLEND_IMPORTER
+#include "BlenderModifier.h"
+#include "SceneCombiner.h"
+#include "Subdivision.h"
+
+using namespace Assimp;
+using namespace Assimp::Blender;
+
+template <typename T> BlenderModifier* god() {
+	return new T();
+}
+
+// add all available modifiers here
+typedef BlenderModifier* (*fpCreateModifier)();
+static const fpCreateModifier creators[] = {
+		&god<BlenderModifier_Mirror>,
+		&god<BlenderModifier_Subdivision>,
+
+		NULL // sentinel
+};
+
+// ------------------------------------------------------------------------------------------------
+// just testing out some new macros to simplify logging
+#define ASSIMP_LOG_WARN_F(string,...)\
+	DefaultLogger::get()->warn((Formatter::format(string),__VA_ARGS__))
+
+#define ASSIMP_LOG_ERROR_F(string,...)\
+	DefaultLogger::get()->error((Formatter::format(string),__VA_ARGS__))
+
+#define ASSIMP_LOG_DEBUG_F(string,...)\
+	DefaultLogger::get()->debug((Formatter::format(string),__VA_ARGS__))
+
+#define ASSIMP_LOG_INFO_F(string,...)\
+	DefaultLogger::get()->info((Formatter::format(string),__VA_ARGS__))
+
+
+#define ASSIMP_LOG_WARN(string)\
+	DefaultLogger::get()->warn(string)
+
+#define ASSIMP_LOG_ERROR(string)\
+	DefaultLogger::get()->error(string)
+
+#define ASSIMP_LOG_DEBUG(string)\
+	DefaultLogger::get()->debug(string)
+
+#define ASSIMP_LOG_INFO(string)\
+	DefaultLogger::get()->info(string)
+
+
+// ------------------------------------------------------------------------------------------------
+struct SharedModifierData : ElemBase
+{
+	ModifierData modifier;
+};
+
+// ------------------------------------------------------------------------------------------------
+void BlenderModifierShowcase::ApplyModifiers(aiNode& out, ConversionData& conv_data, const Scene& in, const Object& orig_object ) 
+{
+	size_t cnt = 0u, ful = 0u;
+
+	// NOTE: this cast is potentially unsafe by design, so we need to perform type checks before
+	// we're allowed to dereference the pointers without risking to crash. We might still be
+	// invoking UB btw - we're assuming that the ModifierData member of the respective modifier
+	// structures is at offset sizeof(vftable) with no padding.
+	const SharedModifierData* cur = boost::static_pointer_cast<const SharedModifierData> ( orig_object.modifiers.first.get() );
+	for (; cur; cur =  boost::static_pointer_cast<const SharedModifierData> ( cur->modifier.next.get() ), ++ful) {
+		ai_assert(cur->dna_type);
+
+		const Structure* s = conv_data.db.dna.Get( cur->dna_type );
+		if (!s) {
+			ASSIMP_LOG_WARN_F("BlendModifier: could not resolve DNA name: ",cur->dna_type);
+			continue;
+		}
+
+		// this is a common trait of all XXXMirrorData structures in BlenderDNA
+		const Field* f = s->Get("modifier");
+		if (!f || f->offset != 0) {
+			ASSIMP_LOG_WARN("BlendModifier: expected a `modifier` member at offset 0");
+			continue;
+		}
+
+		s = conv_data.db.dna.Get( f->type );
+		if (!s || s->name != "ModifierData") {
+			ASSIMP_LOG_WARN("BlendModifier: expected a ModifierData structure as first member");
+			continue;
+		}
+
+		// now, we can be sure that we should be fine to dereference *cur* as
+		// ModifierData (with the above note).
+		const ModifierData& dat = cur->modifier;
+
+		const fpCreateModifier* curgod = creators;
+		std::vector< BlenderModifier* >::iterator curmod = cached_modifiers->begin(), endmod = cached_modifiers->end();
+
+		for (;*curgod;++curgod,++curmod) { // allocate modifiers on the fly
+			if (curmod == endmod) {
+				cached_modifiers->push_back((*curgod)());
+
+				endmod = cached_modifiers->end();
+				curmod = endmod-1;
+			}
+
+			BlenderModifier* const modifier = *curmod;
+			if(modifier->IsActive(dat)) {
+				modifier->DoIt(out,conv_data,*boost::static_pointer_cast<const ElemBase>(cur),in,orig_object);
+				cnt++;
+
+				curgod = NULL;
+				break;
+			}
+		}
+		if (curgod) {
+			ASSIMP_LOG_WARN_F("Couldn't find a handler for modifier: ",dat.name);
+		}
+	}
+
+	// Even though we managed to resolve some or all of the modifiers on this
+	// object, we still can't say whether our modifier implementations were
+	// able to fully do their job.
+	if (ful) {
+		ASSIMP_LOG_DEBUG_F("BlendModifier: found handlers for ",cnt," of ",ful," modifiers on `",orig_object.id.name,
+			"`, check log messages above for errors");
+	}
+}
+
+
+
+// ------------------------------------------------------------------------------------------------
+bool BlenderModifier_Mirror :: IsActive (const ModifierData& modin)
+{
+	return modin.type == ModifierData::eModifierType_Mirror;
+}
+
+// ------------------------------------------------------------------------------------------------
+void  BlenderModifier_Mirror :: DoIt(aiNode& out, ConversionData& conv_data,  const ElemBase& orig_modifier, 
+	const Scene& in,
+	const Object& orig_object ) 
+{
+	// hijacking the ABI, see the big note in BlenderModifierShowcase::ApplyModifiers()
+	const MirrorModifierData& mir = static_cast<const MirrorModifierData&>(orig_modifier);
+	ai_assert(mir.modifier.type == ModifierData::eModifierType_Mirror);
+
+	// XXX not entirely correct, mirroring on two axes results in 4 distinct objects in blender ...
+
+	// take all input meshes and clone them
+	for (unsigned int i = 0; i < out.mNumMeshes; ++i) {
+		aiMesh* mesh;
+		SceneCombiner::Copy(&mesh,conv_data.meshes[out.mMeshes[i]]);
+
+		const float xs = mir.flag & MirrorModifierData::Flags_AXIS_X ? -1.f : 1.f;
+		const float ys = mir.flag & MirrorModifierData::Flags_AXIS_Y ? -1.f : 1.f;
+		const float zs = mir.flag & MirrorModifierData::Flags_AXIS_Z ? -1.f : 1.f;
+
+		if (mir.mirror_ob) {
+			const aiVector3D center( mir.mirror_ob->obmat[3][0],mir.mirror_ob->obmat[3][1],mir.mirror_ob->obmat[3][2] );
+			for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
+				aiVector3D& v = mesh->mVertices[i];
+		
+				v.x = center.x + xs*(center.x - v.x);
+				v.y = center.y + ys*(center.y - v.y);
+				v.z = center.z + zs*(center.z - v.z);
+			}
+		}
+		else {
+			for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
+				aiVector3D& v = mesh->mVertices[i];
+				v.x *= xs;v.y *= ys;v.z *= zs;
+			}
+		}
+
+		if (mesh->mNormals) {
+			for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
+				aiVector3D& v = mesh->mNormals[i];
+				v.x *= xs;v.y *= ys;v.z *= zs;
+			}
+		}
+
+		if (mesh->mTangents) {
+			for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
+				aiVector3D& v = mesh->mTangents[i];
+				v.x *= xs;v.y *= ys;v.z *= zs;
+			}
+		}
+
+		if (mesh->mBitangents) {
+			for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
+				aiVector3D& v = mesh->mBitangents[i];
+				v.x *= xs;v.y *= ys;v.z *= zs;
+			}
+		}
+
+		const float us = mir.flag & MirrorModifierData::Flags_MIRROR_U ? -1.f : 1.f;
+		const float vs = mir.flag & MirrorModifierData::Flags_MIRROR_V ? -1.f : 1.f;
+
+		for (unsigned int n = 0; mesh->HasTextureCoords(n); ++n) {
+			for (unsigned int i = 0; i < mesh->mNumVertices; ++i) {
+				aiVector3D& v = mesh->mTextureCoords[n][i];
+				v.x *= us;v.y *= vs;
+			}
+		}
+
+		conv_data.meshes->push_back(mesh);
+	}
+	unsigned int* nind = new unsigned int[out.mNumMeshes*2];
+
+	std::copy(out.mMeshes,out.mMeshes+out.mNumMeshes,nind);
+	std::transform(out.mMeshes,out.mMeshes+out.mNumMeshes,nind+out.mNumMeshes,
+		std::bind1st(std::plus< unsigned int >(),out.mNumMeshes));
+
+	delete[] out.mMeshes;
+	out.mMeshes = nind;
+	out.mNumMeshes *= 2;
+
+	ASSIMP_LOG_INFO_F("BlendModifier: Applied the `Mirror` modifier to `",
+		orig_object.id.name,"`");
+}
+
+
+
+
+// ------------------------------------------------------------------------------------------------
+bool BlenderModifier_Subdivision :: IsActive (const ModifierData& modin)
+{
+	return modin.type == ModifierData::eModifierType_Subsurf;
+}
+
+// ------------------------------------------------------------------------------------------------
+void  BlenderModifier_Subdivision :: DoIt(aiNode& out, ConversionData& conv_data,  const ElemBase& orig_modifier, 
+	const Scene& in,
+	const Object& orig_object ) 
+{
+	// hijacking the ABI, see the big note in BlenderModifierShowcase::ApplyModifiers()
+	const SubsurfModifierData& mir = static_cast<const SubsurfModifierData&>(orig_modifier);
+	ai_assert(mir.modifier.type == ModifierData::eModifierType_Subsurf);
+
+	Subdivider::Algorithm algo;
+	switch (mir.subdivType) 
+	{
+	case SubsurfModifierData::TYPE_CatmullClarke:
+		algo = Subdivider::CATMULL_CLARKE;
+		break;
+
+	case SubsurfModifierData::TYPE_Simple:
+		ASSIMP_LOG_WARN("BlendModifier: The `SIMPLE` subdivision algorithm is not currently implemented, using Catmull-Clarke");
+		algo = Subdivider::CATMULL_CLARKE;
+		break;
+
+	default:
+		ASSIMP_LOG_WARN_F("BlendModifier: Unrecognized subdivision algorithm: ",mir.subdivType);
+		return;
+	};
+
+	boost::scoped_ptr<Subdivider> subd(Subdivider::Create(algo));
+	ai_assert(subd);
+
+	aiMesh** const meshes = &conv_data.meshes[conv_data.meshes->size() - out.mNumMeshes];
+	boost::scoped_array<aiMesh*> tempmeshes(new aiMesh*[out.mNumMeshes]());
+
+	subd->Subdivide(meshes,out.mNumMeshes,tempmeshes.get(),std::max( mir.renderLevels, mir.levels ),true);
+	std::copy(tempmeshes.get(),tempmeshes.get()+out.mNumMeshes,meshes);
+
+	ASSIMP_LOG_INFO_F("BlendModifier: Applied the `Subdivision` modifier to `",
+		orig_object.id.name,"`");
+}
+
+#endif

+ 586 - 0
CMake/assimp_patch/LWOAnimation.cpp

@@ -0,0 +1,586 @@
+/*
+Open Asset Import Library (ASSIMP)
+----------------------------------------------------------------------
+
+Copyright (c) 2006-2010, ASSIMP Development Team
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, 
+with or without modification, are permitted provided that the 
+following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of the ASSIMP team, nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission of the ASSIMP Development Team.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------
+*/
+
+/** @file  LWOAnimation.cpp
+ *  @brief LWOAnimationResolver utility class 
+ *
+ *  It's a very generic implementation of LightWave's system of
+ *  componentwise-animated stuff. The one and only fully free
+ *  implementation of LightWave envelopes of which I know.
+*/
+
+#include <functional>
+#include "AssimpPCH.h"
+#if (!defined ASSIMP_BUILD_NO_LWO_IMPORTER) && (!defined ASSIMP_BUILD_NO_LWS_IMPORTER)
+
+// internal headers
+#include "LWOFileData.h"
+
+using namespace Assimp;
+using namespace Assimp::LWO;
+
+// ------------------------------------------------------------------------------------------------
+// Construct an animation resolver from a given list of envelopes
+AnimResolver::AnimResolver(std::list<Envelope>& _envelopes,double tick)
+	: envelopes   (_envelopes)
+	, sample_rate (0.)
+{
+	trans_x = trans_y = trans_z = NULL;
+	rotat_x = rotat_y = rotat_z = NULL;
+	scale_x = scale_y = scale_z = NULL;
+
+	first = last = 150392.;
+
+	// find transformation envelopes
+	for (std::list<LWO::Envelope>::iterator it = envelopes.begin(); it != envelopes.end(); ++it) {
+
+		(*it).old_first = 0;
+		(*it).old_last  = (*it).keys.size()-1;
+
+		if ((*it).keys.empty()) continue;
+		switch ((*it).type) {
+
+			// translation
+			case LWO::EnvelopeType_Position_X:
+				trans_x = &*it;break;
+			case LWO::EnvelopeType_Position_Y:
+				trans_y = &*it;break;
+			case LWO::EnvelopeType_Position_Z:
+				trans_z = &*it;break;
+
+				// rotation
+			case LWO::EnvelopeType_Rotation_Heading:
+				rotat_x = &*it;break;
+			case LWO::EnvelopeType_Rotation_Pitch:
+				rotat_y = &*it;break;
+			case LWO::EnvelopeType_Rotation_Bank:
+				rotat_z = &*it;break;
+
+				// scaling
+			case LWO::EnvelopeType_Scaling_X:
+				scale_x = &*it;break;
+			case LWO::EnvelopeType_Scaling_Y:
+				scale_y = &*it;break;
+			case LWO::EnvelopeType_Scaling_Z:
+				scale_z = &*it;break;
+			default:
+				continue;
+		};
+
+		// convert from seconds to ticks
+		for (std::vector<LWO::Key>::iterator d = (*it).keys.begin(); d != (*it).keys.end(); ++d)
+			(*d).time *= tick;
+
+		// set default animation range (minimum and maximum time value for which we have a keyframe)
+		first = std::min(first, (*it).keys.front().time );
+		last  = std::max(last,  (*it).keys.back().time );
+	}
+
+	// deferred setup of animation range to increase performance.
+	// typically the application will want to specify its own.
+	need_to_setup = true;
+}
+
+// ------------------------------------------------------------------------------------------------
+// Reset all envelopes to their original contents
+void AnimResolver::ClearAnimRangeSetup()
+{
+	for (std::list<LWO::Envelope>::iterator it = envelopes.begin(); it != envelopes.end(); ++it) {
+		
+		(*it).keys.erase((*it).keys.begin(),(*it).keys.begin()+(*it).old_first);
+		(*it).keys.erase((*it).keys.begin()+(*it).old_last+1,(*it).keys.end());
+	}
+}
+
+// ------------------------------------------------------------------------------------------------
+// Insert additional keys to match LWO's pre& post behaviours.
+void AnimResolver::UpdateAnimRangeSetup()
+{
+	// XXX doesn't work yet (hangs if more than one envelope channels needs to be interpolated)
+
+	for (std::list<LWO::Envelope>::iterator it = envelopes.begin(); it != envelopes.end(); ++it) {
+		if ((*it).keys.empty()) continue;
+	
+		const double my_first = (*it).keys.front().time;
+		const double my_last  = (*it).keys.back().time;
+
+		const double delta = my_last-my_first;
+		const size_t old_size = (*it).keys.size();
+
+		const float value_delta = (*it).keys.back().value - (*it).keys.front().value; 
+
+		// NOTE: We won't handle reset, linear and constant here.
+		// See DoInterpolation() for their implementation.
+
+		// process pre behaviour
+		switch ((*it).pre) {
+			case LWO::PrePostBehaviour_OffsetRepeat:
+			case LWO::PrePostBehaviour_Repeat:
+			case LWO::PrePostBehaviour_Oscillate:
+				{
+				const double start_time = delta - fmod(my_first-first,delta);
+				std::vector<LWO::Key>::iterator n = std::find_if((*it).keys.begin(),(*it).keys.end(), 
+					std::bind1st(std::greater<double>(),start_time)),m;
+
+				size_t ofs = 0;
+				if (n != (*it).keys.end()) {
+					// copy from here - don't use iterators, insert() would invalidate them
+					ofs = (*it).keys.end()-n;
+					(*it).keys.insert((*it).keys.begin(),ofs,LWO::Key());
+
+					std::copy((*it).keys.end()-ofs,(*it).keys.end(),(*it).keys.begin());
+				}
+
+				// do full copies. again, no iterators
+				const unsigned int num = (unsigned int)((my_first-first) / delta);
+				(*it).keys.resize((*it).keys.size() + num*old_size);
+
+				n = (*it).keys.begin()+ofs;
+				bool reverse = false;
+				for (unsigned int i = 0; i < num; ++i) {
+					m = n+old_size*(i+1);
+					std::copy(n,n+old_size,m);
+
+					if ((*it).pre == LWO::PrePostBehaviour_Oscillate && (reverse = !reverse))
+						std::reverse(m,m+old_size-1);
+				}
+
+				// update time values 
+				n = (*it).keys.end() - (old_size+1);
+				double cur_minus = delta;
+				unsigned int tt = 1;
+				for (const double tmp =  delta*(num+1);cur_minus <= tmp;cur_minus += delta,++tt) {
+					m = (delta == tmp ? (*it).keys.begin() :  n - (old_size+1));
+					for (;m != n; --n) {
+						(*n).time -= cur_minus;
+					
+						// offset repeat? add delta offset to key value
+						if ((*it).pre == LWO::PrePostBehaviour_OffsetRepeat) {
+							(*n).value += tt * value_delta;
+						}
+					}
+				}
+				break;
+				}
+			default:
+				// silence compiler warning
+				break;
+		}
+
+		// process post behaviour
+		switch ((*it).post) {
+			
+			case LWO::PrePostBehaviour_OffsetRepeat:
+			case LWO::PrePostBehaviour_Repeat:
+			case LWO::PrePostBehaviour_Oscillate:
+
+				break;
+
+			default:
+				// silence compiler warning
+				break;
+		}
+	}
+}
+
+// ------------------------------------------------------------------------------------------------
+// Extract bind pose matrix
+void AnimResolver::ExtractBindPose(aiMatrix4x4& out)
+{
+	// If we have no envelopes, return identity
+	if (envelopes.empty()) {
+		out = aiMatrix4x4();
+		return;
+	}
+	aiVector3D angles, scaling(1.f,1.f,1.f), translation;
+
+	if (trans_x) translation.x = trans_x->keys[0].value;
+	if (trans_y) translation.y = trans_y->keys[0].value;
+	if (trans_z) translation.z = trans_z->keys[0].value;
+
+	if (rotat_x) angles.x = rotat_x->keys[0].value;
+	if (rotat_y) angles.y = rotat_y->keys[0].value;
+	if (rotat_z) angles.z = rotat_z->keys[0].value;
+
+	if (scale_x) scaling.x = scale_x->keys[0].value;
+	if (scale_y) scaling.y = scale_y->keys[0].value;
+	if (scale_z) scaling.z = scale_z->keys[0].value;
+
+	// build the final matrix
+	aiMatrix4x4 s,r,t;
+	
+	r.FromEulerAnglesXYZ(angles);
+	//aiMatrix4x4::RotationY(angles.y,r);
+	// fixme: make FromEulerAngles static, too
+	aiMatrix4x4::Translation(translation,t);
+	aiMatrix4x4::Scaling(scaling,s);
+	out = s*r*t;
+}
+
+// ------------------------------------------------------------------------------------------------
+// Do a single interpolation on a channel 
+void AnimResolver::DoInterpolation(std::vector<LWO::Key>::const_iterator cur, 
+	LWO::Envelope* envl,double time, float& fill)
+{
+	if (envl->keys.size() == 1) {
+		fill = envl->keys[0].value;
+		return;
+	}
+
+	// check whether we're at the beginning of the animation track
+	if (cur == envl->keys.begin()) {
+	
+		// ok ... this depends on pre behaviour now
+		// we don't need to handle repeat&offset repeat&oszillate here, see UpdateAnimRangeSetup()
+		switch (envl->pre)
+		{
+		case LWO::PrePostBehaviour_Linear:
+			DoInterpolation2(cur,cur+1,time,fill);
+			return;
+
+		case LWO::PrePostBehaviour_Reset:
+			fill = 0.f;
+			return;
+
+		default : //case LWO::PrePostBehaviour_Constant:
+			fill = (*cur).value;
+			return;
+		}
+	}
+	// check whether we're at the end of the animation track
+	else if (cur == envl->keys.end()-1 && time > envl->keys.rbegin()->time) {
+		// ok ... this depends on post behaviour now
+		switch (envl->post)
+		{
+		case LWO::PrePostBehaviour_Linear:
+			DoInterpolation2(cur,cur-1,time,fill);
+			return;
+
+		case LWO::PrePostBehaviour_Reset:
+			fill = 0.f;
+			return;
+
+		default : //case LWO::PrePostBehaviour_Constant:
+			fill = (*cur).value;
+			return;
+		}
+	}
+
+	// Otherwise do a simple interpolation
+	DoInterpolation2(cur-1,cur,time,fill);
+}
+
+// ------------------------------------------------------------------------------------------------
+// Almost the same, except we won't handle pre/post conditions here
+void AnimResolver::DoInterpolation2(std::vector<LWO::Key>::const_iterator beg, 
+	std::vector<LWO::Key>::const_iterator end,double time, float& fill)
+{
+	switch ((*end).inter) {
+		
+		case LWO::IT_STEP:
+			// no interpolation at all - take the value of the last key
+			fill = (*beg).value;
+			return;
+		default:
+
+			// silence compiler warning
+			break;
+	}
+	// linear interpolation - default
+	fill = (*beg).value + ((*end).value - (*beg).value)*(float)(((time - (*beg).time) / ((*end).time - (*beg).time)));
+}
+
+// ------------------------------------------------------------------------------------------------
+// Subsample animation track by given key values
+void AnimResolver::SubsampleAnimTrack(std::vector<aiVectorKey>& /*out*/,
+	double /*time*/ ,double /*sample_delta*/ )
+{
+	//ai_assert(out.empty() && sample_delta);
+
+	//const double time_start = out.back().mTime;
+//	for ()
+}
+
+// ------------------------------------------------------------------------------------------------
+// Track interpolation
+void AnimResolver::InterpolateTrack(std::vector<aiVectorKey>& out,aiVectorKey& fill,double time)
+{
+	// subsample animation track?
+	if (flags & AI_LWO_ANIM_FLAG_SAMPLE_ANIMS) {
+		SubsampleAnimTrack(out,time, sample_delta);
+	}
+
+	fill.mTime = time;
+
+	// get x
+	if ((*cur_x).time == time) {
+		fill.mValue.x = (*cur_x).value;
+
+		if (cur_x != envl_x->keys.end()-1) /* increment x */
+			++cur_x;
+		else end_x = true;
+	}
+	else DoInterpolation(cur_x,envl_x,time,(float&)fill.mValue.x);
+
+	// get y
+	if ((*cur_y).time == time) {
+		fill.mValue.y = (*cur_y).value;
+
+		if (cur_y != envl_y->keys.end()-1) /* increment y */
+			++cur_y;
+		else end_y = true;
+	}
+	else DoInterpolation(cur_y,envl_y,time,(float&)fill.mValue.y);
+
+	// get z
+	if ((*cur_z).time == time) {
+		fill.mValue.z = (*cur_z).value;
+
+		if (cur_z != envl_z->keys.end()-1) /* increment z */
+			++cur_z;
+		else end_x = true;
+	}
+	else DoInterpolation(cur_z,envl_z,time,(float&)fill.mValue.z);
+}
+
+// ------------------------------------------------------------------------------------------------
+// Build linearly subsampled keys from three single envelopes, one for each component (x,y,z)
+void AnimResolver::GetKeys(std::vector<aiVectorKey>& out, 
+	LWO::Envelope* _envl_x,
+	LWO::Envelope* _envl_y,
+	LWO::Envelope* _envl_z,
+	unsigned int _flags)
+{
+	envl_x = _envl_x;
+	envl_y = _envl_y;
+	envl_z = _envl_z;
+	flags  = _flags;
+
+	// generate default channels if none are given
+	LWO::Envelope def_x, def_y, def_z;
+	LWO::Key key_dummy;
+	key_dummy.time = 0.f;
+	if ((envl_x && envl_x->type == LWO::EnvelopeType_Scaling_X) ||
+		(envl_y && envl_y->type == LWO::EnvelopeType_Scaling_Y) || 
+		(envl_z && envl_z->type == LWO::EnvelopeType_Scaling_Z)) {
+		key_dummy.value = 1.f;
+	}
+	else key_dummy.value = 0.f;
+
+	if (!envl_x) {
+		envl_x = &def_x;
+		envl_x->keys.push_back(key_dummy);
+	}
+	if (!envl_y) {
+		envl_y = &def_y;
+		envl_y->keys.push_back(key_dummy);
+	}
+	if (!envl_z) {
+		envl_z = &def_z;
+		envl_z->keys.push_back(key_dummy);
+	}
+
+	// guess how many keys we'll get
+	size_t reserve;
+	double sr = 1.;
+	if (flags & AI_LWO_ANIM_FLAG_SAMPLE_ANIMS) {
+		if (!sample_rate)
+			sr = 100.f;
+		else sr = sample_rate;
+		sample_delta = 1.f / sr; 
+
+		reserve = (size_t)(
+			std::max( envl_x->keys.end()->time,
+			std::max( envl_y->keys.end()->time, envl_z->keys.end()->time )) * sr);
+	}
+	else reserve = std::max(envl_x->keys.size(),std::max(envl_x->keys.size(),envl_z->keys.size()));
+	out.reserve(reserve+(reserve>>1));
+
+	// Iterate through all three arrays at once - it's tricky, but 
+	// rather interesting to implement.
+	double lasttime = std::min(envl_x->keys[0].time,std::min(envl_y->keys[0].time,envl_z->keys[0].time));
+	
+	cur_x = envl_x->keys.begin();
+	cur_y = envl_y->keys.begin();
+	cur_z = envl_z->keys.begin();
+
+	end_x = end_y = end_z = false;
+	while (1) {
+
+		aiVectorKey fill;
+
+		if ((*cur_x).time == (*cur_y).time && (*cur_x).time == (*cur_z).time ) {
+
+			// we have a keyframe for all of them defined .. great,
+			// we don't need to fucking interpolate here ...
+			fill.mTime = (*cur_x).time;
+
+			fill.mValue.x = (*cur_x).value;
+			fill.mValue.y = (*cur_y).value;
+			fill.mValue.z = (*cur_z).value;
+
+			// subsample animation track
+			if (flags & AI_LWO_ANIM_FLAG_SAMPLE_ANIMS) {
+				//SubsampleAnimTrack(out,cur_x, cur_y, cur_z, d, sample_delta);
+			}
+
+			if (cur_x != envl_x->keys.end()-1)
+				++cur_x;
+			else end_x = true;
+			if (cur_y != envl_y->keys.end()-1)
+				++cur_y;
+			else end_y = true;
+			if (cur_z != envl_z->keys.end()-1)
+				++cur_z;
+			else end_z = true;
+		}
+
+		// Find key with lowest time value
+		else if ((*cur_x).time <= (*cur_y).time && !end_x) {
+
+			if ((*cur_z).time <= (*cur_x).time && !end_z) {
+				InterpolateTrack(out,fill,(*cur_z).time);
+			}
+			else {
+				InterpolateTrack(out,fill,(*cur_x).time);
+			}
+		}
+		else if ((*cur_z).time <= (*cur_y).time && !end_z)	{
+			InterpolateTrack(out,fill,(*cur_z).time);
+		}
+		else if (!end_y) {
+			// welcome on the server, y
+			InterpolateTrack(out,fill,(*cur_y).time);
+		}
+		else {
+			// we have reached the end of at least 2 channels,
+			// only one is remaining. Extrapolate the 2.
+			if (end_y) {
+				InterpolateTrack(out,fill,(end_x ? (*cur_z) : (*cur_x)).time);
+			}
+			else if (end_x) {
+				InterpolateTrack(out,fill,(end_z ? (*cur_y) : (*cur_z)).time);
+			}
+			else { // if (end_z) 
+				InterpolateTrack(out,fill,(end_y ? (*cur_x) : (*cur_y)).time);
+			}
+		}
+		lasttime = fill.mTime;
+		out.push_back(fill);
+
+		if( end_x && end_y && end_z ) /* finished? */
+			break;
+	}
+
+	if (flags & AI_LWO_ANIM_FLAG_START_AT_ZERO) {
+		for (std::vector<aiVectorKey>::iterator it = out.begin(); it != out.end(); ++it)
+			(*it).mTime -= first;
+	}
+}
+
+// ------------------------------------------------------------------------------------------------
+// Extract animation channel
+void AnimResolver::ExtractAnimChannel(aiNodeAnim** out, unsigned int flags /*= 0*/)
+{
+	*out = NULL;
+
+
+	//FIXME: crashes if more than one component is animated at different timings, to be resolved.
+	return;
+
+#if 0
+	// If we have no envelopes, return NULL
+	if (envelopes.empty()) {
+		return;
+	}
+
+	// We won't spawn an animation channel if we don't have at least one envelope with more than one keyframe defined.
+	const bool trans = (trans_x && trans_x->keys.size() > 1 || trans_y && trans_y->keys.size() > 1 || trans_z && trans_z->keys.size() > 1);
+	const bool rotat = (rotat_x && rotat_x->keys.size() > 1 || rotat_y && rotat_y->keys.size() > 1 || rotat_z && rotat_z->keys.size() > 1);
+	const bool scale = (scale_x && scale_x->keys.size() > 1 || scale_y && scale_y->keys.size() > 1 || scale_z && scale_z->keys.size() > 1);
+	if (!trans && !rotat && !scale)
+		return;
+
+	// Allocate the output animation 
+	aiNodeAnim* anim = *out = new aiNodeAnim();
+
+	// Setup default animation setup if necessary
+	if (need_to_setup) {
+		UpdateAnimRangeSetup();
+		need_to_setup = false;
+	}
+
+	// copy translation keys
+	if (trans) {
+		std::vector<aiVectorKey> keys;
+		GetKeys(keys,trans_x,trans_y,trans_z,flags);
+
+		anim->mPositionKeys = new aiVectorKey[ anim->mNumPositionKeys = keys.size() ];
+		std::copy(keys.begin(),keys.end(),anim->mPositionKeys);
+	}
+
+	// copy rotation keys
+	if (rotat) {
+		std::vector<aiVectorKey> keys;
+		GetKeys(keys,rotat_x,rotat_y,rotat_z,flags);
+
+		anim->mRotationKeys = new aiQuatKey[ anim->mNumRotationKeys = keys.size() ];
+		
+		// convert heading, pitch, bank to quaternion
+		for (unsigned int i = 0; i < anim->mNumRotationKeys; ++i) {
+			aiQuatKey& qk = anim->mRotationKeys[i];
+			qk.mTime  = keys[i].mTime;
+			qk.mValue = aiQuaternion( keys[i].mValue.x ,keys[i].mValue.z ,keys[i].mValue.y );
+		}
+	}
+
+	// copy scaling keys
+	if (scale) {
+		std::vector<aiVectorKey> keys;
+		GetKeys(keys,scale_x,scale_y,scale_z,flags);
+
+		anim->mScalingKeys = new aiVectorKey[ anim->mNumScalingKeys = keys.size() ];
+		std::copy(keys.begin(),keys.end(),anim->mScalingKeys);
+	}
+#endif
+}
+
+
+#endif // no lwo or no lws

+ 304 - 0
CMake/assimp_patch/Vertex.h

@@ -0,0 +1,304 @@
+/*
+Open Asset Import Library (ASSIMP)
+----------------------------------------------------------------------
+
+Copyright (c) 2006-2010, ASSIMP Development Team
+All rights reserved.
+
+Redistribution and use of this software in source and binary forms, 
+with or without modification, are permitted provided that the 
+following conditions are met:
+
+* Redistributions of source code must retain the above
+  copyright notice, this list of conditions and the
+  following disclaimer.
+
+* Redistributions in binary form must reproduce the above
+  copyright notice, this list of conditions and the
+  following disclaimer in the documentation and/or other
+  materials provided with the distribution.
+
+* Neither the name of the ASSIMP team, nor the names of its
+  contributors may be used to endorse or promote products
+  derived from this software without specific prior
+  written permission of the ASSIMP Development Team.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+----------------------------------------------------------------------/
+*/
+
+#include <functional>
+
+/** @file Defines a helper class to represent an interleaved vertex */
+#ifndef AI_VERTEX_H_INC
+#define AI_VERTEX_H_INC
+namespace Assimp	{
+	
+	///////////////////////////////////////////////////////////////////////////
+	// std::plus-family operates on operands with identical types - we need to
+	// support all the (vectype op float) combinations in vector maths. 
+	// Providing T(float) would open the way to endless implicit conversions.
+	///////////////////////////////////////////////////////////////////////////
+	namespace Intern {
+		template <typename T0, typename T1, typename TRES = T0> struct plus {
+			TRES operator() (const T0& t0, const T1& t1) const {
+				return t0+t1;
+			}
+		};
+		template <typename T0, typename T1, typename TRES = T0> struct minus {
+			TRES operator() (const T0& t0, const T1& t1) const {
+				return t0-t1;
+			}
+		};
+		template <typename T0, typename T1, typename TRES = T0> struct multiplies {
+			TRES operator() (const T0& t0, const T1& t1) const {
+				return t0*t1;
+			}
+		};
+		template <typename T0, typename T1, typename TRES = T0> struct divides {
+			TRES operator() (const T0& t0, const T1& t1) const {
+				return t0/t1;
+			}
+		};
+	}
+
+// ------------------------------------------------------------------------------------------------
+/** Intermediate description a vertex with all possible components. Defines a full set of 
+ *  operators, so you may use such a 'Vertex' in basic arithmetics. All operators are applied
+ *  to *all* vertex components equally. This is useful for stuff like interpolation
+ *  or subdivision, but won't work if special handling is required for some vertex components. */
+// ------------------------------------------------------------------------------------------------
+class Vertex
+{
+	friend Vertex operator + (const Vertex&,const Vertex&);
+	friend Vertex operator - (const Vertex&,const Vertex&);
+
+	friend Vertex operator + (const Vertex&,float);
+	friend Vertex operator - (const Vertex&,float);
+	friend Vertex operator * (const Vertex&,float);
+	friend Vertex operator / (const Vertex&,float);
+
+	friend Vertex operator + (float, const Vertex&);
+	friend Vertex operator - (float, const Vertex&);
+	friend Vertex operator * (float, const Vertex&);
+	friend Vertex operator / (float, const Vertex&);
+
+public:
+
+	Vertex() {}
+
+	// ----------------------------------------------------------------------------
+	/** Extract a particular vertex from a mesh and interleave all components */
+	explicit Vertex(const aiMesh* msh, unsigned int idx) {
+		ai_assert(idx < msh->mNumVertices);
+		position = msh->mVertices[idx];
+
+		if (msh->HasNormals()) {
+			normal = msh->mNormals[idx];
+		}
+
+		if (msh->HasTangentsAndBitangents()) {
+			tangent = msh->mTangents[idx];
+			bitangent = msh->mBitangents[idx];
+		}
+
+		for (unsigned int i = 0; msh->HasTextureCoords(i); ++i) {
+			texcoords[i] = msh->mTextureCoords[i][idx];
+		}
+
+		for (unsigned int i = 0; msh->HasVertexColors(i); ++i) {
+			colors[i] = msh->mColors[i][idx];
+		}
+	}
+
+public:
+
+	Vertex& operator += (const Vertex& v) {
+		*this = *this+v;
+		return *this;
+	}
+
+	Vertex& operator -= (const Vertex& v) {
+		*this = *this-v;
+		return *this;
+	}
+
+
+
+	Vertex& operator += (float v) {
+		*this = *this+v;
+		return *this;
+	}
+
+	Vertex& operator -= (float v) {
+		*this = *this-v;
+		return *this;
+	}
+
+	Vertex& operator *= (float v) {
+		*this = *this*v;
+		return *this;
+	}
+
+	Vertex& operator /= (float v) {
+		*this = *this/v;
+		return *this;
+	}
+
+public:
+
+	// ----------------------------------------------------------------------------
+	/** Convert back to non-interleaved storage */
+	void SortBack(aiMesh* out, unsigned int idx) const {
+
+		ai_assert(idx<out->mNumVertices);
+		out->mVertices[idx] = position;
+
+		if (out->HasNormals()) {
+			out->mNormals[idx] = normal;
+		}
+
+		if (out->HasTangentsAndBitangents()) {
+			out->mTangents[idx] = tangent;
+			out->mBitangents[idx] = bitangent;
+		}
+
+		for(unsigned int i = 0; out->HasTextureCoords(i); ++i) {
+			out->mTextureCoords[i][idx] = texcoords[i];
+		}
+
+		for(unsigned int i = 0; out->HasVertexColors(i); ++i) {
+			out->mColors[i][idx] = colors[i];
+		}
+	}
+
+private:
+
+	// ----------------------------------------------------------------------------
+	/** Construct from two operands and a binary operation to combine them */
+	template <template <typename t> class op> static Vertex BinaryOp(const Vertex& v0, const Vertex& v1) {
+		// this is a heavy task for the compiler to optimize ... *pray*
+
+		Vertex res;
+		res.position  = op<aiVector3D>()(v0.position,v1.position);
+		res.normal    = op<aiVector3D>()(v0.normal,v1.normal);
+		res.tangent   = op<aiVector3D>()(v0.tangent,v1.tangent);
+		res.bitangent = op<aiVector3D>()(v0.bitangent,v1.bitangent);
+
+		for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) {
+			res.texcoords[i] = op<aiVector3D>()(v0.texcoords[i],v1.texcoords[i]);
+		}
+		for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) {
+			res.colors[i] = op<aiColor4D>()(v0.colors[i],v1.colors[i]);
+		}
+		return res;
+	}
+
+	// ----------------------------------------------------------------------------
+	/** This time binary arithmetics of v0 with a floating-point number */
+	template <template <typename, typename, typename> class op> static Vertex BinaryOp(const Vertex& v0, float f) {
+		// this is a heavy task for the compiler to optimize ... *pray*
+
+		Vertex res;
+		res.position  = op<aiVector3D,float,aiVector3D>()(v0.position,f);
+		res.normal    = op<aiVector3D,float,aiVector3D>()(v0.normal,f);
+		res.tangent   = op<aiVector3D,float,aiVector3D>()(v0.tangent,f);
+		res.bitangent = op<aiVector3D,float,aiVector3D>()(v0.bitangent,f);
+
+		for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) {
+			res.texcoords[i] = op<aiVector3D,float,aiVector3D>()(v0.texcoords[i],f);
+		}
+		for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) {
+			res.colors[i] = op<aiColor4D,float,aiColor4D>()(v0.colors[i],f);
+		}
+		return res;
+	}
+
+	// ----------------------------------------------------------------------------
+	/** This time binary arithmetics of v0 with a floating-point number */
+	template <template <typename, typename, typename> class op> static Vertex BinaryOp(float f, const Vertex& v0) {
+		// this is a heavy task for the compiler to optimize ... *pray*
+
+		Vertex res;
+		res.position  = op<float,aiVector3D,aiVector3D>()(f,v0.position);
+		res.normal    = op<float,aiVector3D,aiVector3D>()(f,v0.normal);
+		res.tangent   = op<float,aiVector3D,aiVector3D>()(f,v0.tangent);
+		res.bitangent = op<float,aiVector3D,aiVector3D>()(f,v0.bitangent);
+
+		for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS; ++i) {
+			res.texcoords[i] = op<float,aiVector3D,aiVector3D>()(f,v0.texcoords[i]);
+		}
+		for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_COLOR_SETS; ++i) {
+			res.colors[i] = op<float,aiColor4D,aiColor4D>()(f,v0.colors[i]);
+		}
+		return res;
+	}
+
+public:
+
+	aiVector3D position;
+	aiVector3D normal;
+	aiVector3D tangent, bitangent;
+
+	aiVector3D texcoords[AI_MAX_NUMBER_OF_TEXTURECOORDS];
+	aiColor4D colors[AI_MAX_NUMBER_OF_COLOR_SETS];
+};
+
+
+
+// ------------------------------------------------------------------------------------------------
+AI_FORCE_INLINE Vertex operator + (const Vertex& v0,const Vertex& v1) {
+	return Vertex::BinaryOp<std::plus>(v0,v1);
+}
+
+AI_FORCE_INLINE Vertex operator - (const Vertex& v0,const Vertex& v1) {
+	return Vertex::BinaryOp<std::minus>(v0,v1);
+}
+
+// ------------------------------------------------------------------------------------------------
+AI_FORCE_INLINE Vertex operator + (const Vertex& v0,float f) {
+	return Vertex::BinaryOp<Intern::plus>(v0,f);
+}
+
+AI_FORCE_INLINE Vertex operator - (const Vertex& v0,float f) {
+	return Vertex::BinaryOp<Intern::minus>(v0,f);
+}
+
+AI_FORCE_INLINE Vertex operator * (const Vertex& v0,float f) {
+	return Vertex::BinaryOp<Intern::multiplies>(v0,f);
+}
+
+AI_FORCE_INLINE Vertex operator / (const Vertex& v0,float f) {
+	return Vertex::BinaryOp<Intern::divides>(v0,f);
+}
+
+// ------------------------------------------------------------------------------------------------
+AI_FORCE_INLINE Vertex operator + (float f,const Vertex& v0) {
+	return Vertex::BinaryOp<Intern::plus>(f,v0);
+}
+
+AI_FORCE_INLINE Vertex operator - (float f,const Vertex& v0) {
+	return Vertex::BinaryOp<Intern::minus>(f,v0);
+}
+
+AI_FORCE_INLINE Vertex operator * (float f,const Vertex& v0) {
+	return Vertex::BinaryOp<Intern::multiplies>(f,v0);
+}
+
+AI_FORCE_INLINE Vertex operator / (float f,const Vertex& v0) {
+	return Vertex::BinaryOp<Intern::divides>(f,v0);
+}
+
+}
+#endif

+ 1 - 1
CMake/openal.cmake

@@ -57,7 +57,7 @@ OPTION(WERROR  "Treat compile warnings as errors"      OFF)
 
 
 OPTION(UTILS  "Build and install utility programs"  ON)
 OPTION(UTILS  "Build and install utility programs"  ON)
 
 
-OPTION(EXAMPLES  "Build and install example programs"  ON)
+OPTION(EXAMPLES  "Build and install example programs"  OFF)
 
 
 OPTION(ALSOFT_CONFIG "Install alsoft.conf configuration file" OFF)
 OPTION(ALSOFT_CONFIG "Install alsoft.conf configuration file" OFF)
 
 

+ 5 - 1
Core/Contents/Include/PolyCocoaCore.h

@@ -38,6 +38,8 @@
 #include <IOKit/hid/IOHIDLib.h>
 #include <IOKit/hid/IOHIDLib.h>
 #import <Cocoa/Cocoa.h>
 #import <Cocoa/Cocoa.h>
 
 
+#define POLYCODE_CORE CocoaCore
+
 using std::vector;
 using std::vector;
 
 
 @class PolycodeView;
 @class PolycodeView;
@@ -116,7 +118,7 @@ namespace Polycode {
 		String openFolderPicker();
 		String openFolderPicker();
 		vector<String> openFilePicker(vector<CoreFileExtension> extensions, bool allowMultiple);
 		vector<String> openFilePicker(vector<CoreFileExtension> extensions, bool allowMultiple);
 		
 		
-		String executeExternalCommand(String command);
+		String executeExternalCommand(String command, String args, String inDirectory="");
 		
 		
 		void launchApplicationWithFile(String application, String file);
 		void launchApplicationWithFile(String application, String file);
 		void openFileWithApplication(String file, String application);
 		void openFileWithApplication(String file, String application);
@@ -151,6 +153,8 @@ namespace Polycode {
 				
 				
 		vector<GamepadDeviceEntry*> gamepads;
 		vector<GamepadDeviceEntry*> gamepads;
 		unsigned int nextDeviceID;
 		unsigned int nextDeviceID;
+		
+		bool checkSpecialKeyEvents(PolyKEY key);		
 				
 				
 	protected:	
 	protected:	
 		PolycodeView *glView;
 		PolycodeView *glView;

+ 18 - 9
Core/Contents/Include/PolyCore.h

@@ -30,14 +30,6 @@ THE SOFTWARE.
 #include "PolyCoreServices.h"
 #include "PolyCoreServices.h"
 #include "PolyThreaded.h"
 #include "PolyThreaded.h"
 
 
-#define CURSOR_ARROW 0
-#define CURSOR_TEXT 1
-#define CURSOR_POINTER 2
-#define CURSOR_CROSSHAIR 3
-#define CURSOR_RESIZE_LEFT_RIGHT 4
-#define CURSOR_RESIZE_UP_DOWN 5
-#define CURSOR_OPEN_HAND 6
-
 long getThreadID();
 long getThreadID();
 
 
 namespace Polycode {
 namespace Polycode {
@@ -310,8 +302,15 @@ namespace Polycode {
 		static const int EVENT_CORE_RESIZE = 0;		
 		static const int EVENT_CORE_RESIZE = 0;		
 		static const int EVENT_LOST_FOCUS = 1;
 		static const int EVENT_LOST_FOCUS = 1;
 		static const int EVENT_GAINED_FOCUS = 2;
 		static const int EVENT_GAINED_FOCUS = 2;
+
+		static const int EVENT_UNDO = 3;
+		static const int EVENT_REDO = 4;
+		static const int EVENT_COPY = 5;
+		static const int EVENT_CUT = 6;
+		static const int EVENT_SELECT_ALL = 7;
+		static const int EVENT_PASTE = 8;
 		
 		
-		virtual String executeExternalCommand(String command) = 0;
+		virtual String executeExternalCommand(String command, String args, String inDirectory) = 0;
 		
 		
 		/**
 		/**
 		* Returns the default working path of the application.
 		* Returns the default working path of the application.
@@ -333,9 +332,19 @@ namespace Polycode {
 		
 		
 		void removeThread(Threaded *thread);
 		void removeThread(Threaded *thread);
 		
 		
+		static const int CURSOR_ARROW = 0;
+		static const int CURSOR_TEXT = 1;
+		static const int CURSOR_POINTER = 2;
+		static const int CURSOR_CROSSHAIR = 3;
+		static const int CURSOR_RESIZE_LEFT_RIGHT = 4;
+		static const int CURSOR_RESIZE_UP_DOWN = 5;
+		static const int CURSOR_OPEN_HAND = 6;		
+		
 				
 				
 	protected:	
 	protected:	
 	
 	
+		virtual bool checkSpecialKeyEvents(PolyKEY key) { return false; }
+	
 		void loseFocus();
 		void loseFocus();
 		void gainFocus();
 		void gainFocus();
 		
 		

+ 8 - 3
Core/Contents/Include/PolySDLCore.h

@@ -26,6 +26,8 @@
 #include "PolyCore.h"
 #include "PolyCore.h"
 #include <vector>
 #include <vector>
 
 
+#define POLYCODE_CORE SDLCore
+
 struct SDL_mutex;
 struct SDL_mutex;
 
 
 namespace Polycode {
 namespace Polycode {
@@ -66,12 +68,15 @@ namespace Polycode {
 		std::vector<String> openFilePicker(std::vector<CoreFileExtension> extensions, bool allowMultiple);
 		std::vector<String> openFilePicker(std::vector<CoreFileExtension> extensions, bool allowMultiple);
 		void resizeTo(int xRes, int yRes);
 		void resizeTo(int xRes, int yRes);
 
 
-		String executeExternalCommand(String command);
+		String executeExternalCommand(String command, String args, String inDirectory="");
 		void openURL(String url);
 		void openURL(String url);
 
 
+
 	private:
 	private:
-		
-		
+		bool checkSpecialKeyEvents(PolyKEY key);
+
+		uint32_t flags;
+		bool resizableWindow;
 		
 		
 	};
 	};
 }
 }

+ 17 - 13
Core/Contents/Include/PolyWinCore.h

@@ -99,6 +99,8 @@
 #define NO_TOUCH_API 1
 #define NO_TOUCH_API 1
 #endif
 #endif
 
 
+#define POLYCODE_CORE Win32Core
+
 namespace Polycode {
 namespace Polycode {
 
 
 	class _PolyExport Win32Mutex : public CoreMutex {
 	class _PolyExport Win32Mutex : public CoreMutex {
@@ -223,25 +225,28 @@ public:
 
 
 		void initTouch();
 		void initTouch();
 
 
-		// NEED TO IMPLEMENT:
+		void handleViewResize(int width, int height);
+		
+		String executeExternalCommand(String command,  String args, String inDirectory);
+		std::vector<String> openFilePicker(std::vector<CoreFileExtension> extensions, bool allowMultiple);
+		void createFolder(const String& folderPath);
+		void openURL(String url);
+		String openFolderPicker();
+		void copyDiskItem(const String& itemPath, const String& destItemPath);
+		void moveDiskItem(const String& itemPath, const String& destItemPath);
+		void removeDiskItem(const String& itemPath);
 
 
-		String executeExternalCommand(String command) { return "";}
+		void setCursor(int cursorType);
 
 
-		void openURL(String url) {}
-		void setCursor(int cursorType){ }
-		void copyStringToClipboard(const String& str) { }
-		String getClipboardString() { return ""; }
+		void copyStringToClipboard(const String& str);
+		String getClipboardString();
 
 
-		void createFolder(const String& folderPath) {}
-		void copyDiskItem(const String& itemPath, const String& destItemPath) {}
-		void moveDiskItem(const String& itemPath, const String& destItemPath) {}
-		String openFolderPicker()  { return "";}
-		void removeDiskItem(const String& itemPath)  {}
-		std::vector<String> openFilePicker(std::vector<CoreFileExtension> extensions, bool allowMultiple) { std::vector<String> ret; return ret;}
 		void resizeTo(int xRes, int yRes) { }
 		void resizeTo(int xRes, int yRes) { }
 		
 		
 		std::vector<GamepadDeviceEntry*> gamepads;
 		std::vector<GamepadDeviceEntry*> gamepads;
 
 
+		HWND hWnd;
+
 	private:
 	private:
 
 
 		unsigned int nextDeviceID;
 		unsigned int nextDeviceID;
@@ -252,7 +257,6 @@ public:
 
 
 		void initMultisample(int numSamples);
 		void initMultisample(int numSamples);
 
 
-		HWND hWnd;
 
 
 		int lastMouseX;
 		int lastMouseX;
 		int lastMouseY;
 		int lastMouseY;

+ 279 - 0
Core/Contents/Include/PolyWinCore.h~

@@ -0,0 +1,279 @@
+/*
+ Copyright (C) 2011 by Ivan Safrin
+ 
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+ 
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+ 
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+*/
+
+
+#pragma once
+#include "PolyGlobals.h"
+#include "PolyCore.h"
+#include "PolyInputKeys.h"
+#include "PolyInputEvent.h"
+#include "PolyRectangle.h"
+
+#include <winsock2.h>
+#include <windows.h>
+#include <windowsx.h>
+#include <WinUser.h>
+
+#include <MMSystem.h>
+#include <regstr.h>
+
+
+#include <vector>
+
+#ifndef VK_0
+#define VK_0	'0'
+#define VK_1	'1'
+#define VK_2	'2'
+#define VK_3	'3'
+#define VK_4	'4'
+#define VK_5	'5'
+#define VK_6	'6'
+#define VK_7	'7'
+#define VK_8	'8'
+#define VK_9	'9'
+#define VK_A	'A'
+#define VK_B	'B'
+#define VK_C	'C'
+#define VK_D	'D'
+#define VK_E	'E'
+#define VK_F	'F'
+#define VK_G	'G'
+#define VK_H	'H'
+#define VK_I	'I'
+#define VK_J	'J'
+#define VK_K	'K'
+#define VK_L	'L'
+#define VK_M	'M'
+#define VK_N	'N'
+#define VK_O	'O'
+#define VK_P	'P'
+#define VK_Q	'Q'
+#define VK_R	'R'
+#define VK_S	'S'
+#define VK_T	'T'
+#define VK_U	'U'
+#define VK_V	'V'
+#define VK_W	'W'
+#define VK_X	'X'
+#define VK_Y	'Y'
+#define VK_Z	'Z'
+#endif /* VK_0 */
+
+/* These keys haven't been defined, but were experimentally determined */
+#define VK_SEMICOLON	0xBA
+#define VK_EQUALS	0xBB
+#define VK_COMMA	0xBC
+#define VK_MINUS	0xBD
+#define VK_PERIOD	0xBE
+#define VK_SLASH	0xBF
+#define VK_GRAVE	0xC0
+#define VK_LBRACKET	0xDB
+#define VK_BACKSLASH	0xDC
+#define VK_RBRACKET	0xDD
+#define VK_APOSTROPHE	0xDE
+#define VK_BACKTICK	0xDF
+#define VK_OEM_102	0xE2
+
+#define EXTENDED_KEYMASK	(1<<24)
+
+#ifdef _MINGW
+#define NO_TOUCH_API 1
+#endif
+
+namespace Polycode {
+
+	class _PolyExport Win32Mutex : public CoreMutex {
+	public:
+		HANDLE winMutex; 
+	};
+
+	class _PolyExport Win32Event {
+	public:
+		int eventGroup;
+		int eventCode;		
+		int mouseX;
+		int mouseY;
+		TouchInfo touch;
+		std::vector<TouchInfo> touches;
+		PolyKEY keyCode;
+		wchar_t unicodeChar;		
+		char mouseButton;	
+		static const int INPUT_EVENT = 0;
+	};
+	
+	
+	class HIDGamepadAxis {
+		public:
+		//IOHIDElementCookie cookie;
+		//CFIndex logicalMin;
+		//CFIndex logicalMax;
+		bool hasNullState;
+		bool isHatSwitch;
+		bool isHatSwitchSecondAxis;
+	};
+
+	class HIDGamepadButton {
+		public:
+		//IOHIDElementCookie cookie;
+		int something;
+	};	
+	
+class Gamepad_devicePrivate {
+public:
+	UINT joystickID;
+	JOYINFOEX lastState;
+	int xAxisIndex;
+	int yAxisIndex;
+	int zAxisIndex;
+	int rAxisIndex;
+	int uAxisIndex;
+	int vAxisIndex;
+	int povXAxisIndex;
+	int povYAxisIndex;
+	UINT (* axisRanges)[2];
+};
+
+
+	class GamepadDeviceEntry  {
+		public:
+			GamepadDeviceEntry() {
+				numAxes = 0;
+			}
+			std::vector<HIDGamepadAxis> axisElements;
+			std::vector<HIDGamepadButton> buttonElements;			
+			unsigned int deviceID;
+			//IOHIDDeviceRef device;
+			unsigned int numAxes;
+			unsigned int numButtons;	
+			Gamepad_devicePrivate *privateData;
+		//	CoreInput *input;		
+	};
+
+	class _PolyExport Win32Core : public Core {
+		
+	public:
+		
+		Win32Core(PolycodeViewBase *view, int xRes, int yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel, int frameRate,  int monitorIndex = -1);
+		~Win32Core();
+
+		void enableMouse(bool newval);
+		void warpCursor(int x, int y);
+		unsigned int getTicks();		
+		bool Update();
+
+		void setVSync(bool vSyncVal);
+
+		void handleKeyDown(LPARAM lParam, WPARAM wParam, wchar_t unicodeChar);
+		void handleKeyUp(LPARAM lParam, WPARAM wParam);
+		void handleMouseMove(LPARAM lParam, WPARAM wParam);
+		void handleMouseWheel(LPARAM lParam, WPARAM wParam);
+		void handleMouseDown(int mouseCode,LPARAM lParam, WPARAM wParam);
+		void handleMouseUp(int mouseCode,LPARAM lParam, WPARAM wParam);
+		void handleTouchEvent(LPARAM lParam, WPARAM wParam);
+
+		bool isMultiTouchEnabled() { return hasMultiTouch; }
+
+		void setVideoMode(int xRes, int yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel);
+		
+		void initContext(bool usePixelFormat, unsigned int pixelFormat);
+		void destroyContext();
+
+		void createThread(Threaded *target);
+
+		PolyKEY mapKey(LPARAM lParam, WPARAM wParam);
+
+		void lockMutex(CoreMutex *mutex);
+		void unlockMutex(CoreMutex *mutex);
+		CoreMutex *createMutex();
+
+		void checkEvents();
+		void initKeymap();
+
+		void platformSleep(int msecs);
+
+		std::vector<Polycode::Rectangle> getVideoModes();
+
+		void handleAxisChange(GamepadDeviceEntry * device, int axisIndex, DWORD value);
+		void handleButtonChange(GamepadDeviceEntry * device, DWORD lastValue, DWORD value);
+		void handlePOVChange(GamepadDeviceEntry * device, DWORD lastValue, DWORD value);
+
+		void detectGamepads();
+		void initGamepad();
+		void shutdownGamepad();
+		void Gamepad_processEvents();
+
+		void initTouch();
+
+		// NEED TO IMPLEMENT:
+
+		String executeExternalCommand(String command) { return "";}
+
+		void openURL(String url) {}
+		void setCursor(int cursorType){ }
+		void copyStringToClipboard(const String& str) { }
+		String getClipboardString() { return ""; }
+
+		void createFolder(const String& folderPath) {}
+		void copyDiskItem(const String& itemPath, const String& destItemPath) {}
+		void moveDiskItem(const String& itemPath, const String& destItemPath) {}
+		String openFolderPicker()  { return "";}
+		void removeDiskItem(const String& itemPath)  {}
+		std::vector<String> openFilePicker(std::vector<CoreFileExtension> extensions, bool allowMultiple) { std::vector<String> ret; return ret;}
+		void resizeTo(int xRes, int yRes) { }
+		
+		std::vector<GamepadDeviceEntry*> gamepads;
+
+	private:
+
+		unsigned int nextDeviceID;
+		PolyKEY keyMap[1024];
+		unsigned int lastGamepadDetect;
+
+		std::vector<Win32Event> win32Events;
+
+		void initMultisample(int numSamples);
+
+		HWND hWnd;
+
+		int lastMouseX;
+		int lastMouseY;
+
+		bool isFullScreen;
+
+		HDC hDC;
+		HGLRC hRC;
+		unsigned int PixelFormat;
+		PIXELFORMATDESCRIPTOR pfd;
+		
+		// Tracks whether the system supports multitouch at runtime
+		bool hasMultiTouch;
+		
+#ifndef NO_TOUCH_API
+		// Create generic reference to any multitouch functions we need, so that we
+		// can make them available at runtime if the operating system supports it
+		// while still allowing fallback for older systems
+		// See: http://msdn.microsoft.com/en-us/library/ms683212(v=vs.85).aspx
+		typedef bool (WINAPI *GetTouchInputInfoType)(HTOUCHINPUT,UINT,PTOUCHINPUT,int);
+		GetTouchInputInfoType GetTouchInputInfoFunc;
+#endif	
+	};
+}

+ 2 - 1
Core/Contents/PolycodeView/Linux/PolycodeView.cpp

@@ -2,9 +2,10 @@
 
 
 namespace Polycode {
 namespace Polycode {
 
 
-    PolycodeView::PolycodeView(const char *title) : PolycodeViewBase() {
+    PolycodeView::PolycodeView(const char *title, bool resizable) : PolycodeViewBase() {
         windowTitle = title;
         windowTitle = title;
         windowData = &windowTitle;
         windowData = &windowTitle;
+	this->resizable = resizable;
     }
     }
 
 
     PolycodeView::~PolycodeView() {
     PolycodeView::~PolycodeView() {

+ 2 - 1
Core/Contents/PolycodeView/Linux/PolycodeView.h

@@ -6,10 +6,11 @@ namespace Polycode {
 
 
     class PolycodeView : public PolycodeViewBase {
     class PolycodeView : public PolycodeViewBase {
         public:
         public:
-            PolycodeView(const char *title);
+            PolycodeView(const char *title, bool resizable = false);
             ~PolycodeView();
             ~PolycodeView();
 
 
             String windowTitle;
             String windowTitle;
+	    bool resizable;
     };
     };
 
 
 }
 }

+ 46 - 5
Core/Contents/PolycodeView/MSVC/PolycodeView.cpp

@@ -4,11 +4,44 @@
 #include "PolyCoreServices.h"
 #include "PolyCoreServices.h"
 #include "PolyCoreInput.h"
 #include "PolyCoreInput.h"
 #include "PolyRenderer.h"
 #include "PolyRenderer.h"
+#include <io.h>
+#include <fcntl.h>
 
 
 using namespace Polycode;
 using namespace Polycode;
 
 
 Win32Core *core = NULL;
 Win32Core *core = NULL;
 
 
+
+static void OpenConsole()
+{
+    int outHandle, errHandle, inHandle;
+    FILE *outFile, *errFile, *inFile;
+    AllocConsole();
+    CONSOLE_SCREEN_BUFFER_INFO coninfo;
+    GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
+    coninfo.dwSize.Y = 9999;
+    SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);
+
+    outHandle = _open_osfhandle((long)GetStdHandle(STD_OUTPUT_HANDLE), _O_TEXT);
+    errHandle = _open_osfhandle((long)GetStdHandle(STD_ERROR_HANDLE),_O_TEXT);
+    inHandle = _open_osfhandle((long)GetStdHandle(STD_INPUT_HANDLE),_O_TEXT );
+
+    outFile = _fdopen(outHandle, "w" );
+    errFile = _fdopen(errHandle, "w");
+    inFile =  _fdopen(inHandle, "r");
+
+    *stdout = *outFile;
+    *stderr = *errFile;
+    *stdin = *inFile;
+
+    setvbuf( stdout, NULL, _IONBF, 0 );
+    setvbuf( stderr, NULL, _IONBF, 0 );
+    setvbuf( stdin, NULL, _IONBF, 0 );
+
+    std::ios::sync_with_stdio();
+
+}
+
 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 {
 {
 	int wmId, wmEvent;
 	int wmId, wmEvent;
@@ -25,8 +58,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 	case WM_SIZE:
 	case WM_SIZE:
 		nWidth = LOWORD(lParam); 
 		nWidth = LOWORD(lParam); 
 		nHeight = HIWORD(lParam);
 		nHeight = HIWORD(lParam);
-		if(core)
-			core->getServices()->getRenderer()->Resize(nWidth, nHeight);
+		if(core) {
+			core->handleViewResize(nWidth, nHeight);
+		}
 	break;
 	break;
 
 
 	case WM_MOUSEMOVE:
 	case WM_MOUSEMOVE:
@@ -114,7 +148,7 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
 }
 }
 
 
 
 
-PolycodeView::PolycodeView(HINSTANCE hInstance, int nCmdShow, LPCTSTR windowTitle) : PolycodeViewBase() {
+PolycodeView::PolycodeView(HINSTANCE hInstance, int nCmdShow, LPCTSTR windowTitle, bool resizable, bool showDebugConsole) : PolycodeViewBase() {
 
 
 WNDCLASSEX wcex;
 WNDCLASSEX wcex;
 
 
@@ -133,14 +167,21 @@ WNDCLASSEX wcex;
 
 
 	RegisterClassEx(&wcex);
 	RegisterClassEx(&wcex);
 
 
-  hwnd = CreateWindowEx(WS_EX_APPWINDOW, L"POLYCODEAPPLICATION", windowTitle, WS_OVERLAPPED|WS_SYSMENU,
-      0, 0, 640, 480, NULL, NULL, hInstance, NULL);
+	if(resizable) {
+		hwnd = CreateWindowEx(WS_EX_APPWINDOW, L"POLYCODEAPPLICATION", windowTitle, WS_OVERLAPPEDWINDOW|WS_SYSMENU, 0, 0, 640, 480, NULL, NULL, hInstance, NULL);
+	} else {
+		hwnd = CreateWindowEx(WS_EX_APPWINDOW, L"POLYCODEAPPLICATION", windowTitle, WS_OVERLAPPED|WS_SYSMENU, 0, 0, 640, 480, NULL, NULL, hInstance, NULL);
+	}
 
 
   windowData = (void*)&hwnd;
   windowData = (void*)&hwnd;
 
 
    ShowWindow(hwnd, nCmdShow);
    ShowWindow(hwnd, nCmdShow);
    UpdateWindow(hwnd);
    UpdateWindow(hwnd);
 
 
+   if(showDebugConsole) {
+		OpenConsole();
+   }
+
 }
 }
 
 
 PolycodeView::~PolycodeView() {
 PolycodeView::~PolycodeView() {

+ 1 - 1
Core/Contents/PolycodeView/MSVC/PolycodeView.h

@@ -10,7 +10,7 @@ namespace Polycode {
 
 
 class _PolyExport PolycodeView : public PolycodeViewBase {
 class _PolyExport PolycodeView : public PolycodeViewBase {
 public:
 public:
-	PolycodeView(HINSTANCE hInstance, int nCmdShow, LPCTSTR windowTitle);
+	PolycodeView(HINSTANCE hInstance, int nCmdShow, LPCTSTR windowTitle, bool resizable=false, bool showDebugConsole = false);
 	~PolycodeView();
 	~PolycodeView();
 
 
 	HWND hwnd;
 	HWND hwnd;

+ 27 - 2
Core/Contents/Source/OSBasics.cpp

@@ -23,6 +23,7 @@
 #include "OSBasics.h"
 #include "OSBasics.h"
 #ifdef _WINDOWS
 #ifdef _WINDOWS
 	#include <windows.h>
 	#include <windows.h>
+	#include <Shellapi.h>
 #else
 #else
 	#include <dirent.h>
 	#include <dirent.h>
 	#include <sys/types.h>
 	#include <sys/types.h>
@@ -82,7 +83,12 @@ OSFileEntry::OSFileEntry(const String& path, const String& name, int type) {
 
 
 void OSFileEntry::init(const Polycode::String& path, const Polycode::String& name, int type) {
 void OSFileEntry::init(const Polycode::String& path, const Polycode::String& name, int type) {
 	this->basePath = path;
 	this->basePath = path;
-	this->fullPath = path + "/" + name;
+
+	if(path == "/") {
+		this->fullPath = "/" + name;
+	} else {
+		this->fullPath = path + "/" + name;
+	}
 	this->name = name;
 	this->name = name;
 	this->type = type;
 	this->type = type;
 
 
@@ -255,6 +261,7 @@ vector<OSFileEntry> OSBasics::parsePhysFSFolder(const String& pathString, bool s
 vector<OSFileEntry> OSBasics::parseFolder(const String& pathString, bool showHidden) {
 vector<OSFileEntry> OSBasics::parseFolder(const String& pathString, bool showHidden) {
 	vector<OSFileEntry> returnVector;
 	vector<OSFileEntry> returnVector;
 	
 	
+	if(pathString != "/") {
 	if(pathString.size() < 128) {
 	if(pathString.size() < 128) {
 		if(PHYSFS_exists(pathString.c_str())) {
 		if(PHYSFS_exists(pathString.c_str())) {
 			if(PHYSFS_isDirectory(pathString.c_str())) {
 			if(PHYSFS_isDirectory(pathString.c_str())) {
@@ -262,7 +269,7 @@ vector<OSFileEntry> OSBasics::parseFolder(const String& pathString, bool showHid
 			}
 			}
 		}
 		}
 	}
 	}
-	
+	}
 	
 	
 #ifdef _WINDOWS
 #ifdef _WINDOWS
 
 
@@ -274,8 +281,18 @@ vector<OSFileEntry> OSBasics::parseFolder(const String& pathString, bool showHid
 	WCHAR tmp[4096];
 	WCHAR tmp[4096];
 	memset(tmp, 0, sizeof(WCHAR)*4096);
 	memset(tmp, 0, sizeof(WCHAR)*4096);
 	ctow(tmp, pathString.c_str());
 	ctow(tmp, pathString.c_str());
+
+
+	DWORD dwAttrib = GetFileAttributes(tmp);
+  if(! (dwAttrib != INVALID_FILE_ATTRIBUTES && 
+         (dwAttrib & FILE_ATTRIBUTE_DIRECTORY))) {
+		return returnVector;
+  }
+
+
 	SetCurrentDirectory(tmp);
 	SetCurrentDirectory(tmp);
 
 
+
 	HANDLE hFind = FindFirstFile((LPCWSTR)"*", &findFileData);
 	HANDLE hFind = FindFirstFile((LPCWSTR)"*", &findFileData);
 	if(hFind  == INVALID_HANDLE_VALUE) {
 	if(hFind  == INVALID_HANDLE_VALUE) {
 		SetCurrentDirectory(curDir);
 		SetCurrentDirectory(curDir);
@@ -323,6 +340,8 @@ vector<OSFileEntry> OSBasics::parseFolder(const String& pathString, bool showHid
 
 
 void OSBasics::removeItem(const String& pathString) {
 void OSBasics::removeItem(const String& pathString) {
 #ifdef _WINDOWS
 #ifdef _WINDOWS
+	 String _tmp = pathString.replace("/", "\\");
+	 DeleteFile(_tmp.getWDataWithEncoding(String::ENCODING_UTF8));
 #else
 #else
 	remove(pathString.c_str());
 	remove(pathString.c_str());
 #endif	
 #endif	
@@ -330,6 +349,8 @@ void OSBasics::removeItem(const String& pathString) {
 
 
 void OSBasics::createFolder(const String& pathString) {
 void OSBasics::createFolder(const String& pathString) {
 #ifdef _WINDOWS
 #ifdef _WINDOWS
+	String path = pathString;
+	CreateDirectory(path.getWDataWithEncoding(String::ENCODING_UTF8), NULL);		
 #else
 #else
 	mkdir(pathString.c_str(),  S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
 	mkdir(pathString.c_str(),  S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
 #endif
 #endif
@@ -338,6 +359,10 @@ void OSBasics::createFolder(const String& pathString) {
 bool OSBasics::isFolder(const String& pathString) {
 bool OSBasics::isFolder(const String& pathString) {
 	bool retVal = false;
 	bool retVal = false;
 #ifdef _WINDOWS
 #ifdef _WINDOWS
+	String path = pathString;
+	DWORD dwAttrib = GetFileAttributes(path.getWDataWithEncoding(String::ENCODING_UTF8));
+  return (dwAttrib != INVALID_FILE_ATTRIBUTES && 
+         (dwAttrib & FILE_ATTRIBUTE_DIRECTORY));
 #else
 #else
 	DIR           *d;
 	DIR           *d;
 	
 	

+ 47 - 3
Core/Contents/Source/PolyCocoaCore.mm

@@ -215,8 +215,14 @@ void CocoaCore::launchApplicationWithFile(String application, String file) {
 //Handle error
 //Handle error
 }
 }
 
 
-String CocoaCore::executeExternalCommand(String command) {
-	FILE *fp = popen(command.c_str(), "r");
+String CocoaCore::executeExternalCommand(String command,  String args, String inDirectory) {
+
+	String finalCommand = command+" "+args;
+	if(inDirectory != "") {
+		finalCommand = "cd "+inDirectory+" && "+finalCommand;
+	}
+	
+	FILE *fp = popen(finalCommand.c_str(), "r");
 	if(!fp) {
 	if(!fp) {
 		return "Unable to execute command";
 		return "Unable to execute command";
 	}	
 	}	
@@ -354,6 +360,43 @@ void CocoaCore::warpCursor(int x, int y) {
 	lastMouseY = y;
 	lastMouseY = y;
 }
 }
 
 
+
+bool CocoaCore::checkSpecialKeyEvents(PolyKEY key) {
+	
+	if(key == KEY_a && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
+		dispatchEvent(new Event(), Core::EVENT_SELECT_ALL);
+		return true;
+	}
+	
+	if(key == KEY_c && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
+		dispatchEvent(new Event(), Core::EVENT_COPY);
+		return true;
+	}
+	
+	if(key == KEY_x && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
+		dispatchEvent(new Event(), Core::EVENT_CUT);
+		return true;
+	}
+	
+	
+	if(key == KEY_z  && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER)) && (input->getKeyState(KEY_LSHIFT) || input->getKeyState(KEY_RSHIFT))) {
+		dispatchEvent(new Event(), Core::EVENT_REDO);
+		return true;
+	}
+		
+	if(key == KEY_z  && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
+		dispatchEvent(new Event(), Core::EVENT_UNDO);
+		return true;
+	}
+	
+	if(key == KEY_v && (input->getKeyState(KEY_LSUPER) || input->getKeyState(KEY_RSUPER))) {
+		dispatchEvent(new Event(), Core::EVENT_PASTE);
+		return true;
+	}
+	return false;
+}
+
+
 void CocoaCore::checkEvents() {
 void CocoaCore::checkEvents() {
 	lockMutex(eventMutex);
 	lockMutex(eventMutex);
 	CocoaEvent event;
 	CocoaEvent event;
@@ -381,7 +424,8 @@ void CocoaCore::checkEvents() {
 						input->setMouseButtonState(event.mouseButton, false, getTicks());
 						input->setMouseButtonState(event.mouseButton, false, getTicks());
 						break;
 						break;
 					case InputEvent::EVENT_KEYDOWN:
 					case InputEvent::EVENT_KEYDOWN:
-						input->setKeyState(event.keyCode, event.unicodeChar, true, getTicks());
+						if(!checkSpecialKeyEvents(event.keyCode))
+							input->setKeyState(event.keyCode, event.unicodeChar, true, getTicks());
 						break;
 						break;
 					case InputEvent::EVENT_KEYUP:
 					case InputEvent::EVENT_KEYUP:
 						input->setKeyState(event.keyCode, event.unicodeChar, false, getTicks());
 						input->setKeyState(event.keyCode, event.unicodeChar, false, getTicks());

+ 2 - 2
Core/Contents/Source/PolyColor.cpp

@@ -60,11 +60,11 @@ void Color::setColorHexRGB(unsigned int hex) {
 }
 }
 
 
 void Color::setColorHexFromString(String hex) {
 void Color::setColorHexFromString(String hex) {
-	setColorHex(strtol(hex.c_str(), 0, 16));
+	setColorHex(strtoul(hex.c_str(), 0, 16));
 }
 }
 
 
 void Color::setColorHexRGBFromString(String hex) {
 void Color::setColorHexRGBFromString(String hex) {
-	setColorHexRGB(strtol(hex.c_str(), 0, 16));
+	setColorHexRGB(strtoul(hex.c_str(), 0, 16));
 }
 }
 
 
 Color Color::blendColor(Color c2, int mode, Number amount, Color c3) {
 Color Color::blendColor(Color c2, int mode, Number amount, Color c3) {

+ 3 - 1
Core/Contents/Source/PolyFont.cpp

@@ -50,7 +50,9 @@ Font::Font(const String& fileName) {
 			valid = false;
 			valid = false;
 		}
 		}
 	
 	
-		FT_Select_Charmap(ftFace, FT_ENCODING_UNICODE);	
+		if(FT_Select_Charmap(ftFace, ft_encoding_unicode) != 0) {
+			printf("Warning font does not support unicode (%s)\n", fileName.c_str());
+		}
 		loaded = true;
 		loaded = true;
 	} else {
 	} else {
 		Logger::log("Invalid font file specified (%s)\n", fileName.c_str());	
 		Logger::log("Invalid font file specified (%s)\n", fileName.c_str());	

+ 10 - 12
Core/Contents/Source/PolyGLRenderer.cpp

@@ -506,20 +506,18 @@ void OpenGLRenderer::setOrthoMode(Number xSize, Number ySize, bool centered) {
 		ySize = yRes;
 		ySize = yRes;
 		
 		
 	setBlendingMode(BLEND_MODE_NORMAL);
 	setBlendingMode(BLEND_MODE_NORMAL);
-	if(!orthoMode) {
-		glDisable(GL_LIGHTING);
-		glMatrixMode(GL_PROJECTION);
-		glDisable(GL_CULL_FACE);
-		glPushMatrix();
-		glLoadIdentity();
+	glDisable(GL_LIGHTING);
+	glMatrixMode(GL_PROJECTION);
+	glDisable(GL_CULL_FACE);
+	glPushMatrix();
+	glLoadIdentity();
 		
 		
-		if(centered) {
-			glOrtho(-xSize*0.5,xSize*0.5,ySize*0.5,-ySize*0.5,-1.0f,1.0f);		
-		} else {
-			glOrtho(0.0f,xSize,ySize,0,-1.0f,1.0f);
-		}
-		orthoMode = true;
+	if(centered) {
+		glOrtho(-xSize*0.5,xSize*0.5,ySize*0.5,-ySize*0.5,-1.0f,1.0f);		
+	} else {
+		glOrtho(0.0f,xSize,ySize,0,-1.0f,1.0f);
 	}
 	}
+	orthoMode = true;
 	glMatrixMode(GL_MODELVIEW);	
 	glMatrixMode(GL_MODELVIEW);	
 	glLoadIdentity();
 	glLoadIdentity();
 }
 }

+ 6 - 4
Core/Contents/Source/PolyLabel.cpp

@@ -211,8 +211,10 @@ Color Label::getColorForIndex(unsigned int index) {
 
 
 void Label::precacheGlyphs(String text, GlyphData *glyphData) {
 void Label::precacheGlyphs(String text, GlyphData *glyphData) {
 	glyphData->clearData();
 	glyphData->clearData();
+	
+	std::wstring wstr = std::wstring(text.getWDataWithEncoding(String::ENCODING_UTF8));
 		
 		
-	int num_chars = text.length();
+	int num_chars = wstr.length();
 		
 		
 		
 		
 	glyphData->glyphs = (FT_Glyph*) malloc(sizeof(FT_Glyph) * num_chars);
 	glyphData->glyphs = (FT_Glyph*) malloc(sizeof(FT_Glyph) * num_chars);
@@ -238,11 +240,11 @@ void Label::precacheGlyphs(String text, GlyphData *glyphData) {
 	
 	
 	int advanceMultiplier;
 	int advanceMultiplier;
 	for(int n = 0; n < num_chars; n++ ) {
 	for(int n = 0; n < num_chars; n++ ) {
-		if(text[n] == '\t') {
+		if(wstr[n] == '\t') {
 			glyph_index = FT_Get_Char_Index(face, ' ');		
 			glyph_index = FT_Get_Char_Index(face, ' ');		
 			advanceMultiplier = 4;			
 			advanceMultiplier = 4;			
 		} else {
 		} else {
-			glyph_index = FT_Get_Char_Index(face, (FT_ULong)text[n]);		
+			glyph_index = FT_Get_Char_Index(face, (FT_ULong)wstr[n]);
 			advanceMultiplier = 1;
 			advanceMultiplier = 1;
 		}
 		}
 
 
@@ -275,7 +277,7 @@ void Label::precacheGlyphs(String text, GlyphData *glyphData) {
 			continue;
 			continue;
 		}
 		}
 		
 		
-		if(n == num_chars-1 && (text[n] == ' ' || text[n] == '\t')) {
+		if(n == num_chars-1 && (wstr[n] == ' ' || wstr[n] == '\t')) {
 			glyphData->trailingAdvance = (slot->advance.x >> 6) * advanceMultiplier;
 			glyphData->trailingAdvance = (slot->advance.x >> 6) * advanceMultiplier;
 		}
 		}
 
 

+ 156 - 16
Core/Contents/Source/PolySDLCore.cpp

@@ -34,6 +34,12 @@
 #include <SDL/SDL.h>
 #include <SDL/SDL.h>
 #include <iostream>
 #include <iostream>
 
 
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <pwd.h>
+
 using namespace Polycode;
 using namespace Polycode;
 using std::vector;
 using std::vector;
 
 
@@ -51,9 +57,23 @@ void Core::getScreenInfo(int *width, int *height, int *hz) {
 
 
 SDLCore::SDLCore(PolycodeView *view, int _xRes, int _yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel, int frameRate, int monitorIndex) : Core(_xRes, _yRes, fullScreen, vSync, aaLevel, anisotropyLevel, frameRate, monitorIndex) {
 SDLCore::SDLCore(PolycodeView *view, int _xRes, int _yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel, int frameRate, int monitorIndex) : Core(_xRes, _yRes, fullScreen, vSync, aaLevel, anisotropyLevel, frameRate, monitorIndex) {
 
 
+	this->resizableWindow = view->resizable;
+
+	char *buffer = getcwd(NULL, 0);
+	defaultWorkingDirectory = String(buffer);
+	free(buffer);
+
+	struct passwd *pw = getpwuid(getuid());
+	const char *homedir = pw->pw_dir;
+	userHomeDirectory = String(homedir);
+
 	String *windowTitle = (String*)view->windowData;
 	String *windowTitle = (String*)view->windowData;
 
 
-	putenv("SDL_VIDEO_CENTERED=1");
+	if(resizableWindow) {
+		unsetenv("SDL_VIDEO_CENTERED");
+	} else {
+		setenv("SDL_VIDEO_CENTERED", "1", 1);
+	}
 
 
 	if(SDL_Init(SDL_INIT_VIDEO) < 0) {
 	if(SDL_Init(SDL_INIT_VIDEO) < 0) {
 	}
 	}
@@ -95,16 +115,20 @@ void SDLCore::setVideoMode(int xRes, int yRes, bool fullScreen, bool vSync, int
 	
 	
 	SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
 	SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, 0);
 	
 	
+	flags = SDL_OPENGL;
+
 	if(fullScreen) {
 	if(fullScreen) {
-		if( SDL_SetVideoMode(xRes, yRes, 0, SDL_OPENGL|SDL_FULLSCREEN) == NULL ) {
-		}	
-	} else {
-		if( SDL_SetVideoMode(xRes, yRes, 0, SDL_OPENGL) == NULL ) {
-		}
+		flags |= SDL_FULLSCREEN;
+	}
+
+	if(resizableWindow) {
+		flags |= SDL_RESIZABLE;
 	}
 	}
+	SDL_SetVideoMode(xRes, yRes, 0, flags);
 	
 	
 	renderer->Resize(xRes, yRes);
 	renderer->Resize(xRes, yRes);
-	CoreServices::getInstance()->getMaterialManager()->reloadProgramsAndTextures();
+	//CoreServices::getInstance()->getMaterialManager()->reloadProgramsAndTextures();
+	dispatchEvent(new Event(), EVENT_CORE_RESIZE);	
 }
 }
 
 
 vector<Polycode::Rectangle> SDLCore::getVideoModes() {
 vector<Polycode::Rectangle> SDLCore::getVideoModes() {
@@ -127,10 +151,38 @@ SDLCore::~SDLCore() {
 }
 }
 
 
 void SDLCore::openURL(String url) {
 void SDLCore::openURL(String url) {
+    int childExitStatus;
+    pid_t pid = fork();
+    if (pid == 0) {
+	execl("/usr/bin/xdg-open", "/usr/bin/xdg-open", url.c_str(), (char *)0);
+    } else {
+        pid_t ws = waitpid( pid, &childExitStatus, WNOHANG);
+    }
 }
 }
 
 
-String SDLCore::executeExternalCommand(String command) {
-	
+String SDLCore::executeExternalCommand(String command, String args, String inDirectory) {
+	String finalCommand = command + " " + args;
+
+	if(inDirectory != "") {
+		finalCommand = "cd " + inDirectory + " && " + finalCommand;
+	}
+
+	FILE *fp = popen(finalCommand.c_str(), "r");
+	if(!fp) {
+		return "Unable to execute command";
+	}	
+
+	int fd = fileno(fp);
+
+	char path[2048];
+	String retString;
+
+	while (fgets(path, sizeof(path), fp) != NULL) {
+		retString = retString + String(path);
+	}
+
+	pclose(fp);
+	return retString;
 }
 }
 
 
 int SDLThreadFunc(void *data) {
 int SDLThreadFunc(void *data) {
@@ -157,7 +209,42 @@ void SDLCore::enableMouse(bool newval) {
 	}
 	}
 	Core::enableMouse(newval);
 	Core::enableMouse(newval);
 }
 }
+
+bool SDLCore::checkSpecialKeyEvents(PolyKEY key) {
 	
 	
+	if(key == KEY_a && (input->getKeyState(KEY_LCTRL) || input->getKeyState(KEY_RCTRL))) {
+		dispatchEvent(new Event(), Core::EVENT_SELECT_ALL);
+		return true;
+	}
+	
+	if(key == KEY_c && (input->getKeyState(KEY_LCTRL) || input->getKeyState(KEY_RCTRL))) {
+		dispatchEvent(new Event(), Core::EVENT_COPY);
+		return true;
+	}
+	
+	if(key == KEY_x && (input->getKeyState(KEY_LCTRL) || input->getKeyState(KEY_RCTRL))) {
+		dispatchEvent(new Event(), Core::EVENT_CUT);
+		return true;
+	}
+	
+	
+	if(key == KEY_z  && (input->getKeyState(KEY_LCTRL) || input->getKeyState(KEY_RCTRL)) && (input->getKeyState(KEY_LSHIFT) || input->getKeyState(KEY_RSHIFT))) {
+		dispatchEvent(new Event(), Core::EVENT_REDO);
+		return true;
+	}
+		
+	if(key == KEY_z  && (input->getKeyState(KEY_LCTRL) || input->getKeyState(KEY_RCTRL))) {
+		dispatchEvent(new Event(), Core::EVENT_UNDO);
+		return true;
+	}
+	
+	if(key == KEY_v && (input->getKeyState(KEY_LCTRL) || input->getKeyState(KEY_RCTRL))) {
+		dispatchEvent(new Event(), Core::EVENT_PASTE);
+		return true;
+	}
+	return false;
+}
+
 bool SDLCore::Update() {
 bool SDLCore::Update() {
 	if(!running)
 	if(!running)
 		return false;
 		return false;
@@ -173,11 +260,25 @@ bool SDLCore::Update() {
 				case SDL_QUIT:
 				case SDL_QUIT:
 					running = false;
 					running = false;
 				break;
 				break;
+				case SDL_VIDEORESIZE:
+	if(resizableWindow) {
+		unsetenv("SDL_VIDEO_CENTERED");
+	} else {
+		setenv("SDL_VIDEO_CENTERED", "1", 1);
+	}
+					this->xRes = event.resize.w;
+					this->yRes = event.resize.h;
+					SDL_SetVideoMode(xRes, yRes, 0, flags);
+					renderer->Resize(xRes, yRes);	
+					dispatchEvent(new Event(), EVENT_CORE_RESIZE);	
+				break;
 				case SDL_JOYBUTTONDOWN:
 				case SDL_JOYBUTTONDOWN:
 //					input->setKeyState((PolyKEY)(event.key.keysym.sym), true);
 //					input->setKeyState((PolyKEY)(event.key.keysym.sym), true);
 				break;
 				break;
 				case SDL_KEYDOWN:
 				case SDL_KEYDOWN:
-					input->setKeyState((PolyKEY)(event.key.keysym.sym), (char)event.key.keysym.unicode, true, getTicks());
+					if(!checkSpecialKeyEvents((PolyKEY)(event.key.keysym.sym))) {
+						input->setKeyState((PolyKEY)(event.key.keysym.sym), (char)event.key.keysym.unicode, true, getTicks());
+					}
 				break;
 				break;
 				case SDL_KEYUP:
 				case SDL_KEYUP:
 					input->setKeyState((PolyKEY)(event.key.keysym.sym), (char)event.key.keysym.unicode, false, getTicks());
 					input->setKeyState((PolyKEY)(event.key.keysym.sym), (char)event.key.keysym.unicode, false, getTicks());
@@ -188,13 +289,33 @@ bool SDLCore::Update() {
 					} else if(event.button.button == SDL_BUTTON_WHEELDOWN) {
 					} else if(event.button.button == SDL_BUTTON_WHEELDOWN) {
 						input->mouseWheelDown(getTicks());
 						input->mouseWheelDown(getTicks());
 					} else {
 					} else {
-						input->setMouseButtonState(CoreInput::MOUSE_BUTTON1, true, getTicks());
+						switch(event.button.button) {
+							case SDL_BUTTON_LEFT:
+								input->setMouseButtonState(CoreInput::MOUSE_BUTTON1, true, getTicks());
+							break;
+							case SDL_BUTTON_RIGHT:
+								input->setMouseButtonState(CoreInput::MOUSE_BUTTON2, true, getTicks());
+							break;
+							case SDL_BUTTON_MIDDLE:
+								input->setMouseButtonState(CoreInput::MOUSE_BUTTON3, true, getTicks());
+							break;
+						}
 					}
 					}
 				break;
 				break;
 				case SDL_MOUSEBUTTONUP:
 				case SDL_MOUSEBUTTONUP:
 					if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) {						
 					if(event.button.button == SDL_BUTTON_WHEELUP || event.button.button == SDL_BUTTON_WHEELDOWN) {						
 					} else {
 					} else {
-						input->setMouseButtonState(CoreInput::MOUSE_BUTTON1, false, getTicks());
+						switch(event.button.button) {
+							case SDL_BUTTON_LEFT:
+								input->setMouseButtonState(CoreInput::MOUSE_BUTTON1, false, getTicks());
+							break;
+							case SDL_BUTTON_RIGHT:
+								input->setMouseButtonState(CoreInput::MOUSE_BUTTON2, false, getTicks());
+							break;
+							case SDL_BUTTON_MIDDLE:
+								input->setMouseButtonState(CoreInput::MOUSE_BUTTON3, false, getTicks());
+							break;
+						}
 					}
 					}
 				break;
 				break;
 				case SDL_MOUSEMOTION:
 				case SDL_MOUSEMOTION:
@@ -239,22 +360,41 @@ void SDLCore::copyStringToClipboard(const String& str) {
 }
 }
 
 
 String SDLCore::getClipboardString() {
 String SDLCore::getClipboardString() {
-
+	return "";
 }
 }
 
 
 void SDLCore::createFolder(const String& folderPath) {
 void SDLCore::createFolder(const String& folderPath) {
-
+	mkdir(folderPath.c_str(), 0700);
 }
 }
 
 
 void SDLCore::copyDiskItem(const String& itemPath, const String& destItemPath) {
 void SDLCore::copyDiskItem(const String& itemPath, const String& destItemPath) {
-
+    int childExitStatus;
+    pid_t pid = fork();
+    if (pid == 0) {
+        execl("/bin/cp", "/bin/cp", "-R", itemPath.c_str(), destItemPath.c_str(), (char *)0);
+    } else {
+        pid_t ws = waitpid( pid, &childExitStatus, 0);
+    }
 }
 }
 
 
 void SDLCore::moveDiskItem(const String& itemPath, const String& destItemPath) {
 void SDLCore::moveDiskItem(const String& itemPath, const String& destItemPath) {
-
+    int childExitStatus;
+    pid_t pid = fork();
+    if (pid == 0) {
+        execl("/bin/mv", "/bin/mv", itemPath.c_str(), destItemPath.c_str(), (char *)0);
+    } else {
+        pid_t ws = waitpid( pid, &childExitStatus, 0);
+    }
 }
 }
 
 
 void SDLCore::removeDiskItem(const String& itemPath) {
 void SDLCore::removeDiskItem(const String& itemPath) {
+    int childExitStatus;
+    pid_t pid = fork();
+    if (pid == 0) {
+        execl("/bin/rm", "/bin/rm", "-rf", itemPath.c_str(), (char *)0);
+    } else {
+        pid_t ws = waitpid( pid, &childExitStatus, 0);
+    }
 }
 }
 
 
 String SDLCore::openFolderPicker() {
 String SDLCore::openFolderPicker() {

+ 5 - 2
Core/Contents/Source/PolySocket.cpp

@@ -22,7 +22,10 @@ THE SOFTWARE.
 
 
 #include "PolySocket.h"
 #include "PolySocket.h"
 #include "PolyLogger.h"
 #include "PolyLogger.h"
-#include <unistd.h>
+
+#ifndef _WINDOWS
+	#include <unistd.h>
+#endif
 
 
 using namespace Polycode;
 using namespace Polycode;
 using std::vector;
 using std::vector;
@@ -128,7 +131,7 @@ int Socket::receiveData() {
 	
 	
 	if ( received_bytes <= 0 ) {
 	if ( received_bytes <= 0 ) {
 		delete event;
 		delete event;
-		return received_bytes;
+		return received_bytes; 
 	}
 	}
 	
 	
 	event->dataSize = received_bytes;
 	event->dataSize = received_bytes;

+ 3 - 0
Core/Contents/Source/PolyString.cpp

@@ -128,6 +128,9 @@ vector<String> String::split(const String &delim) const {
 	vector<String> tokens;
 	vector<String> tokens;
 	bool trimEmpty = false;
 	bool trimEmpty = false;
 	
 	
+	if(contents == "")
+		return tokens;
+
 		std::string::size_type pos, lastPos = 0;
 		std::string::size_type pos, lastPos = 0;
 		while(true)
 		while(true)
 		{
 		{

+ 3 - 1
Core/Contents/Source/PolyTween.cpp

@@ -67,7 +67,9 @@ void Tween::setSpeed(Number speed) {
 Tween::~Tween() {
 Tween::~Tween() {
 	tweenTimer->removeEventListener(this, 0);
 	tweenTimer->removeEventListener(this, 0);
 	delete tweenTimer;
 	delete tweenTimer;
-	CoreServices::getInstance()->getTweenManager()->removeTween(this);	
+	
+	deleteOnComplete = false; // Prevent loop when we removeTween in next line.
+	CoreServices::getInstance()->getTweenManager()->removeTween(this);
 }
 }
 
 
 bool Tween::isComplete() {
 bool Tween::isComplete() {

+ 316 - 6
Core/Contents/Source/PolyWinCore.cpp

@@ -30,6 +30,14 @@
 #include "PolyLogger.h"
 #include "PolyLogger.h"
 #include "PolyThreaded.h"
 #include "PolyThreaded.h"
 
 
+#include <direct.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <Shlobj.h>
+#include <Shellapi.h>
+#include <Commdlg.h>
+
 #include <GL/gl.h>
 #include <GL/gl.h>
 #include <GL/glext.h>
 #include <GL/glext.h>
 #ifndef _MINGW
 #ifndef _MINGW
@@ -76,6 +84,16 @@ Win32Core::Win32Core(PolycodeViewBase *view, int _xRes, int _yRes, bool fullScre
 	hWnd = *((HWND*)view->windowData);
 	hWnd = *((HWND*)view->windowData);
 	core = this;
 	core = this;
 
 
+	char *buffer = _getcwd(NULL, 0);
+	defaultWorkingDirectory = String(buffer);
+	free(buffer);
+
+	WCHAR path[MAX_PATH];
+	if (SUCCEEDED(SHGetFolderPathW(NULL, CSIDL_PROFILE, NULL, 0, path))) {
+		userHomeDirectory = String(path);
+	}
+
+
 	initKeymap();
 	initKeymap();
 	initGamepad();
 	initGamepad();
 	initTouch();
 	initTouch();
@@ -83,6 +101,8 @@ Win32Core::Win32Core(PolycodeViewBase *view, int _xRes, int _yRes, bool fullScre
 	hDC = NULL;
 	hDC = NULL;
 	hRC = NULL;
 	hRC = NULL;
 	PixelFormat = 0;
 	PixelFormat = 0;
+
+	this->aaLevel = 999;
 	
 	
 	lastMouseX = -1;
 	lastMouseX = -1;
 	lastMouseY = -1;
 	lastMouseY = -1;
@@ -162,6 +182,12 @@ void Win32Core::setVSync(bool vSyncVal) {
 
 
 void Win32Core::setVideoMode(int xRes, int yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel) {
 void Win32Core::setVideoMode(int xRes, int yRes, bool fullScreen, bool vSync, int aaLevel, int anisotropyLevel) {
 
 
+	bool resetContext = false;
+
+	if(aaLevel != this->aaLevel) {
+		resetContext = true;
+	}
+
 	this->xRes = xRes;
 	this->xRes = xRes;
 	this->yRes = yRes;
 	this->yRes = yRes;
 	this->fullScreen = fullScreen;
 	this->fullScreen = fullScreen;
@@ -183,9 +209,6 @@ void Win32Core::setVideoMode(int xRes, int yRes, bool fullScreen, bool vSync, in
 
 
 		SetWindowPos(hWnd, NULL, 0, 0, xRes, yRes, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
 		SetWindowPos(hWnd, NULL, 0, 0, xRes, yRes, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
 	} else {
 	} else {
-		if(isFullScreen) {
-			ChangeDisplaySettings(NULL,0);		
-		}
 	//	SetWindowLong(hWnd, GWL_STYLE, WS_OVERLAPPED|WS_SYSMENU);
 	//	SetWindowLong(hWnd, GWL_STYLE, WS_OVERLAPPED|WS_SYSMENU);
 	//	ShowWindow(hWnd, SW_SHOW);
 	//	ShowWindow(hWnd, SW_SHOW);
 		ClientResize(hWnd, xRes, yRes);
 		ClientResize(hWnd, xRes, yRes);
@@ -194,16 +217,20 @@ void Win32Core::setVideoMode(int xRes, int yRes, bool fullScreen, bool vSync, in
 
 
 	isFullScreen = fullScreen;
 	isFullScreen = fullScreen;
 
 
-	initContext(false, 0);
+	if(resetContext) {
+		initContext(false, 0);
 
 
-	if(aaLevel > 0) {
-		initMultisample(aaLevel);
+		if(aaLevel > 0) {
+			initMultisample(aaLevel);
+		}
 	}
 	}
 
 
 	setVSync(vSync);
 	setVSync(vSync);
 
 
 	renderer->setAnisotropyAmount(anisotropyLevel);
 	renderer->setAnisotropyAmount(anisotropyLevel);
 	renderer->Resize(xRes, yRes);
 	renderer->Resize(xRes, yRes);
+
+	core->dispatchEvent(new Event(), Core::EVENT_CORE_RESIZE);
 }
 }
 
 
 void Win32Core::initContext(bool usePixelFormat, unsigned int pixelFormat) {
 void Win32Core::initContext(bool usePixelFormat, unsigned int pixelFormat) {
@@ -439,6 +466,13 @@ void Win32Core::initKeymap() {
 
 
 }
 }
 
 
+void Win32Core::handleViewResize(int width, int height) {
+	this->xRes = width;
+	this->yRes = height;
+	renderer->Resize(width, height);
+	dispatchEvent(new Event(), EVENT_CORE_RESIZE);
+}
+
 PolyKEY Win32Core::mapKey(LPARAM lParam, WPARAM wParam) {
 PolyKEY Win32Core::mapKey(LPARAM lParam, WPARAM wParam) {
 		switch (wParam) {
 		switch (wParam) {
 				case VK_CONTROL:
 				case VK_CONTROL:
@@ -917,3 +951,279 @@ std::vector<Polycode::Rectangle> Win32Core::getVideoModes() {
 	return retVector;
 	return retVector;
 }
 }
 	
 	
+
+String Win32Core::executeExternalCommand(String command,  String args, String inDirectory) {
+	String execInDirectory = inDirectory;
+	if(inDirectory == "") {
+		execInDirectory = defaultWorkingDirectory;
+	}
+
+	SHELLEXECUTEINFO lpExecInfo;
+      lpExecInfo.cbSize  = sizeof(SHELLEXECUTEINFO);
+      lpExecInfo.lpFile = command.getWDataWithEncoding(String::ENCODING_UTF8);
+	lpExecInfo.fMask=SEE_MASK_DOENVSUBST|SEE_MASK_NOCLOSEPROCESS ;     
+      lpExecInfo.hwnd = NULL;  
+      lpExecInfo.lpVerb = L"open"; // to open  program
+      lpExecInfo.lpParameters =  args.getWDataWithEncoding(String::ENCODING_UTF8); //  file name as an argument
+      lpExecInfo.lpDirectory = execInDirectory.getWDataWithEncoding(String::ENCODING_UTF8);   
+      lpExecInfo.nShow = SW_SHOW ;  // show command prompt with normal window size 
+      lpExecInfo.hInstApp = (HINSTANCE) SE_ERR_DDEFAIL ;   //WINSHELLAPI BOOL WINAPI result;
+      ShellExecuteEx(&lpExecInfo);
+    
+ 
+      //wait until a file is finished printing
+      if(lpExecInfo.hProcess !=NULL)
+      {
+        ::WaitForSingleObject(lpExecInfo.hProcess, INFINITE);
+        ::CloseHandle(lpExecInfo.hProcess);
+      }
+
+	  return "";
+}
+
+String Win32Core::openFolderPicker()  {
+	TCHAR szDir[2048];
+	BROWSEINFO bInfo;
+	bInfo.hwndOwner = hWnd;
+	bInfo.pidlRoot = NULL; 
+	bInfo.pszDisplayName = szDir;
+	bInfo.lpszTitle = L"Choose a folder";
+	bInfo.ulFlags = BIF_USENEWUI;
+	bInfo.lpfn = NULL;
+	bInfo.lParam = 0;
+	bInfo.iImage = -1;
+
+	LPITEMIDLIST lpItem = SHBrowseForFolder( &bInfo);
+	if( lpItem != NULL ) {
+		SHGetPathFromIDList(lpItem, szDir );
+		return String(szDir);
+	}
+	return "";
+}
+
+std::vector<String> Win32Core::openFilePicker(std::vector<CoreFileExtension> extensions, bool allowMultiple) {
+	OPENFILENAME ofn;
+	wchar_t fBuffer[2048];
+
+	wchar_t filterString[2048];
+
+	ZeroMemory(&ofn, sizeof(OPENFILENAME));
+
+	ofn.lStructSize = sizeof ( ofn );
+	ofn.hwndOwner = hWnd ;
+	ofn.lpstrFile = fBuffer;
+	ofn.lpstrFile[0] = '\0';
+	ofn.nMaxFile = sizeof( fBuffer );
+
+	if(extensions.size() > 0) {
+		int offset = 0;
+		for(int i =0; i < extensions.size(); i++) {
+		//	filterString += extensions[i].description+"\0*."+extensions[i].extension+"\0";
+			memcpy(filterString+offset, extensions[i].description.getWDataWithEncoding(String::ENCODING_UTF8), extensions[i].description.length() * sizeof(wchar_t));
+			offset += extensions[i].description.length();
+			filterString[offset] = '\0';
+			offset++;
+			filterString[offset] = '*';
+			offset++;
+			filterString[offset] = '.';
+			offset++;
+			memcpy(filterString+offset, extensions[i].extension.getWDataWithEncoding(String::ENCODING_UTF8), extensions[i].extension.length() * sizeof(wchar_t));
+			offset += extensions[i].extension.length();
+			filterString[offset] = '\0';
+			offset++;
+		}
+		filterString[offset] = '\0';
+		ofn.lpstrFilter = filterString;
+
+		ofn.nFilterIndex = 1;
+	} else {
+		ofn.lpstrFilter = NULL;
+	}
+
+	ofn.lpstrFileTitle = NULL;
+	ofn.nMaxFileTitle = 0;
+	ofn.lpstrInitialDir=NULL;
+
+	if(allowMultiple) {
+		ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_EXPLORER;
+	} else {
+		ofn.Flags = OFN_PATHMUSTEXIST|OFN_FILEMUSTEXIST|OFN_ALLOWMULTISELECT|OFN_EXPLORER;
+	}
+
+	std::vector<String> retVec;
+
+	if(GetOpenFileName(&ofn)) {
+		if(allowMultiple) {
+
+		} else {
+			retVec.push_back(String(fBuffer));
+		}
+	}
+
+	SetCurrentDirectory(defaultWorkingDirectory.getWDataWithEncoding(String::ENCODING_UTF8));
+
+
+	for(int i=0; i < retVec.size(); i++) {
+		retVec[i] = retVec[i].replace("\\", "/");
+	}
+	return retVec;
+}
+
+void Win32Core::createFolder(const String& folderPath) {
+	String path = folderPath;
+	CreateDirectory(path.getWDataWithEncoding(String::ENCODING_UTF8), NULL);		
+}
+
+void Win32Core::openURL(String url) {
+	ShellExecute(NULL, L"open", url.getWDataWithEncoding(String::ENCODING_UTF8), NULL, NULL, SW_SHOWNORMAL);
+}
+
+String error_to_string(const DWORD a_error_code)
+{
+    // Get the last windows error message.
+    wchar_t msg_buf[1025] = { 0 };
+
+    // Get the error message for our os code.
+    if (FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM, 
+                      0,
+                      a_error_code,
+                      0,
+                      msg_buf,
+                      sizeof(msg_buf) - 1,
+                      0))
+    {
+     
+
+
+        return String(msg_buf);
+    }
+
+    return String("Failed to get error message");
+}
+						
+void Win32Core::copyDiskItem(const String& itemPath, const String& destItemPath) {
+	SHFILEOPSTRUCT op;
+	ZeroMemory(&op, sizeof(SHFILEOPSTRUCT));
+
+	String fromPath = itemPath.replace("/", "\\");
+	String toPath =destItemPath.replace("/", "\\");
+
+	fromPath.append('\0');
+	toPath.append('\0');
+
+	printf("Copying %s to %s\n", fromPath.c_str(), toPath.c_str());
+
+	op.hwnd = hWnd;
+	op.wFunc = FO_COPY;
+	op.pFrom = fromPath.getWDataWithEncoding(String::ENCODING_UTF8);
+	op.pTo = toPath.getWDataWithEncoding(String::ENCODING_UTF8);
+	op.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;
+
+	int ret = SHFileOperation(&op);
+	if(ret != 0) {
+		String err = error_to_string(ret);
+		printf("COPY ERROR: %s\n", err.c_str());
+	}
+}
+
+void Win32Core::moveDiskItem(const String& itemPath, const String& destItemPath) {
+	SHFILEOPSTRUCT op;
+	ZeroMemory(&op, sizeof(SHFILEOPSTRUCT));
+
+	String fromPath = itemPath.replace("/", "\\");
+	String toPath =destItemPath.replace("/", "\\");
+
+	fromPath.append('\0');
+	toPath.append('\0');
+
+	printf("Moving %s to %s\n", fromPath.c_str(), toPath.c_str());
+
+	op.hwnd = hWnd;
+	op.wFunc = FO_MOVE;
+	op.pFrom = fromPath.getWDataWithEncoding(String::ENCODING_UTF8);
+	op.pTo = toPath.getWDataWithEncoding(String::ENCODING_UTF8);
+	op.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;
+
+	int ret = SHFileOperation(&op);
+	if(ret != 0) {
+		String err = error_to_string(ret);
+		printf("MOVE ERROR: %s\n", err.c_str());
+	}
+}
+
+void Win32Core::removeDiskItem(const String& itemPath) {
+	SHFILEOPSTRUCT op;
+	ZeroMemory(&op, sizeof(SHFILEOPSTRUCT));
+
+	String fromPath = itemPath.replace("/", "\\");
+	fromPath.append('\0');
+
+	op.hwnd = hWnd;
+	op.wFunc = FO_DELETE;
+	op.pFrom = fromPath.getWDataWithEncoding(String::ENCODING_UTF8);
+	op.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_NOERRORUI | FOF_NOCONFIRMMKDIR;
+
+	int ret = SHFileOperation(&op);
+	if(ret != 0) {
+		String err = error_to_string(ret);
+		printf("COPY ERROR: %s\n", err.c_str());
+	}
+}
+
+void Win32Core::setCursor(int cursorType) {
+
+	HCURSOR cursor;
+	switch(cursorType) {
+		case CURSOR_ARROW:
+			cursor = LoadCursor(NULL, IDC_ARROW);
+		break;
+		case CURSOR_TEXT:
+			cursor = LoadCursor(NULL, IDC_IBEAM);
+		break;
+		case CURSOR_POINTER:
+			cursor = LoadCursor(NULL, IDC_HAND);
+		break;
+		case CURSOR_CROSSHAIR:
+			cursor = LoadCursor(NULL, IDC_CROSS);
+		break;
+		case CURSOR_RESIZE_LEFT_RIGHT:
+			cursor = LoadCursor(NULL, IDC_SIZEWE);
+		break;
+		case CURSOR_RESIZE_UP_DOWN:
+			cursor = LoadCursor(NULL, IDC_SIZENS);
+		break;
+		case CURSOR_OPEN_HAND:
+			cursor = LoadCursor(NULL, IDC_SIZEALL);
+		break;
+		default:
+			cursor = LoadCursor(NULL, IDC_ARROW);
+		break;
+	}
+
+	SetCursor(cursor);
+	SetClassLong(hWnd, GCL_HCURSOR, (DWORD)cursor);
+}
+
+void  Win32Core::copyStringToClipboard(const String& str) {
+	String _tmp = str;
+	std::wstring wstr = _tmp.getWDataWithEncoding(String::ENCODING_UTF8);
+
+	const size_t len = ((wstr.size()+1) * sizeof(wchar_t));
+	HGLOBAL hMem =  GlobalAlloc(GMEM_MOVEABLE, len);
+	memcpy(GlobalLock(hMem), (char*)wstr.c_str(), len);
+	GlobalUnlock(hMem);
+	OpenClipboard(0);
+	EmptyClipboard();
+	SetClipboardData(CF_UNICODETEXT, hMem);
+	CloseClipboard();
+}
+
+String Win32Core::getClipboardString() {
+	OpenClipboard(0);
+	HANDLE clip0 = GetClipboardData(CF_UNICODETEXT); 
+	HANDLE h= GlobalLock(clip0); 
+	wchar_t* c = (wchar_t*) clip0;
+	String retString = String(c);
+	GlobalUnlock(clip0);
+	return retString;
+}

+ 8 - 2
Examples/C++/Build/Windows/PolycodeExamples/2DAudio/2DAudio.vcxproj

@@ -65,8 +65,11 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
     <ClCompile>
@@ -83,8 +86,11 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DParticles/2DParticles.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DParticles\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DParticles\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{3ED74988-CC16-4DBA-A9C9-880D37A79E06}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DParticles</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DParticles;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DParticles;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_Basic/2DPhysics_Basic.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DPhysics_Basic\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DPhysics_Basic\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{B1C29A4C-4964-47CB-BF71-EF79C98EADCF}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DPhysics_Basic</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_Basic;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_Basic;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode2DPhysics_d.lib;Box2D_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode2DPhysics.lib;Box2D.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_CollisionOnly/2DPhysics_CollisionOnly.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DPhysics_CollisionOnly\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DPhysics_CollisionOnly\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{76041E93-F864-478C-862C-717D29A7FF4B}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DPhysics_CollisionOnly</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_CollisionOnly;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_CollisionOnly;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode2DPhysics_d.lib;Box2D_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode2DPhysics.lib;Box2D.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_Contacts/2DPhysics_Contacts.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DPhysics_Contacts\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DPhysics_Contacts\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{541BF89B-EE4F-48DF-8BA0-75A67CED1E9D}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DPhysics_Contacts</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_Contacts;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_Contacts;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode2DPhysics_d.lib;Box2D_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode2DPhysics.lib;Box2D.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_Joints/2DPhysics_Joints.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DPhysics_Joints\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DPhysics_Joints\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{99A450CD-3AAA-49E7-98DD-5C7BD2330824}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DPhysics_Joints</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_Joints;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_Joints;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode2DPhysics_d.lib;Box2D_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode2DPhysics.lib;Box2D.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DPhysics_PointCollision/2DPhysics_PointCollision.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DPhysics_PointCollision\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DPhysics_PointCollision\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{9E6D3E8C-09FE-46F2-B96A-95E8FC6F3C87}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DPhysics_PointCollision</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_PointCollision;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DPhysics_PointCollision;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode2DPhysics_d.lib;Box2D_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode2DPhysics.lib;Box2D.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DShapes/2DShapes.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DShapes\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DShapes\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4ED670DE-75E4-44F7-8C55-34356C5AD4FD}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DShapes</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DShapes;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DShapes;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/2DTransforms/2DTransforms.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\2DTransforms\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\2DTransforms\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{7ABD5439-B7BD-495D-88BE-7EC7469AC681}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My2DTransforms</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DTransforms;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\2DTransforms;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/3DAudio/3DAudio.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\3DAudio\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\3DAudio\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{C9E390FF-1EB2-420A-8C5A-774F0FB4AA98}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My3DAudio</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DAudio;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DAudio;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/3DBasics/3DBasics.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\3DBasics\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\3DBasics\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A7F115F4-D528-46CE-8B87-EB1193E7D774}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My3DBasics</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DBasics;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DBasics;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 10 - 4
Examples/C++/Build/Windows/PolycodeExamples/3DMeshParticles/3DMeshParticles.vcxproj

@@ -18,9 +18,9 @@
     <ClInclude Include="..\..\Contents\3DMeshParticles\HelloPolycodeApp.h" />
     <ClInclude Include="..\..\Contents\3DMeshParticles\HelloPolycodeApp.h" />
   </ItemGroup>
   </ItemGroup>
   <PropertyGroup Label="Globals">
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{2978F8D8-10AA-4335-8FF1-C8499849C182}</ProjectGuid>
+    <ProjectGuid>{96F79A70-00DA-40FE-A46D-54C079C6F657}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <Keyword>Win32Proj</Keyword>
-    <RootNamespace>My2DAudio</RootNamespace>
+    <RootNamespace>My3DMeshParticles</RootNamespace>
   </PropertyGroup>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -65,8 +65,11 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
     <ClCompile>
@@ -83,8 +86,11 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/3DParticles/3DParticles.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\3DParticles\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\3DParticles\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1025BE1C-436A-429F-B3F0-C88C138C0587}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My3DParticles</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DParticles;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DParticles;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 12 - 6
Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Basic/3DPhysics_Basic.vcxproj

@@ -18,9 +18,9 @@
     <ClInclude Include="..\..\Contents\3DPhysics_Basic\HelloPolycodeApp.h" />
     <ClInclude Include="..\..\Contents\3DPhysics_Basic\HelloPolycodeApp.h" />
   </ItemGroup>
   </ItemGroup>
   <PropertyGroup Label="Globals">
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{DC249750-474E-4945-A938-2C93F98B4B92}</ProjectGuid>
+    <ProjectGuid>{11C57E41-73BC-4A4D-9972-EC9E2FA8FB23}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <Keyword>Win32Proj</Keyword>
-    <RootNamespace>My2DAudio</RootNamespace>
+    <RootNamespace>My3DPhysics_Basic</RootNamespace>
   </PropertyGroup>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -46,12 +46,12 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <LinkIncremental>true</LinkIncremental>
     <LinkIncremental>true</LinkIncremental>
-    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Basic;$(IncludePath)</IncludePath>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Basic;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Basic;$(IncludePath)</IncludePath>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Basic;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -65,8 +65,11 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>Polycode3DPhysics_d.lib;LinearMath_d.lib;BulletCollision_d.lib;BulletDynamics_d.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
     <ClCompile>
@@ -83,8 +86,11 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>Polycode3DPhysics.lib;LinearMath.lib;BulletCollision.lib;BulletDynamics.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>Polycode3DPhysics.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Character/3DPhysics_Character.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\3DPhysics_Character\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\3DPhysics_Character\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{34972CA3-BEBD-48DE-8264-539ECAC16F38}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My3DPhysics_Character</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Character;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Character;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode3DPhysics.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_CollisionOnly/3DPhysics_CollisionOnly.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\3DPhysics_CollisionOnly\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\3DPhysics_CollisionOnly\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2C602041-73B0-4DF5-ADD2-637E6222CC1B}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My3DPhysics_CollisionOnly</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_CollisionOnly;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_CollisionOnly;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode3DPhysics.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 12 - 6
Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Contacts/3DPhysics_Contacts.vcxproj

@@ -18,9 +18,9 @@
     <ClInclude Include="..\..\Contents\3DPhysics_Contacts\HelloPolycodeApp.h" />
     <ClInclude Include="..\..\Contents\3DPhysics_Contacts\HelloPolycodeApp.h" />
   </ItemGroup>
   </ItemGroup>
   <PropertyGroup Label="Globals">
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{70C02441-8A71-40E3-B737-C872FFFB0183}</ProjectGuid>
+    <ProjectGuid>{EBC95D30-8B44-4F1C-ABE8-18E3B7E611E4}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <Keyword>Win32Proj</Keyword>
-    <RootNamespace>My2DAudio</RootNamespace>
+    <RootNamespace>My3DPhysics_Contacts</RootNamespace>
   </PropertyGroup>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -46,12 +46,12 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <LinkIncremental>true</LinkIncremental>
     <LinkIncremental>true</LinkIncremental>
-    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Contacts;$(IncludePath)</IncludePath>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Contacts;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Contacts;$(IncludePath)</IncludePath>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Contacts;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -65,8 +65,11 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>Polycode3DPhysics_d.lib;LinearMath_d.lib;BulletCollision_d.lib;BulletDynamics_d.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
     <ClCompile>
@@ -83,8 +86,11 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>Polycode3DPhysics.lib;LinearMath.lib;BulletCollision.lib;BulletDynamics.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>Polycode3DPhysics.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_RayTest/3DPhysics_RayTest.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\3DPhysics_RayTest\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\3DPhysics_RayTest\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{F78CCF0B-77FF-47BB-B13F-5A4750C87BA2}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>My3DPhysics_RayTest</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_RayTest;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_RayTest;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>Polycode3DPhysics.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 12 - 6
Examples/C++/Build/Windows/PolycodeExamples/3DPhysics_Vehicle/3DPhysics_Vehicle.vcxproj

@@ -18,9 +18,9 @@
     <ClInclude Include="..\..\Contents\3DPhysics_Vehicle\HelloPolycodeApp.h" />
     <ClInclude Include="..\..\Contents\3DPhysics_Vehicle\HelloPolycodeApp.h" />
   </ItemGroup>
   </ItemGroup>
   <PropertyGroup Label="Globals">
   <PropertyGroup Label="Globals">
-    <ProjectGuid>{6EB61FF3-51EA-42AF-AC8C-667A5FBF517A}</ProjectGuid>
+    <ProjectGuid>{0CD556D6-A2E6-4140-8A2A-216DA554BE7A}</ProjectGuid>
     <Keyword>Win32Proj</Keyword>
     <Keyword>Win32Proj</Keyword>
-    <RootNamespace>My2DAudio</RootNamespace>
+    <RootNamespace>My3DPhysics_Vehicle</RootNamespace>
   </PropertyGroup>
   </PropertyGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -46,12 +46,12 @@
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Label="UserMacros" />
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <LinkIncremental>true</LinkIncremental>
     <LinkIncremental>true</LinkIncremental>
-    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Vehicle;$(IncludePath)</IncludePath>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Vehicle;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <LinkIncremental>false</LinkIncremental>
     <LinkIncremental>false</LinkIncremental>
-    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Vehicle;$(IncludePath)</IncludePath>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\3DPhysics_Vehicle;$(SolutionDir)..\..\..\Modules\include;$(SolutionDir)..\..\..\Modules\Dependencies\include\bullet;$(IncludePath)</IncludePath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
     <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(SolutionDir)..\..\..\Modules\lib;$(SolutionDir)..\..\..\Modules\Dependencies\lib;$(LibraryPath)</LibraryPath>
   </PropertyGroup>
   </PropertyGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
@@ -65,8 +65,11 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>Polycode3DPhysics_d.lib;BulletDynamics_d.lib;BulletCollision_d.lib;LinearMath_d.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
     <ClCompile>
     <ClCompile>
@@ -83,8 +86,11 @@
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
-      <AdditionalDependencies>Polycode3DPhysics.lib;LinearMath.lib;BulletCollision.lib;BulletDynamics.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>Polycode3DPhysics.lib;BulletDynamics.lib;BulletCollision.lib;LinearMath.lib;winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
     </Link>
     </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/AdvancedLighting/AdvancedLighting.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\AdvancedLighting\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\AdvancedLighting\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{A5A02D60-B0CF-4789-A487-9EAA37D24207}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyAdvancedLighting</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\AdvancedLighting;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\AdvancedLighting;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/BasicImage/BasicImage.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\BasicImage\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\BasicImage\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{487E893C-10C4-4BAE-B373-6C265A97BBB4}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyBasicImage</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\BasicImage;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\BasicImage;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/BasicLighting/BasicLighting.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\BasicLighting\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\BasicLighting\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{167537BC-169E-4C29-AB5C-8AFBDEC1366D}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyBasicLighting</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\BasicLighting;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\BasicLighting;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/BasicText/BasicText.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\BasicText\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\BasicText\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{4788C607-83B0-41FA-904D-C20DD9EFCAB3}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyBasicText</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\BasicText;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\BasicText;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/EventHandling/EventHandling.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\EventHandling\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\EventHandling\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{2476F14D-0137-430F-9CD3-E8A1F224215D}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyEventHandling</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\EventHandling;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\EventHandling;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/KeyboardInput/KeyboardInput.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\KeyboardInput\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\KeyboardInput\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{CCBE9EC0-5C3F-43F4-9EF8-252BE2A589F1}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyKeyboardInput</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\KeyboardInput;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\KeyboardInput;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/MouseInput/MouseInput.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\MouseInput\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\MouseInput\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{603DE77C-9798-4249-A995-33D4F3B609DB}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyMouseInput</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\MouseInput;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\MouseInput;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/Networking_Client/Networking_Client.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\Networking_Client\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\Networking_Client\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{D14D0437-1D06-4021-A7C4-01F2443DE4F6}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyNetworking_Client</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\Networking_Client;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\Networking_Client;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/Networking_Server/Networking_Server.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\Networking_Server\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\Networking_Server\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{52F646EE-C791-43D3-BD83-A9C4CDE64ABF}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyNetworking_Server</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\Networking_Server;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\Networking_Server;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/PlayingSounds/PlayingSounds.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\PlayingSounds\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\PlayingSounds\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E15F77B2-9AEE-49E7-8B8C-D44FD4461FCC}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyPlayingSounds</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\PlayingSounds;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\PlayingSounds;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 1 - 1
Examples/C++/Build/Windows/PolycodeExamples/PolycodeExample.cpp

@@ -7,7 +7,7 @@ using namespace Polycode;
 
 
 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
 int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
 {
 {
-	PolycodeView *view = new PolycodeView(hInstance, nCmdShow, L"Polycode Template");
+	PolycodeView *view = new PolycodeView(hInstance, nCmdShow, L"Polycode Example");
 	HelloPolycodeApp *app = new HelloPolycodeApp(view);
 	HelloPolycodeApp *app = new HelloPolycodeApp(view);
 
 
 	MSG Msg;
 	MSG Msg;

+ 188 - 20
Examples/C++/Build/Windows/PolycodeExamples/PolycodeExamples.sln

@@ -3,13 +3,69 @@ Microsoft Visual Studio Solution File, Format Version 11.00
 # Visual Studio 2010
 # Visual Studio 2010
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DAudio", "2DAudio\2DAudio.vcxproj", "{5586530C-8D6D-4ECE-B560-9566A66E359F}"
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DAudio", "2DAudio\2DAudio.vcxproj", "{5586530C-8D6D-4ECE-B560-9566A66E359F}"
 EndProject
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DMeshParticles", "3DMeshParticles\3DMeshParticles.vcxproj", "{2978F8D8-10AA-4335-8FF1-C8499849C182}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DParticles", "2DParticles\2DParticles.vcxproj", "{3ED74988-CC16-4DBA-A9C9-880D37A79E06}"
 EndProject
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Vehicle", "3DPhysics_Vehicle\3DPhysics_Vehicle.vcxproj", "{6EB61FF3-51EA-42AF-AC8C-667A5FBF517A}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DPhysics_Basic", "2DPhysics_Basic\2DPhysics_Basic.vcxproj", "{B1C29A4C-4964-47CB-BF71-EF79C98EADCF}"
 EndProject
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Basic", "3DPhysics_Basic\3DPhysics_Basic.vcxproj", "{DC249750-474E-4945-A938-2C93F98B4B92}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DPhysics_CollisionOnly", "2DPhysics_CollisionOnly\2DPhysics_CollisionOnly.vcxproj", "{76041E93-F864-478C-862C-717D29A7FF4B}"
 EndProject
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Contacts", "3DPhysics_Contacts\3DPhysics_Contacts.vcxproj", "{70C02441-8A71-40E3-B737-C872FFFB0183}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DPhysics_Contacts", "2DPhysics_Contacts\2DPhysics_Contacts.vcxproj", "{541BF89B-EE4F-48DF-8BA0-75A67CED1E9D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DPhysics_Joints", "2DPhysics_Joints\2DPhysics_Joints.vcxproj", "{99A450CD-3AAA-49E7-98DD-5C7BD2330824}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DPhysics_PointCollision", "2DPhysics_PointCollision\2DPhysics_PointCollision.vcxproj", "{9E6D3E8C-09FE-46F2-B96A-95E8FC6F3C87}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DShapes", "2DShapes\2DShapes.vcxproj", "{4ED670DE-75E4-44F7-8C55-34356C5AD4FD}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2DTransforms", "2DTransforms\2DTransforms.vcxproj", "{7ABD5439-B7BD-495D-88BE-7EC7469AC681}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DAudio", "3DAudio\3DAudio.vcxproj", "{C9E390FF-1EB2-420A-8C5A-774F0FB4AA98}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Basic", "3DPhysics_Basic\3DPhysics_Basic.vcxproj", "{11C57E41-73BC-4A4D-9972-EC9E2FA8FB23}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Character", "3DPhysics_Character\3DPhysics_Character.vcxproj", "{34972CA3-BEBD-48DE-8264-539ECAC16F38}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_CollisionOnly", "3DPhysics_CollisionOnly\3DPhysics_CollisionOnly.vcxproj", "{2C602041-73B0-4DF5-ADD2-637E6222CC1B}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Contacts", "3DPhysics_Contacts\3DPhysics_Contacts.vcxproj", "{EBC95D30-8B44-4F1C-ABE8-18E3B7E611E4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_RayTest", "3DPhysics_RayTest\3DPhysics_RayTest.vcxproj", "{F78CCF0B-77FF-47BB-B13F-5A4750C87BA2}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DPhysics_Vehicle", "3DPhysics_Vehicle\3DPhysics_Vehicle.vcxproj", "{0CD556D6-A2E6-4140-8A2A-216DA554BE7A}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdvancedLighting", "AdvancedLighting\AdvancedLighting.vcxproj", "{A5A02D60-B0CF-4789-A487-9EAA37D24207}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BasicImage", "BasicImage\BasicImage.vcxproj", "{487E893C-10C4-4BAE-B373-6C265A97BBB4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BasicLighting", "BasicLighting\BasicLighting.vcxproj", "{167537BC-169E-4C29-AB5C-8AFBDEC1366D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BasicText", "BasicText\BasicText.vcxproj", "{4788C607-83B0-41FA-904D-C20DD9EFCAB3}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EventHandling", "EventHandling\EventHandling.vcxproj", "{2476F14D-0137-430F-9CD3-E8A1F224215D}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "KeyboardInput", "KeyboardInput\KeyboardInput.vcxproj", "{CCBE9EC0-5C3F-43F4-9EF8-252BE2A589F1}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MouseInput", "MouseInput\MouseInput.vcxproj", "{603DE77C-9798-4249-A995-33D4F3B609DB}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PlayingSounds", "PlayingSounds\PlayingSounds.vcxproj", "{E15F77B2-9AEE-49E7-8B8C-D44FD4461FCC}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ScreenEntities", "ScreenEntities\ScreenEntities.vcxproj", "{F2E3C438-3BCA-4E78-B3BC-2A7E930A6848}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ScreenSprites", "ScreenSprites\ScreenSprites.vcxproj", "{6822657B-F9F3-44C4-B2E6-C51A8F1815C7}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SkeletalAnimation", "SkeletalAnimation\SkeletalAnimation.vcxproj", "{BFA6C0C6-15A9-4A92-857E-01566CFB293E}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "UpdateLoop", "UpdateLoop\UpdateLoop.vcxproj", "{EC8A8536-48CE-47C7-B234-C256AD45EDC4}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Networking_Client", "Networking_Client\Networking_Client.vcxproj", "{D14D0437-1D06-4021-A7C4-01F2443DE4F6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Networking_Server", "Networking_Server\Networking_Server.vcxproj", "{52F646EE-C791-43D3-BD83-A9C4CDE64ABF}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DBasics", "3DBasics\3DBasics.vcxproj", "{A7F115F4-D528-46CE-8B87-EB1193E7D774}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DMeshParticles", "3DMeshParticles\3DMeshParticles.vcxproj", "{96F79A70-00DA-40FE-A46D-54C079C6F657}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3DParticles", "3DParticles\3DParticles.vcxproj", "{1025BE1C-436A-429F-B3F0-C88C138C0587}"
 EndProject
 EndProject
 Global
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,22 +77,134 @@ Global
 		{5586530C-8D6D-4ECE-B560-9566A66E359F}.Debug|Win32.Build.0 = Debug|Win32
 		{5586530C-8D6D-4ECE-B560-9566A66E359F}.Debug|Win32.Build.0 = Debug|Win32
 		{5586530C-8D6D-4ECE-B560-9566A66E359F}.Release|Win32.ActiveCfg = Release|Win32
 		{5586530C-8D6D-4ECE-B560-9566A66E359F}.Release|Win32.ActiveCfg = Release|Win32
 		{5586530C-8D6D-4ECE-B560-9566A66E359F}.Release|Win32.Build.0 = Release|Win32
 		{5586530C-8D6D-4ECE-B560-9566A66E359F}.Release|Win32.Build.0 = Release|Win32
-		{2978F8D8-10AA-4335-8FF1-C8499849C182}.Debug|Win32.ActiveCfg = Debug|Win32
-		{2978F8D8-10AA-4335-8FF1-C8499849C182}.Debug|Win32.Build.0 = Debug|Win32
-		{2978F8D8-10AA-4335-8FF1-C8499849C182}.Release|Win32.ActiveCfg = Release|Win32
-		{2978F8D8-10AA-4335-8FF1-C8499849C182}.Release|Win32.Build.0 = Release|Win32
-		{6EB61FF3-51EA-42AF-AC8C-667A5FBF517A}.Debug|Win32.ActiveCfg = Debug|Win32
-		{6EB61FF3-51EA-42AF-AC8C-667A5FBF517A}.Debug|Win32.Build.0 = Debug|Win32
-		{6EB61FF3-51EA-42AF-AC8C-667A5FBF517A}.Release|Win32.ActiveCfg = Release|Win32
-		{6EB61FF3-51EA-42AF-AC8C-667A5FBF517A}.Release|Win32.Build.0 = Release|Win32
-		{DC249750-474E-4945-A938-2C93F98B4B92}.Debug|Win32.ActiveCfg = Debug|Win32
-		{DC249750-474E-4945-A938-2C93F98B4B92}.Debug|Win32.Build.0 = Debug|Win32
-		{DC249750-474E-4945-A938-2C93F98B4B92}.Release|Win32.ActiveCfg = Release|Win32
-		{DC249750-474E-4945-A938-2C93F98B4B92}.Release|Win32.Build.0 = Release|Win32
-		{70C02441-8A71-40E3-B737-C872FFFB0183}.Debug|Win32.ActiveCfg = Debug|Win32
-		{70C02441-8A71-40E3-B737-C872FFFB0183}.Debug|Win32.Build.0 = Debug|Win32
-		{70C02441-8A71-40E3-B737-C872FFFB0183}.Release|Win32.ActiveCfg = Release|Win32
-		{70C02441-8A71-40E3-B737-C872FFFB0183}.Release|Win32.Build.0 = Release|Win32
+		{3ED74988-CC16-4DBA-A9C9-880D37A79E06}.Debug|Win32.ActiveCfg = Debug|Win32
+		{3ED74988-CC16-4DBA-A9C9-880D37A79E06}.Debug|Win32.Build.0 = Debug|Win32
+		{3ED74988-CC16-4DBA-A9C9-880D37A79E06}.Release|Win32.ActiveCfg = Release|Win32
+		{3ED74988-CC16-4DBA-A9C9-880D37A79E06}.Release|Win32.Build.0 = Release|Win32
+		{B1C29A4C-4964-47CB-BF71-EF79C98EADCF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{B1C29A4C-4964-47CB-BF71-EF79C98EADCF}.Debug|Win32.Build.0 = Debug|Win32
+		{B1C29A4C-4964-47CB-BF71-EF79C98EADCF}.Release|Win32.ActiveCfg = Release|Win32
+		{B1C29A4C-4964-47CB-BF71-EF79C98EADCF}.Release|Win32.Build.0 = Release|Win32
+		{76041E93-F864-478C-862C-717D29A7FF4B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{76041E93-F864-478C-862C-717D29A7FF4B}.Debug|Win32.Build.0 = Debug|Win32
+		{76041E93-F864-478C-862C-717D29A7FF4B}.Release|Win32.ActiveCfg = Release|Win32
+		{76041E93-F864-478C-862C-717D29A7FF4B}.Release|Win32.Build.0 = Release|Win32
+		{541BF89B-EE4F-48DF-8BA0-75A67CED1E9D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{541BF89B-EE4F-48DF-8BA0-75A67CED1E9D}.Debug|Win32.Build.0 = Debug|Win32
+		{541BF89B-EE4F-48DF-8BA0-75A67CED1E9D}.Release|Win32.ActiveCfg = Release|Win32
+		{541BF89B-EE4F-48DF-8BA0-75A67CED1E9D}.Release|Win32.Build.0 = Release|Win32
+		{99A450CD-3AAA-49E7-98DD-5C7BD2330824}.Debug|Win32.ActiveCfg = Debug|Win32
+		{99A450CD-3AAA-49E7-98DD-5C7BD2330824}.Debug|Win32.Build.0 = Debug|Win32
+		{99A450CD-3AAA-49E7-98DD-5C7BD2330824}.Release|Win32.ActiveCfg = Release|Win32
+		{99A450CD-3AAA-49E7-98DD-5C7BD2330824}.Release|Win32.Build.0 = Release|Win32
+		{9E6D3E8C-09FE-46F2-B96A-95E8FC6F3C87}.Debug|Win32.ActiveCfg = Debug|Win32
+		{9E6D3E8C-09FE-46F2-B96A-95E8FC6F3C87}.Debug|Win32.Build.0 = Debug|Win32
+		{9E6D3E8C-09FE-46F2-B96A-95E8FC6F3C87}.Release|Win32.ActiveCfg = Release|Win32
+		{9E6D3E8C-09FE-46F2-B96A-95E8FC6F3C87}.Release|Win32.Build.0 = Release|Win32
+		{4ED670DE-75E4-44F7-8C55-34356C5AD4FD}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4ED670DE-75E4-44F7-8C55-34356C5AD4FD}.Debug|Win32.Build.0 = Debug|Win32
+		{4ED670DE-75E4-44F7-8C55-34356C5AD4FD}.Release|Win32.ActiveCfg = Release|Win32
+		{4ED670DE-75E4-44F7-8C55-34356C5AD4FD}.Release|Win32.Build.0 = Release|Win32
+		{7ABD5439-B7BD-495D-88BE-7EC7469AC681}.Debug|Win32.ActiveCfg = Debug|Win32
+		{7ABD5439-B7BD-495D-88BE-7EC7469AC681}.Debug|Win32.Build.0 = Debug|Win32
+		{7ABD5439-B7BD-495D-88BE-7EC7469AC681}.Release|Win32.ActiveCfg = Release|Win32
+		{7ABD5439-B7BD-495D-88BE-7EC7469AC681}.Release|Win32.Build.0 = Release|Win32
+		{C9E390FF-1EB2-420A-8C5A-774F0FB4AA98}.Debug|Win32.ActiveCfg = Debug|Win32
+		{C9E390FF-1EB2-420A-8C5A-774F0FB4AA98}.Debug|Win32.Build.0 = Debug|Win32
+		{C9E390FF-1EB2-420A-8C5A-774F0FB4AA98}.Release|Win32.ActiveCfg = Release|Win32
+		{C9E390FF-1EB2-420A-8C5A-774F0FB4AA98}.Release|Win32.Build.0 = Release|Win32
+		{11C57E41-73BC-4A4D-9972-EC9E2FA8FB23}.Debug|Win32.ActiveCfg = Debug|Win32
+		{11C57E41-73BC-4A4D-9972-EC9E2FA8FB23}.Debug|Win32.Build.0 = Debug|Win32
+		{11C57E41-73BC-4A4D-9972-EC9E2FA8FB23}.Release|Win32.ActiveCfg = Release|Win32
+		{11C57E41-73BC-4A4D-9972-EC9E2FA8FB23}.Release|Win32.Build.0 = Release|Win32
+		{34972CA3-BEBD-48DE-8264-539ECAC16F38}.Debug|Win32.ActiveCfg = Debug|Win32
+		{34972CA3-BEBD-48DE-8264-539ECAC16F38}.Debug|Win32.Build.0 = Debug|Win32
+		{34972CA3-BEBD-48DE-8264-539ECAC16F38}.Release|Win32.ActiveCfg = Release|Win32
+		{34972CA3-BEBD-48DE-8264-539ECAC16F38}.Release|Win32.Build.0 = Release|Win32
+		{2C602041-73B0-4DF5-ADD2-637E6222CC1B}.Debug|Win32.ActiveCfg = Debug|Win32
+		{2C602041-73B0-4DF5-ADD2-637E6222CC1B}.Debug|Win32.Build.0 = Debug|Win32
+		{2C602041-73B0-4DF5-ADD2-637E6222CC1B}.Release|Win32.ActiveCfg = Release|Win32
+		{2C602041-73B0-4DF5-ADD2-637E6222CC1B}.Release|Win32.Build.0 = Release|Win32
+		{EBC95D30-8B44-4F1C-ABE8-18E3B7E611E4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EBC95D30-8B44-4F1C-ABE8-18E3B7E611E4}.Debug|Win32.Build.0 = Debug|Win32
+		{EBC95D30-8B44-4F1C-ABE8-18E3B7E611E4}.Release|Win32.ActiveCfg = Release|Win32
+		{EBC95D30-8B44-4F1C-ABE8-18E3B7E611E4}.Release|Win32.Build.0 = Release|Win32
+		{F78CCF0B-77FF-47BB-B13F-5A4750C87BA2}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F78CCF0B-77FF-47BB-B13F-5A4750C87BA2}.Debug|Win32.Build.0 = Debug|Win32
+		{F78CCF0B-77FF-47BB-B13F-5A4750C87BA2}.Release|Win32.ActiveCfg = Release|Win32
+		{F78CCF0B-77FF-47BB-B13F-5A4750C87BA2}.Release|Win32.Build.0 = Release|Win32
+		{0CD556D6-A2E6-4140-8A2A-216DA554BE7A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0CD556D6-A2E6-4140-8A2A-216DA554BE7A}.Debug|Win32.Build.0 = Debug|Win32
+		{0CD556D6-A2E6-4140-8A2A-216DA554BE7A}.Release|Win32.ActiveCfg = Release|Win32
+		{0CD556D6-A2E6-4140-8A2A-216DA554BE7A}.Release|Win32.Build.0 = Release|Win32
+		{A5A02D60-B0CF-4789-A487-9EAA37D24207}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A5A02D60-B0CF-4789-A487-9EAA37D24207}.Debug|Win32.Build.0 = Debug|Win32
+		{A5A02D60-B0CF-4789-A487-9EAA37D24207}.Release|Win32.ActiveCfg = Release|Win32
+		{A5A02D60-B0CF-4789-A487-9EAA37D24207}.Release|Win32.Build.0 = Release|Win32
+		{487E893C-10C4-4BAE-B373-6C265A97BBB4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{487E893C-10C4-4BAE-B373-6C265A97BBB4}.Debug|Win32.Build.0 = Debug|Win32
+		{487E893C-10C4-4BAE-B373-6C265A97BBB4}.Release|Win32.ActiveCfg = Release|Win32
+		{487E893C-10C4-4BAE-B373-6C265A97BBB4}.Release|Win32.Build.0 = Release|Win32
+		{167537BC-169E-4C29-AB5C-8AFBDEC1366D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{167537BC-169E-4C29-AB5C-8AFBDEC1366D}.Debug|Win32.Build.0 = Debug|Win32
+		{167537BC-169E-4C29-AB5C-8AFBDEC1366D}.Release|Win32.ActiveCfg = Release|Win32
+		{167537BC-169E-4C29-AB5C-8AFBDEC1366D}.Release|Win32.Build.0 = Release|Win32
+		{4788C607-83B0-41FA-904D-C20DD9EFCAB3}.Debug|Win32.ActiveCfg = Debug|Win32
+		{4788C607-83B0-41FA-904D-C20DD9EFCAB3}.Debug|Win32.Build.0 = Debug|Win32
+		{4788C607-83B0-41FA-904D-C20DD9EFCAB3}.Release|Win32.ActiveCfg = Release|Win32
+		{4788C607-83B0-41FA-904D-C20DD9EFCAB3}.Release|Win32.Build.0 = Release|Win32
+		{2476F14D-0137-430F-9CD3-E8A1F224215D}.Debug|Win32.ActiveCfg = Debug|Win32
+		{2476F14D-0137-430F-9CD3-E8A1F224215D}.Debug|Win32.Build.0 = Debug|Win32
+		{2476F14D-0137-430F-9CD3-E8A1F224215D}.Release|Win32.ActiveCfg = Release|Win32
+		{2476F14D-0137-430F-9CD3-E8A1F224215D}.Release|Win32.Build.0 = Release|Win32
+		{CCBE9EC0-5C3F-43F4-9EF8-252BE2A589F1}.Debug|Win32.ActiveCfg = Debug|Win32
+		{CCBE9EC0-5C3F-43F4-9EF8-252BE2A589F1}.Debug|Win32.Build.0 = Debug|Win32
+		{CCBE9EC0-5C3F-43F4-9EF8-252BE2A589F1}.Release|Win32.ActiveCfg = Release|Win32
+		{CCBE9EC0-5C3F-43F4-9EF8-252BE2A589F1}.Release|Win32.Build.0 = Release|Win32
+		{603DE77C-9798-4249-A995-33D4F3B609DB}.Debug|Win32.ActiveCfg = Debug|Win32
+		{603DE77C-9798-4249-A995-33D4F3B609DB}.Debug|Win32.Build.0 = Debug|Win32
+		{603DE77C-9798-4249-A995-33D4F3B609DB}.Release|Win32.ActiveCfg = Release|Win32
+		{603DE77C-9798-4249-A995-33D4F3B609DB}.Release|Win32.Build.0 = Release|Win32
+		{E15F77B2-9AEE-49E7-8B8C-D44FD4461FCC}.Debug|Win32.ActiveCfg = Debug|Win32
+		{E15F77B2-9AEE-49E7-8B8C-D44FD4461FCC}.Debug|Win32.Build.0 = Debug|Win32
+		{E15F77B2-9AEE-49E7-8B8C-D44FD4461FCC}.Release|Win32.ActiveCfg = Release|Win32
+		{E15F77B2-9AEE-49E7-8B8C-D44FD4461FCC}.Release|Win32.Build.0 = Release|Win32
+		{F2E3C438-3BCA-4E78-B3BC-2A7E930A6848}.Debug|Win32.ActiveCfg = Debug|Win32
+		{F2E3C438-3BCA-4E78-B3BC-2A7E930A6848}.Debug|Win32.Build.0 = Debug|Win32
+		{F2E3C438-3BCA-4E78-B3BC-2A7E930A6848}.Release|Win32.ActiveCfg = Release|Win32
+		{F2E3C438-3BCA-4E78-B3BC-2A7E930A6848}.Release|Win32.Build.0 = Release|Win32
+		{6822657B-F9F3-44C4-B2E6-C51A8F1815C7}.Debug|Win32.ActiveCfg = Debug|Win32
+		{6822657B-F9F3-44C4-B2E6-C51A8F1815C7}.Debug|Win32.Build.0 = Debug|Win32
+		{6822657B-F9F3-44C4-B2E6-C51A8F1815C7}.Release|Win32.ActiveCfg = Release|Win32
+		{6822657B-F9F3-44C4-B2E6-C51A8F1815C7}.Release|Win32.Build.0 = Release|Win32
+		{BFA6C0C6-15A9-4A92-857E-01566CFB293E}.Debug|Win32.ActiveCfg = Debug|Win32
+		{BFA6C0C6-15A9-4A92-857E-01566CFB293E}.Debug|Win32.Build.0 = Debug|Win32
+		{BFA6C0C6-15A9-4A92-857E-01566CFB293E}.Release|Win32.ActiveCfg = Release|Win32
+		{BFA6C0C6-15A9-4A92-857E-01566CFB293E}.Release|Win32.Build.0 = Release|Win32
+		{EC8A8536-48CE-47C7-B234-C256AD45EDC4}.Debug|Win32.ActiveCfg = Debug|Win32
+		{EC8A8536-48CE-47C7-B234-C256AD45EDC4}.Debug|Win32.Build.0 = Debug|Win32
+		{EC8A8536-48CE-47C7-B234-C256AD45EDC4}.Release|Win32.ActiveCfg = Release|Win32
+		{EC8A8536-48CE-47C7-B234-C256AD45EDC4}.Release|Win32.Build.0 = Release|Win32
+		{D14D0437-1D06-4021-A7C4-01F2443DE4F6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{D14D0437-1D06-4021-A7C4-01F2443DE4F6}.Debug|Win32.Build.0 = Debug|Win32
+		{D14D0437-1D06-4021-A7C4-01F2443DE4F6}.Release|Win32.ActiveCfg = Release|Win32
+		{D14D0437-1D06-4021-A7C4-01F2443DE4F6}.Release|Win32.Build.0 = Release|Win32
+		{52F646EE-C791-43D3-BD83-A9C4CDE64ABF}.Debug|Win32.ActiveCfg = Debug|Win32
+		{52F646EE-C791-43D3-BD83-A9C4CDE64ABF}.Debug|Win32.Build.0 = Debug|Win32
+		{52F646EE-C791-43D3-BD83-A9C4CDE64ABF}.Release|Win32.ActiveCfg = Release|Win32
+		{52F646EE-C791-43D3-BD83-A9C4CDE64ABF}.Release|Win32.Build.0 = Release|Win32
+		{A7F115F4-D528-46CE-8B87-EB1193E7D774}.Debug|Win32.ActiveCfg = Debug|Win32
+		{A7F115F4-D528-46CE-8B87-EB1193E7D774}.Debug|Win32.Build.0 = Debug|Win32
+		{A7F115F4-D528-46CE-8B87-EB1193E7D774}.Release|Win32.ActiveCfg = Release|Win32
+		{A7F115F4-D528-46CE-8B87-EB1193E7D774}.Release|Win32.Build.0 = Release|Win32
+		{96F79A70-00DA-40FE-A46D-54C079C6F657}.Debug|Win32.ActiveCfg = Debug|Win32
+		{96F79A70-00DA-40FE-A46D-54C079C6F657}.Debug|Win32.Build.0 = Debug|Win32
+		{96F79A70-00DA-40FE-A46D-54C079C6F657}.Release|Win32.ActiveCfg = Release|Win32
+		{96F79A70-00DA-40FE-A46D-54C079C6F657}.Release|Win32.Build.0 = Release|Win32
+		{1025BE1C-436A-429F-B3F0-C88C138C0587}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1025BE1C-436A-429F-B3F0-C88C138C0587}.Debug|Win32.Build.0 = Debug|Win32
+		{1025BE1C-436A-429F-B3F0-C88C138C0587}.Release|Win32.ActiveCfg = Release|Win32
+		{1025BE1C-436A-429F-B3F0-C88C138C0587}.Release|Win32.Build.0 = Release|Win32
 	EndGlobalSection
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE
 		HideSolutionNode = FALSE

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/ScreenEntities/ScreenEntities.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\ScreenEntities\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\ScreenEntities\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{F2E3C438-3BCA-4E78-B3BC-2A7E930A6848}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyScreenEntities</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\ScreenEntities;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\ScreenEntities;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/ScreenSprites/ScreenSprites.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\ScreenSprites\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\ScreenSprites\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{6822657B-F9F3-44C4-B2E6-C51A8F1815C7}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyScreenSprites</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\ScreenSprites;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\ScreenSprites;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/SkeletalAnimation/SkeletalAnimation.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\SkeletalAnimation\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\SkeletalAnimation\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{BFA6C0C6-15A9-4A92-857E-01566CFB293E}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MySkeletalAnimation</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\SkeletalAnimation;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\SkeletalAnimation;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 98 - 0
Examples/C++/Build/Windows/PolycodeExamples/UpdateLoop/UpdateLoop.vcxproj

@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\Contents\UpdateLoop\HelloPolycodeApp.cpp" />
+    <ClCompile Include="..\PolycodeExample.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\Contents\UpdateLoop\HelloPolycodeApp.h" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{EC8A8536-48CE-47C7-B234-C256AD45EDC4}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>MyUpdateLoop</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <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|Win32'">
+    <LinkIncremental>true</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\UpdateLoop;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+    <IncludePath>$(SolutionDir)..\..\..\Core\include;$(SolutionDir)..\..\..\Core\Dependencies\include;$(SolutionDir)..\..\..\Core\PolycodeView;$(SolutionDir)..\..\..\Core\Dependencies\include\AL;$(SolutionDir)..\Contents\UpdateLoop;$(IncludePath)</IncludePath>
+    <LibraryPath>$(SolutionDir)..\..\..\Core\lib;$(SolutionDir)..\..\..\Core\Dependencies\lib;$(LibraryPath)</LibraryPath>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore_d.lib;zlibd.lib;freetype_d.lib;liboggd.lib;libvorbisd.lib;libvorbisfiled.lib;OpenAL32d.lib;kernel32.lib;physfsd.lib;libpng15_staticd.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32d.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <WarningLevel>Level3</WarningLevel>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <Optimization>MaxSpeed</Optimization>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Windows</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;ws2_32.lib;opengl32.lib;glu32.lib;Polycore.lib;zlib.lib;freetype.lib;libogg.lib;libvorbis.lib;libvorbisfile.lib;OpenAL32.lib;kernel32.lib;physfs.lib;libpng15_static.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
+    </Link>
+    <PostBuildEvent>
+      <Command>copy ..\..\..\..\Core\Dependencies\bin\OpenAL32.dll ..\..</Command>
+    </PostBuildEvent>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 1 - 5
Examples/C++/Contents/2DAudio/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 	
 	
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);	  
 	
 	
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	

+ 1 - 5
Examples/C++/Contents/2DParticles/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/2DPhysics_Basic/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	PhysicsScreen *screen = new PhysicsScreen(10, 60);	
 	PhysicsScreen *screen = new PhysicsScreen(10, 60);	
 	
 	

+ 2 - 6
Examples/C++/Contents/2DPhysics_CollisionOnly/HelloPolycodeApp.cpp

@@ -2,12 +2,8 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
-	
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
+
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	
 
 

+ 1 - 5
Examples/C++/Contents/2DPhysics_Contacts/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 	
 	
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	

+ 1 - 5
Examples/C++/Contents/2DPhysics_Joints/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	PhysicsScreen *screen = new PhysicsScreen(10, 50);
 	PhysicsScreen *screen = new PhysicsScreen(10, 50);
 
 

+ 1 - 5
Examples/C++/Contents/2DPhysics_PointCollision/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 	
 	
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	

+ 1 - 5
Examples/C++/Contents/2DShapes/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/2DTransforms/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DAudio/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 	
 	
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);	

+ 1 - 5
Examples/C++/Contents/3DBasics/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DMeshParticles/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DParticles/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DPhysics_Basic/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DPhysics_Character/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DPhysics_CollisionOnly/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DPhysics_Contacts/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DPhysics_RayTest/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/3DPhysics_Vehicle/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/AdvancedLighting/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/BasicImage/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/BasicLighting/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/BasicText/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/EventHandling/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 	  
 	  
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/KeyboardInput/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/MouseInput/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/Networking_Client/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 		
 		
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/Networking_Server/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 		
 		
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : ServerWorld(), EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : ServerWorld(), EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/PlayingSounds/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 	
 	
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 	
 	
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/ScreenEntities/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/ScreenSprites/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/SkeletalAnimation/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) : EventHandler() {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 
 
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 1 - 5
Examples/C++/Contents/UpdateLoop/HelloPolycodeApp.cpp

@@ -2,11 +2,7 @@
 
 
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 HelloPolycodeApp::HelloPolycodeApp(PolycodeView *view) {
 
 
-#ifdef __APPLE__
-	core = new CocoaCore(view, 640,480,false,false,0,0,90);	  
-#else
-	core = new SDLCore(view, 640,480,false,false,0,0,90);	  
-#endif
+	core = new POLYCODE_CORE(view, 640,480,false,false,0,0,90);
 	  
 	  
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addArchive("Resources/default.pak");
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);
 	CoreServices::getInstance()->getResourceManager()->addDirResource("default", false);

+ 2 - 2
Examples/C++/Resources/example.mat

@@ -11,14 +11,14 @@
 		<material name="CubeMaterial">
 		<material name="CubeMaterial">
 			<shader name="DefaultShaderShadows">
 			<shader name="DefaultShaderShadows">
 				<textures>
 				<textures>
-					<texture name="diffuse">pink_texture.png</texture>
+					<texture name="diffuse">Resources/pink_texture.png</texture>
 				</textures>
 				</textures>
 			</shader>
 			</shader>
 		</material>			
 		</material>			
 		<material name="GroundMaterial">
 		<material name="GroundMaterial">
 			<shader name="DefaultShaderShadows">
 			<shader name="DefaultShaderShadows">
 				<textures>
 				<textures>
-					<texture name="diffuse">green_texture.png</texture>
+					<texture name="diffuse">Resources/green_texture.png</texture>
 				</textures>
 				</textures>
 			</shader>
 			</shader>
 		</material>					
 		</material>					

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů