瀏覽代碼

Initial commit

Daniele Bartolini 13 年之前
當前提交
8c0b1a7340
共有 100 個文件被更改,包括 13329 次插入0 次删除
  1. 二進制
      3rd/freetype/win32-2.4.6-release-multithread.zip
  2. 二進制
      3rd/glew/win32-1.7.0.zip
  3. 二進制
      3rd/zlib/win32-1.2.5.zip
  4. 45 0
      CMakeLists.txt
  5. 23 0
      COPYING.txt
  6. 495 0
      docs/BTree.h
  7. 2 0
      docs/BTree.txt
  8. 二進制
      docs/CodeStyle-1.2.pdf
  9. 54 0
      docs/Enumerators.txt
  10. 96 0
      docs/Gui.txt
  11. 212 0
      docs/STYLE.txt
  12. 96 0
      docs/TODO.txt
  13. 55 0
      docs/libreria risorse.txt
  14. 66 0
      docs/memory.txt
  15. 126 0
      docs/path-docs.txt
  16. 5 0
      proj/netbeans/crown/.dep.inc
  17. 109 0
      proj/netbeans/crown/Makefile
  18. 3 0
      proj/netbeans/crown/nbproject/.directory
  19. 613 0
      proj/netbeans/crown/nbproject/Makefile-Debug.mk
  20. 613 0
      proj/netbeans/crown/nbproject/Makefile-Release.mk
  21. 133 0
      proj/netbeans/crown/nbproject/Makefile-impl.mk
  22. 35 0
      proj/netbeans/crown/nbproject/Makefile-variables.mk
  23. 75 0
      proj/netbeans/crown/nbproject/Package-Debug.bash
  24. 75 0
      proj/netbeans/crown/nbproject/Package-Release.bash
  25. 408 0
      proj/netbeans/crown/nbproject/configurations.xml
  26. 7 0
      proj/netbeans/crown/nbproject/private/Makefile-variables.mk
  27. 78 0
      proj/netbeans/crown/nbproject/private/configurations.xml
  28. 8 0
      proj/netbeans/crown/nbproject/private/private.xml
  29. 0 0
      proj/netbeans/crown/nbproject/project.properties
  30. 28 0
      proj/netbeans/crown/nbproject/project.xml
  31. 5 0
      proj/netbeans/tests/.dep.inc
  32. 109 0
      proj/netbeans/tests/Makefile
  33. 89 0
      proj/netbeans/tests/nbproject/Makefile-Debug.mk
  34. 87 0
      proj/netbeans/tests/nbproject/Makefile-Release.mk
  35. 133 0
      proj/netbeans/tests/nbproject/Makefile-impl.mk
  36. 35 0
      proj/netbeans/tests/nbproject/Makefile-variables.mk
  37. 75 0
      proj/netbeans/tests/nbproject/Package-Debug.bash
  38. 75 0
      proj/netbeans/tests/nbproject/Package-Release.bash
  39. 155 0
      proj/netbeans/tests/nbproject/configurations.xml
  40. 7 0
      proj/netbeans/tests/nbproject/private/Makefile-variables.mk
  41. 78 0
      proj/netbeans/tests/nbproject/private/configurations.xml
  42. 8 0
      proj/netbeans/tests/nbproject/private/private.xml
  43. 0 0
      proj/netbeans/tests/nbproject/project.properties
  44. 30 0
      proj/netbeans/tests/nbproject/project.xml
  45. 29 0
      proj/vs10/crown.sln
  46. 二進制
      proj/vs10/crown/crown.aps
  47. 二進制
      proj/vs10/crown/crown.rc
  48. 357 0
      proj/vs10/crown/crown.vcxproj
  49. 949 0
      proj/vs10/crown/crown.vcxproj.filters
  50. 3 0
      proj/vs10/crown/crown.vcxproj.user
  51. 二進制
      proj/vs10/crown/resources.h
  52. 二進制
      proj/vs10/tests/tests.aps
  53. 119 0
      proj/vs10/tests/tests.vcxproj
  54. 109 0
      proj/vs10/tests/tests.vcxproj.filters
  55. 12 0
      proj/vs10/tests/tests.vcxproj.user
  56. 二進制
      res/arialbd.ttf
  57. 二進制
      res/boom.bmp
  58. 二進制
      res/closebutton_x.bmp
  59. 1479 0
      res/monkey.obj
  60. 二進制
      res/napoleon.ico
  61. 173 0
      src/Android.mk
  62. 2 0
      src/Application.mk
  63. 290 0
      src/CMakeLists.txt
  64. 177 0
      src/Camera.cpp
  65. 135 0
      src/Camera.h
  66. 71 0
      src/Config.h
  67. 156 0
      src/Crown.h
  68. 78 0
      src/Data.h
  69. 322 0
      src/Device.cpp
  70. 89 0
      src/Device.h
  71. 113 0
      src/EventBuffer.cpp
  72. 66 0
      src/EventBuffer.h
  73. 638 0
      src/Filesystem.cpp
  74. 172 0
      src/Filesystem.h
  75. 113 0
      src/Font.cpp
  76. 80 0
      src/Font.h
  77. 69 0
      src/FontManager.cpp
  78. 79 0
      src/FontManager.h
  79. 84 0
      src/Frame.cpp
  80. 71 0
      src/Frame.h
  81. 117 0
      src/Glyph.h
  82. 268 0
      src/Image.cpp
  83. 118 0
      src/Image.h
  84. 59 0
      src/ImageLoader.cpp
  85. 54 0
      src/ImageLoader.h
  86. 57 0
      src/IndexBuffer.h
  87. 118 0
      src/Log.cpp
  88. 69 0
      src/Log.h
  89. 480 0
      src/Material.cpp
  90. 407 0
      src/Material.h
  91. 51 0
      src/MaterialManager.cpp
  92. 74 0
      src/MaterialManager.h
  93. 152 0
      src/Mesh.cpp
  94. 87 0
      src/Mesh.h
  95. 86 0
      src/MeshChunk.cpp
  96. 74 0
      src/MeshChunk.h
  97. 51 0
      src/MeshLoader.h
  98. 268 0
      src/MeshManager.cpp
  99. 109 0
      src/MeshManager.h
  100. 249 0
      src/MovableCamera.cpp

二進制
3rd/freetype/win32-2.4.6-release-multithread.zip


二進制
3rd/glew/win32-1.7.0.zip


二進制
3rd/zlib/win32-1.2.5.zip


+ 45 - 0
CMakeLists.txt

@@ -0,0 +1,45 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(crown)
+
+option (CROWN_USE_FLOAT "Whether to use float or double for representing real numbers." ON)
+option (CROWN_BUILD_OPENGL "Whether to build the OpenGL renderer or not." ON)
+option (CROWN_BUILD_OPENGLES "Whether to build the OpenGL|ES 1.0 renderer or not." OFF)
+option (CROWN_BUILD_TESTS "Whether to build the tests" ON)
+option (CROWN_BUILD_TOOLS "Whether to build the tools" ON)
+
+set (INCLUDES
+	${CMAKE_SOURCE_DIR}/src
+	${CMAKE_SOURCE_DIR}/src/core
+	${CMAKE_SOURCE_DIR}/src/core/bv
+	${CMAKE_SOURCE_DIR}/src/core/containers
+	${CMAKE_SOURCE_DIR}/src/core/math
+	${CMAKE_SOURCE_DIR}/src/core/mem
+	${CMAKE_SOURCE_DIR}/src/core/streams
+	${CMAKE_SOURCE_DIR}/src/os
+	${CMAKE_SOURCE_DIR}/src/os/linux
+	${CMAKE_SOURCE_DIR}/src/input
+	${CMAKE_SOURCE_DIR}/src/loaders
+	${CMAKE_SOURCE_DIR}/src/renderers
+	${CMAKE_SOURCE_DIR}/src/renderers/gl
+	${CMAKE_SOURCE_DIR}/src/renderers/gles
+	${CMAKE_SOURCE_DIR}/src/windowing
+	${CMAKE_SOURCE_DIR}/src/windowing/toolbox
+	${CMAKE_SOURCE_DIR}/src/windowing/themes
+	${CMAKE_SOURCE_DIR}/src/windowing/layouts
+	${CMAKE_SOURCE_DIR}/src/windowing/templates
+)
+
+include_directories(${INCLUDES})
+add_definitions(-pipe -ansi -W -Wall -Wextra -Wno-long-long -pedantic -fPIC -g -pg)
+
+add_subdirectory(src)
+
+if (CROWN_BUILD_TOOLS)
+add_subdirectory(tools)
+endif (CROWN_BUILD_TOOLS)
+
+if (CROWN_BUILD_TESTS)
+add_subdirectory(tests)
+endif (CROWN_BUILD_TESTS)
+

+ 23 - 0
COPYING.txt

@@ -0,0 +1,23 @@
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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.
+

+ 495 - 0
docs/BTree.h

@@ -0,0 +1,495 @@
+// Copyright (C) 2004 Id Software, Inc.
+//
+
+#ifndef __BTREE_H__
+#define __BTREE_H__
+
+/*
+===============================================================================
+
+	Balanced Search Tree
+
+===============================================================================
+*/
+
+//#define BTREE_CHECK
+
+template< class objType, class keyType >
+class idBTreeNode {
+public:
+	keyType							key;			// key used for sorting
+	objType *						object;			// if != NULL pointer to object stored in leaf node
+	idBTreeNode *					parent;			// parent node
+	idBTreeNode *					next;			// next sibling
+	idBTreeNode *					prev;			// prev sibling
+	int								numChildren;	// number of children
+	idBTreeNode *					firstChild;		// first child
+	idBTreeNode *					lastChild;		// last child
+};
+
+
+template< class objType, class keyType, int maxChildrenPerNode >
+class idBTree {
+public:
+									idBTree( void );
+									~idBTree( void );
+
+	void							Init( void );
+	void							Shutdown( void );
+
+	idBTreeNode<objType,keyType> *	Add( objType *object, keyType key );						// add an object to the tree
+	void							Remove( idBTreeNode<objType,keyType> *node );				// remove an object node from the tree
+
+	objType *						Find( keyType key ) const;									// find an object using the given key
+	objType *						FindSmallestLargerEqual( keyType key ) const;				// find an object with the smallest key larger equal the given key
+	objType *						FindLargestSmallerEqual( keyType key ) const;				// find an object with the largest key smaller equal the given key
+
+	idBTreeNode<objType,keyType> *	GetRoot( void ) const;										// returns the root node of the tree
+	int								GetNodeCount( void ) const;									// returns the total number of nodes in the tree
+	idBTreeNode<objType,keyType> *	GetNext( idBTreeNode<objType,keyType> *node ) const;		// goes through all nodes of the tree
+	idBTreeNode<objType,keyType> *	GetNextLeaf( idBTreeNode<objType,keyType> *node ) const;	// goes through all leaf nodes of the tree
+
+private:
+	idBTreeNode<objType,keyType> *	root;
+	idBlockAlloc<idBTreeNode<objType,keyType>,128>	nodeAllocator;
+
+	idBTreeNode<objType,keyType> *	AllocNode( void );
+	void							FreeNode( idBTreeNode<objType,keyType> *node );
+	void							SplitNode( idBTreeNode<objType,keyType> *node );
+	idBTreeNode<objType,keyType> *	MergeNodes( idBTreeNode<objType,keyType> *node1, idBTreeNode<objType,keyType> *node2 );
+
+	void							CheckTree_r( idBTreeNode<objType,keyType> *node, int &numNodes ) const;
+	void							CheckTree( void ) const;
+};
+
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTree<objType,keyType,maxChildrenPerNode>::idBTree( void ) {
+	assert( maxChildrenPerNode >= 4 );
+	root = NULL;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTree<objType,keyType,maxChildrenPerNode>::~idBTree( void ) {
+	Shutdown();
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::Init( void ) {
+	root = AllocNode();
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::Shutdown( void ) {
+	nodeAllocator.Shutdown();
+	root = NULL;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTreeNode<objType,keyType> *idBTree<objType,keyType,maxChildrenPerNode>::Add( objType *object, keyType key ) {
+	idBTreeNode<objType,keyType> *node, *child, *newNode;
+
+	if ( root->numChildren >= maxChildrenPerNode ) {
+		newNode = AllocNode();
+		newNode->key = root->key;
+		newNode->firstChild = root;
+		newNode->lastChild = root;
+		newNode->numChildren = 1;
+		root->parent = newNode;
+		SplitNode( root );
+		root = newNode;
+	}
+
+	newNode = AllocNode();
+	newNode->key = key;
+	newNode->object = object;
+
+	for ( node = root; node->firstChild != NULL; node = child ) {
+
+		if ( key > node->key ) {
+			node->key = key;
+		}
+
+		// find the first child with a key larger equal to the key of the new node
+		for( child = node->firstChild; child->next; child = child->next ) {
+			if ( key <= child->key ) {
+				break;
+			}
+		}
+
+		if ( child->object ) {
+
+			if ( key <= child->key ) {
+				// insert new node before child
+				if ( child->prev ) {
+					child->prev->next = newNode;
+				} else {
+					node->firstChild = newNode;
+				}
+				newNode->prev = child->prev;
+				newNode->next = child;
+				child->prev = newNode;
+			} else {
+				// insert new node after child
+				if ( child->next ) {
+					child->next->prev = newNode;
+				} else {
+					node->lastChild = newNode;
+				}
+				newNode->prev = child;
+				newNode->next = child->next;
+				child->next = newNode;
+			}
+
+			newNode->parent = node;
+			node->numChildren++;
+
+#ifdef BTREE_CHECK
+			CheckTree();
+#endif
+
+			return newNode;
+		}
+
+		// make sure the child has room to store another node
+		if ( child->numChildren >= maxChildrenPerNode ) {
+			SplitNode( child );
+			if ( key <= child->prev->key ) {
+				child = child->prev;
+			}
+		}
+	}
+
+	// we only end up here if the root node is empty
+	newNode->parent = root;
+	root->key = key;
+	root->firstChild = newNode;
+	root->lastChild = newNode;
+	root->numChildren++;
+
+#ifdef BTREE_CHECK
+	CheckTree();
+#endif
+
+	return newNode;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::Remove( idBTreeNode<objType,keyType> *node ) {
+	idBTreeNode<objType,keyType> *parent;
+
+	assert( node->object != NULL );
+
+	// unlink the node from it's parent
+	if ( node->prev ) {
+		node->prev->next = node->next;
+	} else {
+		node->parent->firstChild = node->next;
+	}
+	if ( node->next ) {
+		node->next->prev = node->prev;
+	} else {
+		node->parent->lastChild = node->prev;
+	}
+	node->parent->numChildren--;
+
+	// make sure there are no parent nodes with a single child
+	for ( parent = node->parent; parent != root && parent->numChildren <= 1; parent = parent->parent ) {
+
+		if ( parent->next ) {
+			parent = MergeNodes( parent, parent->next );
+		} else if ( parent->prev ) {
+			parent = MergeNodes( parent->prev, parent );
+		}
+
+		// a parent may not use a key higher than the key of it's last child
+		if ( parent->key > parent->lastChild->key ) {
+			parent->key = parent->lastChild->key;
+		}
+
+		if ( parent->numChildren > maxChildrenPerNode ) {
+			SplitNode( parent );
+			break;
+		}
+	}
+	for ( ; parent != NULL && parent->lastChild != NULL; parent = parent->parent ) {
+		// a parent may not use a key higher than the key of it's last child
+		if ( parent->key > parent->lastChild->key ) {
+			parent->key = parent->lastChild->key;
+		}
+	}
+
+	// free the node
+	FreeNode( node );
+
+	// remove the root node if it has a single internal node as child
+	if ( root->numChildren == 1 && root->firstChild->object == NULL ) {
+		idBTreeNode<objType,keyType> *oldRoot = root;
+		root->firstChild->parent = NULL;
+		root = root->firstChild;
+		FreeNode( oldRoot );
+	}
+
+#ifdef BTREE_CHECK
+	CheckTree();
+#endif
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE objType *idBTree<objType,keyType,maxChildrenPerNode>::Find( keyType key ) const {
+	idBTreeNode<objType,keyType> *node;
+
+	for ( node = root->firstChild; node != NULL; node = node->firstChild ) {
+		while( node->next ) {
+			if ( node->key >= key ) {
+				break;
+			}
+			node = node->next;
+		}
+		if ( node->object ) {
+			if ( node->key == key ) {
+				return node->object;
+			} else {
+				return NULL;
+			}
+		}
+	}
+	return NULL;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE objType *idBTree<objType,keyType,maxChildrenPerNode>::FindSmallestLargerEqual( keyType key ) const {
+	idBTreeNode<objType,keyType> *node;
+
+	for ( node = root->firstChild; node != NULL; node = node->firstChild ) {
+		while( node->next ) {
+			if ( node->key >= key ) {
+				break;
+			}
+			node = node->next;
+		}
+		if ( node->object ) {
+			if ( node->key >= key ) {
+				return node->object;
+			} else {
+				return NULL;
+			}
+		}
+	}
+	return NULL;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE objType *idBTree<objType,keyType,maxChildrenPerNode>::FindLargestSmallerEqual( keyType key ) const {
+	idBTreeNode<objType,keyType> *node;
+
+	for ( node = root->lastChild; node != NULL; node = node->lastChild ) {
+		while( node->prev ) {
+			if ( node->key <= key ) {
+				break;
+			}
+			node = node->prev;
+		}
+		if ( node->object ) {
+			if ( node->key <= key ) {
+				return node->object;
+			} else {
+				return NULL;
+			}
+		}
+	}
+	return NULL;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTreeNode<objType,keyType> *idBTree<objType,keyType,maxChildrenPerNode>::GetRoot( void ) const {
+	return root;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE int idBTree<objType,keyType,maxChildrenPerNode>::GetNodeCount( void ) const {
+	return nodeAllocator.GetAllocCount();
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTreeNode<objType,keyType> *idBTree<objType,keyType,maxChildrenPerNode>::GetNext( idBTreeNode<objType,keyType> *node ) const {
+	if ( node->firstChild ) {
+		return node->firstChild;
+	} else {
+		while( node && node->next == NULL ) {
+			node = node->parent;
+		}
+		return node;
+	}
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTreeNode<objType,keyType> *idBTree<objType,keyType,maxChildrenPerNode>::GetNextLeaf( idBTreeNode<objType,keyType> *node ) const {
+	if ( node->firstChild ) {
+		while ( node->firstChild ) {
+			node = node->firstChild;
+		}
+		return node;
+	} else {
+		while( node && node->next == NULL ) {
+			node = node->parent;
+		}
+		if ( node ) {
+			node = node->next;
+			while ( node->firstChild ) {
+				node = node->firstChild;
+			}
+			return node;
+		} else {
+			return NULL;
+		}
+	}
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTreeNode<objType,keyType> *idBTree<objType,keyType,maxChildrenPerNode>::AllocNode( void ) {
+	idBTreeNode<objType,keyType> *node = nodeAllocator.Alloc();
+	node->key = 0;
+	node->parent = NULL;
+	node->next = NULL;
+	node->prev = NULL;
+	node->numChildren = 0;
+	node->firstChild = NULL;
+	node->lastChild = NULL;
+	node->object = NULL;
+	return node;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::FreeNode( idBTreeNode<objType,keyType> *node ) {
+	nodeAllocator.Free( node );
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::SplitNode( idBTreeNode<objType,keyType> *node ) {
+	int i;
+	idBTreeNode<objType,keyType> *child, *newNode;
+
+	// allocate a new node
+	newNode = AllocNode();
+	newNode->parent = node->parent;
+
+	// divide the children over the two nodes
+	child = node->firstChild;
+	child->parent = newNode;
+	for ( i = 3; i < node->numChildren; i += 2 ) {
+		child = child->next;
+		child->parent = newNode;
+	}
+
+	newNode->key = child->key;
+	newNode->numChildren = node->numChildren / 2;
+	newNode->firstChild = node->firstChild;
+	newNode->lastChild = child;
+
+	node->numChildren -= newNode->numChildren;
+	node->firstChild = child->next;
+
+	child->next->prev = NULL;
+	child->next = NULL;
+
+	// add the new child to the parent before the split node
+	assert( node->parent->numChildren < maxChildrenPerNode );
+
+	if ( node->prev ) {
+		node->prev->next = newNode;
+	} else {
+		node->parent->firstChild = newNode;
+	}
+	newNode->prev = node->prev;
+	newNode->next = node;
+	node->prev = newNode;
+
+	node->parent->numChildren++;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE idBTreeNode<objType,keyType> *idBTree<objType,keyType,maxChildrenPerNode>::MergeNodes( idBTreeNode<objType,keyType> *node1, idBTreeNode<objType,keyType> *node2 ) {
+	idBTreeNode<objType,keyType> *child;
+
+	assert( node1->parent == node2->parent );
+	assert( node1->next == node2 && node2->prev == node1 );
+	assert( node1->object == NULL && node2->object == NULL );
+	assert( node1->numChildren >= 1 && node2->numChildren >= 1 );
+
+	for ( child = node1->firstChild; child->next; child = child->next ) {
+		child->parent = node2;
+	}
+	child->parent = node2;
+	child->next = node2->firstChild;
+	node2->firstChild->prev = child;
+	node2->firstChild = node1->firstChild;
+	node2->numChildren += node1->numChildren;
+
+	// unlink the first node from the parent
+	if ( node1->prev ) {
+		node1->prev->next = node2;
+	} else {
+		node1->parent->firstChild = node2;
+	}
+	node2->prev = node1->prev;
+	node2->parent->numChildren--;
+
+	FreeNode( node1 );
+
+	return node2;
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::CheckTree_r( idBTreeNode<objType,keyType> *node, int &numNodes ) const {
+	int numChildren;
+	idBTreeNode<objType,keyType> *child;
+
+	numNodes++;
+
+	// the root node may have zero children and leaf nodes always have zero children, all other nodes should have at least 2 and at most maxChildrenPerNode children
+	assert( ( node == root ) || ( node->object != NULL && node->numChildren == 0 ) || ( node->numChildren >= 2 && node->numChildren <= maxChildrenPerNode ) );
+	// the key of a node may never be larger than the key of it's last child
+	assert( ( node->lastChild == NULL ) || ( node->key <= node->lastChild->key ) );
+
+	numChildren = 0;
+	for ( child = node->firstChild; child; child = child->next ) {
+		numChildren++;
+		// make sure the children are properly linked
+		if ( child->prev == NULL ) {
+			assert( node->firstChild == child );
+		} else {
+			assert( child->prev->next == child );
+		}
+		if ( child->next == NULL ) {
+			assert( node->lastChild == child );
+		} else {
+			assert( child->next->prev == child );
+		}
+		// recurse down the tree
+		CheckTree_r( child, numNodes );
+	}
+	// the number of children should equal the number of linked children
+	assert( numChildren == node->numChildren );
+}
+
+template< class objType, class keyType, int maxChildrenPerNode >
+ID_INLINE void idBTree<objType,keyType,maxChildrenPerNode>::CheckTree( void ) const {
+	int numNodes = 0;
+	idBTreeNode<objType,keyType> *node, *lastNode;
+
+	CheckTree_r( root, numNodes );
+
+	// the number of nodes in the tree should equal the number of allocated nodes
+	assert( numNodes == nodeAllocator.GetAllocCount() );
+
+	// all the leaf nodes should be ordered
+	lastNode = GetNextLeaf( GetRoot() );
+	if ( lastNode ) {
+		for ( node = GetNextLeaf( lastNode ); node; lastNode = node, node = GetNextLeaf( node ) ) {
+			assert( lastNode->key <= node->key );
+		}
+	}
+}
+
+#endif /* !__BTREE_H__ */

+ 2 - 0
docs/BTree.txt

@@ -0,0 +1,2 @@
+=== RTree implementation ===
+During a research I found a nice implementation by idSoftware. Source included in this folder.

二進制
docs/CodeStyle-1.2.pdf


+ 54 - 0
docs/Enumerators.txt

@@ -0,0 +1,54 @@
+==Enumerators==
+-------------------------------------------------------------------------------
+ - Description
+  Enumerators provide generic support to enumerating a data structure. They imp
+  lement the same concept of stl iterators.
+
+ - How they work
+  Once one gets an enumerator from a structure implementing IEnumerable (for ex
+  ample), the object obtained represents tipically a reference to an unexisting
+  element placed before the first one.
+  Ex:
+   IEnumerator e = list.getBegin();
+   // Visual representation of e:
+   //  | |a|b|c| |
+   //   ^
+  By using the next() method the iterator moves forward, and returns true if it
+  points to a valid element, and false if it has reached the end.
+  Ex:
+   while (e.next())
+   {
+     //...process e.current()...
+   }
+  Once e.next() returns false, the representation of e is the following:
+  Ex:
+   // Visual representation of e when at the end:
+   //  | |a|b|c| |
+   //           ^
+
+ - Classes
+  . Enumerator interfaces.
+    - IEnumerator<T>: Describes the interface that must be implemented in an en
+      umerator that exposes forward and/or backward capabilities. If one of bot
+      h are not implemented, they must always act as if the iteration is comple
+      ted (by returning false in the respective method)
+    - EnumeratorHelper<T>: A wrapper around other enumerators that automaticall
+      y deletes them when it goes out of scope. Must be instantiated as value, 
+      that is, in the stack and not in the heap. (It's actually more like an ad
+      vice than a restrictive need, because it's useless if it must be deleted 
+      manually).
+      Ex:
+      /* Normal usage */
+      IEnumerator<T>* e = list.getBegin();
+      //...use e...
+      delete e;
+      
+      /* EnumeratorHelper<T> usage */
+      EnumeratorHelper<T> e = list.getBegin();
+      //...use e...
+      //no need to delete it.
+      As Type complexity may vary, it's better to use the Enumerator type defin
+      ition that each data structure should contain, to declare the enumerator 
+      helper.
+      Ex:
+      List<int>::Enumerator e = list.getBegin();

+ 96 - 0
docs/Gui.txt

@@ -0,0 +1,96 @@
+==Gui Subsystem==
+-------------------------------------------------------------------------------
+ - Description
+  The Gui subsystem provides an easy way to create in-game windows and populate
+  them with widgets.
+
+ - The basic Widget:
+  Each widget, wether a simple button or a whole complex window, inherit from a
+  generic Widget. This class provides the skeleton for the Gui subsystem. It re
+  presents a generic 'Gui object' that has a dimension and can be displayed on 
+  screen. Its functionalities are common to all the derived types and are:
+  - Children handling and displaying:
+		Each widget contains a list of children widgets, representing a tree as a w
+		hole. A widgets belongs to his parent, that can be specified only in the wi
+		dget's constructor or by attaching later the widget to a parent if null was
+		specified in the constructor, and once set it can't change.
+		If no custom method is specified, the drawing of children is performed auto
+		matically, otherwise DrawChildren must be called when defining the OnDraw() 
+		method (usually at the end).
+
+  - Mouse interaction:
+		Mouse events are received through the On[Preview]Mouse???() method (where  
+		??? varies depending on the event being notified). Each mouse event is rece
+		ived only if the corresponding action was done inside the widget or one of 
+		its children. An exception to this is when the widget explicitly captures t
+		he mouse: in this case, the widget will receive the mouse events regadrless
+		of the fact that they occoured inside or outside the widget itself or one o
+		f its children. Of course in this case MouseIn and MouseOut occour only whe
+		n the mouse enters or exits the widget that captures the mouse, otherwise t
+		hey would not make sense.
+
+  - Position and dimension:
+		Size and position of widgets can be selected using SetDesiredSize() and Set
+		DesiredPosition() methods. Actual values may vary depending on the layout b
+		eing used. If values of -1 are specified for the desired size, the layout s
+		ystem will interpret it as 'i don't care, you choose', which for default la
+		yout means expand the widget as much as possible. Margins, Horizontal and V
+		ertical alignment provide a convenient way to handle how widgets are displa
+		yed.
+
+ - Events:
+	Each interaction with the Gui can create an event for the application to resp
+	ond.
+	There are two kinds of events: OnEvents, and Signals.
+		- OnEvents:
+			The OnEvents are used by the Gui elements to handle specific behaviours o
+			f the elements themselves: for example, a ListView can use the OnPreviewM
+			ouseUp (covered later) to detect the selection of a child item. The Progr
+			ammer should use these events only when defining custom widgets.
+			Some(All?) OnEvents follow the Tunneling-Bubbling pattern:
+			When an OnEvent fires, for example an OnMouseMove event, the following pr
+			ocedure is followed:
+			1) The element on which the event occours is determined (called Target).
+			2) From the Root Ancestor of the Target, traversing the Widget Tree down
+				 the branch that leads to the Target, OnPreviewMouseMove is called on e
+				 ach widget encountered until some of them sets stopPropagation or the 
+				 Target is reached.
+			3) The same procedure is followed, from the Target to the Root Ancestor, 
+				 but this time calling OnMouseMove.
+			This mechanism allows parent widgets to be notified of events before the
+			Target can know it, allowing them to react accordingly: for example, a Li
+			stViewItems listen for OnPreviewMouseUp to detect when they are selected.
+			Note: Stopping a Preview event via stopPropagation does not block the cor
+						responding Bubbling event to be performed.
+
+		- Signals:
+			Signals expose a set of events that a Programmer can hook onto to detect 
+			when a particular User action occours. Each widget has its signals: a Lis
+			tView for example, has the SelectionChangedSignal that fires whenever the
+			selection changes to another item.
+			To attach to a signal, simply define a Slot with the same signature and a
+			n handler method and connect it to the desidered signal.
+
+ - Layout:
+	Its purpose is to give widgets a size and position. It's performed automati
+	cally when needed, by means of the OnUpdateLayout event.
+	By default, widgets accomodate desired sizes and position requested by the 
+	children. If a different placement is desired, custom Layout widgets must b
+	e used. For example to place a series of button vertically, it's sufficient
+	to create a StackLayout widget as child of the container widget, and put th
+	e buttons inside it.
+
+ - WindowsManager
+ 	The WindowsManager offers an interface between the Crown Entity model and win
+ 	dows. It is the container of all the windows, and is responsible of receiving
+ 	keyboard and mouse events and propagate them in the windows hierarchy.
+ 	Usually the user doesn't need to interface to it except for creation and wind
+ 	dows assignment.
+
+ - Window
+	It's a specialized Widget that has a title bar, a close button and a client a
+	rea where children Widgets are displayed. It is the basic host of all the wid
+	gets. This means that non-Window widgets can only exist inside the Widget tre
+  e of a Window.
+  To insert a widget in the Window client area, just pass them as parent the wi
+	dget returned by calling GetClientArea() on the window.

+ 212 - 0
docs/STYLE.txt

@@ -0,0 +1,212 @@
+Still under restyling:					PROGRESS
+Not started yet:					TODO
+Restyling completed:			DONE
+
+.:
+BMPImageLoader.cpp					TODO
+BMPImageLoader.h					TODO
+Camera.cpp						DONE
+Camera.h						DONE
+Config.h						DONE
+Crown.h							DONE
+CRWDecoder.cpp						TODO
+CRWDecoder.h						TODO
+CursorControl.h					DONE
+Data.h							DONE
+Device.cpp						DONE
+Device.h						DONE
+Entity.cpp						DONE
+Entity.h						DONE
+EventDispatcher.h				DONE
+Event.h							DONE
+EventReceiver.h					DONE
+Font.cpp						DONE
+Font.h							DONE
+Frame.cpp							TODO
+Frame.h								TODO
+Glyph.h							DONE
+Image.cpp						DONE
+Image.h							DONE
+ImageLoader.h					DONE
+Light.cpp						DONE
+Light.h							DONE
+Log.cpp							DONE
+Log.h							DONE
+LogManager.cpp					DONE
+LogManager.h					DONE
+Material.cpp					DONE
+Material.h						DONE
+MeshBuffer.cpp					DONE
+MeshBuffer.h					DONE
+MeshChunk.cpp					DONE
+MeshChunk.h						DONE
+Mesh.cpp						DONE
+Mesh.h							DONE
+MeshLoader.h					DONE
+MovableCamera.cpp				DONE
+MovableCamera.h					DONE
+OBJMeshLoader.cpp				DONE
+OBJMeshLoader.h					DONE
+OpenGl.h						DONE
+Pixel.cpp						DONE
+PixelFormat.h					DONE
+Pixel.h							DONE
+RenderContext.h					DONE
+Renderer.h						DONE
+RenderTarget.cpp				DONE
+RenderTarget.h					DONE
+RenderWindow.cpp				DONE
+RenderWindow.h					DONE
+ResourceManager.cpp				DONE
+ResourceManager.h				DONE
+Scene.cpp							TODO
+Scene.h								TODO
+SceneManager.cpp					TODO
+SceneManager.h						TODO
+Sprite.cpp							TODO
+Sprite.h							TODO
+StaticMeshEntity.cpp			DONE
+StaticMeshEntity.h				DONE
+TextRenderer.cpp				DONE
+TextRenderer.h					DONE
+Texture.h						DONE
+TGAImageLoader.cpp					TODO
+TGAImageLoader.h					TODO
+Timer.cpp						DONE
+Timer.h							DONE
+Vertex3.h						DONE
+VideoMode.h						DONE
+Viewport.cpp					DONE
+Viewport.h						DONE
+WinCursorControl.cpp				TODO
+WinCursorControl.h					TODO
+WindowEventHandler.cpp			DONE
+WindowEventHandler.h			DONE
+WindowsInclude.h					TODO
+XCursorControl.cpp				DONE
+XCursorControl.h				DONE
+
+./core:
+Common.h						DONE
+CoreEventArgs.h						TODO
+Exceptions.h						TODO
+MathUtils.cpp						TODO
+MathUtils.h							TODO
+Object.cpp							TODO
+Object.h							TODO
+Observable.cpp						TODO
+Observable.h						TODO
+shared.h							TODO
+SignalSlot.h						TODO
+Types.h								TODO
+
+./core/bv:
+Box.h								TODO
+Frustum.cpp							TODO
+Frustum.h							TODO
+Rectangle.h							TODO
+Sphere.h							TODO
+
+./core/containers:
+Dictionary.h						TODO
+Generic.cpp							TODO
+Generic.h							TODO
+IEnumerable.h						TODO
+List.h								TODO
+RBTree.h							TODO
+StringUtils.cpp						TODO
+StringUtils.h						TODO
+
+./core/math:
+Angles.cpp								PROGRESS
+Angles.h								PROGRESS
+Color.cpp								PROGRESS
+Color.h									PROGRESS
+Mat3.cpp								PROGRESS
+Mat3.h									PROGRESS
+Mat4.cpp								PROGRESS
+Mat4.h									PROGRESS
+Plane.cpp								PROGRESS
+Plane.h									PROGRESS
+Quat.cpp								PROGRESS
+Quat.h									PROGRESS
+Ray.h									PROGRESS
+Vec2.cpp								PROGRESS
+Vec2.h									PROGRESS
+Vec3.cpp								PROGRESS
+Vec3.h									PROGRESS
+Vec4.cpp								PROGRESS
+Vec4.h									PROGRESS
+
+./core/mem:
+GarbageBin.cpp						TODO
+GarbageBin.h						TODO
+ManagedObject.cpp					TODO
+ManagedObject.h						TODO
+
+./core/streams:
+FileStream.cpp						TODO
+FileStream.h						TODO
+MemoryStream.cpp					TODO
+MemoryStream.h						TODO
+Stream.cpp							TODO
+Stream.h							TODO
+
+./renderers/gl:
+GLRenderer.cpp					DONE
+GLRenderer.h					DONE
+GLSupport.cpp					DONE
+GLSupport.h						DONE
+GLTextRenderer.cpp				DONE
+GLTextRenderer.h				DONE
+GLTexture.cpp					DONE
+GLTexture.h						DONE
+
+./renderers/gl/glx:
+GLXGLSupport.cpp				DONE
+GLXGLSupport.h					DONE
+GLXRenderContext.cpp				TODO
+GLXRenderContext.h					TODO
+GLXRenderWindow.cpp					TODO
+GLXRenderWindow.h					TODO
+
+./renderers/gl/wgl:
+WGLGLSupport.cpp					TODO
+WGLGLSupport.h						TODO
+WGLRenderContext.cpp				TODO
+WGLRenderContext.h					TODO
+WGLRenderWindow.cpp					TODO
+WGLRenderWindow.h					TODO
+
+./windowing:
+Button.cpp							TODO
+Button.h						DONE
+DragArea.cpp						TODO
+DragArea.h						DONE
+ItemsSelector.h					DONE
+ItemsWidget.h						TODO
+Label.cpp							TODO
+Label.h								TODO
+layouts								TODO
+ListView.cpp						TODO
+ListView.h							TODO
+Themes.cpp							TODO
+Themes.h							TODO
+ThemeSpriteWidget.h					TODO
+Widget.cpp							TODO
+Widget.h							TODO
+Window.cpp							TODO
+Window.h							TODO
+WindowingEventArgs.h				TODO
+WindowsManager.cpp					TODO
+WindowsManager.h					TODO
+
+./windowing/layouts:
+CanvasLayout.cpp					TODO
+CanvasLayout.h						TODO
+StackLayout.cpp						TODO
+StackLayout.h						TODO
+
+./windowing/themes:
+LunaTheme.cpp						TODO
+LunaTheme.h							TODO

+ 96 - 0
docs/TODO.txt

@@ -0,0 +1,96 @@
+ == Crown TODO List ==
+
+ - Generic tasks
+  > Complete the basic windowing and openGl setup.
+   . Let's do it!
+     [Descr]: Once decided the structure and interfaces, implement them in both
+              linux and windows.
+     [State]: Work in progress.
+
+  > Implement basic data structures.
+   . List<T>
+     [Descr]: A class that wraps a typed array, and exposes an interface to man
+              ipulate it.
+     [State]: Completed.
+
+   . String
+     [Descr]: Handles a character array and exposes it as a string with methods
+              to manipulate it as a string and not a char array.
+     [Note]: An useful feature would be Copy On Write (COW) behaviour. Also usi
+             ng a StringPool as data allocator could be convenient for memory a
+             nd speed reasons.
+     [State]: Basic implementation completed.
+
+   . Dictionary<TKey, TValue>
+     [Descr]: A class to build dictionaries.
+              Required specifications are O(log(n)) speed for frequent function
+              s, such as:
+              - insert(TKey, TValue)
+              - remove(TKey)
+              - find(TKey)
+              - contains(TKey)
+     [State]: Completed.
+
+  > Enumerators. (See Enumerators.txt for further info)
+   . Implementation
+     [Descr]: Implement enumeration capabilites for structures that can expose 
+              them.
+     [State]: Supported containers:
+              - List<T>: Forward and Backward enumeration.
+              - Dictionary<Tkey, TValue>: Forward and Backward enumeration.
+
+  > Memory management.
+   . ManagedObject
+     [Descr]: Object base for objects whose memory should be tracked.
+     [State]: Functionality present, but to be optimized. (This far, it has a l
+              ot of overhead)
+   . GarbageBin
+     [Descr]: A Garbage collector that receives objects that must be deleted at
+              the end of the frame.
+     [State]: Completed.
+
+   . WeakPointer<T>
+     [Descr]: A pointer wrapper that becomes NULL automatically when the pointe
+              d objects gets destroyed.
+     [State]: To be implemented.
+
+  > Gui Subsystem. (See Gui.txt for info)
+   . Widget Skeleton
+     [Descr]: A solid base Widget that allows to build a tree representation of
+              Gui Objects.
+     [State]: Expanding methods as needed
+
+   . Window
+     [Descr]: A Window Widget with common functionalities and quick gestures.
+     [State]: Work in progress.
+
+   . WindowsManager
+     [Descr]: A Windows manager that handles windows and generates mouse and ke
+              yboards events for them.
+     [State]: Event system defined, introducing new events as needed
+		 					- Replace OnEvents params with proper structures
+
+   . Default Widgets
+     [Descr]: A set of ready to use widgets that offer the most common function
+              alities.
+     [State]: Work in progress.
+							-In Progress-
+              . ListView
+								- Multiple selection
+              . TextBox
+								- Selection
+								- Copy-Paste
+								- Blinking caret
+              -Completed-
+              . Button
+              . DragArea
+              . ThemeSpriteWidget
+              . Label
+              -Todo-
+				      . ScrollBar
+              . ScrollArea
+              . Checkbox
+              . Menu
+              . ContextualMenu
+              . TabView
+              . TreeView

+ 55 - 0
docs/libreria risorse.txt

@@ -0,0 +1,55 @@
+#########################
+#   Libreria risorse    #
+#########################
+Un file di libreria contiene un 'file system virtuale' in cui possono essere inseriti file di risorse, organizzati in 
+directory. E' eventualmente possibile comprimere le risorse.
+
+Struttura del file:
+I file e le directory sono rappresentati da delle entry contenute in blocchi di entry (o più semplicemente blocchi).
+Ogni blocco può contenere al massimo MAX_ENTRY_COUNT entry, per rappresentarne di più è possibile concatenare più 
+blocchi tramite l'apposito campo nextBlockOffset.
+In generale non c'è nessun vincolo sulla contiguità dei blocchi, ma è preferibile posizionarli vicini per motivi di eff
+icienza.
+Ogni file di libreria inizia con un header che identifica il tipo e la versione del file.
+Subito dopo l'header è presente un blocco che rappresenta la radice del file system. I blocchi possono contenere indiff
+erentemente file e directory.
+I file hanno dei dati, mentre le directory hanno un delle entry 'figlie'. Per questo, il campo contentOffset nel primo 
+caso indica l'inizio dei dati, mentre nel secondo indica l'offset del blocco di entry figlie.
+
+LibraryHeader
+{
+  uint magicNumber = 0xbabbe000;
+  ushort version;
+}
+
+Block
+{
+	uint nextBlockOffset;
+	uint entriesCount;
+	Descriptor[entriesCount]
+	{
+		uint ID;		//ID univoco
+		ushort type;		//Tipo della risorsa
+		char name[16];		//Nome (massimo 15 caratteri + '\0')
+		uint contentOffset;	//Se è una directory, punta al blocco dei figli, altrimenti ai dati della risorsa
+		uint contentSize;	//Se non è una directory indica la dimensione dei dati
+		uchar compression;	//Compressione, per ora nessuna supportata
+	};
+}
+
+---------Tipi risorse----------
+
+>Directory
+ Nome del tipo: RT_DIRECTORY
+ - Sezione dati:
+   non presente
+
+>Image
+ Nome del tipo: RT_IMAGE
+ - Note:
+   E' salvata dall'alto verso il basso.
+ - Sezione dati:
+   uint width;
+   uint height;
+   uint pixelFormat;
+   byte imageData[width*height*getBytesPerPixel(pixelFormat)];

+ 66 - 0
docs/memory.txt

@@ -0,0 +1,66 @@
+Memory Management for Crown
+(mostly based on "Building your own memory manager for C/C++ projects" by IBM)
+
+=== Why ===
+
+	* Improves application performance
+	* Allows to avoid memory leaks
+	* Can take care of memory corruption and other kind of errors hard to be detected in normal circumstances
+	* Allows memory tracking (profiling and statistics)
+
+=== Goals ===
+
+	* Speed
+		* Must be faster than the compiler-provided allocators
+		* Must provide optimized allocators for allocation patterns that occur frequently in the code
+
+	* Robustness
+		* Must return all the memory it requested to the system
+		* Must handle erroneus cases and bail out gracefully
+
+	* Fragmentation control
+		* Must provide effective ways to reduce fragmentation at minimum
+
+	* Debugging support
+		* Must provide some debuggin informations and corruption checking system
+		* Must be able to track memory usage and collect statistics
+
+=== Implementation details ===
+
+	* Free-lists based memory manager with allocators based on common strategies
+
+=== Development log ===
+
+	* Tue Jan 18 - First attempt
+		* I spent the last 4 hours trying to build a very simple memory manager based on the so called 'free-lists'.
+		* Only an advice: DO NOT TRY TO MANAGE THE LISTS WITH A List. :D
+		* I replaced List with the STL's list (doubly-linked list) and now it works decently. I've figured out
+		* that it's all about free-lists management. We need a fast management method based on fast data structures.
+		* The current implementation performs as follow:
+		*
+		* === Default memory management ===
+		* (De)alloc count: 10000000
+		*            Time: 916ms
+		* === Custom memory management ===
+		* (De)alloc count: 10000000
+		*            Time: 1290ms
+		*
+		* Which is pretty crappy, about 1.4x slower despite needing only 2 context switches versus approx 10000000... :|
+		* There's clearly something wrong.
+		*
+		* !!! UPDATE !!!
+		*
+		* Seems that using std::list to emulate what std::stack is designed for has not been a great idea. The same
+		* code running with the latter is much (6.2x) quicker:
+		*
+		* === Default memory management ===
+		* (De)alloc count: 10000000
+		*            Time: 973ms
+		* === Custom memory management ===
+		* (De)alloc count: 10000000
+		*            Time: 208ms
+		*
+		* Haha! Now we are "faster than a fucking tornado." (cit.) but unfortunately it's only the beginning, there's
+		* a ton of work to be accomplished. Anyway, nice to see some progress!
+		*
+

+ 126 - 0
docs/path-docs.txt

@@ -0,0 +1,126 @@
+	/**
+		Returns whether the segment is valid.
+	@note
+		The rules for valid segments are as follows:
+		a) The empty string is not valid.
+		b) Any string containing the slash character ('/') is not valid.
+		c) Common notations for current ('.') and parent ('..') directory are forbidden.
+		d) Any string containing segment or device separator characters on the local file system,
+		such as the backslash ('\') and colon (':') on some file systems.
+		(Thanks org.eclipse.core.runtime for the documentation ;D).
+	@param segment
+		The segment to be checked
+	@return
+		True if the segment is valid, false otherwise
+	*/
+	static bool IsValidSegment(const Str& segment);
+
+	/**
+		Returns whether the path is valid.
+	@note
+		The rules for valid paths are as follows:
+		a) The empty string is not valid.
+		b) If the path is absolute, it mustn't contain any leading character.
+	@param path
+		The path to be checked
+	@return
+		True if the path is valid, false otherwise
+	*/
+	static bool IsValidPath(const Str& path);
+
+	/**
+		Fills 'ret' with the same path but without the trailing directory separator.
+	@note
+		(e.g. /home/babbeo/texture.tga/ -> /home/babbeo/texture.tga).
+	@param path
+		The input path
+	@param ret
+		The ouput path
+	@return
+		True if success, false otherwise
+	*/
+	static bool RemoveTrailingSeparator(const Str& path, Str& ret);
+
+	/**
+		Returns whether the path is absolute.
+	@note
+		(i.e. starts with Path::SEPARATOR or <a-Z><Path::DEVICE_SEPARATOR><Path::SEPARATOR>).
+	@param path
+		The path to be checked
+	@return
+		True if absolute, false otherwise
+	*/
+	static bool IsAbsolutePath(const Str& path);
+
+	/**
+		Returns whether the path is a root path.
+	@note
+		(i.e. starts and ends with Path::SEPARATOR or <a-Z><Path::DEVICE_SEPARATOR><Path::SEPARATOR>).
+	@param path
+		The path to be checked
+	@return
+		True if root, false otherwise
+	*/
+	static bool IsRootPath(const Str& path);
+
+	/**
+		Returns the pathname of the path.
+	@note
+		(e.g. /home/babbeo/texture.tga -> /home/babbeo).
+	@param path
+		The input path
+	@param ret
+		The output pathname
+	@return
+		True if success, false otherwise
+	*/
+	static bool GetPathname(const Str& path, Str& ret);
+
+	/**
+		Returns the filename of the path.
+	@note
+		(e.g. /home/babbeo/texture.tga -> texture.tga).
+	@param path
+		The input path
+	@param ret
+		The output filename
+	@return
+		True if success, false otherwise
+	*/
+	static bool GetFilename(const Str& path, Str& ret);
+
+	/**
+		Returns the basename of the path.
+	@note
+		(e.g. /home/babbeo/texture.tga -> texture).
+	@param path
+		The input path
+	@param ret
+		The output basename
+	@return
+		True if success, false otherwise
+	*/
+	static bool GetBasename(const Str& path, Str& ret);
+
+	/**
+		Returns the extension of the path.
+	@note
+		(e.g. /home/babbeo/texture.tga -> tga).
+	@param path
+		The input path
+	@param ret
+		The output extension
+	@return
+		True if success, false otherwise
+	*/
+	static bool GetFileExtension(const Str& path, Str& ret);
+
+	/**
+		Returns the segments contained in path.
+	@param path
+		The input path
+	@param ret
+		The output list containing path's segments
+	@return
+		True if success, false otherwise
+	*/

+ 5 - 0
proj/netbeans/crown/.dep.inc

@@ -0,0 +1,5 @@
+# This code depends on make tool being used
+DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES}))
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif

+ 109 - 0
proj/netbeans/crown/Makefile

@@ -0,0 +1,109 @@
+#
+#  There exist several targets which are by default empty and which can be 
+#  used for execution of your targets. These targets are usually executed 
+#  before and after some main targets. They are: 
+#
+#     .build-pre:              called before 'build' target
+#     .build-post:             called after 'build' target
+#     .clean-pre:              called before 'clean' target
+#     .clean-post:             called after 'clean' target
+#     .clobber-pre:            called before 'clobber' target
+#     .clobber-post:           called after 'clobber' target
+#     .all-pre:                called before 'all' target
+#     .all-post:               called after 'all' target
+#     .help-pre:               called before 'help' target
+#     .help-post:              called after 'help' target
+#
+#  Targets beginning with '.' are not intended to be called on their own.
+#
+#  Main targets can be executed directly, and they are:
+#  
+#     build                    build a specific configuration
+#     clean                    remove built files from a configuration
+#     clobber                  remove all built files
+#     all                      build all configurations
+#     help                     print help mesage
+#  
+#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+#  .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+#  Available make variables:
+#
+#     CND_BASEDIR                base directory for relative paths
+#     CND_DISTDIR                default top distribution directory (build artifacts)
+#     CND_BUILDDIR               default top build directory (object files, ...)
+#     CONF                       name of current configuration
+#     CND_PLATFORM_${CONF}       platform name (current configuration)
+#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
+#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
+#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
+#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
+#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
+#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment 
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk

+ 3 - 0
proj/netbeans/crown/nbproject/.directory

@@ -0,0 +1,3 @@
+[Dolphin]
+Timestamp=2010,11,3,14,15,15
+ViewMode=1

+ 613 - 0
proj/netbeans/crown/nbproject/Makefile-Debug.mk

@@ -0,0 +1,613 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+GREP=grep
+NM=nm
+CCADMIN=CCadmin
+RANLIB=ranlib
+CC=gcc
+CCC=g++
+CXX=g++
+FC=gfortran
+AS=as
+
+# Macros
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Debug
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+
+# Include project Makefile
+include Makefile
+
+# Object Directory
+OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
+
+# Object Files
+OBJECTFILES= \
+	${OBJECTDIR}/_ext/869353830/XMLReader.o \
+	${OBJECTDIR}/_ext/1386528437/SceneNode.o \
+	${OBJECTDIR}/_ext/1386528437/Scene.o \
+	${OBJECTDIR}/_ext/1602971067/Filesystem.o \
+	${OBJECTDIR}/_ext/869353830/BMPImageLoader.o \
+	${OBJECTDIR}/_ext/1386528437/Device.o \
+	${OBJECTDIR}/_ext/1981702495/LunaTheme.o \
+	${OBJECTDIR}/_ext/613309208/Widget.o \
+	${OBJECTDIR}/_ext/613309208/Bind.o \
+	${OBJECTDIR}/_ext/845317374/GLXRenderWindow.o \
+	${OBJECTDIR}/_ext/1386528437/MeshChunk.o \
+	${OBJECTDIR}/_ext/1134220929/ManagedObject.o \
+	${OBJECTDIR}/_ext/1386528437/Font.o \
+	${OBJECTDIR}/_ext/613309208/Themes.o \
+	${OBJECTDIR}/_ext/1487432554/Frustum.o \
+	${OBJECTDIR}/_ext/1386528437/WindowEventHandler.o \
+	${OBJECTDIR}/_ext/801113954/Angles.o \
+	${OBJECTDIR}/_ext/1550003496/StringUtils.o \
+	${OBJECTDIR}/_ext/1386528437/RenderWindow.o \
+	${OBJECTDIR}/_ext/801113954/Vec4.o \
+	${OBJECTDIR}/_ext/1386528437/Log.o \
+	${OBJECTDIR}/_ext/2049961054/GLRenderer.o \
+	${OBJECTDIR}/_ext/801113954/Mat4.o \
+	${OBJECTDIR}/_ext/2049961054/GLTextRenderer.o \
+	${OBJECTDIR}/_ext/613309208/DragArea.o \
+	${OBJECTDIR}/_ext/869353830/XWMLReader.o \
+	${OBJECTDIR}/_ext/1386528437/ResourceManager.o \
+	${OBJECTDIR}/_ext/1386528437/Timer.o \
+	${OBJECTDIR}/_ext/801113954/Point2.o \
+	${OBJECTDIR}/_ext/801113954/Vec2.o \
+	${OBJECTDIR}/_ext/1386528437/Camera.o \
+	${OBJECTDIR}/_ext/1386528437/FontManager.o \
+	${OBJECTDIR}/_ext/1386528437/MeshManager.o \
+	${OBJECTDIR}/_ext/1575338083/FileStream.o \
+	${OBJECTDIR}/_ext/1550003496/Generic.o \
+	${OBJECTDIR}/_ext/4811410/StackLayout.o \
+	${OBJECTDIR}/_ext/801113954/Color.o \
+	${OBJECTDIR}/_ext/1386528437/Frame.o \
+	${OBJECTDIR}/_ext/1386528437/XCursorControl.o \
+	${OBJECTDIR}/_ext/1386528437/App.o \
+	${OBJECTDIR}/_ext/801113954/Vec3.o \
+	${OBJECTDIR}/_ext/869353830/TGAImageLoader.o \
+	${OBJECTDIR}/_ext/2049961054/GLVertexBuffer.o \
+	${OBJECTDIR}/_ext/1386528437/Image.o \
+	${OBJECTDIR}/_ext/801113954/Plane.o \
+	${OBJECTDIR}/_ext/1386528437/MovableCamera.o \
+	${OBJECTDIR}/_ext/1134220929/GarbageBin.o \
+	${OBJECTDIR}/_ext/1386528437/Pixel.o \
+	${OBJECTDIR}/_ext/1386528437/Light.o \
+	${OBJECTDIR}/_ext/845302165/WGLRenderWindow.o \
+	${OBJECTDIR}/_ext/1602971067/Path.o \
+	${OBJECTDIR}/_ext/613309208/Window.o \
+	${OBJECTDIR}/_ext/608447161/Observable.o \
+	${OBJECTDIR}/_ext/613309208/ListView.o \
+	${OBJECTDIR}/_ext/1386528437/RenderTarget.o \
+	${OBJECTDIR}/_ext/845302165/WGLGLSupport.o \
+	${OBJECTDIR}/_ext/801113954/Mat3.o \
+	${OBJECTDIR}/_ext/2049961054/GLTextureManager.o \
+	${OBJECTDIR}/_ext/1386528437/Material.o \
+	${OBJECTDIR}/_ext/4811410/CanvasLayout.o \
+	${OBJECTDIR}/_ext/2049961054/GLIndexBuffer.o \
+	${OBJECTDIR}/_ext/613309208/WindowsManager.o \
+	${OBJECTDIR}/_ext/613309208/TextBox.o \
+	${OBJECTDIR}/_ext/1386528437/Entity.o \
+	${OBJECTDIR}/_ext/608447161/Object.o \
+	${OBJECTDIR}/_ext/1575338083/Stream.o \
+	${OBJECTDIR}/_ext/613309208/Label.o \
+	${OBJECTDIR}/_ext/2049961054/GLTexture.o \
+	${OBJECTDIR}/_ext/801113954/Quat.o \
+	${OBJECTDIR}/_ext/1093628612/TextInputWindow.o \
+	${OBJECTDIR}/_ext/2049961054/GLOcclusionQuery.o \
+	${OBJECTDIR}/_ext/801113954/MathUtils.o \
+	${OBJECTDIR}/_ext/1575338083/FileSubStream.o \
+	${OBJECTDIR}/_ext/1386528437/Sprite.o \
+	${OBJECTDIR}/_ext/845317374/GLXGLSupport.o \
+	${OBJECTDIR}/_ext/869353830/CRWDecoder.o \
+	${OBJECTDIR}/_ext/1386528437/Mesh.o \
+	${OBJECTDIR}/_ext/1386528437/Skybox.o \
+	${OBJECTDIR}/_ext/2049961054/GLSupport.o \
+	${OBJECTDIR}/_ext/1093628612/MessageWindow.o \
+	${OBJECTDIR}/_ext/613309208/ScrollArea.o \
+	${OBJECTDIR}/_ext/613309208/Button.o \
+	${OBJECTDIR}/_ext/1386528437/WinCursorControl.o \
+	${OBJECTDIR}/_ext/1386528437/SceneManager.o \
+	${OBJECTDIR}/_ext/845317374/GLXRenderContext.o \
+	${OBJECTDIR}/_ext/845302165/WGLRenderContext.o \
+	${OBJECTDIR}/_ext/1386528437/Viewport.o \
+	${OBJECTDIR}/_ext/1575338083/MemoryStream.o \
+	${OBJECTDIR}/_ext/1386528437/LogManager.o
+
+
+# C Compiler Flags
+CFLAGS=
+
+# CC Compiler Flags
+CCFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+CXXFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+
+# Fortran Compiler Flags
+FFLAGS=
+
+# Assembler Flags
+ASFLAGS=
+
+# Link Libraries and Options
+LDLIBSOPTIONS=
+
+# Build Targets
+.build-conf: ${BUILD_SUBPROJECTS}
+	"${MAKE}"  -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a: ${OBJECTFILES}
+	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
+	${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+	${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a ${OBJECTFILES} 
+	$(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+
+${OBJECTDIR}/_ext/869353830/XMLReader.o: ../../../src/loaders/XMLReader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/XMLReader.o ../../../src/loaders/XMLReader.cpp
+
+${OBJECTDIR}/_ext/1386528437/SceneNode.o: ../../../src/SceneNode.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/SceneNode.o ../../../src/SceneNode.cpp
+
+${OBJECTDIR}/_ext/1386528437/Scene.o: ../../../src/Scene.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Scene.o ../../../src/Scene.cpp
+
+${OBJECTDIR}/_ext/1602971067/Filesystem.o: ../../../src/filesystem/Filesystem.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1602971067
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1602971067/Filesystem.o ../../../src/filesystem/Filesystem.cpp
+
+${OBJECTDIR}/_ext/869353830/BMPImageLoader.o: ../../../src/loaders/BMPImageLoader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/BMPImageLoader.o ../../../src/loaders/BMPImageLoader.cpp
+
+${OBJECTDIR}/_ext/1386528437/Device.o: ../../../src/Device.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Device.o ../../../src/Device.cpp
+
+${OBJECTDIR}/_ext/1981702495/LunaTheme.o: ../../../src/windowing/themes/LunaTheme.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1981702495
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1981702495/LunaTheme.o ../../../src/windowing/themes/LunaTheme.cpp
+
+${OBJECTDIR}/_ext/613309208/Widget.o: ../../../src/windowing/Widget.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Widget.o ../../../src/windowing/Widget.cpp
+
+${OBJECTDIR}/_ext/613309208/Bind.o: ../../../src/windowing/Bind.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Bind.o ../../../src/windowing/Bind.cpp
+
+${OBJECTDIR}/_ext/845317374/GLXRenderWindow.o: ../../../src/renderers/gl/glx/GLXRenderWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845317374
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845317374/GLXRenderWindow.o ../../../src/renderers/gl/glx/GLXRenderWindow.cpp
+
+${OBJECTDIR}/_ext/1386528437/MeshChunk.o: ../../../src/MeshChunk.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/MeshChunk.o ../../../src/MeshChunk.cpp
+
+${OBJECTDIR}/_ext/1134220929/ManagedObject.o: ../../../src/core/mem/ManagedObject.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1134220929
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1134220929/ManagedObject.o ../../../src/core/mem/ManagedObject.cpp
+
+${OBJECTDIR}/_ext/1386528437/Font.o: ../../../src/Font.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Font.o ../../../src/Font.cpp
+
+${OBJECTDIR}/_ext/613309208/Themes.o: ../../../src/windowing/Themes.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Themes.o ../../../src/windowing/Themes.cpp
+
+${OBJECTDIR}/_ext/1487432554/Frustum.o: ../../../src/core/bv/Frustum.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1487432554
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1487432554/Frustum.o ../../../src/core/bv/Frustum.cpp
+
+${OBJECTDIR}/_ext/1386528437/WindowEventHandler.o: ../../../src/WindowEventHandler.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/WindowEventHandler.o ../../../src/WindowEventHandler.cpp
+
+${OBJECTDIR}/_ext/801113954/Angles.o: ../../../src/core/math/Angles.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Angles.o ../../../src/core/math/Angles.cpp
+
+${OBJECTDIR}/_ext/1550003496/StringUtils.o: ../../../src/core/containers/StringUtils.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1550003496
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1550003496/StringUtils.o ../../../src/core/containers/StringUtils.cpp
+
+${OBJECTDIR}/_ext/1386528437/RenderWindow.o: ../../../src/RenderWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/RenderWindow.o ../../../src/RenderWindow.cpp
+
+${OBJECTDIR}/_ext/801113954/Vec4.o: ../../../src/core/math/Vec4.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Vec4.o ../../../src/core/math/Vec4.cpp
+
+${OBJECTDIR}/_ext/1386528437/Log.o: ../../../src/Log.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Log.o ../../../src/Log.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLRenderer.o: ../../../src/renderers/gl/GLRenderer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLRenderer.o ../../../src/renderers/gl/GLRenderer.cpp
+
+${OBJECTDIR}/_ext/801113954/Mat4.o: ../../../src/core/math/Mat4.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Mat4.o ../../../src/core/math/Mat4.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLTextRenderer.o: ../../../src/renderers/gl/GLTextRenderer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLTextRenderer.o ../../../src/renderers/gl/GLTextRenderer.cpp
+
+${OBJECTDIR}/_ext/613309208/DragArea.o: ../../../src/windowing/DragArea.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/DragArea.o ../../../src/windowing/DragArea.cpp
+
+${OBJECTDIR}/_ext/869353830/XWMLReader.o: ../../../src/loaders/XWMLReader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/XWMLReader.o ../../../src/loaders/XWMLReader.cpp
+
+${OBJECTDIR}/_ext/1386528437/ResourceManager.o: ../../../src/ResourceManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/ResourceManager.o ../../../src/ResourceManager.cpp
+
+${OBJECTDIR}/_ext/1386528437/Timer.o: ../../../src/Timer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Timer.o ../../../src/Timer.cpp
+
+${OBJECTDIR}/_ext/801113954/Point2.o: ../../../src/core/math/Point2.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Point2.o ../../../src/core/math/Point2.cpp
+
+${OBJECTDIR}/_ext/801113954/Vec2.o: ../../../src/core/math/Vec2.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Vec2.o ../../../src/core/math/Vec2.cpp
+
+${OBJECTDIR}/_ext/1386528437/Camera.o: ../../../src/Camera.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Camera.o ../../../src/Camera.cpp
+
+${OBJECTDIR}/_ext/1386528437/FontManager.o: ../../../src/FontManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/FontManager.o ../../../src/FontManager.cpp
+
+${OBJECTDIR}/_ext/1386528437/MeshManager.o: ../../../src/MeshManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/MeshManager.o ../../../src/MeshManager.cpp
+
+${OBJECTDIR}/_ext/1575338083/FileStream.o: ../../../src/core/streams/FileStream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/FileStream.o ../../../src/core/streams/FileStream.cpp
+
+${OBJECTDIR}/_ext/1550003496/Generic.o: ../../../src/core/containers/Generic.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1550003496
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1550003496/Generic.o ../../../src/core/containers/Generic.cpp
+
+${OBJECTDIR}/_ext/4811410/StackLayout.o: ../../../src/windowing/layouts/StackLayout.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/4811410
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/4811410/StackLayout.o ../../../src/windowing/layouts/StackLayout.cpp
+
+${OBJECTDIR}/_ext/801113954/Color.o: ../../../src/core/math/Color.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Color.o ../../../src/core/math/Color.cpp
+
+${OBJECTDIR}/_ext/1386528437/Frame.o: ../../../src/Frame.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Frame.o ../../../src/Frame.cpp
+
+${OBJECTDIR}/_ext/1386528437/XCursorControl.o: ../../../src/XCursorControl.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/XCursorControl.o ../../../src/XCursorControl.cpp
+
+${OBJECTDIR}/_ext/1386528437/App.o: ../../../src/App.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/App.o ../../../src/App.cpp
+
+${OBJECTDIR}/_ext/801113954/Vec3.o: ../../../src/core/math/Vec3.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Vec3.o ../../../src/core/math/Vec3.cpp
+
+${OBJECTDIR}/_ext/869353830/TGAImageLoader.o: ../../../src/loaders/TGAImageLoader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/TGAImageLoader.o ../../../src/loaders/TGAImageLoader.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLVertexBuffer.o: ../../../src/renderers/gl/GLVertexBuffer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLVertexBuffer.o ../../../src/renderers/gl/GLVertexBuffer.cpp
+
+${OBJECTDIR}/_ext/1386528437/Image.o: ../../../src/Image.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Image.o ../../../src/Image.cpp
+
+${OBJECTDIR}/_ext/801113954/Plane.o: ../../../src/core/math/Plane.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Plane.o ../../../src/core/math/Plane.cpp
+
+${OBJECTDIR}/_ext/1386528437/MovableCamera.o: ../../../src/MovableCamera.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/MovableCamera.o ../../../src/MovableCamera.cpp
+
+${OBJECTDIR}/_ext/1134220929/GarbageBin.o: ../../../src/core/mem/GarbageBin.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1134220929
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1134220929/GarbageBin.o ../../../src/core/mem/GarbageBin.cpp
+
+${OBJECTDIR}/_ext/1386528437/Pixel.o: ../../../src/Pixel.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Pixel.o ../../../src/Pixel.cpp
+
+${OBJECTDIR}/_ext/1386528437/Light.o: ../../../src/Light.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Light.o ../../../src/Light.cpp
+
+${OBJECTDIR}/_ext/845302165/WGLRenderWindow.o: ../../../src/renderers/gl/wgl/WGLRenderWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845302165
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845302165/WGLRenderWindow.o ../../../src/renderers/gl/wgl/WGLRenderWindow.cpp
+
+${OBJECTDIR}/_ext/1602971067/Path.o: ../../../src/filesystem/Path.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1602971067
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1602971067/Path.o ../../../src/filesystem/Path.cpp
+
+${OBJECTDIR}/_ext/613309208/Window.o: ../../../src/windowing/Window.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Window.o ../../../src/windowing/Window.cpp
+
+${OBJECTDIR}/_ext/608447161/Observable.o: ../../../src/core/Observable.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/608447161
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/608447161/Observable.o ../../../src/core/Observable.cpp
+
+${OBJECTDIR}/_ext/613309208/ListView.o: ../../../src/windowing/ListView.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/ListView.o ../../../src/windowing/ListView.cpp
+
+${OBJECTDIR}/_ext/1386528437/RenderTarget.o: ../../../src/RenderTarget.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/RenderTarget.o ../../../src/RenderTarget.cpp
+
+${OBJECTDIR}/_ext/845302165/WGLGLSupport.o: ../../../src/renderers/gl/wgl/WGLGLSupport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845302165
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845302165/WGLGLSupport.o ../../../src/renderers/gl/wgl/WGLGLSupport.cpp
+
+${OBJECTDIR}/_ext/801113954/Mat3.o: ../../../src/core/math/Mat3.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Mat3.o ../../../src/core/math/Mat3.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLTextureManager.o: ../../../src/renderers/gl/GLTextureManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLTextureManager.o ../../../src/renderers/gl/GLTextureManager.cpp
+
+${OBJECTDIR}/_ext/1386528437/Material.o: ../../../src/Material.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Material.o ../../../src/Material.cpp
+
+${OBJECTDIR}/_ext/4811410/CanvasLayout.o: ../../../src/windowing/layouts/CanvasLayout.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/4811410
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/4811410/CanvasLayout.o ../../../src/windowing/layouts/CanvasLayout.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLIndexBuffer.o: ../../../src/renderers/gl/GLIndexBuffer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLIndexBuffer.o ../../../src/renderers/gl/GLIndexBuffer.cpp
+
+${OBJECTDIR}/_ext/613309208/WindowsManager.o: ../../../src/windowing/WindowsManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/WindowsManager.o ../../../src/windowing/WindowsManager.cpp
+
+${OBJECTDIR}/_ext/613309208/TextBox.o: ../../../src/windowing/TextBox.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/TextBox.o ../../../src/windowing/TextBox.cpp
+
+${OBJECTDIR}/_ext/1386528437/Entity.o: ../../../src/Entity.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Entity.o ../../../src/Entity.cpp
+
+${OBJECTDIR}/_ext/608447161/Object.o: ../../../src/core/Object.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/608447161
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/608447161/Object.o ../../../src/core/Object.cpp
+
+${OBJECTDIR}/_ext/1575338083/Stream.o: ../../../src/core/streams/Stream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/Stream.o ../../../src/core/streams/Stream.cpp
+
+${OBJECTDIR}/_ext/613309208/Label.o: ../../../src/windowing/Label.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Label.o ../../../src/windowing/Label.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLTexture.o: ../../../src/renderers/gl/GLTexture.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLTexture.o ../../../src/renderers/gl/GLTexture.cpp
+
+${OBJECTDIR}/_ext/801113954/Quat.o: ../../../src/core/math/Quat.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Quat.o ../../../src/core/math/Quat.cpp
+
+${OBJECTDIR}/_ext/1093628612/TextInputWindow.o: ../../../src/windowing/toolbox/TextInputWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1093628612
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1093628612/TextInputWindow.o ../../../src/windowing/toolbox/TextInputWindow.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLOcclusionQuery.o: ../../../src/renderers/gl/GLOcclusionQuery.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLOcclusionQuery.o ../../../src/renderers/gl/GLOcclusionQuery.cpp
+
+${OBJECTDIR}/_ext/801113954/MathUtils.o: ../../../src/core/math/MathUtils.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/MathUtils.o ../../../src/core/math/MathUtils.cpp
+
+${OBJECTDIR}/_ext/1575338083/FileSubStream.o: ../../../src/core/streams/FileSubStream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/FileSubStream.o ../../../src/core/streams/FileSubStream.cpp
+
+${OBJECTDIR}/_ext/1386528437/Sprite.o: ../../../src/Sprite.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Sprite.o ../../../src/Sprite.cpp
+
+${OBJECTDIR}/_ext/845317374/GLXGLSupport.o: ../../../src/renderers/gl/glx/GLXGLSupport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845317374
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845317374/GLXGLSupport.o ../../../src/renderers/gl/glx/GLXGLSupport.cpp
+
+${OBJECTDIR}/_ext/869353830/CRWDecoder.o: ../../../src/loaders/CRWDecoder.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/CRWDecoder.o ../../../src/loaders/CRWDecoder.cpp
+
+${OBJECTDIR}/_ext/1386528437/Mesh.o: ../../../src/Mesh.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Mesh.o ../../../src/Mesh.cpp
+
+${OBJECTDIR}/_ext/1386528437/Skybox.o: ../../../src/Skybox.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Skybox.o ../../../src/Skybox.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLSupport.o: ../../../src/renderers/gl/GLSupport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLSupport.o ../../../src/renderers/gl/GLSupport.cpp
+
+${OBJECTDIR}/_ext/1093628612/MessageWindow.o: ../../../src/windowing/toolbox/MessageWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1093628612
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1093628612/MessageWindow.o ../../../src/windowing/toolbox/MessageWindow.cpp
+
+${OBJECTDIR}/_ext/613309208/ScrollArea.o: ../../../src/windowing/ScrollArea.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/ScrollArea.o ../../../src/windowing/ScrollArea.cpp
+
+${OBJECTDIR}/_ext/613309208/Button.o: ../../../src/windowing/Button.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Button.o ../../../src/windowing/Button.cpp
+
+${OBJECTDIR}/_ext/1386528437/WinCursorControl.o: ../../../src/WinCursorControl.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/WinCursorControl.o ../../../src/WinCursorControl.cpp
+
+${OBJECTDIR}/_ext/1386528437/SceneManager.o: ../../../src/SceneManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/SceneManager.o ../../../src/SceneManager.cpp
+
+${OBJECTDIR}/_ext/845317374/GLXRenderContext.o: ../../../src/renderers/gl/glx/GLXRenderContext.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845317374
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845317374/GLXRenderContext.o ../../../src/renderers/gl/glx/GLXRenderContext.cpp
+
+${OBJECTDIR}/_ext/845302165/WGLRenderContext.o: ../../../src/renderers/gl/wgl/WGLRenderContext.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845302165
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845302165/WGLRenderContext.o ../../../src/renderers/gl/wgl/WGLRenderContext.cpp
+
+${OBJECTDIR}/_ext/1386528437/Viewport.o: ../../../src/Viewport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Viewport.o ../../../src/Viewport.cpp
+
+${OBJECTDIR}/_ext/1575338083/MemoryStream.o: ../../../src/core/streams/MemoryStream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/MemoryStream.o ../../../src/core/streams/MemoryStream.cpp
+
+${OBJECTDIR}/_ext/1386528437/LogManager.o: ../../../src/LogManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/LogManager.o ../../../src/LogManager.cpp
+
+# Subprojects
+.build-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${CND_BUILDDIR}/${CND_CONF}
+	${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+
+# Subprojects
+.clean-subprojects:
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+include .dep.inc

+ 613 - 0
proj/netbeans/crown/nbproject/Makefile-Release.mk

@@ -0,0 +1,613 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+GREP=grep
+NM=nm
+CCADMIN=CCadmin
+RANLIB=ranlib
+CC=gcc
+CCC=g++
+CXX=g++
+FC=gfortran
+AS=as
+
+# Macros
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Release
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+
+# Include project Makefile
+include Makefile
+
+# Object Directory
+OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
+
+# Object Files
+OBJECTFILES= \
+	${OBJECTDIR}/_ext/869353830/XMLReader.o \
+	${OBJECTDIR}/_ext/1386528437/SceneNode.o \
+	${OBJECTDIR}/_ext/1386528437/Scene.o \
+	${OBJECTDIR}/_ext/1602971067/Filesystem.o \
+	${OBJECTDIR}/_ext/869353830/BMPImageLoader.o \
+	${OBJECTDIR}/_ext/1386528437/Device.o \
+	${OBJECTDIR}/_ext/1981702495/LunaTheme.o \
+	${OBJECTDIR}/_ext/613309208/Widget.o \
+	${OBJECTDIR}/_ext/613309208/Bind.o \
+	${OBJECTDIR}/_ext/845317374/GLXRenderWindow.o \
+	${OBJECTDIR}/_ext/1386528437/MeshChunk.o \
+	${OBJECTDIR}/_ext/1134220929/ManagedObject.o \
+	${OBJECTDIR}/_ext/1386528437/Font.o \
+	${OBJECTDIR}/_ext/613309208/Themes.o \
+	${OBJECTDIR}/_ext/1487432554/Frustum.o \
+	${OBJECTDIR}/_ext/1386528437/WindowEventHandler.o \
+	${OBJECTDIR}/_ext/801113954/Angles.o \
+	${OBJECTDIR}/_ext/1550003496/StringUtils.o \
+	${OBJECTDIR}/_ext/1386528437/RenderWindow.o \
+	${OBJECTDIR}/_ext/801113954/Vec4.o \
+	${OBJECTDIR}/_ext/1386528437/Log.o \
+	${OBJECTDIR}/_ext/2049961054/GLRenderer.o \
+	${OBJECTDIR}/_ext/801113954/Mat4.o \
+	${OBJECTDIR}/_ext/2049961054/GLTextRenderer.o \
+	${OBJECTDIR}/_ext/613309208/DragArea.o \
+	${OBJECTDIR}/_ext/869353830/XWMLReader.o \
+	${OBJECTDIR}/_ext/1386528437/ResourceManager.o \
+	${OBJECTDIR}/_ext/1386528437/Timer.o \
+	${OBJECTDIR}/_ext/801113954/Point2.o \
+	${OBJECTDIR}/_ext/801113954/Vec2.o \
+	${OBJECTDIR}/_ext/1386528437/Camera.o \
+	${OBJECTDIR}/_ext/1386528437/FontManager.o \
+	${OBJECTDIR}/_ext/1386528437/MeshManager.o \
+	${OBJECTDIR}/_ext/1575338083/FileStream.o \
+	${OBJECTDIR}/_ext/1550003496/Generic.o \
+	${OBJECTDIR}/_ext/4811410/StackLayout.o \
+	${OBJECTDIR}/_ext/801113954/Color.o \
+	${OBJECTDIR}/_ext/1386528437/Frame.o \
+	${OBJECTDIR}/_ext/1386528437/XCursorControl.o \
+	${OBJECTDIR}/_ext/1386528437/App.o \
+	${OBJECTDIR}/_ext/801113954/Vec3.o \
+	${OBJECTDIR}/_ext/869353830/TGAImageLoader.o \
+	${OBJECTDIR}/_ext/2049961054/GLVertexBuffer.o \
+	${OBJECTDIR}/_ext/1386528437/Image.o \
+	${OBJECTDIR}/_ext/801113954/Plane.o \
+	${OBJECTDIR}/_ext/1386528437/MovableCamera.o \
+	${OBJECTDIR}/_ext/1134220929/GarbageBin.o \
+	${OBJECTDIR}/_ext/1386528437/Pixel.o \
+	${OBJECTDIR}/_ext/1386528437/Light.o \
+	${OBJECTDIR}/_ext/845302165/WGLRenderWindow.o \
+	${OBJECTDIR}/_ext/1602971067/Path.o \
+	${OBJECTDIR}/_ext/613309208/Window.o \
+	${OBJECTDIR}/_ext/608447161/Observable.o \
+	${OBJECTDIR}/_ext/613309208/ListView.o \
+	${OBJECTDIR}/_ext/1386528437/RenderTarget.o \
+	${OBJECTDIR}/_ext/845302165/WGLGLSupport.o \
+	${OBJECTDIR}/_ext/801113954/Mat3.o \
+	${OBJECTDIR}/_ext/2049961054/GLTextureManager.o \
+	${OBJECTDIR}/_ext/1386528437/Material.o \
+	${OBJECTDIR}/_ext/4811410/CanvasLayout.o \
+	${OBJECTDIR}/_ext/2049961054/GLIndexBuffer.o \
+	${OBJECTDIR}/_ext/613309208/WindowsManager.o \
+	${OBJECTDIR}/_ext/613309208/TextBox.o \
+	${OBJECTDIR}/_ext/1386528437/Entity.o \
+	${OBJECTDIR}/_ext/608447161/Object.o \
+	${OBJECTDIR}/_ext/1575338083/Stream.o \
+	${OBJECTDIR}/_ext/613309208/Label.o \
+	${OBJECTDIR}/_ext/2049961054/GLTexture.o \
+	${OBJECTDIR}/_ext/801113954/Quat.o \
+	${OBJECTDIR}/_ext/1093628612/TextInputWindow.o \
+	${OBJECTDIR}/_ext/2049961054/GLOcclusionQuery.o \
+	${OBJECTDIR}/_ext/801113954/MathUtils.o \
+	${OBJECTDIR}/_ext/1575338083/FileSubStream.o \
+	${OBJECTDIR}/_ext/1386528437/Sprite.o \
+	${OBJECTDIR}/_ext/845317374/GLXGLSupport.o \
+	${OBJECTDIR}/_ext/869353830/CRWDecoder.o \
+	${OBJECTDIR}/_ext/1386528437/Mesh.o \
+	${OBJECTDIR}/_ext/1386528437/Skybox.o \
+	${OBJECTDIR}/_ext/2049961054/GLSupport.o \
+	${OBJECTDIR}/_ext/1093628612/MessageWindow.o \
+	${OBJECTDIR}/_ext/613309208/ScrollArea.o \
+	${OBJECTDIR}/_ext/613309208/Button.o \
+	${OBJECTDIR}/_ext/1386528437/WinCursorControl.o \
+	${OBJECTDIR}/_ext/1386528437/SceneManager.o \
+	${OBJECTDIR}/_ext/845317374/GLXRenderContext.o \
+	${OBJECTDIR}/_ext/845302165/WGLRenderContext.o \
+	${OBJECTDIR}/_ext/1386528437/Viewport.o \
+	${OBJECTDIR}/_ext/1575338083/MemoryStream.o \
+	${OBJECTDIR}/_ext/1386528437/LogManager.o
+
+
+# C Compiler Flags
+CFLAGS=
+
+# CC Compiler Flags
+CCFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+CXXFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+
+# Fortran Compiler Flags
+FFLAGS=
+
+# Assembler Flags
+ASFLAGS=
+
+# Link Libraries and Options
+LDLIBSOPTIONS=
+
+# Build Targets
+.build-conf: ${BUILD_SUBPROJECTS}
+	"${MAKE}"  -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a: ${OBJECTFILES}
+	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
+	${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+	${AR} -rv ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a ${OBJECTFILES} 
+	$(RANLIB) ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+
+${OBJECTDIR}/_ext/869353830/XMLReader.o: ../../../src/loaders/XMLReader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/XMLReader.o ../../../src/loaders/XMLReader.cpp
+
+${OBJECTDIR}/_ext/1386528437/SceneNode.o: ../../../src/SceneNode.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/SceneNode.o ../../../src/SceneNode.cpp
+
+${OBJECTDIR}/_ext/1386528437/Scene.o: ../../../src/Scene.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Scene.o ../../../src/Scene.cpp
+
+${OBJECTDIR}/_ext/1602971067/Filesystem.o: ../../../src/filesystem/Filesystem.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1602971067
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1602971067/Filesystem.o ../../../src/filesystem/Filesystem.cpp
+
+${OBJECTDIR}/_ext/869353830/BMPImageLoader.o: ../../../src/loaders/BMPImageLoader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/BMPImageLoader.o ../../../src/loaders/BMPImageLoader.cpp
+
+${OBJECTDIR}/_ext/1386528437/Device.o: ../../../src/Device.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Device.o ../../../src/Device.cpp
+
+${OBJECTDIR}/_ext/1981702495/LunaTheme.o: ../../../src/windowing/themes/LunaTheme.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1981702495
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1981702495/LunaTheme.o ../../../src/windowing/themes/LunaTheme.cpp
+
+${OBJECTDIR}/_ext/613309208/Widget.o: ../../../src/windowing/Widget.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Widget.o ../../../src/windowing/Widget.cpp
+
+${OBJECTDIR}/_ext/613309208/Bind.o: ../../../src/windowing/Bind.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Bind.o ../../../src/windowing/Bind.cpp
+
+${OBJECTDIR}/_ext/845317374/GLXRenderWindow.o: ../../../src/renderers/gl/glx/GLXRenderWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845317374
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845317374/GLXRenderWindow.o ../../../src/renderers/gl/glx/GLXRenderWindow.cpp
+
+${OBJECTDIR}/_ext/1386528437/MeshChunk.o: ../../../src/MeshChunk.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/MeshChunk.o ../../../src/MeshChunk.cpp
+
+${OBJECTDIR}/_ext/1134220929/ManagedObject.o: ../../../src/core/mem/ManagedObject.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1134220929
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1134220929/ManagedObject.o ../../../src/core/mem/ManagedObject.cpp
+
+${OBJECTDIR}/_ext/1386528437/Font.o: ../../../src/Font.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Font.o ../../../src/Font.cpp
+
+${OBJECTDIR}/_ext/613309208/Themes.o: ../../../src/windowing/Themes.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Themes.o ../../../src/windowing/Themes.cpp
+
+${OBJECTDIR}/_ext/1487432554/Frustum.o: ../../../src/core/bv/Frustum.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1487432554
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1487432554/Frustum.o ../../../src/core/bv/Frustum.cpp
+
+${OBJECTDIR}/_ext/1386528437/WindowEventHandler.o: ../../../src/WindowEventHandler.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/WindowEventHandler.o ../../../src/WindowEventHandler.cpp
+
+${OBJECTDIR}/_ext/801113954/Angles.o: ../../../src/core/math/Angles.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Angles.o ../../../src/core/math/Angles.cpp
+
+${OBJECTDIR}/_ext/1550003496/StringUtils.o: ../../../src/core/containers/StringUtils.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1550003496
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1550003496/StringUtils.o ../../../src/core/containers/StringUtils.cpp
+
+${OBJECTDIR}/_ext/1386528437/RenderWindow.o: ../../../src/RenderWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/RenderWindow.o ../../../src/RenderWindow.cpp
+
+${OBJECTDIR}/_ext/801113954/Vec4.o: ../../../src/core/math/Vec4.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Vec4.o ../../../src/core/math/Vec4.cpp
+
+${OBJECTDIR}/_ext/1386528437/Log.o: ../../../src/Log.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Log.o ../../../src/Log.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLRenderer.o: ../../../src/renderers/gl/GLRenderer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLRenderer.o ../../../src/renderers/gl/GLRenderer.cpp
+
+${OBJECTDIR}/_ext/801113954/Mat4.o: ../../../src/core/math/Mat4.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Mat4.o ../../../src/core/math/Mat4.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLTextRenderer.o: ../../../src/renderers/gl/GLTextRenderer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLTextRenderer.o ../../../src/renderers/gl/GLTextRenderer.cpp
+
+${OBJECTDIR}/_ext/613309208/DragArea.o: ../../../src/windowing/DragArea.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/DragArea.o ../../../src/windowing/DragArea.cpp
+
+${OBJECTDIR}/_ext/869353830/XWMLReader.o: ../../../src/loaders/XWMLReader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/XWMLReader.o ../../../src/loaders/XWMLReader.cpp
+
+${OBJECTDIR}/_ext/1386528437/ResourceManager.o: ../../../src/ResourceManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/ResourceManager.o ../../../src/ResourceManager.cpp
+
+${OBJECTDIR}/_ext/1386528437/Timer.o: ../../../src/Timer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Timer.o ../../../src/Timer.cpp
+
+${OBJECTDIR}/_ext/801113954/Point2.o: ../../../src/core/math/Point2.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Point2.o ../../../src/core/math/Point2.cpp
+
+${OBJECTDIR}/_ext/801113954/Vec2.o: ../../../src/core/math/Vec2.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Vec2.o ../../../src/core/math/Vec2.cpp
+
+${OBJECTDIR}/_ext/1386528437/Camera.o: ../../../src/Camera.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Camera.o ../../../src/Camera.cpp
+
+${OBJECTDIR}/_ext/1386528437/FontManager.o: ../../../src/FontManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/FontManager.o ../../../src/FontManager.cpp
+
+${OBJECTDIR}/_ext/1386528437/MeshManager.o: ../../../src/MeshManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/MeshManager.o ../../../src/MeshManager.cpp
+
+${OBJECTDIR}/_ext/1575338083/FileStream.o: ../../../src/core/streams/FileStream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/FileStream.o ../../../src/core/streams/FileStream.cpp
+
+${OBJECTDIR}/_ext/1550003496/Generic.o: ../../../src/core/containers/Generic.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1550003496
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1550003496/Generic.o ../../../src/core/containers/Generic.cpp
+
+${OBJECTDIR}/_ext/4811410/StackLayout.o: ../../../src/windowing/layouts/StackLayout.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/4811410
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/4811410/StackLayout.o ../../../src/windowing/layouts/StackLayout.cpp
+
+${OBJECTDIR}/_ext/801113954/Color.o: ../../../src/core/math/Color.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Color.o ../../../src/core/math/Color.cpp
+
+${OBJECTDIR}/_ext/1386528437/Frame.o: ../../../src/Frame.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Frame.o ../../../src/Frame.cpp
+
+${OBJECTDIR}/_ext/1386528437/XCursorControl.o: ../../../src/XCursorControl.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/XCursorControl.o ../../../src/XCursorControl.cpp
+
+${OBJECTDIR}/_ext/1386528437/App.o: ../../../src/App.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/App.o ../../../src/App.cpp
+
+${OBJECTDIR}/_ext/801113954/Vec3.o: ../../../src/core/math/Vec3.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Vec3.o ../../../src/core/math/Vec3.cpp
+
+${OBJECTDIR}/_ext/869353830/TGAImageLoader.o: ../../../src/loaders/TGAImageLoader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/TGAImageLoader.o ../../../src/loaders/TGAImageLoader.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLVertexBuffer.o: ../../../src/renderers/gl/GLVertexBuffer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLVertexBuffer.o ../../../src/renderers/gl/GLVertexBuffer.cpp
+
+${OBJECTDIR}/_ext/1386528437/Image.o: ../../../src/Image.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Image.o ../../../src/Image.cpp
+
+${OBJECTDIR}/_ext/801113954/Plane.o: ../../../src/core/math/Plane.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Plane.o ../../../src/core/math/Plane.cpp
+
+${OBJECTDIR}/_ext/1386528437/MovableCamera.o: ../../../src/MovableCamera.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/MovableCamera.o ../../../src/MovableCamera.cpp
+
+${OBJECTDIR}/_ext/1134220929/GarbageBin.o: ../../../src/core/mem/GarbageBin.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1134220929
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1134220929/GarbageBin.o ../../../src/core/mem/GarbageBin.cpp
+
+${OBJECTDIR}/_ext/1386528437/Pixel.o: ../../../src/Pixel.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Pixel.o ../../../src/Pixel.cpp
+
+${OBJECTDIR}/_ext/1386528437/Light.o: ../../../src/Light.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Light.o ../../../src/Light.cpp
+
+${OBJECTDIR}/_ext/845302165/WGLRenderWindow.o: ../../../src/renderers/gl/wgl/WGLRenderWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845302165
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845302165/WGLRenderWindow.o ../../../src/renderers/gl/wgl/WGLRenderWindow.cpp
+
+${OBJECTDIR}/_ext/1602971067/Path.o: ../../../src/filesystem/Path.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1602971067
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1602971067/Path.o ../../../src/filesystem/Path.cpp
+
+${OBJECTDIR}/_ext/613309208/Window.o: ../../../src/windowing/Window.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Window.o ../../../src/windowing/Window.cpp
+
+${OBJECTDIR}/_ext/608447161/Observable.o: ../../../src/core/Observable.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/608447161
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/608447161/Observable.o ../../../src/core/Observable.cpp
+
+${OBJECTDIR}/_ext/613309208/ListView.o: ../../../src/windowing/ListView.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/ListView.o ../../../src/windowing/ListView.cpp
+
+${OBJECTDIR}/_ext/1386528437/RenderTarget.o: ../../../src/RenderTarget.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/RenderTarget.o ../../../src/RenderTarget.cpp
+
+${OBJECTDIR}/_ext/845302165/WGLGLSupport.o: ../../../src/renderers/gl/wgl/WGLGLSupport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845302165
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845302165/WGLGLSupport.o ../../../src/renderers/gl/wgl/WGLGLSupport.cpp
+
+${OBJECTDIR}/_ext/801113954/Mat3.o: ../../../src/core/math/Mat3.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Mat3.o ../../../src/core/math/Mat3.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLTextureManager.o: ../../../src/renderers/gl/GLTextureManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLTextureManager.o ../../../src/renderers/gl/GLTextureManager.cpp
+
+${OBJECTDIR}/_ext/1386528437/Material.o: ../../../src/Material.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Material.o ../../../src/Material.cpp
+
+${OBJECTDIR}/_ext/4811410/CanvasLayout.o: ../../../src/windowing/layouts/CanvasLayout.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/4811410
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/4811410/CanvasLayout.o ../../../src/windowing/layouts/CanvasLayout.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLIndexBuffer.o: ../../../src/renderers/gl/GLIndexBuffer.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLIndexBuffer.o ../../../src/renderers/gl/GLIndexBuffer.cpp
+
+${OBJECTDIR}/_ext/613309208/WindowsManager.o: ../../../src/windowing/WindowsManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/WindowsManager.o ../../../src/windowing/WindowsManager.cpp
+
+${OBJECTDIR}/_ext/613309208/TextBox.o: ../../../src/windowing/TextBox.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/TextBox.o ../../../src/windowing/TextBox.cpp
+
+${OBJECTDIR}/_ext/1386528437/Entity.o: ../../../src/Entity.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Entity.o ../../../src/Entity.cpp
+
+${OBJECTDIR}/_ext/608447161/Object.o: ../../../src/core/Object.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/608447161
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/608447161/Object.o ../../../src/core/Object.cpp
+
+${OBJECTDIR}/_ext/1575338083/Stream.o: ../../../src/core/streams/Stream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/Stream.o ../../../src/core/streams/Stream.cpp
+
+${OBJECTDIR}/_ext/613309208/Label.o: ../../../src/windowing/Label.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Label.o ../../../src/windowing/Label.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLTexture.o: ../../../src/renderers/gl/GLTexture.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLTexture.o ../../../src/renderers/gl/GLTexture.cpp
+
+${OBJECTDIR}/_ext/801113954/Quat.o: ../../../src/core/math/Quat.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/Quat.o ../../../src/core/math/Quat.cpp
+
+${OBJECTDIR}/_ext/1093628612/TextInputWindow.o: ../../../src/windowing/toolbox/TextInputWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1093628612
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1093628612/TextInputWindow.o ../../../src/windowing/toolbox/TextInputWindow.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLOcclusionQuery.o: ../../../src/renderers/gl/GLOcclusionQuery.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLOcclusionQuery.o ../../../src/renderers/gl/GLOcclusionQuery.cpp
+
+${OBJECTDIR}/_ext/801113954/MathUtils.o: ../../../src/core/math/MathUtils.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/801113954
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/801113954/MathUtils.o ../../../src/core/math/MathUtils.cpp
+
+${OBJECTDIR}/_ext/1575338083/FileSubStream.o: ../../../src/core/streams/FileSubStream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/FileSubStream.o ../../../src/core/streams/FileSubStream.cpp
+
+${OBJECTDIR}/_ext/1386528437/Sprite.o: ../../../src/Sprite.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Sprite.o ../../../src/Sprite.cpp
+
+${OBJECTDIR}/_ext/845317374/GLXGLSupport.o: ../../../src/renderers/gl/glx/GLXGLSupport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845317374
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845317374/GLXGLSupport.o ../../../src/renderers/gl/glx/GLXGLSupport.cpp
+
+${OBJECTDIR}/_ext/869353830/CRWDecoder.o: ../../../src/loaders/CRWDecoder.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/869353830
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/869353830/CRWDecoder.o ../../../src/loaders/CRWDecoder.cpp
+
+${OBJECTDIR}/_ext/1386528437/Mesh.o: ../../../src/Mesh.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Mesh.o ../../../src/Mesh.cpp
+
+${OBJECTDIR}/_ext/1386528437/Skybox.o: ../../../src/Skybox.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Skybox.o ../../../src/Skybox.cpp
+
+${OBJECTDIR}/_ext/2049961054/GLSupport.o: ../../../src/renderers/gl/GLSupport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/2049961054
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/2049961054/GLSupport.o ../../../src/renderers/gl/GLSupport.cpp
+
+${OBJECTDIR}/_ext/1093628612/MessageWindow.o: ../../../src/windowing/toolbox/MessageWindow.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1093628612
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1093628612/MessageWindow.o ../../../src/windowing/toolbox/MessageWindow.cpp
+
+${OBJECTDIR}/_ext/613309208/ScrollArea.o: ../../../src/windowing/ScrollArea.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/ScrollArea.o ../../../src/windowing/ScrollArea.cpp
+
+${OBJECTDIR}/_ext/613309208/Button.o: ../../../src/windowing/Button.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/613309208
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/613309208/Button.o ../../../src/windowing/Button.cpp
+
+${OBJECTDIR}/_ext/1386528437/WinCursorControl.o: ../../../src/WinCursorControl.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/WinCursorControl.o ../../../src/WinCursorControl.cpp
+
+${OBJECTDIR}/_ext/1386528437/SceneManager.o: ../../../src/SceneManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/SceneManager.o ../../../src/SceneManager.cpp
+
+${OBJECTDIR}/_ext/845317374/GLXRenderContext.o: ../../../src/renderers/gl/glx/GLXRenderContext.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845317374
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845317374/GLXRenderContext.o ../../../src/renderers/gl/glx/GLXRenderContext.cpp
+
+${OBJECTDIR}/_ext/845302165/WGLRenderContext.o: ../../../src/renderers/gl/wgl/WGLRenderContext.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/845302165
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/845302165/WGLRenderContext.o ../../../src/renderers/gl/wgl/WGLRenderContext.cpp
+
+${OBJECTDIR}/_ext/1386528437/Viewport.o: ../../../src/Viewport.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/Viewport.o ../../../src/Viewport.cpp
+
+${OBJECTDIR}/_ext/1575338083/MemoryStream.o: ../../../src/core/streams/MemoryStream.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1575338083
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1575338083/MemoryStream.o ../../../src/core/streams/MemoryStream.cpp
+
+${OBJECTDIR}/_ext/1386528437/LogManager.o: ../../../src/LogManager.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1386528437
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/themes -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/layouts -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1386528437/LogManager.o ../../../src/LogManager.cpp
+
+# Subprojects
+.build-subprojects:
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${CND_BUILDDIR}/${CND_CONF}
+	${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+
+# Subprojects
+.clean-subprojects:
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+include .dep.inc

+ 133 - 0
proj/netbeans/crown/nbproject/Makefile-impl.mk

@@ -0,0 +1,133 @@
+# 
+# Generated Makefile - do not edit! 
+# 
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=crown
+
+# Active Configuration
+DEFAULTCONF=Debug
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=Debug Release 
+
+
+# build
+.build-impl: .build-pre .validate-impl .depcheck-impl
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre .validate-impl .depcheck-impl
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+
+# clobber 
+.clobber-impl: .clobber-pre .depcheck-impl
+	@#echo "=> Running $@..."
+	for CONF in ${ALLCONFS}; \
+	do \
+	    "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \
+	done
+
+# all 
+.all-impl: .all-pre .depcheck-impl
+	@#echo "=> Running $@..."
+	for CONF in ${ALLCONFS}; \
+	do \
+	    "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \
+	done
+
+# build tests
+.build-tests-impl: .build-impl .build-tests-pre
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf
+
+# run tests
+.test-impl: .build-tests-impl .test-pre
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf
+
+# dependency checking support
+.depcheck-impl:
+	@echo "# This code depends on make tool being used" >.dep.inc
+	@if [ -n "${MAKE_VERSION}" ]; then \
+	    echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+	    echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+	    echo "include \$${DEPFILES}" >>.dep.inc; \
+	    echo "endif" >>.dep.inc; \
+	else \
+	    echo ".KEEP_STATE:" >>.dep.inc; \
+	    echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+	fi
+
+# configuration validation
+.validate-impl:
+	@if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
+	then \
+	    echo ""; \
+	    echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \
+	    echo "See 'make help' for details."; \
+	    echo "Current directory: " `pwd`; \
+	    echo ""; \
+	fi
+	@if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
+	then \
+	    exit 1; \
+	fi
+
+
+# help
+.help-impl: .help-pre
+	@echo "This makefile supports the following configurations:"
+	@echo "    ${ALLCONFS}"
+	@echo ""
+	@echo "and the following targets:"
+	@echo "    build  (default target)"
+	@echo "    clean"
+	@echo "    clobber"
+	@echo "    all"
+	@echo "    help"
+	@echo ""
+	@echo "Makefile Usage:"
+	@echo "    make [CONF=<CONFIGURATION>] [SUB=no] build"
+	@echo "    make [CONF=<CONFIGURATION>] [SUB=no] clean"
+	@echo "    make [SUB=no] clobber"
+	@echo "    make [SUB=no] all"
+	@echo "    make help"
+	@echo ""
+	@echo "Target 'build' will build a specific configuration and, unless 'SUB=no',"
+	@echo "    also build subprojects."
+	@echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no',"
+	@echo "    also clean subprojects."
+	@echo "Target 'clobber' will remove all built files from all configurations and,"
+	@echo "    unless 'SUB=no', also from subprojects."
+	@echo "Target 'all' will will build all configurations and, unless 'SUB=no',"
+	@echo "    also build subprojects."
+	@echo "Target 'help' prints this message."
+	@echo ""
+

+ 35 - 0
proj/netbeans/crown/nbproject/Makefile-variables.mk

@@ -0,0 +1,35 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+CND_BUILDDIR=build
+CND_DISTDIR=dist
+# Debug configuration
+CND_PLATFORM_Debug=GNU-Linux-x86
+CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86
+CND_ARTIFACT_NAME_Debug=libcrown.a
+CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/libcrown.a
+CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package
+CND_PACKAGE_NAME_Debug=crown.tar
+CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/crown.tar
+# Release configuration
+CND_PLATFORM_Release=GNU-Linux-x86
+CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86
+CND_ARTIFACT_NAME_Release=libcrown.a
+CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/libcrown.a
+CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package
+CND_PACKAGE_NAME_Release=crown.tar
+CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/crown.tar
+#
+# include compiler specific variables
+#
+# dmake command
+ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \
+	(mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)
+#
+# gmake command
+.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk))
+#
+include nbproject/private/Makefile-variables.mk

+ 75 - 0
proj/netbeans/crown/nbproject/Package-Debug.bash

@@ -0,0 +1,75 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Debug
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+OUTPUT_BASENAME=libcrown.a
+PACKAGE_TOP_DIR=crown/
+
+# Functions
+function checkReturnCode
+{
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        exit $rc
+    fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+    mkdir -p "$1"
+    checkReturnCode
+    if [ "$2" != "" ]
+    then
+      chmod $2 "$1"
+      checkReturnCode
+    fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+    cp "$1" "$2"
+    checkReturnCode
+    if [ "$3" != "" ]
+    then
+        chmod $3 "$2"
+        checkReturnCode
+    fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
+rm -rf ${NBTMPDIR}
+mkdir -p ${NBTMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory "${NBTMPDIR}/crown/lib"
+copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/crown.tar
+cd ${NBTMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/crown.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${NBTMPDIR}

+ 75 - 0
proj/netbeans/crown/nbproject/Package-Release.bash

@@ -0,0 +1,75 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Release
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/libcrown.a
+OUTPUT_BASENAME=libcrown.a
+PACKAGE_TOP_DIR=crown/
+
+# Functions
+function checkReturnCode
+{
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        exit $rc
+    fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+    mkdir -p "$1"
+    checkReturnCode
+    if [ "$2" != "" ]
+    then
+      chmod $2 "$1"
+      checkReturnCode
+    fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+    cp "$1" "$2"
+    checkReturnCode
+    if [ "$3" != "" ]
+    then
+        chmod $3 "$2"
+        checkReturnCode
+    fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
+rm -rf ${NBTMPDIR}
+mkdir -p ${NBTMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory "${NBTMPDIR}/crown/lib"
+copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}lib/${OUTPUT_BASENAME}" 0644
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/crown.tar
+cd ${NBTMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/crown.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${NBTMPDIR}

+ 408 - 0
proj/netbeans/crown/nbproject/configurations.xml

@@ -0,0 +1,408 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="79">
+  <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
+    <logicalFolder name="HeaderFiles"
+                   displayName="Header Files"
+                   projectFiles="true">
+      <logicalFolder name="src" displayName="src" projectFiles="true">
+        <logicalFolder name="core" displayName="core" projectFiles="true">
+          <logicalFolder name="bv" displayName="bv" projectFiles="true">
+            <itemPath>../../../src/core/bv/Box.h</itemPath>
+            <itemPath>../../../src/core/bv/Frustum.h</itemPath>
+            <itemPath>../../../src/core/bv/Rectangle.h</itemPath>
+            <itemPath>../../../src/core/bv/Sphere.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="containers" displayName="containers" projectFiles="true">
+            <itemPath>../../../src/core/containers/Dictionary.h</itemPath>
+            <itemPath>../../../src/core/containers/Generic.h</itemPath>
+            <itemPath>../../../src/core/containers/IEnumerable.h</itemPath>
+            <itemPath>../../../src/core/containers/List.h</itemPath>
+            <itemPath>../../../src/core/containers/RBTree.h</itemPath>
+            <itemPath>../../../src/core/containers/StringUtils.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="math" displayName="math" projectFiles="true">
+            <itemPath>../../../src/core/math/Angles.h</itemPath>
+            <itemPath>../../../src/core/math/Color.h</itemPath>
+            <itemPath>../../../src/core/math/Interpolation.h</itemPath>
+            <itemPath>../../../src/core/math/Mat3.h</itemPath>
+            <itemPath>../../../src/core/math/Mat4.h</itemPath>
+            <itemPath>../../../src/core/math/MathUtils.h</itemPath>
+            <itemPath>../../../src/core/math/Plane.h</itemPath>
+            <itemPath>../../../src/core/math/Point2.h</itemPath>
+            <itemPath>../../../src/core/math/Quat.h</itemPath>
+            <itemPath>../../../src/core/math/Ray.h</itemPath>
+            <itemPath>../../../src/core/math/Vec2.h</itemPath>
+            <itemPath>../../../src/core/math/Vec3.h</itemPath>
+            <itemPath>../../../src/core/math/Vec4.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="mem" displayName="mem" projectFiles="true">
+            <itemPath>../../../src/core/mem/GarbageBin.h</itemPath>
+            <itemPath>../../../src/core/mem/ManagedObject.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="streams" displayName="streams" projectFiles="true">
+            <itemPath>../../../src/core/streams/FileStream.h</itemPath>
+            <itemPath>../../../src/core/streams/FileSubStream.h</itemPath>
+            <itemPath>../../../src/core/streams/MemoryStream.h</itemPath>
+            <itemPath>../../../src/core/streams/Stream.h</itemPath>
+          </logicalFolder>
+          <itemPath>../../../src/core/Auto.h</itemPath>
+          <itemPath>../../../src/core/Common.h</itemPath>
+          <itemPath>../../../src/core/CoreEventArgs.h</itemPath>
+          <itemPath>../../../src/core/Delegate.h</itemPath>
+          <itemPath>../../../src/core/Exceptions.h</itemPath>
+          <itemPath>../../../src/core/Object.h</itemPath>
+          <itemPath>../../../src/core/Observable.h</itemPath>
+          <itemPath>../../../src/core/Shared.h</itemPath>
+          <itemPath>../../../src/core/SignalSlot.h</itemPath>
+          <itemPath>../../../src/core/Types.h</itemPath>
+          <itemPath>../../../src/core/WithProperties.h</itemPath>
+        </logicalFolder>
+        <logicalFolder name="filesystem" displayName="filesystem" projectFiles="true">
+          <itemPath>../../../src/filesystem/ArchiveFile.h</itemPath>
+          <itemPath>../../../src/filesystem/Filesystem.h</itemPath>
+          <itemPath>../../../src/filesystem/Host.h</itemPath>
+          <itemPath>../../../src/filesystem/Path.h</itemPath>
+          <itemPath>../../../src/filesystem/RegularFile.h</itemPath>
+        </logicalFolder>
+        <logicalFolder name="gui" displayName="gui" projectFiles="true">
+        </logicalFolder>
+        <logicalFolder name="loaders" displayName="loaders" projectFiles="true">
+          <itemPath>../../../src/loaders/BMPImageLoader.h</itemPath>
+          <itemPath>../../../src/loaders/CRWDecoder.h</itemPath>
+          <itemPath>../../../src/loaders/TGAImageLoader.h</itemPath>
+          <itemPath>../../../src/loaders/XMLReader.h</itemPath>
+          <itemPath>../../../src/loaders/XWMLReader.h</itemPath>
+        </logicalFolder>
+        <logicalFolder name="renderers" displayName="renderers" projectFiles="true">
+          <logicalFolder name="gl" displayName="gl" projectFiles="true">
+            <logicalFolder name="glx" displayName="glx" projectFiles="true">
+              <itemPath>../../../src/renderers/gl/glx/GLXGLSupport.h</itemPath>
+              <itemPath>../../../src/renderers/gl/glx/GLXRenderContext.h</itemPath>
+              <itemPath>../../../src/renderers/gl/glx/GLXRenderWindow.h</itemPath>
+            </logicalFolder>
+            <logicalFolder name="wgl" displayName="wgl" projectFiles="true">
+              <itemPath>../../../src/renderers/gl/wgl/WGLGLSupport.h</itemPath>
+              <itemPath>../../../src/renderers/gl/wgl/WGLRenderContext.h</itemPath>
+              <itemPath>../../../src/renderers/gl/wgl/WGLRenderWindow.h</itemPath>
+            </logicalFolder>
+            <itemPath>../../../src/renderers/gl/GLIndexBuffer.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLOcclusionQuery.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLRenderer.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLSupport.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLTextRenderer.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLTexture.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLTextureManager.h</itemPath>
+            <itemPath>../../../src/renderers/gl/GLVertexBuffer.h</itemPath>
+          </logicalFolder>
+        </logicalFolder>
+        <logicalFolder name="utils" displayName="utils" projectFiles="true">
+        </logicalFolder>
+        <logicalFolder name="windowing" displayName="windowing" projectFiles="true">
+          <logicalFolder name="layouts" displayName="layouts" projectFiles="true">
+            <itemPath>../../../src/windowing/layouts/CanvasLayout.h</itemPath>
+            <itemPath>../../../src/windowing/layouts/StackLayout.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="templates" displayName="templates" projectFiles="true">
+            <itemPath>../../../src/windowing/templates/ITemplate.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="themes" displayName="themes" projectFiles="true">
+            <itemPath>../../../src/windowing/themes/LunaTheme.h</itemPath>
+          </logicalFolder>
+          <logicalFolder name="toolbox" displayName="toolbox" projectFiles="true">
+            <itemPath>../../../src/windowing/toolbox/MessageWindow.h</itemPath>
+            <itemPath>../../../src/windowing/toolbox/TextInputWindow.h</itemPath>
+          </logicalFolder>
+          <itemPath>../../../src/windowing/Bind.h</itemPath>
+          <itemPath>../../../src/windowing/Button.h</itemPath>
+          <itemPath>../../../src/windowing/DragArea.h</itemPath>
+          <itemPath>../../../src/windowing/ItemsSelector.h</itemPath>
+          <itemPath>../../../src/windowing/ItemsWidget.h</itemPath>
+          <itemPath>../../../src/windowing/Label.h</itemPath>
+          <itemPath>../../../src/windowing/ListView.h</itemPath>
+          <itemPath>../../../src/windowing/ScrollArea.h</itemPath>
+          <itemPath>../../../src/windowing/TextBox.h</itemPath>
+          <itemPath>../../../src/windowing/ThemeSpriteWidget.h</itemPath>
+          <itemPath>../../../src/windowing/Themes.h</itemPath>
+          <itemPath>../../../src/windowing/Widget.h</itemPath>
+          <itemPath>../../../src/windowing/Window.h</itemPath>
+          <itemPath>../../../src/windowing/WindowingEventArgs.h</itemPath>
+          <itemPath>../../../src/windowing/WindowsManager.h</itemPath>
+        </logicalFolder>
+        <itemPath>../../../src/App.h</itemPath>
+        <itemPath>../../../src/Camera.h</itemPath>
+        <itemPath>../../../src/Config.h</itemPath>
+        <itemPath>../../../src/Crown.h</itemPath>
+        <itemPath>../../../src/CursorControl.h</itemPath>
+        <itemPath>../../../src/Data.h</itemPath>
+        <itemPath>../../../src/Device.h</itemPath>
+        <itemPath>../../../src/Entity.h</itemPath>
+        <itemPath>../../../src/Event.h</itemPath>
+        <itemPath>../../../src/EventDispatcher.h</itemPath>
+        <itemPath>../../../src/EventReceiver.h</itemPath>
+        <itemPath>../../../src/Font.h</itemPath>
+        <itemPath>../../../src/FontFormat.h</itemPath>
+        <itemPath>../../../src/FontManager.h</itemPath>
+        <itemPath>../../../src/Frame.h</itemPath>
+        <itemPath>../../../src/Glyph.h</itemPath>
+        <itemPath>../../../src/Image.h</itemPath>
+        <itemPath>../../../src/ImageLoader.h</itemPath>
+        <itemPath>../../../src/IndexBuffer.h</itemPath>
+        <itemPath>../../../src/Light.h</itemPath>
+        <itemPath>../../../src/Log.h</itemPath>
+        <itemPath>../../../src/LogManager.h</itemPath>
+        <itemPath>../../../src/Material.h</itemPath>
+        <itemPath>../../../src/Mesh.h</itemPath>
+        <itemPath>../../../src/MeshChunk.h</itemPath>
+        <itemPath>../../../src/MeshLoader.h</itemPath>
+        <itemPath>../../../src/MeshManager.h</itemPath>
+        <itemPath>../../../src/MovableCamera.h</itemPath>
+        <itemPath>../../../src/OcclusionQuery.h</itemPath>
+        <itemPath>../../../src/OpenGl.h</itemPath>
+        <itemPath>../../../src/Pixel.h</itemPath>
+        <itemPath>../../../src/PixelFormat.h</itemPath>
+        <itemPath>../../../src/RenderContext.h</itemPath>
+        <itemPath>../../../src/RenderTarget.h</itemPath>
+        <itemPath>../../../src/RenderWindow.h</itemPath>
+        <itemPath>../../../src/Renderer.h</itemPath>
+        <itemPath>../../../src/ResourceManager.h</itemPath>
+        <itemPath>../../../src/Scene.h</itemPath>
+        <itemPath>../../../src/SceneManager.h</itemPath>
+        <itemPath>../../../src/SceneNode.h</itemPath>
+        <itemPath>../../../src/Skybox.h</itemPath>
+        <itemPath>../../../src/Sprite.h</itemPath>
+        <itemPath>../../../src/TextRenderer.h</itemPath>
+        <itemPath>../../../src/Texture.h</itemPath>
+        <itemPath>../../../src/Timer.h</itemPath>
+        <itemPath>../../../src/Vertex3.h</itemPath>
+        <itemPath>../../../src/VertexBuffer.h</itemPath>
+        <itemPath>../../../src/VideoMode.h</itemPath>
+        <itemPath>../../../src/Viewport.h</itemPath>
+        <itemPath>../../../src/WinCursorControl.h</itemPath>
+        <itemPath>../../../src/WindowEventHandler.h</itemPath>
+        <itemPath>../../../src/WindowsInclude.h</itemPath>
+        <itemPath>../../../src/XCursorControl.h</itemPath>
+      </logicalFolder>
+    </logicalFolder>
+    <logicalFolder name="ResourceFiles"
+                   displayName="Resource Files"
+                   projectFiles="true">
+    </logicalFolder>
+    <logicalFolder name="SourceFiles"
+                   displayName="Source Files"
+                   projectFiles="true">
+      <logicalFolder name="src" displayName="src" projectFiles="true">
+        <logicalFolder name="core" displayName="core" projectFiles="true">
+          <logicalFolder name="bv" displayName="bv" projectFiles="true">
+            <itemPath>../../../src/core/bv/Frustum.cpp</itemPath>
+          </logicalFolder>
+          <logicalFolder name="containers" displayName="containers" projectFiles="true">
+            <itemPath>../../../src/core/containers/Generic.cpp</itemPath>
+            <itemPath>../../../src/core/containers/StringUtils.cpp</itemPath>
+          </logicalFolder>
+          <logicalFolder name="math" displayName="math" projectFiles="true">
+            <itemPath>../../../src/core/math/Angles.cpp</itemPath>
+            <itemPath>../../../src/core/math/Color.cpp</itemPath>
+            <itemPath>../../../src/core/math/Mat3.cpp</itemPath>
+            <itemPath>../../../src/core/math/Mat4.cpp</itemPath>
+            <itemPath>../../../src/core/math/MathUtils.cpp</itemPath>
+            <itemPath>../../../src/core/math/Plane.cpp</itemPath>
+            <itemPath>../../../src/core/math/Point2.cpp</itemPath>
+            <itemPath>../../../src/core/math/Quat.cpp</itemPath>
+            <itemPath>../../../src/core/math/Vec2.cpp</itemPath>
+            <itemPath>../../../src/core/math/Vec3.cpp</itemPath>
+            <itemPath>../../../src/core/math/Vec4.cpp</itemPath>
+          </logicalFolder>
+          <logicalFolder name="mem" displayName="mem" projectFiles="true">
+            <itemPath>../../../src/core/mem/GarbageBin.cpp</itemPath>
+            <itemPath>../../../src/core/mem/ManagedObject.cpp</itemPath>
+          </logicalFolder>
+          <logicalFolder name="streams" displayName="streams" projectFiles="true">
+            <itemPath>../../../src/core/streams/FileStream.cpp</itemPath>
+            <itemPath>../../../src/core/streams/FileSubStream.cpp</itemPath>
+            <itemPath>../../../src/core/streams/MemoryStream.cpp</itemPath>
+            <itemPath>../../../src/core/streams/Stream.cpp</itemPath>
+          </logicalFolder>
+          <itemPath>../../../src/core/Object.cpp</itemPath>
+          <itemPath>../../../src/core/Observable.cpp</itemPath>
+        </logicalFolder>
+        <logicalFolder name="filesystem" displayName="filesystem" projectFiles="true">
+          <itemPath>../../../src/filesystem/Filesystem.cpp</itemPath>
+          <itemPath>../../../src/filesystem/Path.cpp</itemPath>
+        </logicalFolder>
+        <logicalFolder name="gui" displayName="gui" projectFiles="true">
+        </logicalFolder>
+        <logicalFolder name="loaders" displayName="loaders" projectFiles="true">
+          <itemPath>../../../src/loaders/BMPImageLoader.cpp</itemPath>
+          <itemPath>../../../src/loaders/CRWDecoder.cpp</itemPath>
+          <itemPath>../../../src/loaders/TGAImageLoader.cpp</itemPath>
+          <itemPath>../../../src/loaders/XMLReader.cpp</itemPath>
+          <itemPath>../../../src/loaders/XWMLReader.cpp</itemPath>
+        </logicalFolder>
+        <logicalFolder name="renderers" displayName="renderers" projectFiles="true">
+          <logicalFolder name="gl" displayName="gl" projectFiles="true">
+            <logicalFolder name="glx" displayName="glx" projectFiles="true">
+              <itemPath>../../../src/renderers/gl/glx/GLXGLSupport.cpp</itemPath>
+              <itemPath>../../../src/renderers/gl/glx/GLXRenderContext.cpp</itemPath>
+              <itemPath>../../../src/renderers/gl/glx/GLXRenderWindow.cpp</itemPath>
+            </logicalFolder>
+            <logicalFolder name="wgl" displayName="wgl" projectFiles="true">
+              <itemPath>../../../src/renderers/gl/wgl/WGLGLSupport.cpp</itemPath>
+              <itemPath>../../../src/renderers/gl/wgl/WGLRenderContext.cpp</itemPath>
+              <itemPath>../../../src/renderers/gl/wgl/WGLRenderWindow.cpp</itemPath>
+            </logicalFolder>
+            <itemPath>../../../src/renderers/gl/GLIndexBuffer.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLOcclusionQuery.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLRenderer.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLSupport.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLTextRenderer.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLTexture.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLTextureManager.cpp</itemPath>
+            <itemPath>../../../src/renderers/gl/GLVertexBuffer.cpp</itemPath>
+          </logicalFolder>
+        </logicalFolder>
+        <logicalFolder name="utils" displayName="utils" projectFiles="true">
+        </logicalFolder>
+        <logicalFolder name="windowing" displayName="windowing" projectFiles="true">
+          <logicalFolder name="layouts" displayName="layouts" projectFiles="true">
+            <itemPath>../../../src/windowing/layouts/CanvasLayout.cpp</itemPath>
+            <itemPath>../../../src/windowing/layouts/StackLayout.cpp</itemPath>
+          </logicalFolder>
+          <logicalFolder name="templates" displayName="templates" projectFiles="true">
+          </logicalFolder>
+          <logicalFolder name="themes" displayName="themes" projectFiles="true">
+            <itemPath>../../../src/windowing/themes/LunaTheme.cpp</itemPath>
+          </logicalFolder>
+          <logicalFolder name="toolbox" displayName="toolbox" projectFiles="true">
+            <itemPath>../../../src/windowing/toolbox/MessageWindow.cpp</itemPath>
+            <itemPath>../../../src/windowing/toolbox/TextInputWindow.cpp</itemPath>
+          </logicalFolder>
+          <itemPath>../../../src/windowing/Bind.cpp</itemPath>
+          <itemPath>../../../src/windowing/Button.cpp</itemPath>
+          <itemPath>../../../src/windowing/DragArea.cpp</itemPath>
+          <itemPath>../../../src/windowing/Label.cpp</itemPath>
+          <itemPath>../../../src/windowing/ListView.cpp</itemPath>
+          <itemPath>../../../src/windowing/ScrollArea.cpp</itemPath>
+          <itemPath>../../../src/windowing/TextBox.cpp</itemPath>
+          <itemPath>../../../src/windowing/Themes.cpp</itemPath>
+          <itemPath>../../../src/windowing/Widget.cpp</itemPath>
+          <itemPath>../../../src/windowing/Window.cpp</itemPath>
+          <itemPath>../../../src/windowing/WindowsManager.cpp</itemPath>
+        </logicalFolder>
+        <itemPath>../../../src/App.cpp</itemPath>
+        <itemPath>../../../src/Camera.cpp</itemPath>
+        <itemPath>../../../src/Device.cpp</itemPath>
+        <itemPath>../../../src/Entity.cpp</itemPath>
+        <itemPath>../../../src/Font.cpp</itemPath>
+        <itemPath>../../../src/FontManager.cpp</itemPath>
+        <itemPath>../../../src/Frame.cpp</itemPath>
+        <itemPath>../../../src/Image.cpp</itemPath>
+        <itemPath>../../../src/Light.cpp</itemPath>
+        <itemPath>../../../src/Log.cpp</itemPath>
+        <itemPath>../../../src/LogManager.cpp</itemPath>
+        <itemPath>../../../src/Material.cpp</itemPath>
+        <itemPath>../../../src/Mesh.cpp</itemPath>
+        <itemPath>../../../src/MeshChunk.cpp</itemPath>
+        <itemPath>../../../src/MeshManager.cpp</itemPath>
+        <itemPath>../../../src/MovableCamera.cpp</itemPath>
+        <itemPath>../../../src/Pixel.cpp</itemPath>
+        <itemPath>../../../src/RenderTarget.cpp</itemPath>
+        <itemPath>../../../src/RenderWindow.cpp</itemPath>
+        <itemPath>../../../src/ResourceManager.cpp</itemPath>
+        <itemPath>../../../src/Scene.cpp</itemPath>
+        <itemPath>../../../src/SceneManager.cpp</itemPath>
+        <itemPath>../../../src/SceneNode.cpp</itemPath>
+        <itemPath>../../../src/Skybox.cpp</itemPath>
+        <itemPath>../../../src/Sprite.cpp</itemPath>
+        <itemPath>../../../src/Timer.cpp</itemPath>
+        <itemPath>../../../src/Viewport.cpp</itemPath>
+        <itemPath>../../../src/WinCursorControl.cpp</itemPath>
+        <itemPath>../../../src/WindowEventHandler.cpp</itemPath>
+        <itemPath>../../../src/XCursorControl.cpp</itemPath>
+      </logicalFolder>
+    </logicalFolder>
+    <logicalFolder name="ExternalFiles"
+                   displayName="Important Files"
+                   projectFiles="false">
+      <itemPath>Makefile</itemPath>
+    </logicalFolder>
+  </logicalFolder>
+  <sourceRootList>
+    <Elem>../../../src</Elem>
+  </sourceRootList>
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="Debug" type="3">
+      <toolsSet>
+        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
+        <compilerSet>GNU|GNU</compilerSet>
+      </toolsSet>
+      <compileType>
+        <ccTool>
+          <incDir>
+            <pElem>../../../src/windowing/toolbox</pElem>
+            <pElem>../../../src/core/math</pElem>
+            <pElem>../../../src/core/mem</pElem>
+            <pElem>../../../src/core</pElem>
+            <pElem>../../../src/renderers/gl</pElem>
+            <pElem>../../../src/renderers/gl/glx</pElem>
+            <pElem>../../../src/renderers/gl/wgl</pElem>
+            <pElem>../../../src/windowing</pElem>
+            <pElem>../../../src/core/bv</pElem>
+            <pElem>../../../src/windowing/layouts</pElem>
+            <pElem>../../../src</pElem>
+            <pElem>/usr/include/freetype2</pElem>
+            <pElem>../../../src/windowing/themes</pElem>
+            <pElem>../../../src/core/containers</pElem>
+            <pElem>../../../src/filesystem</pElem>
+            <pElem>../../../src/core/streams</pElem>
+            <pElem>../../../src/loaders</pElem>
+            <pElem>../../../src/windowing/templates</pElem>
+          </incDir>
+          <commandLine>-ansi -W -Wall -Wextra -pedantic -Wno-long-long</commandLine>
+        </ccTool>
+        <archiverTool>
+        </archiverTool>
+      </compileType>
+    </conf>
+    <conf name="Release" type="3">
+      <toolsSet>
+        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
+        <compilerSet>GNU|GNU</compilerSet>
+      </toolsSet>
+      <compileType>
+        <cTool>
+          <developmentMode>5</developmentMode>
+        </cTool>
+        <ccTool>
+          <developmentMode>5</developmentMode>
+          <incDir>
+            <pElem>../../../src/windowing/toolbox</pElem>
+            <pElem>../../../src/core/math</pElem>
+            <pElem>../../../src/core/mem</pElem>
+            <pElem>../../../src/core</pElem>
+            <pElem>../../../src/renderers/gl</pElem>
+            <pElem>../../../src/renderers/gl/glx</pElem>
+            <pElem>../../../src/renderers/gl/wgl</pElem>
+            <pElem>../../../src/windowing</pElem>
+            <pElem>../../../src/core/bv</pElem>
+            <pElem>../../../src/windowing/themes</pElem>
+            <pElem>../../../src</pElem>
+            <pElem>/usr/include/freetype2</pElem>
+            <pElem>../../../src/windowing/layouts</pElem>
+            <pElem>../../../src/core/containers</pElem>
+            <pElem>../../../src/filesystem</pElem>
+            <pElem>../../../src/core/streams</pElem>
+            <pElem>../../../src/loaders</pElem>
+            <pElem>../../../src/windowing/templates</pElem>
+          </incDir>
+          <commandLine>-ansi -W -Wall -Wextra -pedantic -Wno-long-long</commandLine>
+        </ccTool>
+        <fortranCompilerTool>
+          <developmentMode>5</developmentMode>
+        </fortranCompilerTool>
+        <archiverTool>
+        </archiverTool>
+      </compileType>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 7 - 0
proj/netbeans/crown/nbproject/private/Makefile-variables.mk

@@ -0,0 +1,7 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+# Debug configuration
+# Release configuration

+ 78 - 0
proj/netbeans/crown/nbproject/private/configurations.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="79">
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="Debug" type="3">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <platform>2</platform>
+      </toolsSet>
+      <dbx_gdbdebugger version="1">
+        <gdb_pathmaps>
+        </gdb_pathmaps>
+        <gdb_interceptlist>
+          <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
+        </gdb_interceptlist>
+        <gdb_options>
+          <DebugOptions>
+          </DebugOptions>
+        </gdb_options>
+        <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
+      </dbx_gdbdebugger>
+      <gizmo_options version="3">
+        <configurationname>GizmoSimple</configurationname>
+      </gizmo_options>
+      <nativedebugger version="1">
+        <engine>gdb</engine>
+      </nativedebugger>
+      <runprofile version="9">
+        <runcommandpicklist>
+          <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
+        </runcommandpicklist>
+        <runcommand>"${OUTPUT_PATH}"</runcommand>
+        <rundir></rundir>
+        <buildfirst>true</buildfirst>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+    <conf name="Release" type="3">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <platform>2</platform>
+      </toolsSet>
+      <dbx_gdbdebugger version="1">
+        <gdb_pathmaps>
+        </gdb_pathmaps>
+        <gdb_interceptlist>
+          <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
+        </gdb_interceptlist>
+        <gdb_options>
+          <DebugOptions>
+          </DebugOptions>
+        </gdb_options>
+        <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
+      </dbx_gdbdebugger>
+      <gizmo_options version="3">
+        <configurationname>GizmoSimple</configurationname>
+      </gizmo_options>
+      <nativedebugger version="1">
+        <engine>gdb</engine>
+      </nativedebugger>
+      <runprofile version="9">
+        <runcommandpicklist>
+          <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
+        </runcommandpicklist>
+        <runcommand>"${OUTPUT_PATH}"</runcommand>
+        <rundir></rundir>
+        <buildfirst>true</buildfirst>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 8 - 0
proj/netbeans/crown/nbproject/private/private.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <data xmlns="http://www.netbeans.org/ns/make-project-private/1">
+        <activeConfTypeElem>3</activeConfTypeElem>
+        <activeConfIndexElem>0</activeConfIndexElem>
+    </data>
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
+</project-private>

+ 0 - 0
proj/netbeans/crown/nbproject/project.properties


+ 28 - 0
proj/netbeans/crown/nbproject/project.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.cnd.makeproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/make-project/1">
+            <name>crown</name>
+            <make-project-type>0</make-project-type>
+            <c-extensions/>
+            <cpp-extensions>cpp</cpp-extensions>
+            <header-extensions>h</header-extensions>
+            <sourceEncoding>UTF-8</sourceEncoding>
+            <make-dep-projects/>
+            <sourceRootList>
+                <sourceRootElem>../../../src</sourceRootElem>
+            </sourceRootList>
+            <confList>
+                <confElem>
+                    <name>Debug</name>
+                    <type>3</type>
+                </confElem>
+                <confElem>
+                    <name>Release</name>
+                    <type>3</type>
+                </confElem>
+            </confList>
+        </data>
+    </configuration>
+</project>

+ 5 - 0
proj/netbeans/tests/.dep.inc

@@ -0,0 +1,5 @@
+# This code depends on make tool being used
+DEPFILES=$(wildcard $(addsuffix .d, ${OBJECTFILES}))
+ifneq (${DEPFILES},)
+include ${DEPFILES}
+endif

+ 109 - 0
proj/netbeans/tests/Makefile

@@ -0,0 +1,109 @@
+#
+#  There exist several targets which are by default empty and which can be 
+#  used for execution of your targets. These targets are usually executed 
+#  before and after some main targets. They are: 
+#
+#     .build-pre:              called before 'build' target
+#     .build-post:             called after 'build' target
+#     .clean-pre:              called before 'clean' target
+#     .clean-post:             called after 'clean' target
+#     .clobber-pre:            called before 'clobber' target
+#     .clobber-post:           called after 'clobber' target
+#     .all-pre:                called before 'all' target
+#     .all-post:               called after 'all' target
+#     .help-pre:               called before 'help' target
+#     .help-post:              called after 'help' target
+#
+#  Targets beginning with '.' are not intended to be called on their own.
+#
+#  Main targets can be executed directly, and they are:
+#  
+#     build                    build a specific configuration
+#     clean                    remove built files from a configuration
+#     clobber                  remove all built files
+#     all                      build all configurations
+#     help                     print help mesage
+#  
+#  Targets .build-impl, .clean-impl, .clobber-impl, .all-impl, and
+#  .help-impl are implemented in nbproject/makefile-impl.mk.
+#
+#  Available make variables:
+#
+#     CND_BASEDIR                base directory for relative paths
+#     CND_DISTDIR                default top distribution directory (build artifacts)
+#     CND_BUILDDIR               default top build directory (object files, ...)
+#     CONF                       name of current configuration
+#     CND_PLATFORM_${CONF}       platform name (current configuration)
+#     CND_ARTIFACT_DIR_${CONF}   directory of build artifact (current configuration)
+#     CND_ARTIFACT_NAME_${CONF}  name of build artifact (current configuration)
+#     CND_ARTIFACT_PATH_${CONF}  path to build artifact (current configuration)
+#     CND_PACKAGE_DIR_${CONF}    directory of package (current configuration)
+#     CND_PACKAGE_NAME_${CONF}   name of package (current configuration)
+#     CND_PACKAGE_PATH_${CONF}   path to package (current configuration)
+#
+# NOCDDL
+
+
+# Environment 
+MKDIR=mkdir
+CP=cp
+CCADMIN=CCadmin
+RANLIB=ranlib
+
+
+# build
+build: .build-post
+
+.build-pre:
+# Add your pre 'build' code here...
+
+.build-post: .build-impl
+# Add your post 'build' code here...
+
+
+# clean
+clean: .clean-post
+
+.clean-pre:
+# Add your pre 'clean' code here...
+
+.clean-post: .clean-impl
+# Add your post 'clean' code here...
+
+
+# clobber
+clobber: .clobber-post
+
+.clobber-pre:
+# Add your pre 'clobber' code here...
+
+.clobber-post: .clobber-impl
+# Add your post 'clobber' code here...
+
+
+# all
+all: .all-post
+
+.all-pre:
+# Add your pre 'all' code here...
+
+.all-post: .all-impl
+# Add your post 'all' code here...
+
+
+# help
+help: .help-post
+
+.help-pre:
+# Add your pre 'help' code here...
+
+.help-post: .help-impl
+# Add your post 'help' code here...
+
+
+
+# include project implementation makefile
+include nbproject/Makefile-impl.mk
+
+# include project make variables
+include nbproject/Makefile-variables.mk

+ 89 - 0
proj/netbeans/tests/nbproject/Makefile-Debug.mk

@@ -0,0 +1,89 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+GREP=grep
+NM=nm
+CCADMIN=CCadmin
+RANLIB=ranlib
+CC=gcc
+CCC=g++
+CXX=g++
+FC=gfortran
+AS=as
+
+# Macros
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Debug
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+
+# Include project Makefile
+include Makefile
+
+# Object Directory
+OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
+
+# Object Files
+OBJECTFILES= \
+	${OBJECTDIR}/_ext/1694839831/XWMLReader.o
+
+
+# C Compiler Flags
+CFLAGS=
+
+# CC Compiler Flags
+CCFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+CXXFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+
+# Fortran Compiler Flags
+FFLAGS=
+
+# Assembler Flags
+ASFLAGS=
+
+# Link Libraries and Options
+LDLIBSOPTIONS=../crown/dist/Debug/GNU-Linux-x86/libcrown.a -lGL -lX11 -lGLEW -lXrandr -lfreetype
+
+# Build Targets
+.build-conf: ${BUILD_SUBPROJECTS}
+	"${MAKE}"  -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests: ../crown/dist/Debug/GNU-Linux-x86/libcrown.a
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests: ${OBJECTFILES}
+	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
+	${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests ${OBJECTFILES} ${LDLIBSOPTIONS} 
+
+${OBJECTDIR}/_ext/1694839831/XWMLReader.o: ../../../src/tests/xwmlreader/XWMLReader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1694839831
+	${RM} [email protected]
+	$(COMPILE.cc) -g -I../../../src/tests -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -I../../../src/windowing/toolbox -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1694839831/XWMLReader.o ../../../src/tests/xwmlreader/XWMLReader.cpp
+
+# Subprojects
+.build-subprojects:
+	cd ../crown && ${MAKE}  -f Makefile CONF=Debug
+	cd ../crown && ${MAKE}  -f Makefile CONF=Debug
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${CND_BUILDDIR}/${CND_CONF}
+	${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests
+
+# Subprojects
+.clean-subprojects:
+	cd ../crown && ${MAKE}  -f Makefile CONF=Debug clean
+	cd ../crown && ${MAKE}  -f Makefile CONF=Debug clean
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+include .dep.inc

+ 87 - 0
proj/netbeans/tests/nbproject/Makefile-Release.mk

@@ -0,0 +1,87 @@
+#
+# Generated Makefile - do not edit!
+#
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a -pre and a -post target defined where you can add customized code.
+#
+# This makefile implements configuration specific macros and targets.
+
+
+# Environment
+MKDIR=mkdir
+CP=cp
+GREP=grep
+NM=nm
+CCADMIN=CCadmin
+RANLIB=ranlib
+CC=gcc
+CCC=g++
+CXX=g++
+FC=gfortran
+AS=as
+
+# Macros
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Release
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+
+# Include project Makefile
+include Makefile
+
+# Object Directory
+OBJECTDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}
+
+# Object Files
+OBJECTFILES= \
+	${OBJECTDIR}/_ext/1694839831/XWMLReader.o
+
+
+# C Compiler Flags
+CFLAGS=
+
+# CC Compiler Flags
+CCFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+CXXFLAGS=-ansi -W -Wall -Wextra -pedantic -Wno-long-long
+
+# Fortran Compiler Flags
+FFLAGS=
+
+# Assembler Flags
+ASFLAGS=
+
+# Link Libraries and Options
+LDLIBSOPTIONS=-lGL -lX11 -lGLEW -lXrandr ../crown/dist/Release/GNU-Linux-x86/libcrown.a -lfreetype
+
+# Build Targets
+.build-conf: ${BUILD_SUBPROJECTS}
+	"${MAKE}"  -f nbproject/Makefile-${CND_CONF}.mk ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests: ../crown/dist/Release/GNU-Linux-x86/libcrown.a
+
+${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests: ${OBJECTFILES}
+	${MKDIR} -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}
+	${LINK.cc} -o ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests ${OBJECTFILES} ${LDLIBSOPTIONS} 
+
+${OBJECTDIR}/_ext/1694839831/XWMLReader.o: ../../../src/tests/xwmlreader/XWMLReader.cpp 
+	${MKDIR} -p ${OBJECTDIR}/_ext/1694839831
+	${RM} [email protected]
+	$(COMPILE.cc) -O2 -I../../../src/windowing/toolbox -I../../../src/core/math -I../../../src/core/mem -I../../../src/core -I../../../src/renderers/gl -I../../../src/renderers/gl/glx -I../../../src/renderers/gl/wgl -I../../../src/windowing -I../../../src/core/bv -I../../../src/windowing/layouts -I../../../src -I/usr/include/freetype2 -I../../../src/windowing/themes -I../../../src/core/containers -I../../../src/filesystem -I../../../src/core/streams -I../../../src/loaders -I../../../src/windowing/templates -MMD -MP -MF [email protected] -o ${OBJECTDIR}/_ext/1694839831/XWMLReader.o ../../../src/tests/xwmlreader/XWMLReader.cpp
+
+# Subprojects
+.build-subprojects:
+	cd ../crown && ${MAKE}  -f Makefile CONF=Release
+
+# Clean Targets
+.clean-conf: ${CLEAN_SUBPROJECTS}
+	${RM} -r ${CND_BUILDDIR}/${CND_CONF}
+	${RM} ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests
+
+# Subprojects
+.clean-subprojects:
+	cd ../crown && ${MAKE}  -f Makefile CONF=Release clean
+
+# Enable dependency checking
+.dep.inc: .depcheck-impl
+
+include .dep.inc

+ 133 - 0
proj/netbeans/tests/nbproject/Makefile-impl.mk

@@ -0,0 +1,133 @@
+# 
+# Generated Makefile - do not edit! 
+# 
+# Edit the Makefile in the project folder instead (../Makefile). Each target
+# has a pre- and a post- target defined where you can add customization code.
+#
+# This makefile implements macros and targets common to all configurations.
+#
+# NOCDDL
+
+
+# Building and Cleaning subprojects are done by default, but can be controlled with the SUB
+# macro. If SUB=no, subprojects will not be built or cleaned. The following macro
+# statements set BUILD_SUB-CONF and CLEAN_SUB-CONF to .build-reqprojects-conf
+# and .clean-reqprojects-conf unless SUB has the value 'no'
+SUB_no=NO
+SUBPROJECTS=${SUB_${SUB}}
+BUILD_SUBPROJECTS_=.build-subprojects
+BUILD_SUBPROJECTS_NO=
+BUILD_SUBPROJECTS=${BUILD_SUBPROJECTS_${SUBPROJECTS}}
+CLEAN_SUBPROJECTS_=.clean-subprojects
+CLEAN_SUBPROJECTS_NO=
+CLEAN_SUBPROJECTS=${CLEAN_SUBPROJECTS_${SUBPROJECTS}}
+
+
+# Project Name
+PROJECTNAME=tests
+
+# Active Configuration
+DEFAULTCONF=Debug
+CONF=${DEFAULTCONF}
+
+# All Configurations
+ALLCONFS=Debug Release 
+
+
+# build
+.build-impl: .build-pre .validate-impl .depcheck-impl
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf
+
+
+# clean
+.clean-impl: .clean-pre .validate-impl .depcheck-impl
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf
+
+
+# clobber 
+.clobber-impl: .clobber-pre .depcheck-impl
+	@#echo "=> Running $@..."
+	for CONF in ${ALLCONFS}; \
+	do \
+	    "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .clean-conf; \
+	done
+
+# all 
+.all-impl: .all-pre .depcheck-impl
+	@#echo "=> Running $@..."
+	for CONF in ${ALLCONFS}; \
+	do \
+	    "${MAKE}" -f nbproject/Makefile-$${CONF}.mk QMAKE=${QMAKE} SUBPROJECTS=${SUBPROJECTS} .build-conf; \
+	done
+
+# build tests
+.build-tests-impl: .build-impl .build-tests-pre
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .build-tests-conf
+
+# run tests
+.test-impl: .build-tests-impl .test-pre
+	@#echo "=> Running $@... Configuration=$(CONF)"
+	"${MAKE}" -f nbproject/Makefile-${CONF}.mk SUBPROJECTS=${SUBPROJECTS} .test-conf
+
+# dependency checking support
+.depcheck-impl:
+	@echo "# This code depends on make tool being used" >.dep.inc
+	@if [ -n "${MAKE_VERSION}" ]; then \
+	    echo "DEPFILES=\$$(wildcard \$$(addsuffix .d, \$${OBJECTFILES}))" >>.dep.inc; \
+	    echo "ifneq (\$${DEPFILES},)" >>.dep.inc; \
+	    echo "include \$${DEPFILES}" >>.dep.inc; \
+	    echo "endif" >>.dep.inc; \
+	else \
+	    echo ".KEEP_STATE:" >>.dep.inc; \
+	    echo ".KEEP_STATE_FILE:.make.state.\$${CONF}" >>.dep.inc; \
+	fi
+
+# configuration validation
+.validate-impl:
+	@if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
+	then \
+	    echo ""; \
+	    echo "Error: can not find the makefile for configuration '${CONF}' in project ${PROJECTNAME}"; \
+	    echo "See 'make help' for details."; \
+	    echo "Current directory: " `pwd`; \
+	    echo ""; \
+	fi
+	@if [ ! -f nbproject/Makefile-${CONF}.mk ]; \
+	then \
+	    exit 1; \
+	fi
+
+
+# help
+.help-impl: .help-pre
+	@echo "This makefile supports the following configurations:"
+	@echo "    ${ALLCONFS}"
+	@echo ""
+	@echo "and the following targets:"
+	@echo "    build  (default target)"
+	@echo "    clean"
+	@echo "    clobber"
+	@echo "    all"
+	@echo "    help"
+	@echo ""
+	@echo "Makefile Usage:"
+	@echo "    make [CONF=<CONFIGURATION>] [SUB=no] build"
+	@echo "    make [CONF=<CONFIGURATION>] [SUB=no] clean"
+	@echo "    make [SUB=no] clobber"
+	@echo "    make [SUB=no] all"
+	@echo "    make help"
+	@echo ""
+	@echo "Target 'build' will build a specific configuration and, unless 'SUB=no',"
+	@echo "    also build subprojects."
+	@echo "Target 'clean' will clean a specific configuration and, unless 'SUB=no',"
+	@echo "    also clean subprojects."
+	@echo "Target 'clobber' will remove all built files from all configurations and,"
+	@echo "    unless 'SUB=no', also from subprojects."
+	@echo "Target 'all' will will build all configurations and, unless 'SUB=no',"
+	@echo "    also build subprojects."
+	@echo "Target 'help' prints this message."
+	@echo ""
+

+ 35 - 0
proj/netbeans/tests/nbproject/Makefile-variables.mk

@@ -0,0 +1,35 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+CND_BASEDIR=`pwd`
+CND_BUILDDIR=build
+CND_DISTDIR=dist
+# Debug configuration
+CND_PLATFORM_Debug=GNU-Linux-x86
+CND_ARTIFACT_DIR_Debug=dist/Debug/GNU-Linux-x86
+CND_ARTIFACT_NAME_Debug=tests
+CND_ARTIFACT_PATH_Debug=dist/Debug/GNU-Linux-x86/tests
+CND_PACKAGE_DIR_Debug=dist/Debug/GNU-Linux-x86/package
+CND_PACKAGE_NAME_Debug=tests.tar
+CND_PACKAGE_PATH_Debug=dist/Debug/GNU-Linux-x86/package/tests.tar
+# Release configuration
+CND_PLATFORM_Release=GNU-Linux-x86
+CND_ARTIFACT_DIR_Release=dist/Release/GNU-Linux-x86
+CND_ARTIFACT_NAME_Release=tests
+CND_ARTIFACT_PATH_Release=dist/Release/GNU-Linux-x86/tests
+CND_PACKAGE_DIR_Release=dist/Release/GNU-Linux-x86/package
+CND_PACKAGE_NAME_Release=tests.tar
+CND_PACKAGE_PATH_Release=dist/Release/GNU-Linux-x86/package/tests.tar
+#
+# include compiler specific variables
+#
+# dmake command
+ROOT:sh = test -f nbproject/private/Makefile-variables.mk || \
+	(mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk)
+#
+# gmake command
+.PHONY: $(shell test -f nbproject/private/Makefile-variables.mk || (mkdir -p nbproject/private && touch nbproject/private/Makefile-variables.mk))
+#
+include nbproject/private/Makefile-variables.mk

+ 75 - 0
proj/netbeans/tests/nbproject/Package-Debug.bash

@@ -0,0 +1,75 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Debug
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests
+OUTPUT_BASENAME=tests
+PACKAGE_TOP_DIR=tests/
+
+# Functions
+function checkReturnCode
+{
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        exit $rc
+    fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+    mkdir -p "$1"
+    checkReturnCode
+    if [ "$2" != "" ]
+    then
+      chmod $2 "$1"
+      checkReturnCode
+    fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+    cp "$1" "$2"
+    checkReturnCode
+    if [ "$3" != "" ]
+    then
+        chmod $3 "$2"
+        checkReturnCode
+    fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
+rm -rf ${NBTMPDIR}
+mkdir -p ${NBTMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory "${NBTMPDIR}/tests/bin"
+copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/tests.tar
+cd ${NBTMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/tests.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${NBTMPDIR}

+ 75 - 0
proj/netbeans/tests/nbproject/Package-Release.bash

@@ -0,0 +1,75 @@
+#!/bin/bash -x
+
+#
+# Generated - do not edit!
+#
+
+# Macros
+TOP=`pwd`
+CND_PLATFORM=GNU-Linux-x86
+CND_CONF=Release
+CND_DISTDIR=dist
+CND_BUILDDIR=build
+NBTMPDIR=${CND_BUILDDIR}/${CND_CONF}/${CND_PLATFORM}/tmp-packaging
+TMPDIRNAME=tmp-packaging
+OUTPUT_PATH=${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/tests
+OUTPUT_BASENAME=tests
+PACKAGE_TOP_DIR=tests/
+
+# Functions
+function checkReturnCode
+{
+    rc=$?
+    if [ $rc != 0 ]
+    then
+        exit $rc
+    fi
+}
+function makeDirectory
+# $1 directory path
+# $2 permission (optional)
+{
+    mkdir -p "$1"
+    checkReturnCode
+    if [ "$2" != "" ]
+    then
+      chmod $2 "$1"
+      checkReturnCode
+    fi
+}
+function copyFileToTmpDir
+# $1 from-file path
+# $2 to-file path
+# $3 permission
+{
+    cp "$1" "$2"
+    checkReturnCode
+    if [ "$3" != "" ]
+    then
+        chmod $3 "$2"
+        checkReturnCode
+    fi
+}
+
+# Setup
+cd "${TOP}"
+mkdir -p ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package
+rm -rf ${NBTMPDIR}
+mkdir -p ${NBTMPDIR}
+
+# Copy files and create directories and links
+cd "${TOP}"
+makeDirectory "${NBTMPDIR}/tests/bin"
+copyFileToTmpDir "${OUTPUT_PATH}" "${NBTMPDIR}/${PACKAGE_TOP_DIR}bin/${OUTPUT_BASENAME}" 0755
+
+
+# Generate tar file
+cd "${TOP}"
+rm -f ${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/tests.tar
+cd ${NBTMPDIR}
+tar -vcf ../../../../${CND_DISTDIR}/${CND_CONF}/${CND_PLATFORM}/package/tests.tar *
+checkReturnCode
+
+# Cleanup
+cd "${TOP}"
+rm -rf ${NBTMPDIR}

+ 155 - 0
proj/netbeans/tests/nbproject/configurations.xml

@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="79">
+  <logicalFolder name="root" displayName="root" projectFiles="true" kind="ROOT">
+    <logicalFolder name="HeaderFiles"
+                   displayName="Header Files"
+                   projectFiles="true">
+      <itemPath>../../../src/tests/TestApp.h</itemPath>
+      <itemPath>../../../src/tests/TestScene.h</itemPath>
+    </logicalFolder>
+    <logicalFolder name="ResourceFiles"
+                   displayName="Resource Files"
+                   projectFiles="true">
+    </logicalFolder>
+    <logicalFolder name="SourceFiles"
+                   displayName="Source Files"
+                   projectFiles="true">
+      <itemPath>../../../src/tests/xwmlreader/XWMLReader.cpp</itemPath>
+    </logicalFolder>
+    <logicalFolder name="ExternalFiles"
+                   displayName="Important Files"
+                   projectFiles="false">
+      <itemPath>Makefile</itemPath>
+    </logicalFolder>
+  </logicalFolder>
+  <sourceRootList>
+    <Elem>../../../src</Elem>
+  </sourceRootList>
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="Debug" type="1">
+      <toolsSet>
+        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
+        <compilerSet>GNU|GNU</compilerSet>
+      </toolsSet>
+      <compileType>
+        <ccTool>
+          <incDir>
+            <pElem>../../../src/tests</pElem>
+            <pElem>../../../src/core/math</pElem>
+            <pElem>../../../src/core/mem</pElem>
+            <pElem>../../../src/core</pElem>
+            <pElem>../../../src/renderers/gl</pElem>
+            <pElem>../../../src/renderers/gl/glx</pElem>
+            <pElem>../../../src/renderers/gl/wgl</pElem>
+            <pElem>../../../src/windowing</pElem>
+            <pElem>../../../src/core/bv</pElem>
+            <pElem>../../../src/windowing/layouts</pElem>
+            <pElem>../../../src</pElem>
+            <pElem>/usr/include/freetype2</pElem>
+            <pElem>../../../src/windowing/themes</pElem>
+            <pElem>../../../src/core/containers</pElem>
+            <pElem>../../../src/filesystem</pElem>
+            <pElem>../../../src/core/streams</pElem>
+            <pElem>../../../src/loaders</pElem>
+            <pElem>../../../src/windowing/templates</pElem>
+            <pElem>../../../src/windowing/toolbox</pElem>
+          </incDir>
+          <commandLine>-ansi -W -Wall -Wextra -pedantic -Wno-long-long</commandLine>
+        </ccTool>
+        <linkerTool>
+          <linkerLibItems>
+            <linkerLibProjectItem>
+              <makeArtifact PL="../crown"
+                            CT="3"
+                            CN="Debug"
+                            AC="true"
+                            BL="true"
+                            WD="../crown"
+                            BC="${MAKE}  -f Makefile CONF=Debug"
+                            CC="${MAKE}  -f Makefile CONF=Debug clean"
+                            OP="dist/Debug/GNU-Linux-x86/libcrown.a">
+              </makeArtifact>
+            </linkerLibProjectItem>
+            <linkerLibLibItem>GL</linkerLibLibItem>
+            <linkerLibLibItem>X11</linkerLibLibItem>
+            <linkerLibLibItem>GLEW</linkerLibLibItem>
+            <linkerLibLibItem>Xrandr</linkerLibLibItem>
+            <linkerLibLibItem>freetype</linkerLibLibItem>
+          </linkerLibItems>
+        </linkerTool>
+        <requiredProjects>
+          <makeArtifact PL="../crown"
+                        CT="3"
+                        CN="Debug"
+                        AC="true"
+                        BL="true"
+                        WD="../crown"
+                        BC="${MAKE}  -f Makefile CONF=Debug"
+                        CC="${MAKE}  -f Makefile CONF=Debug clean"
+                        OP="dist/Debug/GNU-Linux-x86/libcrown.a">
+          </makeArtifact>
+        </requiredProjects>
+      </compileType>
+    </conf>
+    <conf name="Release" type="1">
+      <toolsSet>
+        <remote-sources-mode>LOCAL_SOURCES</remote-sources-mode>
+        <compilerSet>GNU|GNU</compilerSet>
+      </toolsSet>
+      <compileType>
+        <cTool>
+          <developmentMode>5</developmentMode>
+        </cTool>
+        <ccTool>
+          <developmentMode>5</developmentMode>
+          <incDir>
+            <pElem>../../../src/windowing/toolbox</pElem>
+            <pElem>../../../src/core/math</pElem>
+            <pElem>../../../src/core/mem</pElem>
+            <pElem>../../../src/core</pElem>
+            <pElem>../../../src/renderers/gl</pElem>
+            <pElem>../../../src/renderers/gl/glx</pElem>
+            <pElem>../../../src/renderers/gl/wgl</pElem>
+            <pElem>../../../src/windowing</pElem>
+            <pElem>../../../src/core/bv</pElem>
+            <pElem>../../../src/windowing/layouts</pElem>
+            <pElem>../../../src</pElem>
+            <pElem>/usr/include/freetype2</pElem>
+            <pElem>../../../src/windowing/themes</pElem>
+            <pElem>../../../src/core/containers</pElem>
+            <pElem>../../../src/filesystem</pElem>
+            <pElem>../../../src/core/streams</pElem>
+            <pElem>../../../src/loaders</pElem>
+            <pElem>../../../src/windowing/templates</pElem>
+          </incDir>
+          <commandLine>-ansi -W -Wall -Wextra -pedantic -Wno-long-long</commandLine>
+        </ccTool>
+        <fortranCompilerTool>
+          <developmentMode>5</developmentMode>
+        </fortranCompilerTool>
+        <linkerTool>
+          <linkerLibItems>
+            <linkerLibLibItem>GL</linkerLibLibItem>
+            <linkerLibLibItem>X11</linkerLibLibItem>
+            <linkerLibLibItem>GLEW</linkerLibLibItem>
+            <linkerLibLibItem>Xrandr</linkerLibLibItem>
+            <linkerLibProjectItem>
+              <makeArtifact PL="../crown"
+                            CT="3"
+                            CN="Release"
+                            AC="true"
+                            BL="true"
+                            WD="../crown"
+                            BC="${MAKE}  -f Makefile CONF=Release"
+                            CC="${MAKE}  -f Makefile CONF=Release clean"
+                            OP="dist/Release/GNU-Linux-x86/libcrown.a">
+              </makeArtifact>
+            </linkerLibProjectItem>
+            <linkerLibLibItem>freetype</linkerLibLibItem>
+          </linkerLibItems>
+        </linkerTool>
+      </compileType>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 7 - 0
proj/netbeans/tests/nbproject/private/Makefile-variables.mk

@@ -0,0 +1,7 @@
+#
+# Generated - do not edit!
+#
+# NOCDDL
+#
+# Debug configuration
+# Release configuration

+ 78 - 0
proj/netbeans/tests/nbproject/private/configurations.xml

@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configurationDescriptor version="79">
+  <projectmakefile>Makefile</projectmakefile>
+  <confs>
+    <conf name="Debug" type="1">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <platform>2</platform>
+      </toolsSet>
+      <dbx_gdbdebugger version="1">
+        <gdb_pathmaps>
+        </gdb_pathmaps>
+        <gdb_interceptlist>
+          <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
+        </gdb_interceptlist>
+        <gdb_options>
+          <DebugOptions>
+          </DebugOptions>
+        </gdb_options>
+        <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
+      </dbx_gdbdebugger>
+      <gizmo_options version="3">
+        <configurationname>GizmoSimple</configurationname>
+      </gizmo_options>
+      <nativedebugger version="1">
+        <engine>gdb</engine>
+      </nativedebugger>
+      <runprofile version="9">
+        <runcommandpicklist>
+          <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
+        </runcommandpicklist>
+        <runcommand>"${OUTPUT_PATH}"</runcommand>
+        <rundir>../../../src/tests/xwmlreader</rundir>
+        <buildfirst>true</buildfirst>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+    <conf name="Release" type="1">
+      <toolsSet>
+        <developmentServer>localhost</developmentServer>
+        <platform>2</platform>
+      </toolsSet>
+      <dbx_gdbdebugger version="1">
+        <gdb_pathmaps>
+        </gdb_pathmaps>
+        <gdb_interceptlist>
+          <gdbinterceptoptions gdb_all="false" gdb_unhandled="true" gdb_unexpected="true"/>
+        </gdb_interceptlist>
+        <gdb_options>
+          <DebugOptions>
+          </DebugOptions>
+        </gdb_options>
+        <gdb_buildfirst gdb_buildfirst_overriden="false" gdb_buildfirst_old="false"/>
+      </dbx_gdbdebugger>
+      <gizmo_options version="3">
+        <configurationname>GizmoSimple</configurationname>
+      </gizmo_options>
+      <nativedebugger version="1">
+        <engine>gdb</engine>
+      </nativedebugger>
+      <runprofile version="9">
+        <runcommandpicklist>
+          <runcommandpicklistitem>"${OUTPUT_PATH}"</runcommandpicklistitem>
+        </runcommandpicklist>
+        <runcommand>"${OUTPUT_PATH}"</runcommand>
+        <rundir></rundir>
+        <buildfirst>true</buildfirst>
+        <terminal-type>0</terminal-type>
+        <remove-instrumentation>0</remove-instrumentation>
+        <environment>
+        </environment>
+      </runprofile>
+    </conf>
+  </confs>
+</configurationDescriptor>

+ 8 - 0
proj/netbeans/tests/nbproject/private/private.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
+    <data xmlns="http://www.netbeans.org/ns/make-project-private/1">
+        <activeConfTypeElem>1</activeConfTypeElem>
+        <activeConfIndexElem>0</activeConfIndexElem>
+    </data>
+    <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/1"/>
+</project-private>

+ 0 - 0
proj/netbeans/tests/nbproject/project.properties


+ 30 - 0
proj/netbeans/tests/nbproject/project.xml

@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://www.netbeans.org/ns/project/1">
+    <type>org.netbeans.modules.cnd.makeproject</type>
+    <configuration>
+        <data xmlns="http://www.netbeans.org/ns/make-project/1">
+            <name>tests</name>
+            <make-project-type>0</make-project-type>
+            <c-extensions/>
+            <cpp-extensions>cpp</cpp-extensions>
+            <header-extensions>h</header-extensions>
+            <sourceEncoding>UTF-8</sourceEncoding>
+            <make-dep-projects>
+                <make-dep-project>../crown</make-dep-project>
+            </make-dep-projects>
+            <sourceRootList>
+                <sourceRootElem>../../../src</sourceRootElem>
+            </sourceRootList>
+            <confList>
+                <confElem>
+                    <name>Debug</name>
+                    <type>1</type>
+                </confElem>
+                <confElem>
+                    <name>Release</name>
+                    <type>1</type>
+                </confElem>
+            </confList>
+        </data>
+    </configuration>
+</project>

+ 29 - 0
proj/vs10/crown.sln

@@ -0,0 +1,29 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "crown", "crown\crown.vcxproj", "{1496695E-20F6-4D89-9A83-D804C4658FC6}"
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tests", "tests\tests.vcxproj", "{0FF7A88C-EF41-463B-A1C8-E4C259363B10}"
+	ProjectSection(ProjectDependencies) = postProject
+		{1496695E-20F6-4D89-9A83-D804C4658FC6} = {1496695E-20F6-4D89-9A83-D804C4658FC6}
+	EndProjectSection
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Win32 = Debug|Win32
+		Release|Win32 = Release|Win32
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1496695E-20F6-4D89-9A83-D804C4658FC6}.Debug|Win32.ActiveCfg = Debug|Win32
+		{1496695E-20F6-4D89-9A83-D804C4658FC6}.Debug|Win32.Build.0 = Debug|Win32
+		{1496695E-20F6-4D89-9A83-D804C4658FC6}.Release|Win32.ActiveCfg = Release|Win32
+		{1496695E-20F6-4D89-9A83-D804C4658FC6}.Release|Win32.Build.0 = Release|Win32
+		{0FF7A88C-EF41-463B-A1C8-E4C259363B10}.Debug|Win32.ActiveCfg = Debug|Win32
+		{0FF7A88C-EF41-463B-A1C8-E4C259363B10}.Debug|Win32.Build.0 = Debug|Win32
+		{0FF7A88C-EF41-463B-A1C8-E4C259363B10}.Release|Win32.ActiveCfg = Release|Win32
+		{0FF7A88C-EF41-463B-A1C8-E4C259363B10}.Release|Win32.Build.0 = Release|Win32
+	EndGlobalSection
+	GlobalSection(SolutionProperties) = preSolution
+		HideSolutionNode = FALSE
+	EndGlobalSection
+EndGlobal

二進制
proj/vs10/crown/crown.aps


二進制
proj/vs10/crown/crown.rc


+ 357 - 0
proj/vs10/crown/crown.vcxproj

@@ -0,0 +1,357 @@
+<?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>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{1496695E-20F6-4D89-9A83-D804C4658FC6}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>crown</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>NotSet</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>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir);..\..\..\src\os\win\wgl;..\..\..\src\os\win\input;..\..\..\src\os\win;..\..\..\src\os;..\..\..\src\input\win;..\..\..\src\input;..\..\..\src\filesystem;..\..\..\src\windowing\toolbox;..\..\..\src\loaders;..\..\..\src\windowing\templates;..\..\..\src\core\streams;..\..\..\src\windowing\layouts;..\..\..\src\windowing\themes;..\..\..\src\windowing;..\..\..\src\renderers\gl\glx;..\..\..\src\renderers\gl\wgl;..\..\..\src\renderers\gl;..\..\..\src\core\math;..\..\..\src\core\mem;..\..\..\src\core\containers;..\..\..\src\core\bv;..\..\..\src\core;..\..\..\src;$(VCInstallDir)include\freetype2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <DisableLanguageExtensions>false</DisableLanguageExtensions>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+    </Link>
+  </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;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir);..\..\..\src\input\win;..\..\..\src\input;..\..\..\src\filesystem;..\..\..\src\windowing\toolbox;..\..\..\src\loaders;..\..\..\src\windowing\templates;..\..\..\src\core\streams;..\..\..\src\windowing\layouts;..\..\..\src\windowing\themes;..\..\..\src\windowing;..\..\..\src\renderers\gl\glx;..\..\..\src\renderers\gl\wgl;..\..\..\src\renderers\gl;..\..\..\src\core\math;..\..\..\src\core\mem;..\..\..\src\core\containers;..\..\..\src\core\bv;..\..\..\src\core;..\..\..\src;$(VCInstallDir)include\freetype2;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\src\Camera.cpp" />
+    <ClCompile Include="..\..\..\src\core\bv\Circle.cpp" />
+    <ClCompile Include="..\..\..\src\core\bv\Frustum.cpp" />
+    <ClCompile Include="..\..\..\src\core\bv\Rect.cpp" />
+    <ClCompile Include="..\..\..\src\core\containers\Generic.cpp" />
+    <ClCompile Include="..\..\..\src\core\containers\Str.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Angles.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Color4.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Mat3.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Mat4.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\MathUtils.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Plane.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Point2.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Quat.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Shape.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Vec2.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Vec3.cpp" />
+    <ClCompile Include="..\..\..\src\core\math\Vec4.cpp" />
+    <ClCompile Include="..\..\..\src\core\mem\GarbageBin.cpp" />
+    <ClCompile Include="..\..\..\src\core\mem\ManagedObject.cpp" />
+    <ClCompile Include="..\..\..\src\core\Object.cpp" />
+    <ClCompile Include="..\..\..\src\core\Observable.cpp" />
+    <ClCompile Include="..\..\..\src\core\streams\FileStream.cpp" />
+    <ClCompile Include="..\..\..\src\core\streams\MemoryStream.cpp" />
+    <ClCompile Include="..\..\..\src\core\streams\Stream.cpp" />
+    <ClCompile Include="..\..\..\src\core\Weak.cpp" />
+    <ClCompile Include="..\..\..\src\Device.cpp" />
+    <ClCompile Include="..\..\..\src\Entity.cpp" />
+    <ClCompile Include="..\..\..\src\filesystem\Filesystem.cpp" />
+    <ClCompile Include="..\..\..\src\Font.cpp" />
+    <ClCompile Include="..\..\..\src\FontManager.cpp" />
+    <ClCompile Include="..\..\..\src\Frame.cpp" />
+    <ClCompile Include="..\..\..\src\Image.cpp" />
+    <ClCompile Include="..\..\..\src\ImageLoader.cpp" />
+    <ClCompile Include="..\..\..\src\input\EventDispatcher.cpp" />
+    <ClCompile Include="..\..\..\src\input\InputManager.cpp" />
+    <ClCompile Include="..\..\..\src\Light.cpp" />
+    <ClCompile Include="..\..\..\src\loaders\BMPImageLoader.cpp" />
+    <ClCompile Include="..\..\..\src\loaders\CRWDecoder.cpp" />
+    <ClCompile Include="..\..\..\src\loaders\TGAImageLoader.cpp" />
+    <ClCompile Include="..\..\..\src\loaders\XMLReader.cpp" />
+    <ClCompile Include="..\..\..\src\loaders\XWMLReader.cpp" />
+    <ClCompile Include="..\..\..\src\Log.cpp" />
+    <ClCompile Include="..\..\..\src\Material.cpp" />
+    <ClCompile Include="..\..\..\src\Mesh.cpp" />
+    <ClCompile Include="..\..\..\src\MeshChunk.cpp" />
+    <ClCompile Include="..\..\..\src\MeshManager.cpp" />
+    <ClCompile Include="..\..\..\src\MovableCamera.cpp" />
+    <ClCompile Include="..\..\..\src\os\win\input\WinInputManager.cpp" />
+    <ClCompile Include="..\..\..\src\os\win\input\WinKeyboard.cpp" />
+    <ClCompile Include="..\..\..\src\os\win\input\WinMouse.cpp" />
+    <ClCompile Include="..\..\..\src\os\win\wgl\WGLRenderWindow.cpp" />
+    <ClCompile Include="..\..\..\src\os\win\WinOS.cpp" />
+    <ClCompile Include="..\..\..\src\os\win\WinTimer.cpp" />
+    <ClCompile Include="..\..\..\src\ParticleEmitter.cpp" />
+    <ClCompile Include="..\..\..\src\ParticleManager.cpp" />
+    <ClCompile Include="..\..\..\src\PhysicNode.cpp" />
+    <ClCompile Include="..\..\..\src\PhysicsManager.cpp" />
+    <ClCompile Include="..\..\..\src\Pixel.cpp" />
+    <ClCompile Include="..\..\..\src\Renderer.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLIndexBuffer.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLOcclusionQuery.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLRenderer.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLSupport.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLTextRenderer.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLTexture.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLTextureManager.cpp" />
+    <ClCompile Include="..\..\..\src\renderers\gl\GLVertexBuffer.cpp" />
+    <ClCompile Include="..\..\..\src\RenderTarget.cpp" />
+    <ClCompile Include="..\..\..\src\RenderWindow.cpp" />
+    <ClCompile Include="..\..\..\src\ResourceManager.cpp" />
+    <ClCompile Include="..\..\..\src\Scene.cpp" />
+    <ClCompile Include="..\..\..\src\SceneManager.cpp" />
+    <ClCompile Include="..\..\..\src\SceneNode.cpp" />
+    <ClCompile Include="..\..\..\src\Skybox.cpp" />
+    <ClCompile Include="..\..\..\src\Sprite.cpp" />
+    <ClCompile Include="..\..\..\src\SpriteAnimator.cpp" />
+    <ClCompile Include="..\..\..\src\Viewport.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Bind.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Button.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\DragArea.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\ImageWidget.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\ItemsSelector.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\ItemsWidget.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Label.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\layouts\CanvasLayout.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\layouts\StackLayout.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\ListView.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Property.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\ScrollArea.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\SpecificProperties.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\TextBox.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Themes.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\themes\LunaTheme.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\toolbox\MessageWindow.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\toolbox\TextInputWindow.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\TreeView.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Widget.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\Window.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\WindowContext.cpp" />
+    <ClCompile Include="..\..\..\src\windowing\WindowsManager.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\src\BMPImageLoader.h" />
+    <ClInclude Include="..\..\..\src\Camera.h" />
+    <ClInclude Include="..\..\..\src\Config.h" />
+    <ClInclude Include="..\..\..\src\core\Auto.h" />
+    <ClInclude Include="..\..\..\src\core\bv\Box.h" />
+    <ClInclude Include="..\..\..\src\core\bv\Circle.h" />
+    <ClInclude Include="..\..\..\src\core\bv\Frustum.h" />
+    <ClInclude Include="..\..\..\src\core\bv\Rect.h" />
+    <ClInclude Include="..\..\..\src\core\bv\Sphere.h" />
+    <ClInclude Include="..\..\..\src\core\Common.h" />
+    <ClInclude Include="..\..\..\src\core\containers\Dictionary.h" />
+    <ClInclude Include="..\..\..\src\core\containers\Generic.h" />
+    <ClInclude Include="..\..\..\src\core\containers\IEnumerable.h" />
+    <ClInclude Include="..\..\..\src\core\containers\List.h" />
+    <ClInclude Include="..\..\..\src\core\containers\RBTree.h" />
+    <ClInclude Include="..\..\..\src\core\containers\Str.h" />
+    <ClInclude Include="..\..\..\src\core\CoreEventArgs.h" />
+    <ClInclude Include="..\..\..\src\core\Delegate.h" />
+    <ClInclude Include="..\..\..\src\core\Exceptions.h" />
+    <ClInclude Include="..\..\..\src\core\math\Angles.h" />
+    <ClInclude Include="..\..\..\src\core\math\Color4.h" />
+    <ClInclude Include="..\..\..\src\core\math\Interpolation.h" />
+    <ClInclude Include="..\..\..\src\core\math\Intersection.h" />
+    <ClInclude Include="..\..\..\src\core\math\Mat3.h" />
+    <ClInclude Include="..\..\..\src\core\math\Mat4.h" />
+    <ClInclude Include="..\..\..\src\core\math\MathUtils.h" />
+    <ClInclude Include="..\..\..\src\core\math\Plane.h" />
+    <ClInclude Include="..\..\..\src\core\math\Point2.h" />
+    <ClInclude Include="..\..\..\src\core\math\Quat.h" />
+    <ClInclude Include="..\..\..\src\core\math\Random.h" />
+    <ClInclude Include="..\..\..\src\core\math\Ray.h" />
+    <ClInclude Include="..\..\..\src\core\math\Shape.h" />
+    <ClInclude Include="..\..\..\src\core\math\Triangle.h" />
+    <ClInclude Include="..\..\..\src\core\math\Vec2.h" />
+    <ClInclude Include="..\..\..\src\core\math\Vec3.h" />
+    <ClInclude Include="..\..\..\src\core\math\Vec4.h" />
+    <ClInclude Include="..\..\..\src\core\mem\GarbageBin.h" />
+    <ClInclude Include="..\..\..\src\core\mem\ManagedObject.h" />
+    <ClInclude Include="..\..\..\src\core\Object.h" />
+    <ClInclude Include="..\..\..\src\core\Observable.h" />
+    <ClInclude Include="..\..\..\src\core\Shared.h" />
+    <ClInclude Include="..\..\..\src\core\SignalSlot.h" />
+    <ClInclude Include="..\..\..\src\core\streams\FileStream.h" />
+    <ClInclude Include="..\..\..\src\core\streams\MemoryStream.h" />
+    <ClInclude Include="..\..\..\src\core\streams\Stream.h" />
+    <ClInclude Include="..\..\..\src\core\Types.h" />
+    <ClInclude Include="..\..\..\src\core\Weak.h" />
+    <ClInclude Include="..\..\..\src\core\WithProperties.h" />
+    <ClInclude Include="..\..\..\src\Crown.h" />
+    <ClInclude Include="..\..\..\src\CRWDecoder.h" />
+    <ClInclude Include="..\..\..\src\CursorControl.h" />
+    <ClInclude Include="..\..\..\src\Data.h" />
+    <ClInclude Include="..\..\..\src\Device.h" />
+    <ClInclude Include="..\..\..\src\Entity.h" />
+    <ClInclude Include="..\..\..\src\filesystem\ArchiveFile.h" />
+    <ClInclude Include="..\..\..\src\filesystem\Directory.h" />
+    <ClInclude Include="..\..\..\src\filesystem\Filesystem.h" />
+    <ClInclude Include="..\..\..\src\filesystem\Host.h" />
+    <ClInclude Include="..\..\..\src\filesystem\Path.h" />
+    <ClInclude Include="..\..\..\src\filesystem\RegularFile.h" />
+    <ClInclude Include="..\..\..\src\Font.h" />
+    <ClInclude Include="..\..\..\src\FontManager.h" />
+    <ClInclude Include="..\..\..\src\Frame.h" />
+    <ClInclude Include="..\..\..\src\Glyph.h" />
+    <ClInclude Include="..\..\..\src\Image.h" />
+    <ClInclude Include="..\..\..\src\ImageLoader.h" />
+    <ClInclude Include="..\..\..\src\IndexBuffer.h" />
+    <ClInclude Include="..\..\..\src\input\EventDispatcher.h" />
+    <ClInclude Include="..\..\..\src\input\InputManager.h" />
+    <ClInclude Include="..\..\..\src\input\Keyboard.h" />
+    <ClInclude Include="..\..\..\src\input\KeyCode.h" />
+    <ClInclude Include="..\..\..\src\input\Mouse.h" />
+    <ClInclude Include="..\..\..\src\input\Touch.h" />
+    <ClInclude Include="..\..\..\src\Light.h" />
+    <ClInclude Include="..\..\..\src\loaders\BMPImageLoader.h" />
+    <ClInclude Include="..\..\..\src\loaders\CRWDecoder.h" />
+    <ClInclude Include="..\..\..\src\loaders\TGAImageLoader.h" />
+    <ClInclude Include="..\..\..\src\loaders\XMLReader.h" />
+    <ClInclude Include="..\..\..\src\loaders\XWMLReader.h" />
+    <ClInclude Include="..\..\..\src\Log.h" />
+    <ClInclude Include="..\..\..\src\LogManager.h" />
+    <ClInclude Include="..\..\..\src\Material.h" />
+    <ClInclude Include="..\..\..\src\Mesh.h" />
+    <ClInclude Include="..\..\..\src\MeshChunk.h" />
+    <ClInclude Include="..\..\..\src\MeshLoader.h" />
+    <ClInclude Include="..\..\..\src\MeshManager.h" />
+    <ClInclude Include="..\..\..\src\MovableCamera.h" />
+    <ClInclude Include="..\..\..\src\OBJMeshLoader.h" />
+    <ClInclude Include="..\..\..\src\OcclusionQuery.h" />
+    <ClInclude Include="..\..\..\src\OpenGl.h" />
+    <ClInclude Include="..\..\..\src\os\OS.h" />
+    <ClInclude Include="..\..\..\src\os\win\input\WinInputManager.h" />
+    <ClInclude Include="..\..\..\src\os\win\input\WinKeyboard.h" />
+    <ClInclude Include="..\..\..\src\os\win\input\WinMouse.h" />
+    <ClInclude Include="..\..\..\src\os\win\wgl\WGLRenderWindow.h" />
+    <ClInclude Include="..\..\..\src\os\win\WinTimer.h" />
+    <ClInclude Include="..\..\..\src\ParticleEmitter.h" />
+    <ClInclude Include="..\..\..\src\ParticleManager.h" />
+    <ClInclude Include="..\..\..\src\PhysicNode.h" />
+    <ClInclude Include="..\..\..\src\PhysicsManager.h" />
+    <ClInclude Include="..\..\..\src\Pixel.h" />
+    <ClInclude Include="..\..\..\src\PixelFormat.h" />
+    <ClInclude Include="..\..\..\src\RenderBuffer.h" />
+    <ClInclude Include="..\..\..\src\RenderContext.h" />
+    <ClInclude Include="..\..\..\src\Renderer.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLIndexBuffer.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLOcclusionQuery.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLRenderer.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLSupport.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLTextRenderer.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLTexture.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLTextureManager.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\GLVertexBuffer.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\glx\GLXRenderWindow.h" />
+    <ClInclude Include="..\..\..\src\renderers\gl\wgl\WGLRenderWindow.h" />
+    <ClInclude Include="..\..\..\src\RenderTarget.h" />
+    <ClInclude Include="..\..\..\src\RenderWindow.h" />
+    <ClInclude Include="..\..\..\src\ResourceManager.h" />
+    <ClInclude Include="..\..\..\src\Scene.h" />
+    <ClInclude Include="..\..\..\src\SceneManager.h" />
+    <ClInclude Include="..\..\..\src\SceneNode.h" />
+    <ClInclude Include="..\..\..\src\Skybox.h" />
+    <ClInclude Include="..\..\..\src\Sprite.h" />
+    <ClInclude Include="..\..\..\src\SpriteAnimator.h" />
+    <ClInclude Include="..\..\..\src\TextRenderer.h" />
+    <ClInclude Include="..\..\..\src\Texture.h" />
+    <ClInclude Include="..\..\..\src\TextureManager.h" />
+    <ClInclude Include="..\..\..\src\TGAImageLoader.h" />
+    <ClInclude Include="..\..\..\src\Timer.h" />
+    <ClInclude Include="..\..\..\src\Vertex3.h" />
+    <ClInclude Include="..\..\..\src\VertexBuffer.h" />
+    <ClInclude Include="..\..\..\src\VideoMode.h" />
+    <ClInclude Include="..\..\..\src\Viewport.h" />
+    <ClInclude Include="..\..\..\src\WinCursorControl.h" />
+    <ClInclude Include="..\..\..\src\WindowEventHandler.h" />
+    <ClInclude Include="..\..\..\src\windowing\Bind.h" />
+    <ClInclude Include="..\..\..\src\windowing\Button.h" />
+    <ClInclude Include="..\..\..\src\windowing\DragArea.h" />
+    <ClInclude Include="..\..\..\src\windowing\ImageWidget.h" />
+    <ClInclude Include="..\..\..\src\windowing\ItemsSelector.h" />
+    <ClInclude Include="..\..\..\src\windowing\ItemsWidget.h" />
+    <ClInclude Include="..\..\..\src\windowing\Label.h" />
+    <ClInclude Include="..\..\..\src\windowing\layouts\CanvasLayout.h" />
+    <ClInclude Include="..\..\..\src\windowing\layouts\StackLayout.h" />
+    <ClInclude Include="..\..\..\src\windowing\ListView.h" />
+    <ClInclude Include="..\..\..\src\windowing\Property.h" />
+    <ClInclude Include="..\..\..\src\windowing\ScrollArea.h" />
+    <ClInclude Include="..\..\..\src\windowing\SpecificProperties.h" />
+    <ClInclude Include="..\..\..\src\windowing\templates\ITemplate.h" />
+    <ClInclude Include="..\..\..\src\windowing\TextBox.h" />
+    <ClInclude Include="..\..\..\src\windowing\Themes.h" />
+    <ClInclude Include="..\..\..\src\windowing\ThemeSpriteWidget.h" />
+    <ClInclude Include="..\..\..\src\windowing\themes\LunaTheme.h" />
+    <ClInclude Include="..\..\..\src\windowing\toolbox\MessageWindow.h" />
+    <ClInclude Include="..\..\..\src\windowing\toolbox\TextInputWindow.h" />
+    <ClInclude Include="..\..\..\src\windowing\TreeView.h" />
+    <ClInclude Include="..\..\..\src\windowing\Widget.h" />
+    <ClInclude Include="..\..\..\src\windowing\Window.h" />
+    <ClInclude Include="..\..\..\src\windowing\WindowContext.h" />
+    <ClInclude Include="..\..\..\src\windowing\WindowingEventArgs.h" />
+    <ClInclude Include="..\..\..\src\windowing\WindowsManager.h" />
+    <ClInclude Include="..\..\..\src\WindowsInclude.h" />
+    <ClInclude Include="..\..\..\src\XCursorControl.h" />
+    <ClInclude Include="resources.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="crown.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\..\res\napoleon.ico" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 949 - 0
proj/vs10/crown/crown.vcxproj.filters

@@ -0,0 +1,949 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+    <Filter Include="Source Files\core">
+      <UniqueIdentifier>{4f02c472-8149-43be-aebd-c78a41666949}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\renderer">
+      <UniqueIdentifier>{4a49a309-c770-496c-9112-31f17fa2190d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\windowing">
+      <UniqueIdentifier>{2e46ca03-0f96-4123-b051-b555eec4f0a5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\core\math">
+      <UniqueIdentifier>{3c924166-9edb-484d-a10a-9724111b32f1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\core\bv">
+      <UniqueIdentifier>{03f7b5b8-77ec-42b7-8bda-becf9f6b80c3}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\core\mem">
+      <UniqueIdentifier>{d542ca53-d0a4-4f1f-b653-49e60d220efc}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\core\containers">
+      <UniqueIdentifier>{8bc9d51c-c77c-491d-9b13-6e2cca4d81e6}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\windowing\themes">
+      <UniqueIdentifier>{a7fa05f6-d6b9-4fa1-9b79-e0f53f2cdc85}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\renderer\gl">
+      <UniqueIdentifier>{7f6a668c-fb30-4287-9c4a-25d562be6292}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\core">
+      <UniqueIdentifier>{81186909-addb-4726-a936-5ea6599e52a8}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\core\math">
+      <UniqueIdentifier>{965482a0-fbe6-45da-9bc9-35bc2cb8c29d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\core\bv">
+      <UniqueIdentifier>{bb07abfb-5aeb-4afd-84e0-e2a6acd6f1f1}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\core\mem">
+      <UniqueIdentifier>{76a835eb-2751-4788-8227-5f1b6de23604}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\core\containers">
+      <UniqueIdentifier>{5439d943-7404-46f2-9982-bd55d0cc219d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\windowing">
+      <UniqueIdentifier>{bb175b13-3b20-488f-bdd0-30512c9900ec}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\windowing\themes">
+      <UniqueIdentifier>{6b705af4-00a8-401f-9649-d4c123b19e13}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\renderer">
+      <UniqueIdentifier>{4d2ae5cd-9103-41da-a424-fdd481e3c882}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\renderer\gl">
+      <UniqueIdentifier>{1f1da8c2-d1a5-42dc-a90c-aa74ebcafc6d}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\renderer\gl\glx">
+      <UniqueIdentifier>{9b8868d1-4dc1-4c82-a86a-e762e6005bc7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\renderer\gl\wgl">
+      <UniqueIdentifier>{c1bf674a-7d9b-4842-8772-015e9a4d0e58}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\windowing\layouts">
+      <UniqueIdentifier>{2fe4e628-273a-445b-b2ec-de1e200e1065}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\windowing\layout">
+      <UniqueIdentifier>{6fa80c4a-6562-4028-bf0f-277abf0a8a9b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\core\streams">
+      <UniqueIdentifier>{af4b65fe-8cb6-47bc-aea9-941bb8a2a006}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\core\streams">
+      <UniqueIdentifier>{3fb93791-576a-4686-bfc7-56f7605ec56b}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\windowing\templates">
+      <UniqueIdentifier>{2084f387-4e51-4df9-94af-f1286aa9d717}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\loaders">
+      <UniqueIdentifier>{eec59d08-a0b9-4dfd-bcb8-bbd03c8a9058}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\loaders">
+      <UniqueIdentifier>{3ca32ce3-adb5-4cec-9a07-4b301da2f112}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\windowing\toolbox">
+      <UniqueIdentifier>{184dcde8-7ffb-4280-a687-824476c9711e}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\windowing\toolbox">
+      <UniqueIdentifier>{1f26e28e-70f6-4365-9db2-e37428f84692}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\filesystem">
+      <UniqueIdentifier>{5df8fba7-725f-4bae-85e4-67639f31572a}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\filesystem">
+      <UniqueIdentifier>{a542b973-3843-464d-8bc4-b8b1a75f33fe}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\input">
+      <UniqueIdentifier>{d150c751-2541-4bbd-b483-d75ec794ae7f}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\input">
+      <UniqueIdentifier>{8b1700cc-0847-4020-a1c6-af05d83e6160}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\os">
+      <UniqueIdentifier>{1f32fb3d-53bd-4277-9d27-9b6d63476ca9}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\os\win">
+      <UniqueIdentifier>{54da6f9e-2194-4e1d-831c-7d56e4b597aa}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\os\win\wgl">
+      <UniqueIdentifier>{d27b8cb7-2ccb-4159-9991-f2003fc478b7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\os\win\input">
+      <UniqueIdentifier>{275bbcb3-ec3e-41de-ac68-c8d340615b92}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\os">
+      <UniqueIdentifier>{9da221f6-52c0-463c-b97c-457fafb9b747}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\os\win">
+      <UniqueIdentifier>{f1efd17f-08b4-454d-a94c-bc3ecdc00f57}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\os\win\input">
+      <UniqueIdentifier>{939730da-57f4-46a3-944e-188dcc3bf143}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\os\win\wgl">
+      <UniqueIdentifier>{447298a8-bdfd-4972-94bc-00d379d37428}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\src\Camera.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Device.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Font.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Frame.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Image.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Light.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Log.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Material.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Mesh.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\MeshChunk.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\MovableCamera.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Pixel.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\RenderTarget.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\RenderWindow.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\ResourceManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\SceneManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Sprite.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Viewport.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Button.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\DragArea.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Themes.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Widget.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Window.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\WindowsManager.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\themes\LunaTheme.cpp">
+      <Filter>Source Files\windowing\themes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\layouts\CanvasLayout.cpp">
+      <Filter>Source Files\windowing\layouts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\layouts\StackLayout.cpp">
+      <Filter>Source Files\windowing\layouts</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLRenderer.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLSupport.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLTextRenderer.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLTexture.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\bv\Frustum.cpp">
+      <Filter>Source Files\core\bv</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Angles.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Mat3.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Mat4.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Plane.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Quat.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Vec2.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Vec3.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Vec4.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\mem\GarbageBin.cpp">
+      <Filter>Source Files\core\mem</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\mem\ManagedObject.cpp">
+      <Filter>Source Files\core\mem</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Label.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\containers\Generic.cpp">
+      <Filter>Source Files\core\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\Object.cpp">
+      <Filter>Source Files\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\Observable.cpp">
+      <Filter>Source Files\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\ListView.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Scene.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\streams\FileStream.cpp">
+      <Filter>Source Files\core\streams</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\streams\MemoryStream.cpp">
+      <Filter>Source Files\core\streams</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\streams\Stream.cpp">
+      <Filter>Source Files\core\streams</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLVertexBuffer.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLIndexBuffer.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Skybox.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLOcclusionQuery.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\MathUtils.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\SceneNode.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\TextBox.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\loaders\BMPImageLoader.cpp">
+      <Filter>Source Files\loaders</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\loaders\CRWDecoder.cpp">
+      <Filter>Source Files\loaders</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\loaders\TGAImageLoader.cpp">
+      <Filter>Source Files\loaders</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\toolbox\TextInputWindow.cpp">
+      <Filter>Source Files\windowing\toolbox</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\ScrollArea.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\filesystem\Filesystem.cpp">
+      <Filter>Source Files\filesystem</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\TreeView.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\renderers\gl\GLTextureManager.cpp">
+      <Filter>Source Files\renderer\gl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\MeshManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\FontManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\loaders\XMLReader.cpp">
+      <Filter>Source Files\loaders</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\loaders\XWMLReader.cpp">
+      <Filter>Source Files\loaders</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\toolbox\MessageWindow.cpp">
+      <Filter>Source Files\windowing\toolbox</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Point2.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Bind.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\WindowContext.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\Weak.cpp">
+      <Filter>Source Files\core</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\Property.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\SpecificProperties.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\ItemsWidget.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\ItemsSelector.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\windowing\ImageWidget.cpp">
+      <Filter>Source Files\windowing</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\input\EventDispatcher.cpp">
+      <Filter>Source Files\input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Entity.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\SpriteAnimator.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\ImageLoader.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\PhysicsManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\PhysicNode.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\input\InputManager.cpp">
+      <Filter>Source Files\input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\Renderer.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Shape.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\bv\Circle.cpp">
+      <Filter>Source Files\core\bv</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\math\Color4.cpp">
+      <Filter>Source Files\core\math</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\ParticleEmitter.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\ParticleManager.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\containers\Str.cpp">
+      <Filter>Source Files\core\containers</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\os\win\WinOS.cpp">
+      <Filter>Source Files\os\win</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\os\win\WinTimer.cpp">
+      <Filter>Source Files\os\win</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\os\win\wgl\WGLRenderWindow.cpp">
+      <Filter>Source Files\os\win\wgl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\os\win\input\WinInputManager.cpp">
+      <Filter>Source Files\os\win\input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\os\win\input\WinKeyboard.cpp">
+      <Filter>Source Files\os\win\input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\os\win\input\WinMouse.cpp">
+      <Filter>Source Files\os\win\input</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\core\bv\Rect.cpp">
+      <Filter>Source Files\core\bv</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\src\BMPImageLoader.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Camera.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Config.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Crown.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\CursorControl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Data.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Device.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Font.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Frame.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Glyph.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Image.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\ImageLoader.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Light.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Log.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\LogManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Material.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Mesh.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\MeshChunk.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\MeshLoader.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\MovableCamera.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\OBJMeshLoader.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\OpenGl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Pixel.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\PixelFormat.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\RenderBuffer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\RenderContext.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Renderer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\RenderTarget.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\RenderWindow.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\ResourceManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\SceneManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Sprite.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\TextRenderer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Texture.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\TGAImageLoader.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Timer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Vertex3.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\VideoMode.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Viewport.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\WinCursorControl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\WindowEventHandler.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\WindowsInclude.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\XCursorControl.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Button.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\DragArea.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Themes.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\ThemeSpriteWidget.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Widget.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Window.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\WindowsManager.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\themes\LunaTheme.h">
+      <Filter>Header Files\windowing\themes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\layouts\CanvasLayout.h">
+      <Filter>Header Files\windowing\layout</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\layouts\StackLayout.h">
+      <Filter>Header Files\windowing\layout</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLRenderer.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLSupport.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLTextRenderer.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLTexture.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\wgl\WGLRenderWindow.h">
+      <Filter>Header Files\renderer\gl\wgl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\bv\Box.h">
+      <Filter>Header Files\core\bv</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\bv\Frustum.h">
+      <Filter>Header Files\core\bv</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\bv\Sphere.h">
+      <Filter>Header Files\core\bv</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\containers\Dictionary.h">
+      <Filter>Header Files\core\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\containers\IEnumerable.h">
+      <Filter>Header Files\core\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\containers\List.h">
+      <Filter>Header Files\core\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\containers\RBTree.h">
+      <Filter>Header Files\core\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Angles.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Mat3.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Mat4.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Plane.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Quat.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Ray.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Vec2.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Vec3.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Vec4.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\mem\GarbageBin.h">
+      <Filter>Header Files\core\mem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\mem\ManagedObject.h">
+      <Filter>Header Files\core\mem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Common.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Exceptions.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\SignalSlot.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Types.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Label.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\containers\Generic.h">
+      <Filter>Header Files\core\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Object.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\CoreEventArgs.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Observable.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\ItemsSelector.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\ItemsWidget.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\ListView.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\WindowingEventArgs.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Scene.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\streams\FileStream.h">
+      <Filter>Header Files\core\streams</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\streams\MemoryStream.h">
+      <Filter>Header Files\core\streams</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\streams\Stream.h">
+      <Filter>Header Files\core\streams</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\CRWDecoder.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\VertexBuffer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLVertexBuffer.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLIndexBuffer.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\IndexBuffer.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Skybox.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\OcclusionQuery.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLOcclusionQuery.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Delegate.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\templates\ITemplate.h">
+      <Filter>Header Files\windowing\templates</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Shared.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\TextBox.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\loaders\BMPImageLoader.h">
+      <Filter>Header Files\loaders</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\loaders\CRWDecoder.h">
+      <Filter>Header Files\loaders</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\loaders\TGAImageLoader.h">
+      <Filter>Header Files\loaders</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\toolbox\TextInputWindow.h">
+      <Filter>Header Files\windowing\toolbox</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\filesystem\Host.h">
+      <Filter>Header Files\filesystem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Interpolation.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\ScrollArea.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\filesystem\Filesystem.h">
+      <Filter>Header Files\filesystem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\filesystem\Path.h">
+      <Filter>Header Files\filesystem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\filesystem\RegularFile.h">
+      <Filter>Header Files\filesystem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\filesystem\ArchiveFile.h">
+      <Filter>Header Files\filesystem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\TreeView.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\TextureManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\GLTextureManager.h">
+      <Filter>Header Files\renderer\gl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\MeshManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\MathUtils.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\FontManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\loaders\XMLReader.h">
+      <Filter>Header Files\loaders</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Auto.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\loaders\XWMLReader.h">
+      <Filter>Header Files\loaders</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\filesystem\Directory.h">
+      <Filter>Header Files\filesystem</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\toolbox\MessageWindow.h">
+      <Filter>Header Files\windowing\toolbox</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Point2.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\WithProperties.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Bind.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\WindowContext.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\Weak.h">
+      <Filter>Header Files\core</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\Property.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\SpecificProperties.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\windowing\ImageWidget.h">
+      <Filter>Header Files\windowing</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\input\EventDispatcher.h">
+      <Filter>Header Files\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\input\InputManager.h">
+      <Filter>Header Files\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\input\Keyboard.h">
+      <Filter>Header Files\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\input\KeyCode.h">
+      <Filter>Header Files\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\input\Mouse.h">
+      <Filter>Header Files\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\SceneNode.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\Entity.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\SpriteAnimator.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="resources.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Intersection.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Triangle.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\PhysicsManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\PhysicNode.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\renderers\gl\glx\GLXRenderWindow.h">
+      <Filter>Header Files\renderer\gl\glx</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Shape.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\bv\Circle.h">
+      <Filter>Header Files\core\bv</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Color4.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\ParticleEmitter.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\ParticleManager.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\math\Random.h">
+      <Filter>Header Files\core\math</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\input\Touch.h">
+      <Filter>Header Files\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\containers\Str.h">
+      <Filter>Header Files\core\containers</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\core\bv\Rect.h">
+      <Filter>Header Files\core\bv</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\os\OS.h">
+      <Filter>Header Files\os</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\os\win\WinTimer.h">
+      <Filter>Header Files\os\win</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\os\win\wgl\WGLRenderWindow.h">
+      <Filter>Header Files\os\win\wgl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\os\win\input\WinInputManager.h">
+      <Filter>Header Files\os\win\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\os\win\input\WinKeyboard.h">
+      <Filter>Header Files\os\win\input</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\os\win\input\WinMouse.h">
+      <Filter>Header Files\os\win\input</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="crown.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\..\res\napoleon.ico">
+      <Filter>Resource Files</Filter>
+    </None>
+  </ItemGroup>
+</Project>

+ 3 - 0
proj/vs10/crown/crown.vcxproj.user

@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+</Project>

二進制
proj/vs10/crown/resources.h


二進制
proj/vs10/tests/tests.aps


+ 119 - 0
proj/vs10/tests/tests.vcxproj

@@ -0,0 +1,119 @@
+<?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>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Background.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Bullet.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Joystick.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Pg.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\SolidSceneNode.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Wall.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Zombie.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\Globals.h" />
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\scenes\ArenaScene.h" />
+    <ClInclude Include="..\..\..\src\tests\TestApp.h" />
+    <ClInclude Include="..\..\..\src\tests\TestScene.h" />
+    <ClInclude Include="..\crown\resources.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Background.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Bullet.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Joystick.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Pg.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\SolidSceneNode.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Wall.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Zombie.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\Globals.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\main.cpp" />
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\scenes\ArenaScene.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\crown\crown.rc" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\..\res\napoleon.ico" />
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{0FF7A88C-EF41-463B-A1C8-E4C259363B10}</ProjectGuid>
+    <Keyword>Win32Proj</Keyword>
+    <RootNamespace>tests</RootNamespace>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>true</UseDebugLibraries>
+    <CharacterSet>NotSet</CharacterSet>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>Application</ConfigurationType>
+    <UseDebugLibraries>false</UseDebugLibraries>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+    <CharacterSet>NotSet</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>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LinkIncremental>false</LinkIncremental>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir);..\..\..\src\tests\chainsawbuffet;..\..\..\src\tests\chainsawbuffet\entities;..\..\..\src\tests\chainsawbuffet\scenes;..\..\..\src\input\win;..\..\..\src\input;..\..\..\src\tests;..\..\..\src\filesystem;..\..\..\src\windowing\toolbox;..\..\..\src\loaders;..\..\..\src\windowing\templates;..\..\..\src\core\streams;..\..\..\src\windowing\layouts;$(VCInstallDir)include\freetype2;..\..\..\src\windowing\themes;..\..\..\src\windowing;..\..\..\src\renderers\gl\glx;..\..\..\src\renderers\gl\wgl;..\..\..\src\renderers\gl;..\..\..\src\core\math;..\..\..\src\core\mem;..\..\..\src\core\containers;..\..\..\src\core\bv;..\..\..\src\core;..\..\..\src;..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <AdditionalDependencies>winmm.lib;..\Debug\crown.lib;opengl32.lib;glew32.lib;glu32.lib;freetype.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalLibraryDirectories>..\lib</AdditionalLibraryDirectories>
+      <IgnoreSpecificDefaultLibraries>LIBCMT</IgnoreSpecificDefaultLibraries>
+    </Link>
+  </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;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <AdditionalIncludeDirectories>$(ProjectDir);..\..\..\src\tests\chainsawbuffet;..\..\..\src\tests\chainsawbuffet\entities;..\..\..\src\tests\chainsawbuffet\scenes;..\..\..\src\input\win;..\..\..\src\input;..\..\..\src\tests;..\..\..\src\filesystem;..\..\..\src\windowing\toolbox;..\..\..\src\loaders;..\..\..\src\core\streams;..\..\..\src\windowing\templates;..\..\..\src\windowing\layouts;$(VCInstallDir)include\freetype2;..\..\..\src\windowing\themes;..\..\..\src\windowing;..\..\..\src\renderers\gl\glx;..\..\..\src\renderers\gl\wgl;..\..\..\src\renderers\gl;..\..\..\src\core\math;..\..\..\src\core\mem;..\..\..\src\core\containers;..\..\..\src\core\bv;..\..\..\src\core;..\..\..\src;..\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+    </ClCompile>
+    <Link>
+      <SubSystem>Console</SubSystem>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <OptimizeReferences>true</OptimizeReferences>
+      <AdditionalDependencies>winmm.lib;..\Release\crown.lib;opengl32.lib;glew32.lib;freetype.lib;glu32.lib;zdll.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <IgnoreSpecificDefaultLibraries>LIBCMT</IgnoreSpecificDefaultLibraries>
+    </Link>
+  </ItemDefinitionGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>

+ 109 - 0
proj/vs10/tests/tests.vcxproj.filters

@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
+    </Filter>
+    <Filter Include="Source Files\scenes">
+      <UniqueIdentifier>{053733d3-f51a-4451-8933-74ab42f800b7}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\scenes">
+      <UniqueIdentifier>{04f91b24-430b-452b-af27-08b81bac1ee4}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Header Files\entities">
+      <UniqueIdentifier>{d12bc3bf-8618-46da-8bdb-77bb833f87b5}</UniqueIdentifier>
+    </Filter>
+    <Filter Include="Source Files\entities">
+      <UniqueIdentifier>{dd34e7d6-fd2e-4d18-8c5c-52c8ba7c546d}</UniqueIdentifier>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="..\..\..\src\tests\TestApp.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\TestScene.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\scenes\ArenaScene.h">
+      <Filter>Header Files\scenes</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Pg.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\SolidSceneNode.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\Globals.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\crown\resources.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Zombie.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Joystick.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Bullet.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Wall.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\..\src\tests\chainsawbuffet\entities\Background.h">
+      <Filter>Header Files\entities</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\scenes\ArenaScene.cpp">
+      <Filter>Source Files\scenes</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Pg.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\SolidSceneNode.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Joystick.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\Globals.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Zombie.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Bullet.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Wall.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\entities\Background.cpp">
+      <Filter>Source Files\entities</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\..\src\tests\chainsawbuffet\main.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="..\crown\crown.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="..\..\..\res\napoleon.ico">
+      <Filter>Resource Files</Filter>
+    </None>
+  </ItemGroup>
+</Project>

+ 12 - 0
proj/vs10/tests/tests.vcxproj.user

@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <LocalDebuggerWorkingDirectory>$(ProjectDir)../../../src/tests/xwmlreader</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+    <ShowAllFiles>false</ShowAllFiles>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <LocalDebuggerWorkingDirectory>$(ProjectDir)../../../src/tests/xwmlreader</LocalDebuggerWorkingDirectory>
+    <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
+  </PropertyGroup>
+</Project>

二進制
res/arialbd.ttf


二進制
res/boom.bmp


二進制
res/closebutton_x.bmp


+ 1479 - 0
res/monkey.obj

@@ -0,0 +1,1479 @@
+# Blender3D v249 OBJ File: 
+# www.blender3d.org
+v 0.437500 0.164062 0.765625
+v -0.437500 0.164062 0.765625
+v 0.500000 0.093750 0.687500
+v -0.500000 0.093750 0.687500
+v 0.546875 0.054688 0.578125
+v -0.546875 0.054688 0.578125
+v 0.351562 -0.023438 0.617188
+v -0.351562 -0.023438 0.617188
+v 0.351562 0.031250 0.718750
+v -0.351562 0.031250 0.718750
+v 0.351562 0.132812 0.781250
+v -0.351562 0.132812 0.781250
+v 0.273438 0.164062 0.796875
+v -0.273438 0.164062 0.796875
+v 0.203125 0.093750 0.742188
+v -0.203125 0.093750 0.742188
+v 0.156250 0.054688 0.648438
+v -0.156250 0.054688 0.648438
+v 0.078125 0.242188 0.656250
+v -0.078125 0.242188 0.656250
+v 0.140625 0.242188 0.742188
+v -0.140625 0.242188 0.742188
+v 0.242188 0.242188 0.796875
+v -0.242188 0.242188 0.796875
+v 0.273438 0.328125 0.796875
+v -0.273438 0.328125 0.796875
+v 0.203125 0.390625 0.742188
+v -0.203125 0.390625 0.742188
+v 0.156250 0.437500 0.648438
+v -0.156250 0.437500 0.648438
+v 0.351562 0.515625 0.617188
+v -0.351562 0.515625 0.617188
+v 0.351562 0.453125 0.718750
+v -0.351562 0.453125 0.718750
+v 0.351562 0.359375 0.781250
+v -0.351562 0.359375 0.781250
+v 0.437500 0.328125 0.765625
+v -0.437500 0.328125 0.765625
+v 0.500000 0.390625 0.687500
+v -0.500000 0.390625 0.687500
+v 0.546875 0.437500 0.578125
+v -0.546875 0.437500 0.578125
+v 0.625000 0.242188 0.562500
+v -0.625000 0.242188 0.562500
+v 0.562500 0.242188 0.671875
+v -0.562500 0.242188 0.671875
+v 0.468750 0.242188 0.757812
+v -0.468750 0.242188 0.757812
+v 0.476562 0.242188 0.773438
+v -0.476562 0.242188 0.773438
+v 0.445312 0.335938 0.781250
+v -0.445312 0.335938 0.781250
+v 0.351562 0.375000 0.804688
+v -0.351562 0.375000 0.804688
+v 0.265625 0.335938 0.820312
+v -0.265625 0.335938 0.820312
+v 0.226562 0.242188 0.820312
+v -0.226562 0.242188 0.820312
+v 0.265625 0.156250 0.820312
+v -0.265625 0.156250 0.820312
+v 0.351562 0.242188 0.828125
+v -0.351562 0.242188 0.828125
+v 0.351562 0.117188 0.804688
+v -0.351562 0.117188 0.804688
+v 0.445312 0.156250 0.781250
+v -0.445312 0.156250 0.781250
+v 0.000000 0.429688 0.742188
+v 0.000000 0.351562 0.820312
+v 0.000000 -0.679688 0.734375
+v 0.000000 -0.320312 0.781250
+v 0.000000 -0.187500 0.796875
+v 0.000000 -0.773438 0.718750
+v 0.000000 0.406250 0.601562
+v 0.000000 0.570312 0.570312
+v 0.000000 0.898438 -0.546875
+v 0.000000 0.562500 -0.851562
+v 0.000000 0.070312 -0.828125
+v 0.000000 -0.382812 -0.351562
+v 0.203125 -0.187500 0.562500
+v -0.203125 -0.187500 0.562500
+v 0.312500 -0.437500 0.570312
+v -0.312500 -0.437500 0.570312
+v 0.351562 -0.695312 0.570312
+v -0.351562 -0.695312 0.570312
+v 0.367188 -0.890625 0.531250
+v -0.367188 -0.890625 0.531250
+v 0.328125 -0.945312 0.523438
+v -0.328125 -0.945312 0.523438
+v 0.179688 -0.968750 0.554688
+v -0.179688 -0.968750 0.554688
+v 0.000000 -0.984375 0.578125
+v 0.437500 -0.140625 0.531250
+v -0.437500 -0.140625 0.531250
+v 0.632812 -0.039062 0.539062
+v -0.632812 -0.039062 0.539062
+v 0.828125 0.148438 0.445312
+v -0.828125 0.148438 0.445312
+v 0.859375 0.429688 0.593750
+v -0.859375 0.429688 0.593750
+v 0.710938 0.484375 0.625000
+v -0.710938 0.484375 0.625000
+v 0.492188 0.601562 0.687500
+v -0.492188 0.601562 0.687500
+v 0.320312 0.757812 0.734375
+v -0.320312 0.757812 0.734375
+v 0.156250 0.718750 0.757812
+v -0.156250 0.718750 0.757812
+v 0.062500 0.492188 0.750000
+v -0.062500 0.492188 0.750000
+v 0.164062 0.414062 0.773438
+v -0.164062 0.414062 0.773438
+v 0.125000 0.304688 0.765625
+v -0.125000 0.304688 0.765625
+v 0.203125 0.093750 0.742188
+v -0.203125 0.093750 0.742188
+v 0.375000 0.015625 0.703125
+v -0.375000 0.015625 0.703125
+v 0.492188 0.062500 0.671875
+v -0.492188 0.062500 0.671875
+v 0.625000 0.187500 0.648438
+v -0.625000 0.187500 0.648438
+v 0.640625 0.296875 0.648438
+v -0.640625 0.296875 0.648438
+v 0.601562 0.375000 0.664062
+v -0.601562 0.375000 0.664062
+v 0.429688 0.437500 0.718750
+v -0.429688 0.437500 0.718750
+v 0.250000 0.468750 0.757812
+v -0.250000 0.468750 0.757812
+v 0.000000 -0.765625 0.734375
+v 0.109375 -0.718750 0.734375
+v -0.109375 -0.718750 0.734375
+v 0.117188 -0.835938 0.710938
+v -0.117188 -0.835938 0.710938
+v 0.062500 -0.882812 0.695312
+v -0.062500 -0.882812 0.695312
+v 0.000000 -0.890625 0.687500
+v 0.000000 -0.195312 0.750000
+v 0.000000 -0.140625 0.742188
+v 0.101562 -0.148438 0.742188
+v -0.101562 -0.148438 0.742188
+v 0.125000 -0.226562 0.750000
+v -0.125000 -0.226562 0.750000
+v 0.085938 -0.289062 0.742188
+v -0.085938 -0.289062 0.742188
+v 0.398438 -0.046875 0.671875
+v -0.398438 -0.046875 0.671875
+v 0.617188 0.054688 0.625000
+v -0.617188 0.054688 0.625000
+v 0.726562 0.203125 0.601562
+v -0.726562 0.203125 0.601562
+v 0.742188 0.375000 0.656250
+v -0.742188 0.375000 0.656250
+v 0.687500 0.414062 0.726562
+v -0.687500 0.414062 0.726562
+v 0.437500 0.546875 0.796875
+v -0.437500 0.546875 0.796875
+v 0.312500 0.640625 0.835938
+v -0.312500 0.640625 0.835938
+v 0.203125 0.617188 0.851562
+v -0.203125 0.617188 0.851562
+v 0.101562 0.429688 0.843750
+v -0.101562 0.429688 0.843750
+v 0.125000 -0.101562 0.812500
+v -0.125000 -0.101562 0.812500
+v 0.210938 -0.445312 0.710938
+v -0.210938 -0.445312 0.710938
+v 0.250000 -0.703125 0.687500
+v -0.250000 -0.703125 0.687500
+v 0.265625 -0.820312 0.664062
+v -0.265625 -0.820312 0.664062
+v 0.234375 -0.914062 0.632812
+v -0.234375 -0.914062 0.632812
+v 0.164062 -0.929688 0.632812
+v -0.164062 -0.929688 0.632812
+v 0.000000 -0.945312 0.640625
+v 0.000000 0.046875 0.726562
+v 0.000000 0.210938 0.765625
+v 0.328125 0.476562 0.742188
+v -0.328125 0.476562 0.742188
+v 0.164062 0.140625 0.750000
+v -0.164062 0.140625 0.750000
+v 0.132812 0.210938 0.757812
+v -0.132812 0.210938 0.757812
+v 0.117188 -0.687500 0.734375
+v -0.117188 -0.687500 0.734375
+v 0.078125 -0.445312 0.750000
+v -0.078125 -0.445312 0.750000
+v 0.000000 -0.445312 0.750000
+v 0.000000 -0.328125 0.742188
+v 0.093750 -0.273438 0.781250
+v -0.093750 -0.273438 0.781250
+v 0.132812 -0.226562 0.796875
+v -0.132812 -0.226562 0.796875
+v 0.109375 -0.132812 0.781250
+v -0.109375 -0.132812 0.781250
+v 0.039062 -0.125000 0.781250
+v -0.039062 -0.125000 0.781250
+v 0.000000 -0.203125 0.828125
+v 0.046875 -0.148438 0.812500
+v -0.046875 -0.148438 0.812500
+v 0.093750 -0.156250 0.812500
+v -0.093750 -0.156250 0.812500
+v 0.109375 -0.226562 0.828125
+v -0.109375 -0.226562 0.828125
+v 0.078125 -0.250000 0.804688
+v -0.078125 -0.250000 0.804688
+v 0.000000 -0.289062 0.804688
+v 0.257812 -0.312500 0.554688
+v -0.257812 -0.312500 0.554688
+v 0.164062 -0.242188 0.710938
+v -0.164062 -0.242188 0.710938
+v 0.179688 -0.312500 0.710938
+v -0.179688 -0.312500 0.710938
+v 0.234375 -0.250000 0.554688
+v -0.234375 -0.250000 0.554688
+v 0.000000 -0.875000 0.687500
+v 0.046875 -0.867188 0.687500
+v -0.046875 -0.867188 0.687500
+v 0.093750 -0.820312 0.710938
+v -0.093750 -0.820312 0.710938
+v 0.093750 -0.742188 0.726562
+v -0.093750 -0.742188 0.726562
+v 0.000000 -0.781250 0.656250
+v 0.093750 -0.750000 0.664062
+v -0.093750 -0.750000 0.664062
+v 0.093750 -0.812500 0.640625
+v -0.093750 -0.812500 0.640625
+v 0.046875 -0.851562 0.632812
+v -0.046875 -0.851562 0.632812
+v 0.000000 -0.859375 0.632812
+v 0.171875 0.218750 0.781250
+v -0.171875 0.218750 0.781250
+v 0.187500 0.156250 0.773438
+v -0.187500 0.156250 0.773438
+v 0.335938 0.429688 0.757812
+v -0.335938 0.429688 0.757812
+v 0.273438 0.421875 0.773438
+v -0.273438 0.421875 0.773438
+v 0.421875 0.398438 0.773438
+v -0.421875 0.398438 0.773438
+v 0.562500 0.351562 0.695312
+v -0.562500 0.351562 0.695312
+v 0.585938 0.289062 0.687500
+v -0.585938 0.289062 0.687500
+v 0.578125 0.195312 0.679688
+v -0.578125 0.195312 0.679688
+v 0.476562 0.101562 0.718750
+v -0.476562 0.101562 0.718750
+v 0.375000 0.062500 0.742188
+v -0.375000 0.062500 0.742188
+v 0.226562 0.109375 0.781250
+v -0.226562 0.109375 0.781250
+v 0.179688 0.296875 0.781250
+v -0.179688 0.296875 0.781250
+v 0.210938 0.375000 0.781250
+v -0.210938 0.375000 0.781250
+v 0.234375 0.359375 0.757812
+v -0.234375 0.359375 0.757812
+v 0.195312 0.296875 0.757812
+v -0.195312 0.296875 0.757812
+v 0.242188 0.125000 0.757812
+v -0.242188 0.125000 0.757812
+v 0.375000 0.085938 0.726562
+v -0.375000 0.085938 0.726562
+v 0.460938 0.117188 0.703125
+v -0.460938 0.117188 0.703125
+v 0.546875 0.210938 0.671875
+v -0.546875 0.210938 0.671875
+v 0.554688 0.281250 0.671875
+v -0.554688 0.281250 0.671875
+v 0.531250 0.335938 0.679688
+v -0.531250 0.335938 0.679688
+v 0.414062 0.390625 0.750000
+v -0.414062 0.390625 0.750000
+v 0.281250 0.398438 0.765625
+v -0.281250 0.398438 0.765625
+v 0.335938 0.406250 0.750000
+v -0.335938 0.406250 0.750000
+v 0.203125 0.171875 0.750000
+v -0.203125 0.171875 0.750000
+v 0.195312 0.226562 0.750000
+v -0.195312 0.226562 0.750000
+v 0.109375 0.460938 0.609375
+v -0.109375 0.460938 0.609375
+v 0.195312 0.664062 0.617188
+v -0.195312 0.664062 0.617188
+v 0.335938 0.687500 0.593750
+v -0.335938 0.687500 0.593750
+v 0.484375 0.554688 0.554688
+v -0.484375 0.554688 0.554688
+v 0.679688 0.453125 0.492188
+v -0.679688 0.453125 0.492188
+v 0.796875 0.406250 0.460938
+v -0.796875 0.406250 0.460938
+v 0.773438 0.164062 0.375000
+v -0.773438 0.164062 0.375000
+v 0.601562 0.000000 0.414062
+v -0.601562 0.000000 0.414062
+v 0.437500 -0.093750 0.468750
+v -0.437500 -0.093750 0.468750
+v 0.000000 0.898438 0.289062
+v 0.000000 0.984375 -0.078125
+v 0.000000 -0.195312 -0.671875
+v 0.000000 -0.460938 0.187500
+v 0.000000 -0.976562 0.460938
+v 0.000000 -0.804688 0.343750
+v 0.000000 -0.570312 0.320312
+v 0.000000 -0.484375 0.281250
+v 0.851562 0.234375 0.054688
+v -0.851562 0.234375 0.054688
+v 0.859375 0.320312 -0.046875
+v -0.859375 0.320312 -0.046875
+v 0.773438 0.265625 -0.437500
+v -0.773438 0.265625 -0.437500
+v 0.460938 0.437500 -0.703125
+v -0.460938 0.437500 -0.703125
+v 0.734375 -0.046875 0.070312
+v -0.734375 -0.046875 0.070312
+v 0.593750 -0.125000 -0.164062
+v -0.593750 -0.125000 -0.164062
+v 0.640625 -0.007812 -0.429688
+v -0.640625 -0.007812 -0.429688
+v 0.335938 0.054688 -0.664062
+v -0.335938 0.054688 -0.664062
+v 0.234375 -0.351562 0.406250
+v -0.234375 -0.351562 0.406250
+v 0.179688 -0.414062 0.257812
+v -0.179688 -0.414062 0.257812
+v 0.289062 -0.710938 0.382812
+v -0.289062 -0.710938 0.382812
+v 0.250000 -0.500000 0.390625
+v -0.250000 -0.500000 0.390625
+v 0.328125 -0.914062 0.398438
+v -0.328125 -0.914062 0.398438
+v 0.140625 -0.757812 0.367188
+v -0.140625 -0.757812 0.367188
+v 0.125000 -0.539062 0.359375
+v -0.125000 -0.539062 0.359375
+v 0.164062 -0.945312 0.437500
+v -0.164062 -0.945312 0.437500
+v 0.218750 -0.281250 0.429688
+v -0.218750 -0.281250 0.429688
+v 0.210938 -0.226562 0.468750
+v -0.210938 -0.226562 0.468750
+v 0.203125 -0.171875 0.500000
+v -0.203125 -0.171875 0.500000
+v 0.210938 -0.390625 0.164062
+v -0.210938 -0.390625 0.164062
+v 0.296875 -0.312500 -0.265625
+v -0.296875 -0.312500 -0.265625
+v 0.343750 -0.148438 -0.539062
+v -0.343750 -0.148438 -0.539062
+v 0.453125 0.867188 -0.382812
+v -0.453125 0.867188 -0.382812
+v 0.453125 0.929688 -0.070312
+v -0.453125 0.929688 -0.070312
+v 0.453125 0.851562 0.234375
+v -0.453125 0.851562 0.234375
+v 0.460938 0.523438 0.429688
+v -0.460938 0.523438 0.429688
+v 0.726562 0.406250 0.335938
+v -0.726562 0.406250 0.335938
+v 0.632812 0.453125 0.281250
+v -0.632812 0.453125 0.281250
+v 0.640625 0.703125 0.054688
+v -0.640625 0.703125 0.054688
+v 0.796875 0.562500 0.125000
+v -0.796875 0.562500 0.125000
+v 0.796875 0.617188 -0.117188
+v -0.796875 0.617188 -0.117188
+v 0.640625 0.750000 -0.195312
+v -0.640625 0.750000 -0.195312
+v 0.640625 0.679688 -0.445312
+v -0.640625 0.679688 -0.445312
+v 0.796875 0.539062 -0.359375
+v -0.796875 0.539062 -0.359375
+v 0.617188 0.328125 -0.585938
+v -0.617188 0.328125 -0.585938
+v 0.484375 0.023438 -0.546875
+v -0.484375 0.023438 -0.546875
+v 0.820312 0.328125 -0.203125
+v -0.820312 0.328125 -0.203125
+v 0.406250 -0.171875 0.148438
+v -0.406250 -0.171875 0.148438
+v 0.429688 -0.195312 -0.210938
+v -0.429688 -0.195312 -0.210938
+v 0.890625 0.406250 -0.234375
+v -0.890625 0.406250 -0.234375
+v 0.773438 -0.140625 -0.125000
+v -0.773438 -0.140625 -0.125000
+v 1.039062 -0.101562 -0.328125
+v -1.039062 -0.101562 -0.328125
+v 1.281250 0.054688 -0.429688
+v -1.281250 0.054688 -0.429688
+v 1.351562 0.320312 -0.421875
+v -1.351562 0.320312 -0.421875
+v 1.234375 0.507812 -0.421875
+v -1.234375 0.507812 -0.421875
+v 1.023438 0.476562 -0.312500
+v -1.023438 0.476562 -0.312500
+v 1.015625 0.414062 -0.289062
+v -1.015625 0.414062 -0.289062
+v 1.187500 0.437500 -0.390625
+v -1.187500 0.437500 -0.390625
+v 1.265625 0.289062 -0.406250
+v -1.265625 0.289062 -0.406250
+v 1.210938 0.078125 -0.406250
+v -1.210938 0.078125 -0.406250
+v 1.031250 -0.039062 -0.304688
+v -1.031250 -0.039062 -0.304688
+v 0.828125 -0.070312 -0.132812
+v -0.828125 -0.070312 -0.132812
+v 0.921875 0.359375 -0.218750
+v -0.921875 0.359375 -0.218750
+v 0.945312 0.304688 -0.289062
+v -0.945312 0.304688 -0.289062
+v 0.882812 -0.023438 -0.210938
+v -0.882812 -0.023438 -0.210938
+v 1.039062 0.000000 -0.367188
+v -1.039062 0.000000 -0.367188
+v 1.187500 0.093750 -0.445312
+v -1.187500 0.093750 -0.445312
+v 1.234375 0.250000 -0.445312
+v -1.234375 0.250000 -0.445312
+v 1.171875 0.359375 -0.437500
+v -1.171875 0.359375 -0.437500
+v 1.023438 0.343750 -0.359375
+v -1.023438 0.343750 -0.359375
+v 0.843750 0.289062 -0.210938
+v -0.843750 0.289062 -0.210938
+v 0.835938 0.171875 -0.273438
+v -0.835938 0.171875 -0.273438
+v 0.757812 0.093750 -0.273438
+v -0.757812 0.093750 -0.273438
+v 0.820312 0.085938 -0.273438
+v -0.820312 0.085938 -0.273438
+v 0.843750 0.015625 -0.273438
+v -0.843750 0.015625 -0.273438
+v 0.812500 -0.015625 -0.273438
+v -0.812500 -0.015625 -0.273438
+v 0.726562 0.000000 -0.070312
+v -0.726562 0.000000 -0.070312
+v 0.718750 -0.023438 -0.171875
+v -0.718750 -0.023438 -0.171875
+v 0.718750 0.039062 -0.187500
+v -0.718750 0.039062 -0.187500
+v 0.796875 0.203125 -0.210938
+v -0.796875 0.203125 -0.210938
+v 0.890625 0.242188 -0.265625
+v -0.890625 0.242188 -0.265625
+v 0.890625 0.234375 -0.320312
+v -0.890625 0.234375 -0.320312
+v 0.812500 -0.015625 -0.320312
+v -0.812500 -0.015625 -0.320312
+v 0.851562 0.015625 -0.320312
+v -0.851562 0.015625 -0.320312
+v 0.828125 0.078125 -0.320312
+v -0.828125 0.078125 -0.320312
+v 0.765625 0.093750 -0.320312
+v -0.765625 0.093750 -0.320312
+v 0.843750 0.171875 -0.320312
+v -0.843750 0.171875 -0.320312
+v 1.039062 0.328125 -0.414062
+v -1.039062 0.328125 -0.414062
+v 1.187500 0.343750 -0.484375
+v -1.187500 0.343750 -0.484375
+v 1.257812 0.242188 -0.492188
+v -1.257812 0.242188 -0.492188
+v 1.210938 0.085938 -0.484375
+v -1.210938 0.085938 -0.484375
+v 1.046875 0.000000 -0.421875
+v -1.046875 0.000000 -0.421875
+v 0.882812 -0.015625 -0.265625
+v -0.882812 -0.015625 -0.265625
+v 0.953125 0.289062 -0.343750
+v -0.953125 0.289062 -0.343750
+v 0.890625 0.109375 -0.328125
+v -0.890625 0.109375 -0.328125
+v 0.937500 0.062500 -0.335938
+v -0.937500 0.062500 -0.335938
+v 1.000000 0.125000 -0.367188
+v -1.000000 0.125000 -0.367188
+v 0.960938 0.171875 -0.351562
+v -0.960938 0.171875 -0.351562
+v 1.015625 0.234375 -0.375000
+v -1.015625 0.234375 -0.375000
+v 1.054688 0.187500 -0.382812
+v -1.054688 0.187500 -0.382812
+v 1.109375 0.210938 -0.390625
+v -1.109375 0.210938 -0.390625
+v 1.085938 0.273438 -0.390625
+v -1.085938 0.273438 -0.390625
+v 1.023438 0.437500 -0.484375
+v -1.023438 0.437500 -0.484375
+v 1.250000 0.468750 -0.546875
+v -1.250000 0.468750 -0.546875
+v 1.367188 0.296875 -0.500000
+v -1.367188 0.296875 -0.500000
+v 1.312500 0.054688 -0.531250
+v -1.312500 0.054688 -0.531250
+v 1.039062 -0.085938 -0.492188
+v -1.039062 -0.085938 -0.492188
+v 0.789062 -0.125000 -0.328125
+v -0.789062 -0.125000 -0.328125
+v 0.859375 0.382812 -0.382812
+v -0.859375 0.382812 -0.382812
+usemtl (null)
+s off
+f 61 65 49
+f 50 66 62
+f 63 65 61
+f 62 66 64
+f 61 59 63
+f 64 60 62
+f 61 57 59
+f 60 58 62
+f 61 55 57
+f 58 56 62
+f 61 53 55
+f 56 54 62
+f 61 51 53
+f 54 52 62
+f 61 49 51
+f 52 50 62
+f 225 229 227
+f 228 230 226
+f 73 284 74
+f 74 285 73
+f 342 348 384
+f 385 349 343
+f 300 346 344
+f 345 347 301
+f 324 380 352
+f 353 381 325
+f 442 444 446
+f 447 445 443
+f 464 492 466
+f 467 493 465
+f 496 498 500
+f 501 499 497
+f 505 323 321
+f 505 321 391
+f 320 322 504
+f 320 504 390
+f 505 507 315
+f 505 315 323
+f 314 506 504
+f 314 504 322
+f 389 383 507
+f 383 315 507
+f 314 382 506
+f 382 388 506
+f 501 497 495
+f 501 495 503
+f 494 496 500
+f 494 500 502
+f 505 503 507
+f 503 495 507
+f 494 502 506
+f 502 504 506
+f 495 401 507
+f 401 389 507
+f 388 400 506
+f 400 494 506
+f 497 399 495
+f 399 401 495
+f 400 398 494
+f 398 496 494
+f 499 397 497
+f 397 399 497
+f 398 396 496
+f 396 498 496
+f 501 395 499
+f 395 397 499
+f 396 394 498
+f 394 500 498
+f 503 393 395
+f 503 395 501
+f 394 392 502
+f 394 502 500
+f 505 391 393
+f 505 393 503
+f 392 390 504
+f 392 504 502
+f 491 493 467
+f 491 467 469
+f 466 492 490
+f 466 490 468
+f 489 491 471
+f 491 469 471
+f 468 490 470
+f 490 488 470
+f 483 489 473
+f 489 471 473
+f 470 488 472
+f 488 482 472
+f 481 483 473
+f 481 473 475
+f 472 482 480
+f 472 480 474
+f 481 475 457
+f 475 455 457
+f 454 474 456
+f 474 480 456
+f 463 479 459
+f 463 459 461
+f 458 478 462
+f 458 462 460
+f 479 463 485
+f 463 453 485
+f 452 462 484
+f 462 478 484
+f 487 485 477
+f 485 453 477
+f 452 484 476
+f 484 486 476
+f 487 477 465
+f 487 465 493
+f 464 476 486
+f 464 486 492
+f 491 489 493
+f 489 487 493
+f 486 488 492
+f 488 490 492
+f 489 483 485
+f 489 485 487
+f 484 482 488
+f 484 488 486
+f 483 481 485
+f 481 479 485
+f 478 480 484
+f 480 482 484
+f 481 457 479
+f 457 459 479
+f 458 456 478
+f 456 480 478
+f 473 421 475
+f 421 419 475
+f 418 420 474
+f 420 472 474
+f 471 423 473
+f 423 421 473
+f 420 422 472
+f 422 470 472
+f 469 425 471
+f 425 423 471
+f 422 424 470
+f 424 468 470
+f 467 427 425
+f 467 425 469
+f 424 426 466
+f 424 466 468
+f 465 429 427
+f 465 427 467
+f 426 428 464
+f 426 464 466
+f 477 417 429
+f 477 429 465
+f 428 416 476
+f 428 476 464
+f 475 419 441
+f 475 441 455
+f 440 418 474
+f 440 474 454
+f 455 441 439
+f 455 439 457
+f 438 440 454
+f 438 454 456
+f 457 439 459
+f 439 437 459
+f 436 438 458
+f 438 456 458
+f 459 437 461
+f 437 435 461
+f 434 436 460
+f 436 458 460
+f 461 435 433
+f 461 433 463
+f 432 434 460
+f 432 460 462
+f 463 433 453
+f 433 451 453
+f 450 432 452
+f 432 462 452
+f 453 451 417
+f 453 417 477
+f 416 450 452
+f 416 452 476
+f 447 443 449
+f 443 313 449
+f 312 442 448
+f 442 446 448
+f 431 449 383
+f 449 313 383
+f 312 448 382
+f 448 430 382
+f 451 431 417
+f 431 415 417
+f 414 430 416
+f 430 450 416
+f 433 449 451
+f 449 431 451
+f 430 448 450
+f 448 432 450
+f 447 449 435
+f 449 433 435
+f 432 448 434
+f 448 446 434
+f 439 447 435
+f 439 435 437
+f 434 446 438
+f 434 438 436
+f 445 447 441
+f 447 439 441
+f 438 446 440
+f 446 444 440
+f 441 419 413
+f 441 413 445
+f 412 418 440
+f 412 440 444
+f 415 431 383
+f 415 383 389
+f 382 430 414
+f 382 414 388
+f 443 319 311
+f 443 311 313
+f 310 318 442
+f 310 442 312
+f 413 391 445
+f 391 321 445
+f 320 390 444
+f 390 412 444
+f 445 321 443
+f 321 319 443
+f 318 320 442
+f 320 444 442
+f 417 415 403
+f 417 403 429
+f 402 414 416
+f 402 416 428
+f 427 429 405
+f 429 403 405
+f 402 428 404
+f 428 426 404
+f 425 427 407
+f 427 405 407
+f 404 426 406
+f 426 424 406
+f 423 425 409
+f 425 407 409
+f 406 424 408
+f 424 422 408
+f 421 423 409
+f 421 409 411
+f 408 422 420
+f 408 420 410
+f 419 421 411
+f 419 411 413
+f 410 420 418
+f 410 418 412
+f 413 411 393
+f 413 393 391
+f 392 410 412
+f 392 412 390
+f 411 409 393
+f 409 395 393
+f 394 408 392
+f 408 410 392
+f 409 407 395
+f 407 397 395
+f 396 406 394
+f 406 408 394
+f 407 405 397
+f 405 399 397
+f 398 404 396
+f 404 406 396
+f 405 403 401
+f 405 401 399
+f 400 402 404
+f 400 404 398
+f 415 389 403
+f 389 401 403
+f 400 388 402
+f 388 414 402
+f 381 353 387
+f 353 351 387
+f 350 352 386
+f 352 380 386
+f 381 387 323
+f 387 321 323
+f 320 386 322
+f 386 380 322
+f 381 379 325
+f 379 317 325
+f 316 378 324
+f 378 380 324
+f 381 323 379
+f 323 315 379
+f 314 322 378
+f 322 380 378
+f 343 345 301
+f 343 301 385
+f 300 344 342
+f 300 342 384
+f 385 301 299
+f 385 299 319
+f 298 300 384
+f 298 384 318
+f 387 385 321
+f 385 319 321
+f 318 384 320
+f 384 386 320
+f 387 351 385
+f 351 349 385
+f 348 350 384
+f 350 386 384
+f 371 377 383
+f 377 315 383
+f 314 376 382
+f 376 370 382
+f 371 383 313
+f 371 313 369
+f 312 382 370
+f 312 370 368
+f 369 313 311
+f 369 311 363
+f 310 312 368
+f 310 368 362
+f 311 297 363
+f 297 295 363
+f 294 296 362
+f 296 310 362
+f 361 291 285
+f 361 285 74
+f 284 290 360
+f 284 360 74
+f 289 287 291
+f 287 285 291
+f 284 286 290
+f 286 288 290
+f 359 361 302
+f 361 74 302
+f 74 360 302
+f 360 358 302
+f 365 293 361
+f 293 291 361
+f 290 292 360
+f 292 364 360
+f 365 361 359
+f 365 359 367
+f 358 360 364
+f 358 364 366
+f 367 359 357
+f 367 357 373
+f 356 358 366
+f 356 366 372
+f 373 357 355
+f 373 355 375
+f 354 356 372
+f 354 372 374
+f 375 355 317
+f 375 317 379
+f 316 354 374
+f 316 374 378
+f 375 379 377
+f 379 315 377
+f 314 378 376
+f 378 374 376
+f 377 371 373
+f 377 373 375
+f 372 370 376
+f 372 376 374
+f 371 369 367
+f 371 367 373
+f 366 368 370
+f 366 370 372
+f 369 363 365
+f 369 365 367
+f 364 362 368
+f 364 368 366
+f 363 295 293
+f 363 293 365
+f 292 294 362
+f 292 362 364
+f 317 355 75
+f 317 75 76
+f 75 354 316
+f 75 316 76
+f 355 357 303
+f 355 303 75
+f 303 356 354
+f 303 354 75
+f 357 359 303
+f 359 302 303
+f 302 358 303
+f 358 356 303
+f 325 317 77
+f 317 76 77
+f 76 316 77
+f 316 324 77
+f 319 299 297
+f 319 297 311
+f 296 298 318
+f 296 318 310
+f 349 329 343
+f 329 327 343
+f 326 328 342
+f 328 348 342
+f 329 349 305
+f 329 305 309
+f 305 348 328
+f 305 328 309
+f 349 351 78
+f 349 78 305
+f 78 350 348
+f 78 348 305
+f 351 353 78
+f 353 304 78
+f 304 352 78
+f 352 350 78
+f 353 325 304
+f 325 77 304
+f 77 324 304
+f 324 352 304
+f 301 347 93
+f 347 80 93
+f 79 346 92
+f 346 300 92
+f 345 216 347
+f 216 80 347
+f 79 215 346
+f 215 344 346
+f 343 327 210
+f 327 82 210
+f 81 326 209
+f 326 342 209
+f 345 343 216
+f 343 210 216
+f 209 342 215
+f 342 344 215
+f 333 84 82
+f 333 82 327
+f 81 83 332
+f 81 332 326
+f 339 333 329
+f 333 327 329
+f 326 332 328
+f 332 338 328
+f 341 335 337
+f 335 331 337
+f 330 334 336
+f 334 340 336
+f 339 337 331
+f 339 331 333
+f 330 336 338
+f 330 338 332
+f 331 86 84
+f 331 84 333
+f 83 85 330
+f 83 330 332
+f 335 88 86
+f 335 86 331
+f 85 87 334
+f 85 334 330
+f 341 90 88
+f 341 88 335
+f 87 89 340
+f 87 340 334
+f 306 91 90
+f 306 90 341
+f 89 91 306
+f 89 306 340
+f 337 307 341
+f 307 306 341
+f 306 307 340
+f 307 336 340
+f 339 308 337
+f 308 307 337
+f 307 308 336
+f 308 338 336
+f 329 309 339
+f 309 308 339
+f 308 309 338
+f 309 328 338
+f 301 93 95
+f 301 95 299
+f 94 92 300
+f 94 300 298
+f 299 95 97
+f 299 97 297
+f 96 94 298
+f 96 298 296
+f 297 97 295
+f 97 99 295
+f 98 96 294
+f 96 296 294
+f 295 99 101
+f 295 101 293
+f 100 98 294
+f 100 294 292
+f 293 101 291
+f 101 103 291
+f 102 100 290
+f 100 292 290
+f 291 103 289
+f 103 105 289
+f 104 102 288
+f 102 290 288
+f 289 105 287
+f 105 107 287
+f 106 104 286
+f 104 288 286
+f 287 107 109
+f 287 109 285
+f 108 106 286
+f 108 286 284
+f 285 109 67
+f 285 67 73
+f 67 108 284
+f 67 284 73
+f 281 235 233
+f 281 233 283
+f 232 234 280
+f 232 280 282
+f 283 233 255
+f 283 255 261
+f 254 232 282
+f 254 282 260
+f 261 255 257
+f 261 257 259
+f 256 254 260
+f 256 260 258
+f 263 253 235
+f 263 235 281
+f 234 252 262
+f 234 262 280
+f 265 251 263
+f 251 253 263
+f 252 250 262
+f 250 264 262
+f 267 249 265
+f 249 251 265
+f 250 248 264
+f 248 266 264
+f 269 247 249
+f 269 249 267
+f 248 246 268
+f 248 268 266
+f 271 245 269
+f 245 247 269
+f 246 244 268
+f 244 270 268
+f 273 243 245
+f 273 245 271
+f 244 242 272
+f 244 272 270
+f 275 241 273
+f 241 243 273
+f 242 240 272
+f 240 274 272
+f 279 237 275
+f 237 241 275
+f 240 236 274
+f 236 278 274
+f 277 239 237
+f 277 237 279
+f 236 238 276
+f 236 276 278
+f 259 257 239
+f 259 239 277
+f 238 256 258
+f 238 258 276
+f 257 111 129
+f 257 129 239
+f 128 110 256
+f 128 256 238
+f 239 129 180
+f 239 180 237
+f 179 128 238
+f 179 238 236
+f 237 180 127
+f 237 127 241
+f 126 179 236
+f 126 236 240
+f 241 127 243
+f 127 125 243
+f 124 126 242
+f 126 240 242
+f 243 125 245
+f 125 123 245
+f 122 124 244
+f 124 242 244
+f 245 123 121
+f 245 121 247
+f 120 122 244
+f 120 244 246
+f 247 121 119
+f 247 119 249
+f 118 120 246
+f 118 246 248
+f 249 119 117
+f 249 117 251
+f 116 118 248
+f 116 248 250
+f 251 117 115
+f 251 115 253
+f 114 116 250
+f 114 250 252
+f 253 115 235
+f 115 182 235
+f 181 114 234
+f 114 252 234
+f 255 113 257
+f 113 111 257
+f 110 112 256
+f 112 254 256
+f 233 184 113
+f 233 113 255
+f 112 183 232
+f 112 232 254
+f 235 182 184
+f 235 184 233
+f 183 181 234
+f 183 234 232
+f 230 231 224
+f 230 224 226
+f 224 231 229
+f 224 229 225
+f 224 72 226
+f 72 223 226
+f 222 72 225
+f 72 224 225
+f 226 223 221
+f 226 221 228
+f 220 222 225
+f 220 225 227
+f 228 221 219
+f 228 219 230
+f 218 220 227
+f 218 227 229
+f 230 219 231
+f 219 217 231
+f 217 218 231
+f 218 229 231
+f 219 136 137
+f 219 137 217
+f 137 135 218
+f 137 218 217
+f 221 134 136
+f 221 136 219
+f 135 133 220
+f 135 220 218
+f 223 132 134
+f 223 134 221
+f 133 131 222
+f 133 222 220
+f 72 130 223
+f 130 132 223
+f 131 130 222
+f 130 72 222
+f 212 165 80
+f 212 80 216
+f 79 164 211
+f 79 211 215
+f 212 216 214
+f 216 210 214
+f 209 215 213
+f 215 211 213
+f 214 210 167
+f 210 82 167
+f 81 209 166
+f 209 213 166
+f 167 188 214
+f 188 145 214
+f 144 187 213
+f 187 166 213
+f 214 145 212
+f 145 143 212
+f 142 144 211
+f 144 213 211
+f 212 143 141
+f 212 141 165
+f 140 142 211
+f 140 211 164
+f 165 141 139
+f 165 139 177
+f 139 140 164
+f 139 164 177
+f 207 208 199
+f 207 199 205
+f 199 208 206
+f 199 206 204
+f 203 205 201
+f 205 199 201
+f 199 204 200
+f 204 202 200
+f 207 205 194
+f 207 194 192
+f 193 204 206
+f 193 206 191
+f 205 203 194
+f 203 196 194
+f 195 202 193
+f 202 204 193
+f 203 201 198
+f 203 198 196
+f 197 200 202
+f 197 202 195
+f 201 199 71
+f 201 71 198
+f 71 199 200
+f 71 200 197
+f 207 192 208
+f 192 70 208
+f 70 191 208
+f 191 206 208
+f 192 145 70
+f 145 190 70
+f 190 144 70
+f 144 191 70
+f 198 71 139
+f 71 138 139
+f 138 71 139
+f 71 197 139
+f 196 198 141
+f 198 139 141
+f 139 197 140
+f 197 195 140
+f 194 196 143
+f 196 141 143
+f 140 195 142
+f 195 193 142
+f 192 194 143
+f 192 143 145
+f 142 193 191
+f 142 191 144
+f 186 132 69
+f 132 130 69
+f 130 131 69
+f 131 185 69
+f 189 188 69
+f 188 186 69
+f 185 187 69
+f 187 189 69
+f 189 190 188
+f 190 145 188
+f 144 190 187
+f 190 189 187
+f 169 171 132
+f 169 132 186
+f 131 170 168
+f 131 168 185
+f 186 188 167
+f 186 167 169
+f 166 187 185
+f 166 185 168
+f 173 134 171
+f 134 132 171
+f 131 133 170
+f 133 172 170
+f 175 136 134
+f 175 134 173
+f 133 135 174
+f 133 174 172
+f 176 137 136
+f 176 136 175
+f 135 137 176
+f 135 176 174
+f 184 182 178
+f 182 177 178
+f 177 181 178
+f 181 183 178
+f 178 68 113
+f 178 113 184
+f 112 68 178
+f 112 178 183
+f 68 163 113
+f 163 111 113
+f 110 162 112
+f 162 68 112
+f 177 182 115
+f 177 115 165
+f 114 181 177
+f 114 177 164
+f 147 165 115
+f 147 115 117
+f 114 164 146
+f 114 146 116
+f 149 147 119
+f 147 117 119
+f 116 146 118
+f 146 148 118
+f 151 149 121
+f 149 119 121
+f 118 148 120
+f 148 150 120
+f 153 151 123
+f 151 121 123
+f 120 150 122
+f 150 152 122
+f 155 153 125
+f 153 123 125
+f 122 152 124
+f 152 154 124
+f 157 155 127
+f 155 125 127
+f 124 154 126
+f 154 156 126
+f 159 157 180
+f 157 127 180
+f 126 156 179
+f 156 158 179
+f 159 180 129
+f 159 129 161
+f 128 179 158
+f 128 158 160
+f 161 129 163
+f 129 111 163
+f 110 128 162
+f 128 160 162
+f 68 67 163
+f 67 109 163
+f 108 67 162
+f 67 68 162
+f 163 109 161
+f 109 107 161
+f 106 108 160
+f 108 162 160
+f 161 107 159
+f 107 105 159
+f 104 106 158
+f 106 160 158
+f 159 105 103
+f 159 103 157
+f 102 104 158
+f 102 158 156
+f 157 103 155
+f 103 101 155
+f 100 102 154
+f 102 156 154
+f 155 101 153
+f 101 99 153
+f 98 100 152
+f 100 154 152
+f 153 99 151
+f 99 97 151
+f 96 98 150
+f 98 152 150
+f 151 97 95
+f 151 95 149
+f 94 96 150
+f 94 150 148
+f 149 95 147
+f 95 93 147
+f 92 94 146
+f 94 148 146
+f 147 93 80
+f 147 80 165
+f 79 92 146
+f 79 146 164
+f 169 167 82
+f 169 82 84
+f 81 166 168
+f 81 168 83
+f 171 169 84
+f 171 84 86
+f 83 168 170
+f 83 170 85
+f 173 171 86
+f 173 86 88
+f 85 170 172
+f 85 172 87
+f 175 173 90
+f 173 88 90
+f 87 172 89
+f 172 174 89
+f 176 175 91
+f 175 90 91
+f 89 174 91
+f 174 176 91
+f 50 48 2
+f 50 2 66
+f 1 47 49
+f 1 49 65
+f 66 2 12
+f 66 12 64
+f 11 1 65
+f 11 65 63
+f 64 12 14
+f 64 14 60
+f 13 11 63
+f 13 63 59
+f 60 14 24
+f 60 24 58
+f 23 13 59
+f 23 59 57
+f 58 24 56
+f 24 26 56
+f 25 23 55
+f 23 57 55
+f 56 26 54
+f 26 36 54
+f 35 25 53
+f 25 55 53
+f 54 36 52
+f 36 38 52
+f 37 35 51
+f 35 53 51
+f 52 38 50
+f 38 48 50
+f 47 37 49
+f 37 51 49
+f 46 48 40
+f 48 38 40
+f 37 47 39
+f 47 45 39
+f 44 46 42
+f 46 40 42
+f 39 45 41
+f 45 43 41
+f 42 40 32
+f 40 34 32
+f 33 39 31
+f 39 41 31
+f 40 38 34
+f 38 36 34
+f 35 37 33
+f 37 39 33
+f 34 36 28
+f 36 26 28
+f 25 35 27
+f 35 33 27
+f 32 34 30
+f 34 28 30
+f 27 33 29
+f 33 31 29
+f 30 28 20
+f 28 22 20
+f 21 27 19
+f 27 29 19
+f 28 26 24
+f 28 24 22
+f 23 25 27
+f 23 27 21
+f 22 24 16
+f 24 14 16
+f 13 23 15
+f 23 21 15
+f 20 22 18
+f 22 16 18
+f 15 21 17
+f 21 19 17
+f 18 16 10
+f 18 10 8
+f 9 15 17
+f 9 17 7
+f 16 14 12
+f 16 12 10
+f 11 13 15
+f 11 15 9
+f 10 12 2
+f 10 2 4
+f 1 11 9
+f 1 9 3
+f 8 10 4
+f 8 4 6
+f 3 9 7
+f 3 7 5
+f 6 4 46
+f 6 46 44
+f 45 3 5
+f 45 5 43
+f 4 2 48
+f 4 48 46
+f 47 1 3
+f 47 3 45

二進制
res/napoleon.ico


+ 173 - 0
src/Android.mk

@@ -0,0 +1,173 @@
+# Copyright (C) 2010 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE    := crown
+LOCAL_SRC_FILES :=\
+	core/bv/Circle.cpp\
+	core/bv/Frustum.cpp\
+	core/bv/Rectangle.cpp\
+	core/containers/Generic.cpp\
+	core/containers/StringUtils.cpp\
+	core/math/Angles.cpp\
+	core/math/Color4.cpp\
+	core/math/Mat3.cpp\
+	core/math/Mat4.cpp\
+	core/math/MathUtils.cpp\
+	core/math/Plane.cpp\
+	core/math/Quat.cpp\
+	core/math/Shape.cpp\
+	core/math/Vec2.cpp\
+	core/math/Vec3.cpp\
+	core/math/Vec4.cpp\
+	core/mem/GarbageBin.cpp\
+	core/mem/ManagedObject.cpp\
+	core/Object.cpp\
+	core/Observable.cpp\
+	core/streams/FileStream.cpp\
+	core/streams/MemoryStream.cpp\
+	core/streams/Stream.cpp\
+\
+	input/android/AndroidInputManager.cpp\
+	input/android/AndroidTouch.cpp\
+	input/EventDispatcher.cpp\
+	input/InputManager.cpp\
+\
+	loaders/BMPImageLoader.cpp\
+	loaders/CRWDecoder.cpp\
+	loaders/TGAImageLoader.cpp\
+\
+	Filesystem.cpp\
+\
+	renderers/gles/egl/EGLRenderWindow.cpp\
+	renderers/gles/GLESIndexBuffer.cpp\
+	renderers/gles/GLESRenderer.cpp\
+	renderers/gles/GLESSupport.cpp\
+	renderers/gles/GLESTextRenderer.cpp\
+	renderers/gles/GLESTexture.cpp\
+	renderers/gles/GLESTextureManager.cpp\
+	renderers/gles/GLESVertexBuffer.cpp\
+\
+	App.cpp\
+	Camera.cpp\
+	Device.cpp\
+	Entity.cpp\
+	Font.cpp\
+	FontManager.cpp\
+	Frame.cpp\
+	Image.cpp\
+	ImageLoader.cpp\
+	Light.cpp\
+	Log.cpp\
+	LogManager.cpp\
+	Material.cpp\
+	MaterialManager.cpp\
+	MeshChunk.cpp\
+	Mesh.cpp\
+	MeshManager.cpp\
+	MovableCamera.cpp\
+	PhysicNode.cpp\
+	PhysicsManager.cpp\
+	Pixel.cpp\
+	Renderer.cpp\
+	RenderWindow.cpp\
+	ResourceManager.cpp\
+	Scene.cpp\
+	SceneManager.cpp\
+	SceneNode.cpp\
+	Skybox.cpp\
+	SpriteAnimator.cpp\
+	Sprite.cpp\
+	Timer.cpp\
+\
+
+LOCAL_C_INCLUDES	:=\
+	$(LOCAL_PATH)/core\
+	$(LOCAL_PATH)/core/math\
+	$(LOCAL_PATH)/core/containers\
+	$(LOCAL_PATH)/core/bv\
+	$(LOCAL_PATH)/core/mem\
+	$(LOCAL_PATH)/core/streams\
+	$(LOCAL_PATH)/loaders\
+	$(LOCAL_PATH)/renderers\
+	$(LOCAL_PATH)/things\
+	$(LOCAL_PATH)/filesystem\
+	$(LOCAL_PATH)/gui\
+	$(LOCAL_PATH)/windowing\
+	$(LOCAL_PATH)/windowing/themes\
+	$(LOCAL_PATH)/windowing/layouts\
+	$(LOCAL_PATH)/windowing/templates\
+	$(LOCAL_PATH)/windowing/toolbox\
+	$(LOCAL_PATH)/renderers/gl\
+	$(LOCAL_PATH)/renderers/gl/glx\
+	$(LOCAL_PATH)/renderers/gl/wgl\
+	$(LOCAL_PATH)/renderers/gles\
+	$(LOCAL_PATH)/renderers/gles/egl\
+	$(LOCAL_PATH)/input\
+	$(LOCAL_PATH)/input/android
+
+LOCAL_CPPFLAGS	:= -g -fexceptions
+LOCAL_LDLIBS	:= -llog -landroid -lEGL -lGLESv1_CM
+LOCAL_STATIC_LIBRARIES := android_native_app_glue
+include $(BUILD_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE    := simple
+LOCAL_SRC_FILES :=	tests/chainsawbuffet/maain.cpp\
+					tests/chainsawbuffet/Globals.cpp\
+					tests/chainsawbuffet/entities/Pg.cpp\
+					tests/chainsawbuffet/entities/Zombie.cpp\
+					tests/chainsawbuffet/entities/SolidSceneNode.cpp\
+					tests/chainsawbuffet/entities/Joystick.cpp\
+					tests/chainsawbuffet/scenes/ArenaScene.cpp\
+					tests/chainsawbuffet/entities/Bullet.cpp
+LOCAL_SHARED_LIBRARIES := crown
+LOCAL_C_INCLUDES	:=\
+	$(LOCAL_PATH)/core\
+	$(LOCAL_PATH)/core/math\
+	$(LOCAL_PATH)/core/containers\
+	$(LOCAL_PATH)/core/bv\
+	$(LOCAL_PATH)/core/mem\
+	$(LOCAL_PATH)/core/streams\
+	$(LOCAL_PATH)/loaders\
+	$(LOCAL_PATH)/renderers\
+	$(LOCAL_PATH)/things\
+	$(LOCAL_PATH)/filesystem\
+	$(LOCAL_PATH)/gui\
+	$(LOCAL_PATH)/windowing\
+	$(LOCAL_PATH)/windowing/themes\
+	$(LOCAL_PATH)/windowing/layouts\
+	$(LOCAL_PATH)/windowing/templates\
+	$(LOCAL_PATH)/windowing/toolbox\
+	$(LOCAL_PATH)/renderers/gl\
+	$(LOCAL_PATH)/renderers/gl/glx\
+	$(LOCAL_PATH)/renderers/gl/wgl\
+	$(LOCAL_PATH)/renderers/gles\
+	$(LOCAL_PATH)/renderers/gles/egl\
+	$(LOCAL_PATH)/input\
+	$(LOCAL_PATH)/input/android\
+	$(LOCAL_PATH)/tests\
+	$(LOCAL_PATH)/tests/chainsawbuffet\
+	$(LOCAL_PATH)/tests/chainsawbuffet/entities\
+	$(LOCAL_PATH)/tests/chainsawbuffet/scenes\
+
+LOCAL_CPPFLAGS	:= -g -fexceptions
+LOCAL_LDLIBS	:= -llog -landroid -lEGL -lGLESv1_CM -lz
+LOCAL_STATIC_LIBRARIES := android_native_app_glue
+include $(BUILD_SHARED_LIBRARY)
+$(call import-module,android/native_app_glue)
+

+ 2 - 0
src/Application.mk

@@ -0,0 +1,2 @@
+APP_PLATFORM := android-9
+APP_STL := gnustl_static

+ 290 - 0
src/CMakeLists.txt

@@ -0,0 +1,290 @@
+set (SRC
+	Camera.cpp
+	Device.cpp
+	EventBuffer.cpp
+	Filesystem.cpp
+	Font.cpp
+	FontManager.cpp
+	Frame.cpp
+	Image.cpp
+	ImageLoader.cpp
+	Log.cpp
+	Material.cpp
+	MaterialManager.cpp
+	MeshChunk.cpp
+	Mesh.cpp
+	MeshManager.cpp
+	MovableCamera.cpp
+#	ParticleEmitter.cpp
+#	ParticleManager.cpp
+#	PhysicNode.cpp
+#	PhysicsManager.cpp
+	Pixel.cpp
+	Renderer.cpp
+	RenderWindow.cpp
+	ResourceManager.cpp
+	Skybox.cpp
+	SpriteAnimator.cpp
+	Sprite.cpp
+	Terrain.cpp
+	TextRenderer.cpp
+	World.cpp
+)
+
+set (HEADERS
+	Camera.h
+	Config.h
+	Crown.h
+	Data.h
+	Device.h
+	EventBuffer.h
+	Filesystem.h
+	Font.h
+	FontManager.h
+	Frame.h
+	Glyph.h
+	Image.h
+	ImageLoader.h
+	IndexBuffer.h
+	Log.h
+	Material.h
+	MaterialManager.h
+	MeshChunk.h
+	Mesh.h
+	MeshLoader.h
+	MeshManager.h
+	MovableCamera.h
+	OcclusionQuery.h
+#	ParticleEmitter.h
+#	ParticleManager.h
+#	PhysicNode.h
+#	PhysicsManager.h
+	Pixel.h
+	Renderer.h
+	RenderWindow.h
+	Resource.h
+	ResourceManager.h
+	Skybox.h
+	SpriteAnimator.h
+	Sprite.h
+	Terrain.h
+	TextRenderer.h
+	Texture.h
+	TextureManager.h
+	Timer.h
+	VertexBuffer.h
+	World.h
+)
+
+set (CORE_SRC
+	core/Observable.cpp
+	core/Weak.cpp
+)
+
+set (CORE_HEADERS
+	core/CoreEventArgs.h
+	core/Delegate.h
+	core/Exceptions.h
+	core/Observable.h
+	core/SignalSlot.h
+	core/Singleton.h
+	core/Types.h
+	core/VertexData.h
+	core/Weak.h
+	core/WithProperties.h
+)
+
+set (BV_SRC
+	core/bv/Circle.cpp
+	core/bv/Frustum.cpp
+	core/bv/Rect.cpp
+)
+
+set (BV_HEADERS
+	core/bv/Box.h
+	core/bv/Circle.h
+	core/bv/Frustum.h
+	core/bv/Rect.h
+	core/bv/Sphere.h
+)
+
+set (CONTAINERS_SRC
+	core/containers/Generic.cpp
+	core/containers/Str.cpp
+)
+
+set (CONTAINERS_HEADERS
+	core/containers/Array.h
+	core/containers/Dictionary.h
+	core/containers/Generic.h
+	core/containers/IEnumerable.h
+	core/containers/List.h
+	core/containers/RBTree.h
+	core/containers/Str.h
+)
+
+set (MATH_SRC
+	core/math/Angles.cpp
+	core/math/Color4.cpp
+	core/math/Mat3.cpp
+	core/math/Mat4.cpp
+	core/math/MathUtils.cpp
+	core/math/Plane.cpp
+	core/math/Point2.cpp
+	core/math/Quat.cpp
+	core/math/Shape.cpp
+	core/math/Vec2.cpp
+	core/math/Vec3.cpp
+	core/math/Vec4.cpp
+)
+
+set (MATH_HEADERS
+	core/math/Angles.h
+	core/math/Color4.h
+	core/math/Interpolation.h
+	core/math/Intersection.h
+	core/math/Mat3.h
+	core/math/Mat4.h
+	core/math/MathUtils.h
+	core/math/Plane.h
+	core/math/Point2.h
+	core/math/Quat.h
+	core/math/Random.h
+	core/math/Ray.h
+	core/math/Shape.h
+	core/math/Triangle.h
+	core/math/Vec2.h
+	core/math/Vec3.h
+	core/math/Vec4.h
+)
+
+set (STREAMS_SRC
+	core/streams/File.cpp
+	core/streams/FileStream.cpp
+	core/streams/FileSubStream.cpp
+	core/streams/MemoryStream.cpp
+	core/streams/Stream.cpp
+)
+
+set (STREAMS_HEADERS
+	core/streams/File.h
+	core/streams/FileStream.h
+	core/streams/FileSubStream.h
+	core/streams/MemoryStream.h
+	core/streams/NullStream.h
+	core/streams/Stream.h
+)
+
+set (MEM_SRC
+	core/mem/GarbageBin.cpp
+)
+
+set (MEM_HEADERS
+	core/mem/Auto.h
+	core/mem/GarbageBin.h
+	core/mem/Shared.h
+)
+
+set (INPUT_SRC
+	input/EventDispatcher.cpp
+	input/InputManager.cpp
+)
+
+set (INPUT_HEADERS
+	input/EventDispatcher.h
+	input/InputManager.h
+	input/Keyboard.h
+	input/KeyCode.h
+	input/Mouse.h
+	input/Touch.h
+)
+
+set (LOADERS_SRC
+	loaders/BMPImageLoader.cpp
+	loaders/TGAImageLoader.cpp
+#	loaders/XMLReader.cpp
+#	loaders/XWMLReader.cpp
+)
+
+set (LOADERS_HEADERS
+	loaders/BMPImageLoader.h
+	loaders/TGAImageLoader.h
+	loaders/XMLReader.h
+	loaders/XWMLReader.h
+)
+
+set (GL_SRC
+	renderers/gl/GLIndexBuffer.cpp
+	renderers/gl/GLOcclusionQuery.cpp
+	renderers/gl/GLRenderer.cpp
+	renderers/gl/GLSupport.cpp
+	renderers/gl/GLTexture.cpp
+	renderers/gl/GLTextureManager.cpp
+	renderers/gl/GLUtils.cpp
+	renderers/gl/GLVertexBuffer.cpp
+)
+
+set (GL_HEADERS
+	renderers/gl/GLIndexBuffer.h
+	renderers/gl/GLOcclusionQuery.h
+	renderers/gl/GLRenderer.h
+	renderers/gl/GLSupport.h
+	renderers/gl/GLTexture.h
+	renderers/gl/GLTextureManager.h
+	renderers/gl/GLUtils.h
+	renderers/gl/GLVertexBuffer.h
+)
+
+set (OS_HEADERS
+	os/OS.h
+)
+
+set (LINUX_SRC
+#	EGLRenderWindow.cpp
+	os/linux/GLXRenderWindow.cpp
+	os/linux/LinuxOS.cpp
+	os/linux/LinuxTimer.cpp
+	os/linux/X11InputManager.cpp
+	os/linux/X11Keyboard.cpp
+	os/linux/X11Mouse.cpp
+)
+
+set (LINUX_HEADERS
+#	os/linux/EGLRenderWindow.h
+	os/linux/GLXRenderWindow.h
+	os/linux/LinuxTimer.h
+	os/linux/X11InputManager.h
+	os/linux/X11Keyboard.h
+	os/linux/X11Mouse.h
+)
+
+set (SOURCES
+	${SRC}
+	${INCLUDES}
+	${CORE_SRC}
+	${CORE_HEADERS}
+	${BV_SRC}
+	${BV_HEADERS}
+	${CONTAINERS_SRC}
+	${CONTAINERS_HEADERS}
+	${MATH_SRC}
+	${MATH_HEADERS}
+	${STREAMS_SRC}
+	${STREAMS_HEADERS}
+	${MEM_SRC}
+	${MEM_HEADERS}
+	${INPUT_SRC}
+	${INPUT_HEADERS}
+	${LOADERS_SRC}
+	${LOADERS_HEADERS}
+
+	${OS_HEADERS}
+	${LINUX_SRC}
+	${LINUX_HEADERS}
+
+	${GL_SRC}
+	${GL_HEADERS}
+)
+
+link_libraries(X11 GL GLEW Xrandr rt z)
+add_library(crown STATIC ${SOURCES})

+ 177 - 0
src/Camera.cpp

@@ -0,0 +1,177 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Camera.h"
+#include "Device.h"
+#include "Types.h"
+#include "Renderer.h"
+
+namespace Crown
+{
+
+Camera::Camera(const Vec3& position, const Angles& axis,
+			   bool visible, float fov, float aspect, bool active) :
+	mLookAt(0, 0, -1),
+	mUp(0, 1, 0),
+	mFOV(fov),
+	mAspect(aspect),
+	mNear(0.1f),
+	mFar(1000.0f),
+	mActive(active),
+	mAutoAspect(true)
+{
+	UpdateProjectionMatrix();
+	UpdateViewMatrix();
+	UpdateFrustum();
+}
+
+Camera::~Camera()
+{
+}
+
+void Camera::SetPosition(const Vec3& position)
+{
+	mPosition = position;
+	UpdateViewMatrix();
+}
+
+const Vec3& Camera::GetLookAt() const
+{
+	return mLookAt;
+}
+
+void Camera::SetLookAt(const Vec3& lookat)
+{
+	mLookAt = lookat;
+	UpdateViewMatrix();
+}
+
+const Vec3& Camera::GetUpVector() const
+{
+	return mUp;
+}
+
+bool Camera::IsActive() const
+{
+	return mActive;
+}
+
+void Camera::SetActive(bool active)
+{
+	mActive = active;
+}
+
+float Camera::GetFOV() const
+{
+	return mFOV;
+}
+
+void Camera::SetFOV(float fov)
+{
+	mFOV = fov;
+	UpdateProjectionMatrix();
+}
+
+bool Camera::GetAutoAspect() const
+{
+	return mAutoAspect;
+}
+
+void Camera::SetAutoAspect(bool autoAspect)
+{
+	mAutoAspect = autoAspect;
+}
+
+float Camera::GetAspect() const
+{
+	return mAspect;
+}
+
+void Camera::SetAspect(float aspect)
+{
+	mAspect = aspect;
+	UpdateProjectionMatrix();
+}
+
+float Camera::GetNearClipDistance() const
+{
+	return mNear;
+}
+
+void Camera::SetNearClipDistance(float near)
+{
+	mNear = near;
+	UpdateProjectionMatrix();
+}
+
+float Camera::GetFarClipDistance() const
+{
+	return mFar;
+}
+
+void Camera::SetFarClipDistance(float far)
+{
+	mFar = far;
+	UpdateProjectionMatrix();
+}
+
+const Mat4& Camera::GetProjectionMatrix() const
+{
+	return mProjection;
+}
+
+const Mat4& Camera::GetViewMatrix() const
+{
+	return mView;
+}
+
+const Frustum& Camera::GetFrustum() const
+{
+	return mFrustum;
+}
+
+void Camera::Render()
+{
+	GetDevice()->GetRenderer()->SetMatrix(MT_PROJECTION, mProjection);
+	GetDevice()->GetRenderer()->SetMatrix(MT_VIEW, mView);
+}
+
+void Camera::UpdateProjectionMatrix()
+{
+	mProjection.BuildProjectionPerspectiveRH(mFOV, mAspect, mNear, mFar);
+}
+
+void Camera::UpdateViewMatrix()
+{
+	mView.BuildLookAtRH(mPosition, mPosition + mLookAt, mUp);
+}
+
+void Camera::UpdateFrustum()
+{
+	mFrustum.FromMatrix(mProjection * mView);
+}
+
+} // namespace Crown
+

+ 135 - 0
src/Camera.h

@@ -0,0 +1,135 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Frustum.h"
+#include "Mat4.h"
+#include "Vec3.h"
+
+namespace Crown
+{
+
+class Camera
+{
+
+public:
+
+	//! Constructor
+	Camera(const Vec3& position, const Angles& axis, bool visible, float fov, float aspect, bool active);
+
+	//! Destructor
+	virtual ~Camera();
+
+	//! Sets the camera's position
+	void SetPosition(const Vec3& position);
+
+	//! Returns the camera's lookat-point
+	const Vec3& GetLookAt() const;
+
+	//! Sets the camera's lookat-point
+	void SetLookAt(const Vec3& lookat);
+
+	//! Returns the camera's up vector
+	const Vec3& GetUpVector() const;
+
+	//! Returns whether the camera is active
+	bool IsActive() const;
+
+	//! Sets whether the camera is active
+	void SetActive(bool active);
+
+	//! Returns the camera's Field Of View
+	float GetFOV() const;
+
+	//! Sets the camera's Field Of View
+	void SetFOV(float fov);
+
+	//! Returns whether the camera automatically adjusts aspect ratio based on the Viewport
+	bool GetAutoAspect() const;
+
+	//! Sets whether the camera automatically adjusts aspect ratio based on the Viewport
+	void SetAutoAspect(bool autoAspect);
+
+	//! Returns the camera's aspect ratio
+	float GetAspect() const;
+
+	//! Sets the camera's aspect ratio
+	void SetAspect(float aspect);
+
+	//! Returns the camera's near clipping distance
+	float GetNearClipDistance() const;
+
+	//! Sets the camera's near clipping distance
+	void SetNearClipDistance(float near);
+
+	//! Returns the camera's far clipping distance
+	float GetFarClipDistance() const;
+
+	//! Sets the camera's far clipping distance
+	void SetFarClipDistance(float far);
+
+	//! Returns the camera's view frustum
+	const Frustum& GetFrustum() const;
+
+	//! Returns the projection matrix
+	const Mat4& GetProjectionMatrix() const;
+
+	//! Returns the view matrix
+	const Mat4& GetViewMatrix() const;
+
+	//! Loads the view and projection matrix
+	virtual void Render();
+
+	const Vec3& GetPosition() const { return mPosition; }
+
+protected:
+
+	void UpdateProjectionMatrix();
+	void UpdateViewMatrix();
+	void UpdateFrustum();
+
+	Vec3 mPosition;
+	Vec3 mLookAt;
+	Vec3 mUp;
+
+	Mat4 mView;
+	Mat4 mProjection;
+
+	Frustum mFrustum;
+
+	float mFOV;
+	float mAspect;
+
+	float mNear;
+	float mFar;
+
+	bool mActive		: 1;
+	bool mAutoAspect	: 1;
+};
+
+} // namespace Crown
+

+ 71 - 0
src/Config.h

@@ -0,0 +1,71 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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
+
+// Check operating system (code borrowed from Qt4)
+#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__) || defined(WIN32) || defined(_WIN32) || defined(__WIN32__) || defined(__NT__)
+	// The operating system is Windows
+	#define WINDOWS
+#elif defined(__linux__) || defined(__linux)
+	// The operating system is Linux
+	#define LINUX
+#else
+	#error "Can't detect operating system"
+#endif
+
+#ifdef WINDOWS
+#ifndef _CRT_SECURE_NO_WARNINGS
+#define _CRT_SECURE_NO_WARNINGS	//To suppress safe clr function warnings (Es: strcpy -> strcpy_s
+#endif
+#endif
+
+//#define CROWN_OS_ANDROID
+
+// Debug mode
+// #define DEBUG
+
+/*
+	Renderer settings.
+
+	Here you choose which renderer to use for drawing
+	things to screen. Uncomment your preferred renderer
+	to choose it.
+
+	Note that only _one_ renderer can be chosen at a time.
+
+	Note also that:
+	a) you can choose OpenGL if and only if you are on
+	   a Linux or Windows machine.
+	b) you can choose OpenGL|ES if and only if you are
+	   on a Linux or Android machine.
+*/
+#define CROWN_USE_OPENGL		//!< Whether to build with OpenGL
+//#define CROWN_USE_OPENGLES		//!< Whether to build with OpenGL|ES
+
+//#define CROWN_USE_WINDOWING	//!< Whether to build with windowing
+
+#define CROWN_USE_FLOAT
+

+ 156 - 0
src/Crown.h

@@ -0,0 +1,156 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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
+
+// Core
+#include "Auto.h"
+#include "Exceptions.h"
+#include "SignalSlot.h"
+#include "Types.h"
+#include "CoreEventArgs.h"
+//#include "WithProperties.h"
+#include "Observable.h"
+#include "Shared.h"
+#include "Singleton.h"
+
+// Core/Math
+#include "Angles.h"
+#include "Color4.h"
+#include "Interpolation.h"
+#include "Intersection.h"
+#include "Mat3.h"
+#include "Mat4.h"
+#include "MathUtils.h"
+#include "Plane.h"
+#include "Point2.h"
+#include "Quat.h"
+#include "Random.h"
+#include "Ray.h"
+#include "Shape.h"
+#include "Triangle.h"
+#include "Vec2.h"
+#include "Vec3.h"
+#include "Vec4.h"
+
+// Core/Bv
+#include "Box.h"
+#include "Circle.h"
+#include "Frustum.h"
+#include "Rect.h"
+#include "Sphere.h"
+
+// Core/Containers
+#include "Array.h"
+#include "Dictionary.h"
+#include "IEnumerable.h"
+#include "RBTree.h"
+#include "Str.h"
+#include "List.h"
+#include "Generic.h"
+
+// Core/Mem
+#include "GarbageBin.h"
+
+// Core/Streams
+#include "Stream.h"
+#include "FileStream.h"
+#include "MemoryStream.h"
+#include "NullStream.h"
+
+// Engine
+#include "Camera.h"
+#include "Device.h"
+#include "Font.h"
+#include "FontManager.h"
+#include "Frame.h"
+#include "Glyph.h"
+#include "Image.h"
+#include "IndexBuffer.h"
+#include "Log.h"
+#include "Material.h"
+#include "MaterialManager.h"
+#include "Mesh.h"
+#include "MeshChunk.h"
+#include "MeshLoader.h"
+#include "MeshManager.h"
+#include "MovableCamera.h"
+#include "OcclusionQuery.h"
+#include "ParticleEmitter.h"
+#include "ParticleManager.h"
+#include "PhysicsManager.h"
+#include "PhysicNode.h"
+#include "Pixel.h"
+#include "RenderWindow.h"
+#include "Renderer.h"
+#include "ResourceManager.h"
+#include "Skybox.h"
+#include "Sprite.h"
+#include "SpriteAnimator.h"
+#include "TextRenderer.h"
+#include "TextureManager.h"
+#include "Timer.h"
+#include "VertexBuffer.h"
+
+// Engine/Filesystem
+#include "Filesystem.h"
+
+// Engine/Loaders
+#include "BMPImageLoader.h"
+#include "TGAImageLoader.h"
+#include "XMLReader.h"
+//#include "XWMLReader.h"
+
+// Engine/Input
+#include "EventDispatcher.h"
+#include "InputManager.h"
+#include "Keyboard.h"
+#include "KeyCode.h"
+#include "Mouse.h"
+#include "Touch.h"
+
+//// Engine/Windowing
+//#include "Bind.h"
+//#include "Button.h"
+//#include "DragArea.h"
+//#include "ItemsSelector.h"
+//#include "ItemsWidget.h"
+//#include "ListView.h"
+//#include "Property.h"
+//#include "ScrollArea.h"
+//#include "SpecificProperties.h"
+//#include "StackLayout.h"
+//#include "TextBox.h"
+//#include "Themes.h"
+//#include "ThemeSpriteWidget.h"
+//#include "TreeView.h"
+//#include "Widget.h"
+//#include "Window.h"
+//#include "WindowContext.h"
+//#include "WindowingEventArgs.h"
+//#include "WindowsManager.h"
+
+// Engine/Windowing/Toolbox
+//#include "TextInputWindow.h"

+ 78 - 0
src/Data.h

@@ -0,0 +1,78 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Vec2.h"
+#include "Vec3.h"
+#include "Color4.h"
+
+namespace Crown
+{
+
+struct VertexData
+{
+	VertexData(const Vec3& position = Vec3::ZERO, const Vec3& normal = Vec3::ZERO,
+		const Vec2& uv = Vec2::ZERO, const Color4& color = Color4::WHITE)
+	{
+		this->position = position;
+		this->normal = normal;
+		this->uv = uv;
+		this->color = color;
+	}
+
+	bool operator==(const VertexData& other) const
+	{
+		return position == other.position && normal == other.normal && uv == other.uv && color == other.color;
+	}
+
+	Vec3 position;
+	Vec3 normal;
+	Vec2 uv;
+	Color4 color;
+};
+
+struct FaceData
+{
+	FaceData() {}
+
+	FaceData(ushort v1, ushort v2, ushort v3)
+	{
+		vertex[0] = (v1);
+		vertex[1] = (v2);
+		vertex[2] = (v3);
+	}
+
+	bool operator==(const FaceData& other) const
+	{
+		return vertex[0] == other.vertex[0] && vertex[1] == other.vertex[1] && vertex[2] == other.vertex[2];
+	}
+
+	ushort vertex[3];
+};
+
+} // namespace Crown
+

+ 322 - 0
src/Device.cpp

@@ -0,0 +1,322 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Types.h"
+#include "Config.h"
+#include "Device.h"
+#include "Filesystem.h"
+#include "GarbageBin.h"
+#include "InputManager.h"
+#include "Log.h"
+#include "Renderer.h"
+#include "RenderWindow.h"
+#include "GarbageBin.h"
+#include "RenderWindow.h"
+#include "Config.h"
+#include "Filesystem.h"
+#include "Timer.h"
+#include "OS.h"
+
+namespace Crown
+{
+
+const ushort Device::CROWN_MAJOR = 0;
+const ushort Device::CROWN_MINOR = 1;
+const ushort Device::CROWN_MICRO = 0;
+
+Device::Device() :
+	mIsInit(false),
+	mIsRunning(false),
+	mMainWindow(NULL),
+	mInputManager(NULL),
+	mRenderer(NULL),
+	mGarbageBin(NULL)
+{
+}
+
+Device::~Device()
+{
+}
+
+bool Device::Init(int argc, char** argv)
+{
+	const char* cmdRootPath = Str::EMPTY;
+	uint width = 1000;
+	uint height = 625;
+	uint depth = false;
+	bool full = false;
+
+	if (argc == 2 && Str::StrCmp(argv[1], "-h") == 0)
+	{
+		OS::Printf("Usage: %s [options]\n", argv[0]);
+		OS::Printf("Options:\n\n");
+		OS::Printf("All of the following options take precedence over\nenvironment variables and configuration files.\n\n");
+		// Print options
+		OS::Printf("  -root-path <path>\t\t\tUse <path> as the filesystem root path\n");
+		OS::Printf("  -metrics <width> <height>\t\tSet the <width> and <height> of the render window\n");
+		OS::Printf("  -fullscreen\t\t\t\tStart in fullscreen\n");
+		return false;
+	}
+
+	// Parse command line arguments
+	int i = 1;
+	while (i < argc)
+	{
+		if (Str::StrCmp(argv[i], "-root-path") == 0)
+		{
+			if (argc < i + 2)
+			{
+				OS::Printf("%s: error: missing absolute path after `-root-path`\n", argv[0]);
+				return false;
+			}
+			cmdRootPath = argv[i + 1];
+			// Two arguments crunched
+			i++;
+			i++;
+			continue;
+		}
+		if (Str::StrCmp(argv[i], "-metrics") == 0)
+		{
+			if (argc < i + 3)
+			{
+				OS::Printf("%s: error: wrong number of arguments after `-metrics`\n", argv[0]);
+				return false;
+			}
+			width = atoi(argv[i + 1]);
+			height = atoi(argv[i + 2]);
+			// Three arguments crunched
+			i++;
+			i++;
+			i++;
+			continue;
+		}
+		if (Str::StrCmp(argv[i], "-fullscreen") == 0)
+		{
+			full = true;
+			// One argument crunched
+			i++;
+			continue;
+		}
+
+		// Next argument
+		i++;
+	}
+
+	// Initialize
+	Log::D("Device::Init() called.");
+
+	if (IsInit())
+	{
+		Log::E("Device is already initialized.");
+		return false;
+	}
+
+	// Sets the root path
+	GetFilesystem()->Init(cmdRootPath, Str::EMPTY);
+
+	mGarbageBin = new GarbageBin();
+
+	if (!(mMainWindow = RenderWindow::CreateWindow(0, 0, width, height, depth, full)))
+	{
+		Log::E("Unuble to create the main window.");
+		return false;
+	}
+
+	mMainWindow->_SetMain(true);
+	Log::D("Window created.");
+
+	if (!mRenderer)
+	{
+		mRenderer = Renderer::CreateRenderer();
+	}
+	Log::D("Renderer created.");
+
+	mInputManager = InputManager::CreateInputManager(mMainWindow);
+
+	Mouse* mouse = NULL;
+	Keyboard* keyboard = NULL;
+	Touch* touch = NULL;
+
+	if (mInputManager)
+	{
+		keyboard = mInputManager->GetKeyboard();
+		mouse = mInputManager->GetMouse();
+		touch = mInputManager->GetTouch();
+	}
+
+	if (mouse)
+	{
+		mouse->SetListener(mInputManager->GetEventDispatcher());
+	}
+	if (keyboard)
+	{
+		keyboard->SetListener(mInputManager->GetEventDispatcher());
+	}
+	if (touch)
+	{
+		touch->SetListener(mInputManager->GetEventDispatcher());
+	}
+	Log::D("Input created.");
+
+	mIsInit = true;
+
+	StartRunning();
+
+	Log::I("Crown Game Engine %d.%d.%d", CROWN_MAJOR, CROWN_MINOR, CROWN_MICRO);
+	Log::I("Crown is up and running, enjoy!");
+
+	return true;
+}
+
+InputManager* Device::GetInputManager()
+{
+	return mInputManager;
+}
+
+void Device::Shutdown()
+{
+	if (!IsInit())
+	{
+		Log::E("Device is not initialized.");	
+		return;
+	}
+
+	Log::I("Releasing GarbageBin...");
+
+	if (mGarbageBin)
+	{
+		delete mGarbageBin;
+	}
+
+	Log::I("Releasing Renderer...");
+
+	if (mRenderer)
+	{
+		Renderer::DestroyRenderer(mRenderer);
+	}
+
+	Log::I("Releasing InputManager...");
+	if (mInputManager)
+	{
+		InputManager::DestroyInputManager(mInputManager);
+	}
+
+	Log::I("Releasing Main Window...");
+
+	if (mMainWindow)
+	{
+		mMainWindow->_SetMain(false);
+		RenderWindow::DestroyWindow(mMainWindow);
+	}
+
+	mIsInit = false;
+}
+
+bool Device::IsInit()
+{
+	return mIsInit;
+}
+
+Renderer* Device::GetRenderer()
+{
+	return mRenderer;
+}
+
+RenderWindow* Device::GetMainWindow()
+{
+	return mMainWindow;
+}
+
+GarbageBin* Device::GetGarbageBin()
+{
+	return mGarbageBin;
+}
+
+void Device::StartRunning()
+{
+	if (!IsInit())
+	{
+		return;
+	}
+
+	mIsRunning = true;
+}
+
+void Device::StopRunning()
+{
+	if (!IsInit())
+	{
+		return;
+	}
+
+	mIsRunning = false;
+}
+
+bool Device::IsRunning() const
+{
+	return mIsRunning;
+}
+
+// TODO
+void Device::Frame()
+{
+	// TODO Replace this mess
+	if (mInputManager)
+	{
+		if (mInputManager->IsMouseAvailable())
+		{
+			if (mInputManager->IsMouseAvailable())
+			{
+				mInputManager->GetMouse()->EventLoop();
+			}
+			if (mInputManager->IsKeyboardAvailable())
+			{
+				mInputManager->GetKeyboard()->EventLoop();
+			}
+			if (mInputManager->IsTouchAvailable())
+			{
+				mInputManager->GetTouch()->EventLoop();
+			}
+		}
+	}
+
+	mMainWindow->EventLoop();
+
+	mRenderer->_BeginFrame();
+	mRenderer->_EndFrame();
+
+	mMainWindow->Update();
+
+	mGarbageBin->Empty();
+}
+
+Device device;
+Device* GetDevice()
+{
+	return &device;
+}
+
+} // namespace Crown
+

+ 89 - 0
src/Device.h

@@ -0,0 +1,89 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Config.h"
+#include "Timer.h"
+
+namespace Crown
+{
+
+class Renderer;
+class RenderWindow;
+class InputManager;
+class GarbageBin;
+
+/**
+	Device.
+*/
+class Device
+{
+
+public:
+
+							Device();
+							~Device();
+
+	RenderWindow*			GetMainWindow();
+	InputManager*			GetInputManager();
+	Renderer*				GetRenderer();
+	GarbageBin*				GetGarbageBin();
+
+	void					StartRunning();
+	void					StopRunning();
+	bool					IsRunning() const;
+	bool					IsInit();
+	void					Frame();
+
+	bool					Init(int argc, char** argv);
+	void					Shutdown();
+
+private:
+
+	static const ushort		CROWN_MAJOR;
+	static const ushort		CROWN_MINOR;
+	static const ushort		CROWN_MICRO;
+
+	bool					mIsInit		: 1;
+	bool					mIsRunning	: 1;
+
+	RenderWindow*			mMainWindow;
+	InputManager*			mInputManager;
+	Renderer*				mRenderer;
+
+	GarbageBin*				mGarbageBin;
+	Timer					mTimer;
+
+	// Disable copying
+	Device(const Device&);
+	Device& operator=(const Device&);
+};
+
+Device* GetDevice();
+
+} // namespace Crown
+

+ 113 - 0
src/EventBuffer.cpp

@@ -0,0 +1,113 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "EventBuffer.h"
+#include "Types.h"
+#include <cstring>
+#include <stdio.h>
+
+namespace Crown
+{
+
+EventBuffer::EventBuffer() : mBufferCount(0)
+{
+}
+
+EventBuffer::~EventBuffer()
+{
+}
+
+void EventBuffer::PushEvent(uint eventType, void* eventData, size_t eventSize)
+{
+	if (mBufferCount + sizeof(eventType) + eventSize > MAX_EVENT_QUEUE_SIZE)
+	{
+		Flush();
+	}
+
+	char* q = mBuffer + mBufferCount;
+
+	*(uint*) q = eventType;
+	*(size_t*) (q + sizeof(eventType)) = eventSize;
+	memcpy(q + sizeof(eventType) + sizeof(eventSize), eventData, eventSize);
+
+	mBufferCount += sizeof(eventType) + sizeof(eventSize) + eventSize;
+}
+
+void EventBuffer::PushEventBuffer(char* eventBuffer, size_t bufferSize)
+{
+	if (mBufferCount + bufferSize > MAX_EVENT_QUEUE_SIZE)
+	{
+		Flush();
+	}
+
+	char* q = mBuffer + mBufferCount;
+	memcpy(q, eventBuffer, bufferSize);
+
+	mBufferCount += bufferSize;
+}
+
+void* EventBuffer::NextEvent(uint& eventType, size_t& size)
+{
+	static size_t read = 0;
+
+	if (read < mBufferCount)
+	{
+		char* q = mBuffer + read;
+
+		eventType = *(uint*)q;
+		size = *(size_t*)(q + sizeof(uint));
+
+		read += sizeof(uint) + sizeof(size_t) + size;
+
+		return q + sizeof(uint) + sizeof(size_t);
+	}
+
+	read = 0;
+
+	return NULL;
+}
+
+void EventBuffer::Clear()
+{
+	mBufferCount = 0;
+}
+
+void EventBuffer::Flush()
+{
+	mBufferCount = 0;
+}
+
+size_t EventBuffer::GetSize() const
+{
+	return mBufferCount;
+}
+
+char* EventBuffer::GetBuffer()
+{
+	return mBuffer;
+}
+
+} // namespace Crown
+

+ 66 - 0
src/EventBuffer.h

@@ -0,0 +1,66 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+
+#define MAX_EVENT_QUEUE_SIZE 64 * 1024
+
+namespace Crown
+{
+
+/**
+	Buffer of variable-lenght events.
+
+	[type1][size1][struct1][type2][size2][struct2]...
+*/
+class EventBuffer
+{
+
+public:
+
+				EventBuffer();
+				~EventBuffer();
+
+	void		PushEvent(uint eventType, void* eventData, size_t eventSize);
+	void		PushEventBuffer(char* eventBuffer, size_t bufferSize);
+
+	void*		NextEvent(uint& eventType, size_t& size);
+
+	void		Clear();
+	void		Flush();
+
+	size_t		GetSize() const;
+	char*		GetBuffer();
+
+public:
+
+	size_t		mBufferCount;					// Number of bytes in the buffer
+	char		mBuffer[MAX_EVENT_QUEUE_SIZE];
+};
+
+} // namespace Crown
+

+ 638 - 0
src/Filesystem.cpp

@@ -0,0 +1,638 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Filesystem.h"
+#include "Log.h"
+#include "OS.h"
+#include "FileStream.h"
+
+#include "Config.h"
+#ifdef WINDOWS
+#undef DeleteFile
+#undef CreateDirectory
+#endif
+
+namespace Crown
+{
+
+//-----------------------------------------------------------------------------
+Filesystem::Filesystem() :
+	mIsInit(false),
+	mRootPath(Str::EMPTY),
+	mUserPath(Str::EMPTY)
+{
+}
+
+//-----------------------------------------------------------------------------
+Filesystem::~Filesystem()
+{
+}
+
+//-----------------------------------------------------------------------------
+void Filesystem::Init(const char* rootPath, const char* userPath)
+{
+	assert(!mIsInit);
+
+	if (rootPath == Str::EMPTY)
+	{
+		// Set working paths
+		const char* envRootPath = OS::GetEnv("CROWN_ROOT_PATH");
+
+		if (envRootPath == Str::EMPTY)
+		{
+			mRootPath = OS::GetCWD();
+		}
+		else
+		{
+			mRootPath = envRootPath;
+		}
+	}
+	else
+	{
+		mRootPath = rootPath;
+	}
+
+	if (userPath == Str::EMPTY)
+	{
+		mUserPath = OS::GetHome();
+	}
+	else
+	{
+		mUserPath = userPath;
+	}
+
+	Log::D("Filesystem::Init()");
+	Log::D("Filesystem: Root path: %s", mRootPath.c_str());
+	Log::D("Filesystem: User path: %s", mUserPath.c_str());
+
+	mIsInit = true;
+}
+
+//-----------------------------------------------------------------------------
+const char* Filesystem::GetRootPath() const
+{
+	return mRootPath.c_str();
+}
+
+//-----------------------------------------------------------------------------
+const char* Filesystem::GetUserPath() const
+{
+	return mUserPath.c_str();
+}
+
+//-----------------------------------------------------------------------------
+void Filesystem::SetUserPath(const char* relativePath)
+{
+	mUserPath = relativePath;
+}
+
+//-----------------------------------------------------------------------------
+const char* Filesystem::BuildOSPath(const char* basePath, const char* relativePath)
+{
+	static char osPath[1024];
+
+	size_t i = 0;
+
+	while (*basePath != '\0')
+	{
+		osPath[i++] = *basePath;
+		basePath++;
+	}
+
+	osPath[i++] = '/';
+
+	while (*relativePath != '\0')
+	{
+		osPath[i++] = *relativePath;
+		relativePath++;
+	}
+
+	osPath[i] = '\0';
+
+	// Replace Crown-specific path separator with OS-speficic one
+	for (size_t j = 0; j < i; j++)
+	{
+		if (osPath[j] == '/')
+		{
+			osPath[j] = OS::PATH_SEPARATOR;
+		}
+	}
+
+	return osPath;
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::GetInfo(const char* basePath, const char* relativePath, FilesystemEntry& info)
+{
+	// Entering OS-DEPENDENT-PATH-MODE
+	// (i.e. osPath is of the form: C:\babbeo\relativePath or /babbeo/relativePath)
+
+	const char* osPath = BuildOSPath(basePath, relativePath);
+
+	if (OS::IsReg(osPath))
+	{
+		info.type			= FET_FILE;
+		info.osPath			= osPath;
+		info.relativePath	= relativePath;
+		return true;
+	}
+
+	if (OS::IsDir(osPath))
+	{
+		info.type			= FET_DIR;
+		info.osPath			= osPath;
+		info.relativePath	= relativePath;
+		return true;
+	}
+
+	return false;
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::Exists(const char* relativePath)
+{
+	FilesystemEntry dummy;
+
+	return GetInfo(mRootPath.c_str(), relativePath, dummy);
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::IsFile(const char* relativePath)
+{
+	FilesystemEntry info;
+
+	if (GetInfo(mRootPath.c_str(), relativePath, info))
+	{
+		return info.type == FET_FILE;
+	}
+
+	return false;
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::IsDir(const char* relativePath)
+{
+	FilesystemEntry info;
+
+	if (GetInfo(mRootPath.c_str(), relativePath, info))
+	{
+		return info.type == FET_DIR;
+	}
+
+	return false;
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::CreateFile(const char* relativePath)
+{
+	const char* osPath = BuildOSPath(mRootPath.c_str(), relativePath);
+
+	return OS::Mknod(osPath);
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::CreateDir(const char* relativePath)
+{
+	const char* osPath = BuildOSPath(mRootPath.c_str(), relativePath);
+
+	return OS::Mkdir(osPath);
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::DeleteFile(const char* relativePath)
+{
+	const char* osPath = BuildOSPath(mRootPath.c_str(), relativePath);
+
+	return OS::Unlink(osPath);
+}
+
+//-----------------------------------------------------------------------------
+bool Filesystem::DeleteDir(const char* relativePath)
+{
+	const char* osPath = BuildOSPath(mRootPath.c_str(), relativePath);
+
+	return OS::Rmdir(osPath);
+}
+
+//-----------------------------------------------------------------------------
+Stream* Filesystem::OpenStream(const char* relativePath, StreamOpenMode openMode)
+{
+	FilesystemEntry info;
+	Stream* stream;
+
+	bool exists = GetInfo(mRootPath.c_str(), relativePath, info);
+
+	assert(exists == true && "Filesystem::OpenStream: File does not exist");
+	assert(info.type != FET_DIR && "Filesystem::OpenStream: Trying to open directory...");
+
+	if (info.type == FET_FILE)
+	{
+		Log::D("Filesystem::OpenStream: Found %s", info.osPath.c_str());
+
+		stream = new FileStream(openMode, info.osPath);
+
+		return stream;
+	}
+
+	return NULL;
+}
+
+/**
+	file must exists.
+*/
+Stream* Filesystem::OpenRead(const char* relativePath)
+{
+	(void)relativePath;
+	return NULL;
+}
+
+Stream* Filesystem::OperWrite(const char* relativePath)
+{
+	(void)relativePath;
+	return NULL;
+}
+
+Stream* Filesystem::OpenAppend(const char* relativePath)
+{
+	(void)relativePath;
+	return NULL;
+}
+
+//-----------------------------------------------------------------------------
+void Filesystem::Close(Stream* stream)
+{
+	delete stream;
+}
+
+//-----------------------------------------------------------------------------
+void Filesystem::PrintReport()
+{
+	Log::I("--- Filesystem report ---");
+	Log::I("Path separator\t: '/'");
+	Log::I("Root\t\t\t: %s", mRootPath.c_str());
+	Log::I("User\t\t\t: %s", mUserPath.c_str());
+}
+
+///**
+//	Returns whether the segment is valid.
+//@note
+//	The rules for valid segments are as follows:
+//	a) The empty string is not valid.
+//	b) Any string containing the slash character ('/') is not valid.
+//	c) Common notations for current ('.') and parent ('..') directory are forbidden.
+//	d) Any string containing segment or device separator characters on the local file system,
+//	such as the backslash ('\') and colon (':') on some file systems.
+//	(Thanks org.eclipse.core.runtime for the documentation ;D).
+//@param segment
+//	The segment to be checked
+//@return
+//	True if the segment is valid, false otherwise
+//*/
+//bool Filesystem::IsValidSegment(const char* segment)
+//{
+//	size_t segmentLen = Str::StrLen(segment);
+
+//	if (segmentLen == 0)
+//	{
+//		return false;
+//	}
+
+//	if (segmentLen == 1 && segment[0] == '.')
+//	{
+//		return false;
+//	}
+
+//	if (segmentLen == 2 && segment[0] == '.' && segment[1] == '.')
+//	{
+//		return false;
+//	}
+
+//	for (size_t i = 0; i < segmentLen; i++)
+//	{
+//		if (segment[i] == '/' ||
+//			segment[i] == '\\' ||
+//			segment[i] == ':'
+//		{
+//			return false;
+//		}
+//	}
+
+//	return true;
+//}
+
+///**
+//	Returns whether the path is valid.
+//@note
+//	The rules for valid paths are as follows:
+//	a) The empty string is not valid.
+//	b) If the path is absolute, it mustn't contain any leading character.
+//@param path
+//	The path to be checked
+//@return
+//	True if the path is valid, false otherwise
+//*/
+//bool Filesystem::IsValidPath(const char* path)
+//{
+//	size_t pathLen = Str::StrLen(path);
+
+//	if (pathLen == 0)
+//	{
+//		return false;
+//	}
+
+//	if (IsRootPath(path))
+//	{
+//		return true;
+//	}
+
+//	List<Str> segmentList;
+//	if (!GetSegments(Str(path), segmentList))
+//	{
+//		return false;
+//	}
+
+//	size_t i = 0;
+//	if (IsAbsolutePath(path) && path[0] != '/')
+//	{
+//		i = 1;
+//	}
+
+//	for (; i < segmentList.GetSize(); i++)
+//	{
+//		if (!IsValidSegment(segmentList[i].c_str()))
+//		{
+//			return false;
+//		}
+//	}
+
+//	return true;
+//}
+
+///**
+//	Returns whether the path is absolute.
+//@note
+//	(i.e. starts with Path::SEPARATOR or <a-Z><Path::DEVICE_SEPARATOR><Path::SEPARATOR>).
+//@param path
+//	The path to be checked
+//@return
+//	True if absolute, false otherwise
+//*/
+//bool Filesystem::IsAbsolutePath(const char* path)
+//{
+//	size_t pathLen;
+
+//	pathLen = Str::StrLen(path);
+
+//	if (pathLen == 0)
+//	{
+//		return false;
+//	}
+
+//	if (path[0] == '/')
+//	{
+//		return true;
+//	}
+
+//	if (pathLen < 3)
+//	{
+//		return false;
+//	}
+
+//	if (Str::IsAlpha(path[0]) && path[1] == ':' && path[2] == OS::PATH_SEPARATOR)
+//	{
+//		return true;
+//	}
+
+//	return false;
+//}
+
+///**
+//	Returns whether the path is the root path.
+//@note
+//	(i.e. starts and ends with Path::SEPARATOR or <a-Z><Path::DEVICE_SEPARATOR><Path::SEPARATOR>).
+//@param path
+//	The path to be checked
+//@return
+//	True if root, false otherwise
+//*/
+//bool Filesystem::IsRootPath(const char* path)
+//{
+//	size_t pathLen;
+
+//	pathLen = Str::StrLen(path);
+
+//	if (pathLen == 0)
+//	{
+//		return false;
+//	}
+
+//	if (pathLen == 1 && path[0] == PATH_SEPARATOR)
+//	{
+//		return true;
+//	}
+
+//	if (pathLen == 3 && Str::IsAlpha(path[0]) && path[1] == DEVICE_SEPARATOR && path[2] == PATH_SEPARATOR)
+//	{
+//		return true;
+//	}
+
+//	return false;
+//}
+
+///**
+//	Returns the pathname of the path.
+//@note
+//	(e.g. /home/babbeo/texture.tga -> /home/babbeo).
+//@param path
+//	The input path
+//@param ret
+//	The output pathname
+//@return
+//	True if success, false otherwise
+//*/
+//const char* Filesystem::GetPathname(const char* path)
+//{
+//	size_t pathLen;
+
+//	pathLen = Str::StrLen(path);
+
+//	const char* c = path + pathLen - 1;
+
+//	// Ignore any trailing separators
+//	while (c > path && *c == PATH_SEPARATOR)
+//	{
+//		c--;
+//	}
+
+//	// Iterate backwards until first separator
+//	while (c > path && *c != PATH_SEPARATOR)
+//	{
+//		c--;
+//	}
+
+//	//return (c == path) ? c : c - 1;
+//	return (c == path) ? c + 2 : c;
+//}
+
+///**
+//	Returns the filename of the path.
+//@note
+//	(e.g. /home/babbeo/texture.tga -> texture.tga).
+//@param path
+//	The input path
+//@param ret
+//	The output filename
+//@return
+//	True if success, false otherwise
+//*/
+//bool Filesystem::GetFilename(const char* path, char* ret)
+//{
+//	if (IsRootPath(path.c_str()))
+//	{
+//		ret = Str("");
+//		return true;
+//	}
+
+//	RemoveTrailingSeparator(path, ret);
+
+//	if (ret.FindLast(PATH_SEPARATOR) != -1)
+//	{
+//		ret = path.GetSubstring(path.FindLast(PATH_SEPARATOR) + 1, path.GetLength());
+//	}
+
+//	return true;
+//}
+
+///**
+//	Returns the basename of the path.
+//@note
+//	(e.g. /home/babbeo/texture.tga -> texture).
+//@param path
+//	The input path
+//@param ret
+//	The output basename
+//@return
+//	True if success, false otherwise
+//*/
+//bool Filesystem::GetBasename(const char* path, char* ret)
+//{
+//	if (!GetFilename(path, ret))
+//	{
+//		return false;
+//	}
+
+//	if (ret.FindLast('.') != -1)
+//	{
+//		ret = ret.GetSubstring(0, ret.FindLast('.'));
+//	}
+
+//	return true;
+//}
+
+/**
+	Returns the extension of the path.
+@note
+	(e.g. /home/babbeo/texture.tga -> .tga).
+@param path
+	The input path
+@return
+	The extension.
+*/
+const char* Filesystem::GetExtension(const char* relativePath)
+{
+	assert(relativePath != NULL);
+
+	static char extension[32];
+
+	int i = Str::FindLast(relativePath, '.');
+
+	if (i == -1)
+	{
+		return Str::EMPTY;
+	}
+
+	Str::StrCpy(extension, &relativePath[i]);
+
+	return extension;
+}
+
+///**
+//	Returns the segments contained in path.
+//@param path
+//	The input path
+//@param ret
+//	The output list containing path's segments
+//@return
+//	True if success, false otherwise
+//*/
+//bool Filesystem::GetSegments(const char* path, List<Str>& ret)
+//{
+//	path.Split(PATH_SEPARATOR, ret);
+
+//	if (ret.GetSize() > 0)
+//	{
+//		return true;
+//	}
+
+//	return false;
+//}
+
+///**
+//	Fills 'ret' with the same path but without the trailing directory separator.
+//@note
+//	(e.g. /home/babbeo/texture.tga/ -> /home/babbeo/texture.tga).
+//@param path
+//	The input path
+//@param ret
+//	The ouput path
+//@return
+//	True if success, false otherwise
+//*/
+//bool Filesystem::RemoveTrailingSeparator(const char* path, char* ret)
+//{
+//	if (path.GetLength() == 0 || IsRootPath(path.c_str()))
+//	{
+//		ret = path;
+//		return true;
+//	}
+
+//	if (path[path.GetLength() - 1] == PATH_SEPARATOR)
+//	{
+//		ret = path.GetSubstring(0, path.GetLength() - 1);
+//		return true;
+//	}
+
+//	ret = path;
+//	return true;
+//}
+
+Filesystem filesystem;
+Filesystem* GetFilesystem()
+{
+	return &filesystem;
+}
+
+} // namespace Crown
+

+ 172 - 0
src/Filesystem.h

@@ -0,0 +1,172 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Str.h"
+#include "List.h"
+#include "Stream.h"
+#include "Log.h"
+
+namespace Crown
+{
+
+/**
+	Enumerates the filesystem's entry types
+*/
+enum FilesystemEntryType
+{
+	FET_DIR = 0,		//!< The entry is a directory
+	FET_FILE,			//!< The entry is a file
+	FET_MEM,			//!< The entry is a memory file (i.e. does not exist on the disk)
+	FET_UNKNOWN			//!< The entry type is unknown
+};
+
+struct FilesystemEntry
+{
+	FilesystemEntry() : type(FET_UNKNOWN)
+	{
+	}
+
+	void PrintReport()
+	{
+		Log::I("OSPath\t\t: %s", osPath.c_str());
+		Log::I("RelPath\t\t: %s", relativePath.c_str());
+		Log::I("Type:\t\t: %s", ((type == FET_FILE) ? "file" : (type == FET_DIR) ? "dir" : "unknown"));
+	}
+
+	FilesystemEntryType	type;			//!< Type of the entry
+	Str					osPath;			//!< OS-specific path (use only for debug)
+	Str					relativePath;	//!< Relative path of the entry
+};
+
+class Stream;
+
+/**
+	Virtual filesystem.
+
+	Provides a platform-independent way to access files and directories
+	on the host filesystem.
+
+	Accessing files:
+	Every file and every directory is accessed through the filesystem.
+	Not a single C/C++ std file io call should be used in any other part
+	of the engine in order to maintain platform independence.
+
+	Pathnames:
+	Only unix-like pathnames (i.e. case sensitive and using '/' as separator)
+	are allowed.
+	Only relative paths are allowed: the filesystem is responsible for
+	the creation of its absolute platform-specific counterpart.
+
+	Filesystem forbids pathnames containing '.' and '..' to prevent access
+	to files outside the predefined directories.
+	Platform specific characters like '/', '\\' and ':' are forbidden as well.
+
+	Although mixed-case pathnames are allowed, it is generally safer to use
+	only lower-case ones for maximum compatibility.
+
+	Filesystem provides access to two main directories:
+		1) Root directory
+			it is the directory where all of the data came from.
+			Defaults to the directory where the executable is in
+			but can be overridden by the CROWN_ROOT_PATH environment
+			variable. The root directory is set only once at the
+			engine start and cannot be changed anymore.
+		2) User directory
+			defaults to the user home directory. Used to store user-specific
+			stuffs such as config files, screenshots, savegames ecc.
+*/
+class Filesystem
+{
+
+public:
+
+						Filesystem();
+						~Filesystem();
+
+	void				Init(const char* rootPath, const char* userPath);
+
+	const char*			GetRootPath() const;
+	const char*			GetUserPath() const;
+
+	void				SetUserPath(const char* relativePath);
+
+	const char*			BuildOSPath(const char* basePath, const char* relativePath);
+
+	bool				GetInfo(const char* basePath, const char* relativePath, FilesystemEntry& info);
+	bool				Exists(const char* relativePath);
+
+	bool				IsFile(const char* relativePath);
+	bool				IsDir(const char* relativePath);
+
+	bool				CreateFile(const char* relativePath);
+	bool				CreateDir(const char* relativePath);
+
+	bool				DeleteFile(const char* relativePath);
+	bool				DeleteDir(const char* relativePath);
+
+	Stream*				OpenStream(const char* relativePath, StreamOpenMode openMode);
+	Stream*				OpenRead(const char* relativePath);
+	Stream*				OperWrite(const char* relativePath);
+	Stream*				OpenAppend(const char* relativePath);
+
+	void				Close(Stream* stream);
+
+	void				PrintReport();
+
+	static bool			IsValidSegment(const char* segment);
+	static bool			IsValidPath(const char* path);
+	static bool			IsAbsolutePath(const char* path);
+	static bool			IsRootPath(const char* path);
+
+//	static const char*	GetPathname(const char* path);
+//	static bool			GetFilename(const char* path, char* ret);
+//	static bool			GetBasename(const char* path, char* ret);
+	static const char*	GetExtension(const char* relativePath);
+//	static bool			GetSegments(const char* path, List<Str>& ret);
+
+//	static bool			RemoveTrailingSeparator(const char* path, char* ret);
+
+private:
+
+	void				_SetRootPath(const char* relativePath) { mRootPath = relativePath; }
+
+	bool				mIsInit;
+
+	Str					mRootPath;			//!< The root path.
+	Str					mUserPath;			//!< Where user settings/saves/ecc. live in
+
+	// Disable copying
+	Filesystem(const Filesystem&);
+	Filesystem& operator=(const Filesystem&);
+
+	friend class		Device;
+};
+
+Filesystem* GetFilesystem();
+
+} // namespace Crown
+

+ 113 - 0
src/Font.cpp

@@ -0,0 +1,113 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Font.h"
+#include "MathUtils.h"
+#include "Types.h"
+#include "Image.h"
+#include "Log.h"
+#include "Filesystem.h"
+#include "TextureManager.h"
+
+namespace Crown
+{
+
+Font::Font() :
+	mMaxTextHeight(0),
+	mMaxCharacterHeight(0),
+	mMaxCharacterWidth(0)
+{
+}
+
+Font::~Font()
+{
+}
+
+void Font::LoadFromFile(const Str& filename)
+{
+	mTexture = GetTextureManager()->Load(filename.c_str(), false);
+
+	if (mTexture)
+	{
+		mTexture->SetFilter(TF_NEAREST);
+	}
+
+	Filesystem* filesystem = GetFilesystem();
+
+	Stream* fontDef = filesystem->OpenStream((filename + Str(".txt")).c_str(), SOM_READ);
+
+	if (fontDef)
+	{
+		TextReader textReader(fontDef);
+		char buf[1024];
+
+		while (textReader.ReadString(buf, 1024) != NULL)
+		{
+			int ch;
+			float a, b, c, d, e, f, g, h;
+
+			sscanf(buf, "%d %f %f %f %f %f %f %f %f\n", &ch, &a, &b, &c, &d, &e, &f, &g, &h);
+
+			SetCodeGlyphMetrics(ch, a, b, c, d, e, f, g, h);
+		}
+
+		filesystem->Close(fontDef);
+	}
+}
+
+void Font::Load(const char* name)
+{
+	LoadFromFile(name);
+}
+
+void Font::Unload(const char* name, bool reload)
+{
+}
+
+Glyph& Font::GetGlyph(uint code)
+{
+	if (mCodeGlyphDict.Contains(code))
+	{
+		return mCodeGlyphDict[code];
+	}
+
+	static Glyph nullGlyph;
+	return nullGlyph;
+}
+
+void Font::SetCodeGlyphMetrics(uint code, float left, float right, float bottom, float top, float width, float height, float advance, float baseline)
+{
+	if (mCodeGlyphDict.Contains(code))
+	{
+		mCodeGlyphDict[code].SetMetrics(left, right, bottom, top, width, height, advance, baseline);
+	}
+	else
+	{
+		mCodeGlyphDict[code] = Glyph(code, left, right, bottom, top, width, height, advance, baseline);
+	}
+}
+
+} // namespace Crown
+

+ 80 - 0
src/Font.h

@@ -0,0 +1,80 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "List.h"
+#include "Dictionary.h"
+#include "Glyph.h"
+#include "Resource.h"
+#include "Image.h"
+
+namespace Crown
+{
+
+class Image;
+class Texture;
+
+/**
+	Font resource for using in text rendering.
+*/
+class Font : public Resource
+{
+
+	typedef Dictionary<uint, Glyph> CodeGlyphDict;
+
+public:
+
+							Font();	//! Constructor
+							~Font();	//! Destructor
+
+	virtual void			Load(const char* name);
+	virtual void			Unload(const char* name, bool reload);
+
+	void					LoadFromFile(const Str& filename);
+
+	Glyph&					GetGlyph(uint code);	//! Returns the glyph for the desired point code
+	void					SetCodeGlyphMetrics(uint code, float left, float right, float bottom, float top, float width, float height, float advance, float baseline);
+
+	inline uint				_GetMaxTextHeight() { return mMaxTextHeight; }
+	inline uint				_GetMaxCharacterHeight() { return mMaxCharacterHeight; }
+	inline uint				_GetMaxCharacterWidth() { return mMaxCharacterWidth; }
+
+	Texture*				GetTexture() { return mTexture; }
+
+private:
+
+	CodeGlyphDict			mCodeGlyphDict;
+
+	uint					mMaxTextHeight;
+	uint					mMaxCharacterHeight;
+	uint					mMaxCharacterWidth;
+
+	Texture*				mTexture;
+};
+
+} // namespace Crown
+

+ 69 - 0
src/FontManager.cpp

@@ -0,0 +1,69 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "FontManager.h"
+#include "Log.h"
+
+namespace Crown
+{
+
+FontManager::FontManager()
+{
+
+}
+
+Font* FontManager::Create(const char* name, bool& created)
+{
+	Font* font = static_cast<Font*>(ResourceManager::Create(name, created));
+
+	return font;
+}
+
+Font* FontManager::Load(const char* name)
+{
+	bool created;
+	Font* font = Create(name, created);
+
+	if (font != NULL && created)
+	{
+		font->Load(name);
+	}
+
+	return font;
+}
+
+Font* FontManager::CreateSpecific(const char* name)
+{
+	return new Font();
+}
+
+FontManager fontMgr;
+FontManager* GetFontManager()
+{
+	return &fontMgr;
+}
+
+} // namespace Crown
+

+ 79 - 0
src/FontManager.h

@@ -0,0 +1,79 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "ResourceManager.h"
+#include "Font.h"
+
+namespace Crown
+{
+
+/**
+ * Manages font loading.
+ */
+class FontManager : public ResourceManager
+{
+
+public:
+
+	FontManager();
+
+	/** 
+	 * Creates a font resource with the given name.
+	 * If a resource with the same name already exists, the
+	 * already existent resource will be returned.
+	 * @param name The name of the resource
+	 * @return A pointer to the created resource
+	 */
+	Font* Create(const char* name, bool& created);
+
+	/**
+	 * Loads a font resource from file.
+	 * @note Generally, the name of the file determines the name of the resource and vice-versa.
+	 * Here is not the case, since from a single TrueType file, multiple fonts
+	 * can be generated (e.g. You may want to generate various character
+	 * sizes from a single .ttf).
+	 * @param name Tha name of the resource
+	 * @param filename The name of the file containing the resource
+	 * @param ttSize The size of characters in pixels
+	 * @param ttResolution The resolution of characters in DPI (Dots Per Inch)
+	 * @return A pointer to the loaded resource
+	 */
+	Font* Load(const char* name);
+
+	virtual Font* CreateSpecific(const char* name);
+
+private:
+
+	// Disable copying
+	FontManager(const FontManager&);
+	FontManager& operator=(const FontManager&);
+};
+
+FontManager* GetFontManager();
+
+} // namespace Crown
+

+ 84 - 0
src/Frame.cpp

@@ -0,0 +1,84 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Frame.h"
+#include "Types.h"
+#include "Sprite.h"
+
+namespace Crown
+{
+
+Frame::Frame():
+	mTexture(NULL), mOffset(0, 0)
+{
+}
+
+Frame::Frame(Texture* tex, uint tx1, uint ty1, uint tx2, uint ty2):
+	mOffset(0, 0)
+{
+	Set(tex, tx1, ty1, tx2, ty2);
+}
+
+Frame::~Frame()
+{
+}
+
+void Frame::Set(Texture* tex, uint tx1, uint ty1, uint tx2, uint ty2)
+{
+	mTexture = tex;
+	//Verify that the coordinates lie inside the texture
+	uint maxW = mTexture->GetWidth();
+	uint maxH = mTexture->GetHeight();
+
+	if (tx1 > maxW)
+	{
+		tx1 = maxW;
+	}
+
+	if (tx2 > maxW)
+	{
+		tx2 = maxW;
+	}
+
+	if (ty1 > maxH)
+	{
+		ty1 = maxH;
+	}
+
+	if (ty2 > maxH)
+	{
+		ty2 = maxH;
+	}
+
+	//And scale them into the [0,1] space.
+	mTextureRect.min.x = tx1 / (float)mTexture->GetWidth();
+	mTextureRect.min.y = ty1 / (float)mTexture->GetHeight();
+	mTextureRect.max.x = tx2 / (float)mTexture->GetWidth();
+	mTextureRect.max.y = ty2 / (float)mTexture->GetHeight();
+	mSize.x = (float)(tx2 - tx1);
+	mSize.y = (float)(ty2 - ty1);
+}
+
+} //namespace Crown

+ 71 - 0
src/Frame.h

@@ -0,0 +1,71 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Texture.h"
+#include "Rect.h"
+
+namespace Crown
+{
+
+//! A frame of a Sprite, that binds to a rectangle in a texture, with a certain offset
+class Frame
+{
+public:
+	Frame();
+	Frame(Texture* tex, uint tx1, uint ty1, uint tx2, uint ty2);
+	~Frame();
+
+	inline void Set(Texture* tex)
+	{
+		Set(tex, 0, 0, tex->GetWidth(), tex->GetHeight());
+	}
+
+	void Set(Texture* tex, uint tx1, uint ty1, uint tx2, uint ty2);
+
+	inline void SetOffset(float x, float y)
+	{
+		mOffset.x = x;
+		mOffset.y = y;
+	}
+
+	inline const Vec2& GetSize() const
+	{
+		return mSize;
+	}
+
+private:
+	Texture* mTexture;
+	Rect mTextureRect;
+	Vec2 mOffset;
+	Vec2 mSize;
+
+	friend class Sprite;
+};
+
+} //namespace Crown
+

+ 117 - 0
src/Glyph.h

@@ -0,0 +1,117 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+
+namespace Crown
+{
+
+class Glyph
+{
+
+public:
+
+	//! Constructor
+	Glyph() :
+		mCodePoint(0),
+		mLeft(0),
+		mRight(0),
+		mBottom(0),
+		mTop(0),
+		mWidth(0),
+		mHeight(0),
+		mAdvance(0),
+		mBaseline(0)
+	{
+	}
+
+	//! Constructor
+	Glyph(wchar_t code, float left, float right, float bottom, float top, float width, float height, float advance, float baseline) :
+		mCodePoint(code),
+		mLeft(left),
+		mRight(right),
+		mBottom(bottom),
+		mTop(top),
+		mWidth(width),
+		mHeight(height),
+		mAdvance(advance),
+		mBaseline(baseline)
+	{
+	}
+
+	//! Destructor
+	~Glyph()
+	{
+	}
+
+	//! Returns the glyph's metrics
+	void GetMetrics(float& left, float& right, float& bottom, float& top, float& width, float& height, float& advance, float& baseline) const
+	{
+		left = mLeft;
+		right = mRight;
+		bottom = mBottom;
+		top = mTop;
+		width = mWidth;
+		height = mHeight;
+		advance = mAdvance;
+		baseline = mBaseline;
+	}
+
+	//! Sets the glyph's metrics
+	void SetMetrics(float left, float right, float bottom, float top, float width, float height, float advance, float baseline)
+	{
+		mLeft = left;
+		mRight = right;
+		mBottom = bottom;
+		mTop = top;
+		mWidth = width;
+		mHeight = height;
+		mAdvance = advance;
+		mBaseline = baseline;
+	}
+
+	//! Returns the glyph's code point
+	wchar_t GetCodePoint() const
+	{
+		return mCodePoint;
+	}
+
+private:
+
+	wchar_t mCodePoint;
+	float mLeft;
+	float mRight;
+	float mBottom;
+	float mTop;
+	float mWidth;
+	float mHeight;
+	float mAdvance;
+	float mBaseline;
+};
+
+} // namespace Crown
+

+ 268 - 0
src/Image.cpp

@@ -0,0 +1,268 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Image.h"
+#include "Log.h"
+#include "Types.h"
+#include "Stream.h"
+
+namespace Crown
+{
+
+Image::Image() :
+	mPixelFormat(PF_UNKNOWN),
+	mWidth(0),
+	mHeight(0),
+	mBuffer(NULL)
+{
+}
+
+Image::Image(PixelFormat pixelFormat, uint width, uint height, uchar* data) :
+	mPixelFormat(pixelFormat),
+	mWidth(width),
+	mHeight(height),
+	mBuffer(data)
+{
+	if (data == NULL)
+	{
+		CreateBuffer();
+		SetUniformColorImage(Color4::WHITE);
+	}
+}
+
+Image::~Image()
+{
+	DestroyImage();
+}
+
+void Image::CreateImage(PixelFormat pixelFormat, uint width, uint height, uchar* data)
+{
+	mPixelFormat = pixelFormat;
+	mWidth = width;
+	mHeight = height;
+	mBuffer = data;
+}
+
+void Image::DestroyImage()
+{
+	if (mBuffer)
+	{
+		delete[] mBuffer;
+	}
+
+	mPixelFormat = PF_UNKNOWN;
+	mWidth = 0;
+	mHeight = 0;
+	mBuffer = NULL;
+}
+
+void Image::SetUniformColorImage(Color4 color)
+{
+	AssertRGB8();
+	int bpp = GetBytesPerPixel();
+
+	uchar red   = (uchar)(color.r * 255.0f);
+	uchar green = (uchar)(color.g * 255.0f);
+	uchar blue  = (uchar)(color.b * 255.0f);
+
+	for(uint i = 0; i < mHeight; i++)
+	{
+		int rowOffset = i * mWidth * bpp;
+		for(uint j = 0; j < mWidth; j++)
+		{
+			int offset = rowOffset + bpp * j;
+			mBuffer[offset    ] = red;
+			mBuffer[offset + 1] = green;
+			mBuffer[offset + 2] = blue;
+		}
+	}
+}
+
+uint Image::GetWidth() const
+{
+	return mWidth;
+}
+
+uint Image::GetHeight() const
+{
+	return mHeight;
+}
+
+PixelFormat Image::GetFormat() const
+{
+	return mPixelFormat;
+}
+
+uint Image::GetBitsPerPixel() const
+{
+	return Pixel::GetBitsPerPixel(mPixelFormat);
+}
+
+uint Image::GetBytesPerPixel() const
+{
+	return Pixel::GetBytesPerPixel(mPixelFormat);
+}
+
+uchar* Image::GetBuffer()
+{
+	return mBuffer;
+}
+
+const uchar* Image::GetBuffer() const
+{
+	return mBuffer;
+}
+
+void Image::ApplyColorKeying(const Color4& color)
+{
+	if (mPixelFormat != PF_RGBA_8)
+	{
+		Log::E("Image::ApplyColorKeying: Can apply color-keying only on RGBA8 pixel formats.");
+		return;
+	}
+
+	for (ulong i = 0; i < mWidth * mHeight * 4; i += 4)
+	{
+		if (Color4(mBuffer[i], mBuffer[i+1], mBuffer[i+2]) == color)
+		{
+			mBuffer[i] = 0;
+			mBuffer[i+1] = 0;
+			mBuffer[i+2] = 0;
+			mBuffer[i+3] = 0;
+		}
+	}
+}
+
+void Image::ApplyGreyscaleToAlpha(Image* greyscaleImage)
+{
+	if (mPixelFormat != PF_RGBA_8)
+	{
+		Log::E("Image::ApplyGreyscaleToAlpha: Can apply alpha only on RGBA8 pixel formats.");
+		return;
+	}
+
+	if (greyscaleImage == NULL)
+	{
+		Log::E("Image::ApplyGreyscaleToAlpha: greyscaleImage is NULL.");
+		return;
+	}
+
+	if (greyscaleImage->mPixelFormat != PF_RGBA_8)
+	{
+		Log::E("Image::ApplyGreyscaleToAlpha: greyscaleImage must have pixel format RGBA8.");
+		return;
+	}
+
+	if (mWidth != greyscaleImage->mWidth || mHeight != greyscaleImage->mHeight)
+	{
+		Log::E("Image::ApplyGreyscaleToAlpha: greyscaleImage must have the same dimensions of the image.");
+		return;
+	}
+
+	for (ulong i = 0; i < mWidth * mHeight * 4; i += 4)
+	{
+		mBuffer[i+3] = greyscaleImage->mBuffer[i];
+	}
+}
+
+void Image::AlphaToGreyscale()
+{
+	for (ulong i = 0; i < mWidth * mHeight * 4; i += 4)
+	{
+		mBuffer[i]   = mBuffer[i+3];
+		mBuffer[i+1] = mBuffer[i+3];
+		mBuffer[i+2] = mBuffer[i+3];
+		mBuffer[i+3] = 255;
+	}
+}
+
+void Image::CreateBuffer()
+{
+	if (mBuffer == NULL)
+	{
+		mBuffer = new uchar[mWidth * mHeight * GetBytesPerPixel()];
+	}
+}
+
+void Image::AssertRGB8()
+{
+	if (mPixelFormat != PF_RGB_8)
+	{
+		throw InvalidOperationException("Operation supported only on RGB8 Images");
+	}
+}
+
+void Image::SetPixel(uint x, uint y, Color4 color)
+{
+	/*AssertRGB8();
+	if (x >= mWidth || y >= mHeight)
+	{
+		throw ArgumentException("Coordinates outside the Image");
+	}*/
+
+	int bpp = 3;//GetBytesPerPixel();
+	int offset = (y * mWidth + x) * GetBytesPerPixel();
+	mBuffer[offset    ] = (uchar)(color.r * 255);
+	mBuffer[offset + 1] = (uchar)(color.g * 255);
+	mBuffer[offset + 2] = (uchar)(color.b * 255);
+}
+
+void Image::CopyTo(Image& dest) const
+{
+	dest.mWidth = mWidth;
+	dest.mHeight = mHeight;
+	dest.mPixelFormat = mPixelFormat;
+	dest.CreateBuffer();
+
+	for (ulong i = 0; i < mWidth * mHeight * GetBytesPerPixel(); i++)
+	{
+		dest.mBuffer[i] = mBuffer[i];
+	}
+}
+
+void Image::ConvertToRGBA8()
+{
+	assert(mPixelFormat != PF_UNKNOWN);
+
+	uchar* newBuf = new uchar[mWidth * mHeight * 4];
+
+	uint j = 0;
+	for (uint i = 0; i < mWidth * mHeight * 2; i += 2)
+	{
+		newBuf[j + 0] = mBuffer[i + 0];
+		newBuf[j + 1] = mBuffer[i + 0];
+		newBuf[j + 2] = mBuffer[i + 0];
+		newBuf[j + 3] = mBuffer[i + 1];
+
+		j += 4;
+	}
+
+	delete[] mBuffer;
+	mBuffer = newBuf;
+	mPixelFormat = PF_RGBA_8;
+}
+
+} // namespace Crown
+

+ 118 - 0
src/Image.h

@@ -0,0 +1,118 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Color4.h"
+#include "Pixel.h"
+
+namespace Crown
+{
+
+//! Holds an image
+class Image
+{
+
+public:
+
+	//! Constructor
+	Image();
+
+	//! Constructor
+	Image(PixelFormat pixelFormat, uint width, uint height, uchar* data);
+
+	//! Destructor
+	~Image();
+
+	//! Creates the image
+	void CreateImage(PixelFormat pixelFormat, uint width, uint height, uchar* data);
+
+	//! Destroys the image
+	void DestroyImage();
+
+	//! Returns the image's width in pixels
+	uint GetWidth() const;
+
+	//! Returns the image's height in pixels
+	uint GetHeight() const;
+
+	//! Returns the image's pixel format
+	PixelFormat GetFormat() const;
+
+	//! Returns the image's bits per pixel
+	uint GetBitsPerPixel() const;
+
+	//! Returns the image's bytes per pixel
+	uint GetBytesPerPixel() const;
+
+	//! Returns a pointer to the image data
+	uchar* GetBuffer();
+
+	//! Returns a const pointer to the image data
+	const uchar* GetBuffer() const;
+
+	//! Apply a color-keying
+	void ApplyColorKeying(const Color4& color);
+
+	//! Apply a greyscale image as alpha
+	void ApplyGreyscaleToAlpha(Image* greyscaleImage);
+
+	//! Use the alpha channel to build a greyscale opaque image
+	void AlphaToGreyscale();
+
+	//! Create a colored image of the same size of the current one
+	void SetUniformColorImage(Color4 color);
+
+	//! Set the pixel at location x,y to the specified color
+	void SetPixel(uint x, uint y, Color4 color);
+
+	void ConvertToRGBA8();
+
+	/**
+		Copies the image to dest.
+	@note
+		Destination image must be empty.
+	*/
+	void CopyTo(Image& dest) const;
+
+private:
+
+	PixelFormat	mPixelFormat;
+	uint		mWidth;
+	uint		mHeight;
+
+	uchar*		mBuffer;
+
+	void CreateBuffer();
+	void AssertRGB8();
+
+	// Disable copying
+	Image(const Image&);
+	Image& operator=(const Image&);
+};
+
+} // namespace Crown
+

+ 59 - 0
src/ImageLoader.cpp

@@ -0,0 +1,59 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "ImageLoader.h"
+#include "BMPImageLoader.h"
+#include "TGAImageLoader.h"
+#include "Filesystem.h"
+#include "Log.h"
+#include "Image.h"
+#include "Str.h"
+
+namespace Crown
+{
+
+Image* ImageLoader::Load(const char* relativePath)
+{
+	const char* extension;
+	extension = Filesystem::GetExtension(relativePath);
+
+	if (Str::StrCmp(extension, ".bmp") == 0)
+	{
+		BMPImageLoader loader;
+		return loader.LoadFile(relativePath);
+	}
+	else if (Str::StrCmp(extension, ".tga") == 0)
+	{
+		TGAImageLoader loader;
+		return loader.LoadFile(relativePath);
+	}
+	else
+	{
+		//Log::E("ImageLoader::Load: No loader for '" + extension + "' files.");
+		return NULL;
+	}
+}
+
+}

+ 54 - 0
src/ImageLoader.h

@@ -0,0 +1,54 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Str.h"
+
+namespace Crown
+{
+
+class Image;
+
+class ImageLoader
+{
+
+public:
+
+	//! Constructor
+	ImageLoader() {}
+
+	//! Destructor
+	virtual ~ImageLoader() {}
+
+	//! Loads an image from a file
+	virtual Image* LoadFile(const char* relativePath) = 0;
+
+	static Image* Load(const char* relativePath);
+};
+
+} // namespace Crown
+

+ 57 - 0
src/IndexBuffer.h

@@ -0,0 +1,57 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+
+namespace Crown
+{
+
+/**
+	Represents an index buffer to stream indexes to the GPU.
+*/
+class IndexBuffer
+{
+
+public:
+
+					IndexBuffer() {}
+	virtual			~IndexBuffer() {}
+
+					//! Set the index data
+	virtual void	SetIndexData(const ushort* indexData, uint indexCount) = 0;
+					//! Replaces a subset of the index data
+	virtual void	SetIndexSubData(const ushort* indexData, uint indexOffset, uint indexCount) = 0;
+					//! Selects the index buffer as current index buffer
+
+	virtual uint	GetIndexCount() const = 0;
+
+	virtual void	Bind() const = 0;
+	virtual void	Unbind() const = 0;
+};
+
+}
+

+ 118 - 0
src/Log.cpp

@@ -0,0 +1,118 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Log.h"
+#include "OS.h"
+#include <cstdarg>
+
+namespace Crown
+{
+
+LogLevel Log::mThreshold = LL_DEBUG;
+int Log::mIndentCount = 0;
+
+LogLevel Log::GetThreshold()
+{
+	return mThreshold;
+}
+
+void Log::SetThreshold(LogLevel threshold)
+{
+	mThreshold = threshold;
+}
+
+void Log::LogMessage(LogLevel level, const char* message, va_list arg)
+{
+	if (level > mThreshold)
+	{
+		return;
+	}
+
+	switch (level)
+	{
+		case LL_DEBUG:
+			OS::LogInfo(message, arg);
+			break;
+		case LL_ERROR:
+			OS::LogError(message, arg);
+			break;
+		case LL_WARN:
+			OS::LogWarning(message, arg);
+			break;
+		case LL_INFO:
+			OS::LogInfo(message, arg);
+			break;
+		default:
+			break;
+	}
+}
+
+void Log::D(const char* message, ...)
+{
+	va_list args;
+	va_start (args, message);
+	LogMessage(LL_DEBUG, message, args);
+	va_end (args);
+}
+
+void Log::E(const char* message, ...)
+{
+	va_list args;
+	va_start (args, message);
+	LogMessage(LL_ERROR, message, args);
+	va_end (args);
+}
+
+void Log::W(const char* message, ...)
+{
+	va_list args;
+	va_start (args, message);
+	LogMessage(LL_WARN, message, args);
+	va_end (args);
+}
+
+void Log::I(const char* message, ...)
+{
+	va_list args;
+	va_start (args, message);
+	LogMessage(LL_INFO, message, args);
+	va_end (args);
+}
+
+void Log::IndentIn()
+{
+	mIndentCount += 1;
+}
+
+void Log::IndentOut()
+{
+	if (mIndentCount >= 1)
+	{
+		mIndentCount -= 1;
+	}
+}
+
+} // namespace Crown
+

+ 69 - 0
src/Log.h

@@ -0,0 +1,69 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Str.h"
+
+namespace Crown
+{
+
+/**
+	Enumerates log levels.
+*/
+enum LogLevel
+{
+	LL_INFO		= 0,
+	LL_WARN		= 1,
+	LL_ERROR	= 2,
+	LL_DEBUG	= 3
+};
+
+class Log
+{
+
+public:
+
+	static LogLevel		GetThreshold();
+	static void			SetThreshold(LogLevel threshold);
+
+	static void			LogMessage(LogLevel level, const char* message, va_list arg);
+
+	static void			D(const char* message, ...);
+	static void			E(const char* message, ...);
+	static void			W(const char* message, ...);
+	static void			I(const char* message, ...);
+
+	static void			IndentIn();
+	static void			IndentOut();
+
+private:
+
+	static LogLevel		mThreshold;
+	static int			mIndentCount;
+};
+
+} // namespace Crown
+

+ 480 - 0
src/Material.cpp

@@ -0,0 +1,480 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Material.h"
+#include "Types.h"
+
+namespace Crown
+{
+
+Material::Material() :
+	mAmbient(0.5f, 0.5f, 0.5f, 1.0f),
+	mDiffuse(0.5f, 0.5f, 0.5f, 1.0f),
+	mSpecular(0.5f, 0.5f, 0.5f, 1.0f),
+	mEmission(0.0f, 0.0f, 0.0f, 1.0f),
+	mShininess(0),
+	mLighting(true),
+	mTexturing(false),
+	mBackfaceCulling(true),
+	mSeparateSpecularColor(true),
+	mDepthTest(true),
+	mDepthWrite(true),
+	mRescaleNormals(false),
+	mBlending(false),
+	mColorWrite(true),
+	mFog(false),
+	mAlphaTest(false),
+	mPointSprite(false),
+	mShadingType(ST_SMOOTH),
+	mPolygonMode(PM_FILL),
+	mFrontFace(FF_CCW),
+	mDepthFunc(CF_LEQUAL),
+	mFogMode(FM_LINEAR),
+	mFogDensity(1.0f),
+	mFogStart(0.0f),
+	mFogEnd(1.0f),
+	mFogColor(0.0f, 0.0f, 0.0f, 0.0f),
+	mAlphaFunc(CF_ALWAYS),
+	mAlphaRef(0.0f),
+	mPointSize(1.0f),
+	mPointSizeMin(0.0f),
+	mPointSizeMax(1.0f),
+	mBlendEquation(BE_FUNC_ADD),
+	mBlendSrc(BF_SRC_ALPHA),
+	mBlendDst(BF_ONE_MINUS_SRC_ALPHA),
+	mBlendColor(0.0f, 0.0f, 0.0f, 0.0f)
+{
+	for (uint i = 0; i < MAX_TEXTURE_LAYERS; i++)
+	{
+		mTextureLayer[i] = 0;
+	}
+}
+
+Material::~Material()
+{
+}
+
+const Color4& Material::GetAmbient() const
+{
+	return mAmbient;
+}
+
+void Material::SetAmbient(const Color4& ambient)
+{
+	mAmbient = ambient;
+}
+
+const Color4& Material::GetDiffuse() const
+{
+	return mDiffuse;
+}
+
+void Material::SetDiffuse(const Color4& diffuse)
+{
+	mDiffuse = diffuse;
+}
+
+const Color4& Material::GetSpecular() const
+{
+	return mSpecular;
+}
+
+void Material::SetSpecular(const Color4& specular)
+{
+	mSpecular = specular;
+}
+
+const Color4& Material::GetEmission() const
+{
+	return mEmission;
+}
+
+void Material::SetEmission(const Color4& emission)
+{
+	mEmission = emission;
+}
+
+int Material::GetShininess() const
+{
+	return mShininess;
+}
+
+void Material::SetShininess(int shininess)
+{
+	mShininess = shininess;
+}
+
+bool Material::GetLighting() const
+{
+	return mLighting;
+}
+
+void Material::SetLighting(bool lighting)
+{
+	mLighting = lighting;
+}
+
+bool Material::GetTexturing() const
+{
+	return mTexturing;
+}
+
+void Material::SetTexturing(bool texturing)
+{
+	mTexturing = texturing;
+}
+
+bool Material::GetBackfaceCulling() const
+{
+	return mBackfaceCulling;
+}
+
+void Material::SetBackfaceCulling(bool culling)
+{
+	mBackfaceCulling = culling;
+}
+
+bool Material::GetSeparateSpecularColor() const
+{
+	return mSeparateSpecularColor;
+}
+
+void Material::SetSeparateSpecularColor(bool separate)
+{
+	mSeparateSpecularColor = separate;
+}
+
+bool Material::GetDepthTest() const
+{
+	return mDepthTest;
+}
+
+void Material::SetDepthTest(bool test)
+{
+	mDepthTest = test;
+}
+
+bool Material::GetDepthWrite() const
+{
+	return mDepthWrite;
+}
+
+void Material::SetDepthWrite(bool write)
+{
+	mDepthWrite = write;
+}
+
+bool Material::GetRescaleNormals() const
+{
+	return mRescaleNormals;
+}
+
+void Material::SetRescaleNormals(bool rescale)
+{
+	mRescaleNormals = rescale;
+}
+
+bool Material::GetBlending() const
+{
+	return mBlending;
+}
+
+void Material::SetBlending(bool blending)
+{
+	mBlending = blending;
+}
+
+bool Material::GetColorWrite() const
+{
+	return mColorWrite;
+}
+
+void Material::SetColorWrite(bool write)
+{
+	mColorWrite = write;
+}
+
+bool Material::GetFog() const
+{
+	return mFog;
+}
+
+void Material::SetFog(bool fog)
+{
+	mFog = fog;
+}
+
+bool Material::GetAlphaTest() const
+{
+	return mAlphaTest;
+}
+
+void Material::SetAlphaTest(bool test)
+{
+	mAlphaTest = test;
+}
+
+bool Material::GetPointSprite() const
+{
+	return mPointSprite;
+}
+
+void Material::SetPointSprite(bool sprite)
+{
+	mPointSprite = sprite;
+}
+
+ShadingType Material::GetShadingType() const
+{
+	return mShadingType;
+}
+
+void Material::SetShadingType(ShadingType type)
+{
+	mShadingType = type;
+}
+
+PolygonMode Material::GetPolygonMode() const
+{
+	return mPolygonMode;
+}
+
+void Material::SetPolygonMode(PolygonMode mode)
+{
+	mPolygonMode = mode;
+}
+
+FrontFace Material::GetFrontFace() const
+{
+	return mFrontFace;
+}
+
+void Material::SetFrontFace(FrontFace front)
+{
+	mFrontFace = front;
+}
+
+CompareFunction Material::GetDepthFunc() const
+{
+	return mDepthFunc;
+}
+
+void Material::SetDepthFunc(CompareFunction func)
+{
+	mDepthFunc = func;
+}
+
+FogMode Material::GetFogMode() const
+{
+	return mFogMode;
+}
+
+void Material::SetFogMode(FogMode mode)
+{
+	mFogMode = mode;
+}
+
+float Material::GetFogDensity() const
+{
+	return mFogDensity;
+}
+
+void Material::SetFogDensity(float density)
+{
+	mFogDensity = density;
+}
+
+float Material::GetFogStart() const
+{
+	return mFogStart;
+}
+
+void Material::SetFogStart(float start)
+{
+	mFogStart = start;
+}
+
+float Material::GetFogEnd() const
+{
+	return mFogEnd;
+}
+
+void Material::SetFogEnd(float end)
+{
+	mFogEnd = end;
+}
+
+const Color4& Material::GetFogColor() const
+{
+	return mFogColor;
+}
+
+void Material::SetFogColor(const Color4& color)
+{
+	mFogColor = color;
+}
+
+CompareFunction Material::GetAlphaFunc() const
+{
+	return mAlphaFunc;
+}
+
+void Material::SetAlphaFunction(CompareFunction func)
+{
+	mAlphaFunc = func;
+}
+
+float Material::GetAlphaRef() const
+{
+	return mAlphaRef;
+}
+
+void Material::SetAlphaRef(float ref)
+{
+	mAlphaRef = ref;
+}
+
+float Material::GetPointSize() const
+{
+	return mPointSize;
+}
+
+void Material::SetPointSize(float size)
+{
+	mPointSize = size;
+}
+
+float Material::GetPointSizeMin() const
+{
+	return mPointSizeMin;
+}
+
+void Material::SetPointSizeMin(float min)
+{
+	mPointSizeMin = min;
+}
+
+float Material::GetPointSizeMax() const
+{
+	return mPointSizeMax;
+}
+
+void Material::SetPointSizeMax(float max)
+{
+	mPointSizeMax = max;
+}
+
+BlendFunction Material::GetSrcBlendFunc() const
+{
+	return mBlendSrc;
+}
+
+void Material::SetSrcBlendFunc(BlendFunction src)
+{
+	mBlendSrc = src;
+}
+
+BlendFunction Material::GetDstBlendFunc() const
+{
+	return mBlendDst;
+}
+
+void Material::SetDstBlendFunc(BlendFunction dst)
+{
+	mBlendDst = dst;
+}
+
+void Material::SetBlendFunc(BlendFunction src, BlendFunction dst)
+{
+	mBlendSrc = src;
+	mBlendDst = dst;
+}
+
+Color4& Material::GetBlendColor()
+{
+	return mBlendColor;
+}
+
+void Material::SetBlendColor(const Color4& color)
+{
+	mBlendColor = color;
+}
+
+bool Material::SetTextureLayer(uint layer, Texture* texture)
+{
+	if (layer >= MAX_TEXTURE_LAYERS)
+	{
+		return false;
+	}
+
+	mTextureLayer[layer] = texture;
+	return true;
+}
+
+Texture* Material::GetTextureLayer(uint layer) const
+{
+	if (layer >= MAX_TEXTURE_LAYERS)
+	{
+		return 0;
+	}
+
+	return mTextureLayer[layer];
+}
+
+void Material::SetTextureMode(TextureMode mode)
+{
+	for (uint i = 0; i < MAX_TEXTURE_LAYERS; i++)
+	{
+		if (mTextureLayer[i] == 0)
+			continue;
+
+		mTextureLayer[i]->SetMode(mode);
+	}
+}
+
+void Material::SetTextureFilter(TextureFilter filter)
+{
+	for (uint i = 0; i < MAX_TEXTURE_LAYERS; i++)
+	{
+		if (mTextureLayer[i] == 0)
+			continue;
+
+		mTextureLayer[i]->SetFilter(filter);
+	}
+}
+
+void Material::SetTextureWrap(TextureWrap wrap)
+{
+	for (uint i = 0; i < MAX_TEXTURE_LAYERS; i++)
+	{
+		if (mTextureLayer[i] == 0)
+			continue;
+
+		mTextureLayer[i]->SetWrap(wrap);
+	}
+}
+
+} // namespace Crown
+

+ 407 - 0
src/Material.h

@@ -0,0 +1,407 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Texture.h"
+#include "Vec3.h"
+
+namespace Crown
+{
+
+//! Max texture layers supported by the material.
+//! Note that the maximum number of usable layers
+//! depends on the graphic card.
+const uint MAX_TEXTURE_LAYERS = 8;
+
+enum FogMode
+{
+	FM_LINEAR	= 0,
+	FM_EXP		= 1,
+	FM_EXP2		= 2,
+	FM_COUNT
+};
+
+enum CompareFunction
+{
+	CF_NEVER	= 0,
+	CF_LESS		= 1,
+	CF_EQUAL	= 2,
+	CF_LEQUAL	= 3,
+	CF_GREATER	= 4,
+	CF_NOTEQUAL	= 5,
+	CF_GEQUAL	= 6,
+	CF_ALWAYS	= 7,
+	CF_COUNT
+};
+
+enum ShadingType
+{
+	ST_FLAT		= 0,
+	ST_SMOOTH	= 1,
+	ST_COUNT
+};
+
+enum PolygonMode
+{
+	PM_POINT	= 0,
+	PM_LINE		= 1,
+	PM_FILL		= 2,
+	PM_COUNT
+};
+
+enum FrontFace
+{
+	FF_CW		= 0,
+	FF_CCW		= 1,
+	FF_COUNT
+};
+
+enum BlendEquation
+{
+	BE_FUNC_ADD					= 0,
+	BE_FUNC_SUBTRACT			= 1,
+	BE_FUNC_REVERSE_SUBTRACT	= 2,
+	BE_MIN						= 3,
+	BE_MAX						= 4,
+	BE_COUNT
+};
+
+enum BlendFunction
+{
+	BF_ZERO						= 0,
+	BF_ONE						= 1,
+	BF_SRC_COLOR				= 2,
+	BF_ONE_MINUS_SRC_COLOR		= 3,
+	BF_DST_COLOR				= 4,
+	BF_ONE_MINUS_DST_COLOR		= 5,
+	BF_SRC_ALPHA				= 6,
+	BF_ONE_MINUS_SRC_ALPHA		= 7,
+	BF_DST_ALPHA				= 8,
+	BF_ONE_MINUS_DST_ALPHA		= 9,
+	BF_CONSTANT_COLOR			= 10,
+	BF_ONE_MINUS_CONSTANT_COLOR	= 11,
+	BF_CONSTANT_ALPHA			= 12,
+	BF_ONE_MINUS_CONSTANT_ALPHA	= 13,
+	BF_SRC_ALPHA_SATURATE		= 14,
+	BF_COUNT
+};
+
+class Material : public Resource
+{
+
+public:
+
+	//! Constructor
+	Material();
+
+	//! Destructor
+	~Material();
+
+	//! Returns the ambient reflectance
+	const Color4& GetAmbient() const;
+
+	//! Sets the ambient reflectance
+	void SetAmbient(const Color4& ambient);
+
+	//! Returns the diffuse reflectance
+	const Color4& GetDiffuse() const;
+
+	//! Sets the diffuse reflectance
+	void SetDiffuse(const Color4& diffuse);
+
+	//! Returns the specular reflectance
+	const Color4& GetSpecular() const;
+
+	//! Sets the specular reflectance
+	void SetSpecular(const Color4& specular);
+
+	//! Returns the emitted light intensity
+	const Color4& GetEmission() const;
+
+	//! Sets the emitted light intensity
+	void SetEmission(const Color4& emission);
+
+	//! Returns the shininess
+	int GetShininess() const;
+
+	//! Sets the shininess
+	void SetShininess(int shininess);
+
+	//! Returns whether lighting is enabled
+	bool GetLighting() const;
+
+	//! Sets whether lighting is enabled
+	void SetLighting(bool lighting);
+
+	//! Returns whether texturing is enabled
+	bool GetTexturing() const;
+
+	//! Sets whether texturing is enabled
+	void SetTexturing(bool texturing);
+
+	//! Returns whether backface culling is enabled
+	bool GetBackfaceCulling() const;
+
+	//! Sets whether backface culling is enabled
+	void SetBackfaceCulling(bool culling);
+
+	//! Returns whether separate specular color is enabled
+	bool GetSeparateSpecularColor() const;
+
+	//! Sets whether separate specular color is enabled
+	void SetSeparateSpecularColor(bool separate);
+
+	//! Returns whether depth test is enabled
+	bool GetDepthTest() const;
+
+	//! Sets whether depth test is enabled
+	void SetDepthTest(bool test);
+
+	//! Returns whether depth writing is enabled
+	bool GetDepthWrite() const;
+
+	//! Returns whether depth writing is enabled
+	void SetDepthWrite(bool write);
+
+	//! Returns whether auto normal rescaling is enabled
+	bool GetRescaleNormals() const;
+
+	//! Sets whether auto normal rescaling is enabled
+	void SetRescaleNormals(bool rescale);
+
+	//! Returns whether blending is enabled
+	bool GetBlending() const;
+
+	//! Sets whether blending is enabled
+	void SetBlending(bool blending);
+
+	//! Returns whether writing into the color buffer is enabled
+	bool GetColorWrite() const;
+
+	//! Sets whether writing into the color buffer is enabled
+	void SetColorWrite(bool write);
+
+	//! Returns whether fog is enabled
+	bool GetFog() const;
+
+	//! Sets whether fog is enabled
+	void SetFog(bool fog);
+
+	//! Returns whether alpha test is enabled
+	bool GetAlphaTest() const;
+
+	//! Sets whether alpha test is enabled
+	void SetAlphaTest(bool test);
+
+	//! Returns whether point sprite is enabled
+	bool GetPointSprite() const;
+
+	//! Sets whether point sprite is enabled
+	void SetPointSprite(bool sprite);
+
+	//! Returns the shading type
+	ShadingType GetShadingType() const;
+
+	//! Sets the shading type
+	void SetShadingType(ShadingType type);
+
+	//! Returns the polygon mode
+	PolygonMode GetPolygonMode() const;
+
+	//! Sets the polygon mode
+	void SetPolygonMode(PolygonMode mode);
+
+	//! Returns the front face
+	FrontFace GetFrontFace() const;
+
+	//! Sets the front face
+	void SetFrontFace(FrontFace front);
+
+	//! Returns the depth function
+	CompareFunction GetDepthFunc() const;
+
+	//! Sets the depth function
+	void SetDepthFunc(CompareFunction func);
+
+	//! Returns the fog mode
+	FogMode GetFogMode() const;
+
+	//! Sets the fog mode
+	void SetFogMode(FogMode mode);
+
+	//! Returns the fog density
+	float GetFogDensity() const;
+
+	//! Sets the fog density
+	void SetFogDensity(float density);
+
+	//! Returns the fog start
+	float GetFogStart() const;
+
+	//! Sets the fog start
+	void SetFogStart(float start);
+
+	//! Returns the fog end
+	float GetFogEnd() const;
+
+	//! Sets the fog end
+	void SetFogEnd(float end);
+
+	//! Returns the fog color
+	const Color4& GetFogColor() const;
+
+	//! Sets the fog color
+	void SetFogColor(const Color4& color);
+
+	//! Returns the alpha function
+	CompareFunction GetAlphaFunc() const;
+
+	//! Sets the alpha function
+	void SetAlphaFunction(CompareFunction func);
+
+	//! Returns the alpha reference
+	float GetAlphaRef() const;
+
+	//! Sets the alpha reference
+	void SetAlphaRef(float ref);
+
+	//! Returns the points' size
+	float GetPointSize() const;
+
+	//! Sets the points' size
+	void SetPointSize(float size);
+
+	//! Returns the minimum points' size
+	float GetPointSizeMin() const;
+
+	//! Sets the minimum points' size
+	void SetPointSizeMin(float min);
+
+	//! Returns the maximum points' size
+	float GetPointSizeMax() const;
+
+	//! Sets the maximum points' size
+	void SetPointSizeMax(float max);
+
+	//! Returns the blending equation
+	BlendEquation GetBlendEquation() const;
+
+	//! Sets the blending equation
+	void SetBlendEquation(BlendEquation equation);
+
+	//! Returns the source blending function
+	BlendFunction GetSrcBlendFunc() const;
+
+	//! Sets the source blending function
+	void SetSrcBlendFunc(BlendFunction src);
+
+	//! Returns the destination blending function
+	BlendFunction GetDstBlendFunc() const;
+
+	//! Sets the destination blending function
+	void SetDstBlendFunc(BlendFunction dst);
+
+	//! Sets the blending function for both source and destination
+	void SetBlendFunc(BlendFunction src, BlendFunction dst);
+
+	//! Returns the blending color
+	Color4& GetBlendColor();
+
+	//! Sets the blending color
+	void SetBlendColor(const Color4& color);
+
+	//! Sets "texture" to layer "layer"
+	//! Returns true if success
+	bool SetTextureLayer(uint layer, Texture* texture);
+
+	//! Returns the texture at layer "layer"
+	Texture* GetTextureLayer(uint layer) const;
+
+	//! Sets the texture mode for all layers
+	void SetTextureMode(TextureMode mode);
+
+	//! Sets the texture filter for all layers
+	void SetTextureFilter(TextureFilter filter);
+
+	//! Sets the texture wrap mode for all layers
+	void SetTextureWrap(TextureWrap wrap);
+
+	virtual void	Load(const char* name);
+	virtual void	Unload(const char* name, bool reload);
+
+//private:
+
+	Color4 mAmbient;
+	Color4 mDiffuse;
+	Color4 mSpecular;
+	Color4 mEmission;
+	int mShininess;
+
+	bool mLighting				: 1; // Whether lighting is enabled
+	bool mTexturing				: 1; // Whether texturing is enabled
+	bool mBackfaceCulling		: 1; // Whether backface-culling is enabled
+	bool mSeparateSpecularColor : 1; // Whether separate specular color is enabled
+	bool mDepthTest				: 1; // Whether depth test is enabled
+	bool mDepthWrite			: 1; // Whether depth write is enabled
+	bool mRescaleNormals		: 1; // Whether auto normal rescaling is enabled
+	bool mBlending				: 1; // Whether blending is enabled
+	bool mColorWrite			: 1; // Whether writing into the color buffer is enabled
+	bool mFog					: 1; // Whether fog is enabled
+	bool mAlphaTest				: 1; // Whether alpha test is enabled
+	bool mPointSprite			: 1; // Whether point sprite is enabled
+
+	ShadingType mShadingType;
+	PolygonMode mPolygonMode;
+	FrontFace mFrontFace;
+
+	CompareFunction mDepthFunc;
+
+	FogMode mFogMode;
+	float mFogDensity;
+	float mFogStart;
+	float mFogEnd;
+	Color4 mFogColor;
+
+	CompareFunction mAlphaFunc;
+	float mAlphaRef;
+
+	float mPointSize;
+	float mPointSizeMin;
+	float mPointSizeMax;
+
+	BlendEquation mBlendEquation;
+	BlendFunction mBlendSrc;
+	BlendFunction mBlendDst;
+	Color4 mBlendColor;
+
+	//! A material can contain up to MAX_TEXTURE_LAYERS texture layers.
+	//! However, the maximum number of texture layers really usable is renderer-dependent.
+	Texture* mTextureLayer[MAX_TEXTURE_LAYERS];
+};
+
+} // namespace Crown
+

+ 51 - 0
src/MaterialManager.cpp

@@ -0,0 +1,51 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "MaterialManager.h"
+#include "Log.h"
+
+namespace Crown
+{
+
+Material* MaterialManager::Create(const char* name, bool& created)
+{
+	Material* material = static_cast<Material*>(ResourceManager::Create(name, created));
+
+	return material;
+}
+
+Material* MaterialManager::Load(const char* name)
+{
+	Log::E("MaterialManager::Load: Not implemented yet.");
+	return 0;
+}
+
+Material* MaterialManager::CreateSpecific(const char* name)
+{
+	return new Material();
+}
+
+} // namespace Crown
+

+ 74 - 0
src/MaterialManager.h

@@ -0,0 +1,74 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "ResourceManager.h"
+#include "Material.h"
+
+namespace Crown
+{
+
+class MaterialManager : public ResourceManager
+{
+
+public:
+
+	/** 
+	 * Creates a material resource with the given name.
+	 * If a resource with the same name already exists, the
+	 * already existent resource will be returned. In order
+	 * to distinguish between a newly created resource or a
+	 * pointer to an existing one, you have to check
+	 * at the value returned by 'created'.
+	 * @param name The name of the resource
+	 * @param created Returns true if newly created, false otherwise
+	 * @return A pointer to the created resource
+	 */
+	Material* Create(const char* name, bool& created);
+
+	/**
+	 * Loads a material resource from file.
+	 * The name of the file determines the name of the resource and vice-versa.
+	 * @param name Tha name of the resource
+	 * @return A pointer to the loaded resource
+	 */
+	Material* Load(const char* name);
+
+	virtual Material* CreateSpecific(const char* name);
+
+protected:
+
+	MaterialManager();
+
+private:
+
+	// Disable copying
+	MaterialManager(const MaterialManager&);
+	MaterialManager& operator=(const MaterialManager&);
+};
+
+} // namespace Crown
+

+ 152 - 0
src/Mesh.cpp

@@ -0,0 +1,152 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Data.h"
+#include "Mesh.h"
+#include "Device.h"
+#include "Types.h"
+#include "VertexBuffer.h"
+#include "IndexBuffer.h"
+#include "Renderer.h"
+
+namespace Crown
+{
+
+Mesh::Mesh() :
+	mVertexBuffer(NULL),
+	mIndexBuffer(NULL),
+	mGlobalVertexCount(0)
+{
+}
+
+Mesh::~Mesh()
+{
+	for (int i = 0; i < mMeshChunkList.GetSize(); i++)
+	{
+		delete mMeshChunkList[i];
+	}
+}
+
+uint Mesh::GetMeshChunkCount() const
+{
+	return mMeshChunkList.GetSize();
+}
+
+MeshChunk* Mesh::GetMeshChunk(uint index) const
+{
+	return mMeshChunkList[index];
+}
+
+void Mesh::AddMeshChunk(MeshChunk* chunk)
+{
+	if (!chunk)
+	{
+		return;
+	}
+
+	mBoundingBox.AddBox(chunk->GetBoundingBox());
+	mMeshChunkList.Append(chunk);
+}
+
+void Mesh::RemoveMeshChunk(MeshChunk* chunk)
+{
+	for (int i = 0; i < mMeshChunkList.GetSize(); i++)
+	{
+		if (mMeshChunkList[i] == chunk)
+		{
+			mMeshChunkList.Remove(i);
+			UpdateBoundingBox();
+		}
+	}
+}
+
+const Box& Mesh::GetBoundingBox() const
+{
+	return mBoundingBox;
+}
+
+void Mesh::UpdateBoundingBox()
+{
+	mBoundingBox.Zero();
+
+	for (int i = 0; i < mMeshChunkList.GetSize(); i++)
+	{
+		mMeshChunkList[i]->UpdateBoundingBox();
+		mBoundingBox.AddBox(mMeshChunkList[i]->GetBoundingBox());
+	}
+}
+
+void Mesh::RecompileMesh()
+{
+	uint count = 0;
+	uint offset = 0;
+
+	if (!mVertexBuffer)
+		mVertexBuffer = GetDevice()->GetRenderer()->CreateVertexBuffer();
+	if (!mIndexBuffer)
+		mIndexBuffer = GetDevice()->GetRenderer()->CreateIndexBuffer();
+
+	count = 0;
+	for(int i=0; i<mMeshChunkList.GetSize(); i++)
+	{
+		mMeshChunkList[i]->UpdateNormals();
+		count += mMeshChunkList[i]->mVertexList.GetSize();
+	}
+
+	mVertexBuffer->SetVertexData((VertexBufferMode) (VBM_NORMAL_COORDS | VBM_TEXTURE_COORDS | VBM_COLOR_COORDS), NULL, count);
+	
+	offset = 0;
+	for(int i=0; i<mMeshChunkList.GetSize(); i++)
+	{
+		uint size = mMeshChunkList[i]->mVertexList.GetSize() * sizeof(VertexData);
+		mVertexBuffer->SetVertexSubData((float*) mMeshChunkList[i]->mVertexList.GetData(), offset, mMeshChunkList[i]->mVertexList.GetSize());
+
+		offset += size;
+	}
+
+	//Index buffer
+	count = 0;
+	for(int i=0; i<mMeshChunkList.GetSize(); i++)
+	{
+		count += mMeshChunkList[i]->mFaceList.GetSize() * 3;
+	}
+
+	mIndexBuffer->SetIndexData(NULL, count);
+	
+	offset = 0;
+	for(int i=0; i<mMeshChunkList.GetSize(); i++)
+	{
+		uint size = mMeshChunkList[i]->mFaceList.GetSize() * sizeof(ushort) * 3;
+		mIndexBuffer->SetIndexSubData((ushort*) mMeshChunkList[i]->mFaceList.GetData(), offset, mMeshChunkList[i]->mFaceList.GetSize() * 3);
+
+		offset += size;
+	}
+
+	mGlobalVertexCount = count;
+
+}
+
+} // namespace Crown
+

+ 87 - 0
src/Mesh.h

@@ -0,0 +1,87 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "List.h"
+#include "Box.h"
+#include "MeshChunk.h"
+#include "Resource.h"
+
+namespace Crown
+{
+
+class VertexBuffer;
+class IndexBuffer;
+
+/**
+ * This class represents a mesh in order to define the shape of a generic 'object'.
+ * Mesh can have an arbitrary number of sub-meshes called MeshChunk which contribute
+ * to the final mesh structure.
+ */ 
+class Mesh : public Resource
+{
+
+	typedef List<MeshChunk*> MeshChunkList;
+
+public:
+
+
+							Mesh();	//! Constructor
+							~Mesh();	//! Destructor
+
+
+	uint					GetMeshChunkCount() const;	//! Returns the MeshChunks contained in this mesh
+	MeshChunk*				GetMeshChunk(uint index) const;
+	void					AddMeshChunk(MeshChunk* chunk);	//! Adds a MeshChunk to the mesh
+	void					RemoveMeshChunk(MeshChunk* chunk);	//! Remove a MeshChunk from the mesh
+
+	const Box&				GetBoundingBox() const;	//! Returns the mesh's bounding box
+	void					UpdateBoundingBox();	//! Recalculate the mesh's bounding box
+
+	inline VertexBuffer*	GetVertexBuffer() const { return mVertexBuffer; }
+	inline IndexBuffer*		GetIndexBuffer() const { return mIndexBuffer; }
+
+	inline uint				GetGlobalVertexCount() const { return mGlobalVertexCount; }
+
+	void					RecompileMesh();
+
+	virtual void			Load(const char* name) {}
+	virtual void			Unload(const char* name, bool reload) {}
+
+private:
+
+	MeshChunkList			mMeshChunkList;
+
+	Box						mBoundingBox;
+
+	VertexBuffer*			mVertexBuffer;
+	IndexBuffer*			mIndexBuffer;
+	uint					mGlobalVertexCount;
+};
+
+} // namespace Crown
+

+ 86 - 0
src/MeshChunk.cpp

@@ -0,0 +1,86 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "MeshChunk.h"
+#include "Types.h"
+
+namespace Crown
+{
+
+MeshChunk::MeshChunk()
+{
+}
+
+MeshChunk::~MeshChunk()
+{
+
+}
+
+int MeshChunk::GetVertexCount() const
+{
+	return mVertexList.GetSize();
+}
+
+int MeshChunk::GetFaceCount() const
+{
+	return mFaceList.GetSize();
+}
+
+const Box& MeshChunk::GetBoundingBox() const
+{
+	return mBoundingBox;
+}
+
+void MeshChunk::UpdateBoundingBox()
+{
+	mBoundingBox.Zero();
+
+	for (int i = 0; i < mVertexList.GetSize(); i++)
+	{
+		mBoundingBox.AddPoint(mVertexList[i].position);
+	}
+}
+
+void MeshChunk::UpdateNormals()
+{
+	for (int i = 0; i < mFaceList.GetSize(); i++)
+	{
+		Vec3 normal;
+		Vec3 v1;
+		Vec3 v2;
+
+		v1 = mVertexList[mFaceList[i].vertex[0]].position - mVertexList[mFaceList[i].vertex[1]].position;
+		v2 = mVertexList[mFaceList[i].vertex[2]].position - mVertexList[mFaceList[i].vertex[1]].position;
+		
+		normal = v2.Cross(v1).Normalize();
+
+		mVertexList[mFaceList[i].vertex[0]].normal = normal;
+		mVertexList[mFaceList[i].vertex[1]].normal = normal;
+		mVertexList[mFaceList[i].vertex[2]].normal = normal;
+	}
+}
+
+} // namespace Crown
+

+ 74 - 0
src/MeshChunk.h

@@ -0,0 +1,74 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+#include "Box.h"
+#include "Data.h"
+#include "List.h"
+
+namespace Crown
+{
+
+class MeshChunk
+{
+
+	typedef List<VertexData> VertexList;
+	typedef List<FaceData> FaceList;
+
+public:
+
+	//! Constructor
+	MeshChunk();
+
+	//! Destructor
+	~MeshChunk();
+
+	//! Returns the mesh's vertex count
+	int GetVertexCount() const;
+
+	//! Returns the mesh's face count
+	int GetFaceCount() const;
+
+	//! Returns the mesh's bounding box
+	const Box& GetBoundingBox() const;
+
+	//! Updates the mesh's bounding box
+	void UpdateBoundingBox();
+
+	//! Updates the mesh's vertex normals
+	void UpdateNormals();
+
+public:
+
+	VertexList mVertexList;
+	FaceList mFaceList;
+
+	Box mBoundingBox;
+};
+
+} // namespace Crown
+

+ 51 - 0
src/MeshLoader.h

@@ -0,0 +1,51 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "Types.h"
+
+namespace Crown
+{
+
+class Mesh;
+
+class MeshLoader
+{
+
+public:
+
+	//! Constructor
+	MeshLoader() {}
+
+	//! Destructor
+	virtual ~MeshLoader() {}
+
+	//! Loads a mesh from a file
+	virtual Mesh* LoadFile(const char* name) = 0;
+};
+
+} // namespace Crown
+

+ 268 - 0
src/MeshManager.cpp

@@ -0,0 +1,268 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "MeshManager.h"
+#include "Log.h"
+#include "MathUtils.h"
+
+namespace Crown
+{
+
+MeshManager::MeshManager()
+{
+}
+
+Mesh* MeshManager::Create(const char* name, bool& created)
+{
+	Mesh* mesh = static_cast<Mesh*>(ResourceManager::Create(name, created));
+
+	return mesh;
+}
+
+Mesh* MeshManager::Load(const char* /*name*/)
+{
+	Log::E("MeshManager::Load: Not implemented yet.");
+	return 0;
+}
+
+Mesh* MeshManager::LoadCube(const char* name, float size)
+{
+	bool created;
+	Mesh* mesh = Create(name, created);
+
+	if (mesh != NULL && created)
+	{
+		MeshChunk* chunk = new MeshChunk();
+
+		float actual = Math::Abs(size) * 0.5f;
+
+		/**
+
+		         19------18
+		         /      / 
+		       16------17
+
+		    15    6------7   10       
+		    /|    |      |   /|
+		  14 |  3------2 | 11 |
+		   |12  | 5----|-4  | 9
+		   |/   |      |    |/
+		  13    0------1    8
+
+		         20------21
+		         /      /
+		       23------22
+
+		*/
+
+		// 6 faces, with pos, normal and uv
+		// Face ================================================================================================== Index
+		// Front
+		chunk->mVertexList.Append(VertexData(Vec3(-actual, -actual,  actual),  Vec3::ZAXIS, Vec2(0.0f, 0.0f))); // 0
+		chunk->mVertexList.Append(VertexData(Vec3( actual, -actual,  actual),  Vec3::ZAXIS, Vec2(1.0f, 0.0f))); // 1
+		chunk->mVertexList.Append(VertexData(Vec3( actual,  actual,  actual),  Vec3::ZAXIS, Vec2(1.0f, 1.0f))); // 2
+		chunk->mVertexList.Append(VertexData(Vec3(-actual,  actual,  actual),  Vec3::ZAXIS, Vec2(0.0f, 1.0f))); // 3
+
+		// Back
+		chunk->mVertexList.Append(VertexData(Vec3( actual, -actual, -actual), -Vec3::ZAXIS, Vec2(0.0f, 0.0f))); // 4
+		chunk->mVertexList.Append(VertexData(Vec3(-actual, -actual, -actual), -Vec3::ZAXIS, Vec2(1.0f, 0.0f))); // 5
+		chunk->mVertexList.Append(VertexData(Vec3(-actual,  actual, -actual), -Vec3::ZAXIS, Vec2(1.0f, 1.0f))); // 6
+		chunk->mVertexList.Append(VertexData(Vec3( actual,  actual, -actual), -Vec3::ZAXIS, Vec2(0.0f, 1.0f))); // 7
+
+		// Right
+		chunk->mVertexList.Append(VertexData(Vec3( actual, -actual,  actual),  Vec3::XAXIS, Vec2(0.0f, 0.0f))); // 8
+		chunk->mVertexList.Append(VertexData(Vec3( actual, -actual, -actual),  Vec3::XAXIS, Vec2(1.0f, 0.0f))); // 9
+		chunk->mVertexList.Append(VertexData(Vec3( actual,  actual, -actual),  Vec3::XAXIS, Vec2(1.0f, 1.0f))); // 10
+		chunk->mVertexList.Append(VertexData(Vec3( actual,  actual,  actual),  Vec3::XAXIS, Vec2(0.0f, 1.0f))); // 11
+
+		// Left
+		chunk->mVertexList.Append(VertexData(Vec3(-actual, -actual, -actual), -Vec3::XAXIS, Vec2(0.0f, 0.0f))); // 12
+		chunk->mVertexList.Append(VertexData(Vec3(-actual, -actual,  actual), -Vec3::XAXIS, Vec2(1.0f, 0.0f))); // 13
+		chunk->mVertexList.Append(VertexData(Vec3(-actual,  actual,  actual), -Vec3::XAXIS, Vec2(1.0f, 1.0f))); // 14
+		chunk->mVertexList.Append(VertexData(Vec3(-actual,  actual, -actual), -Vec3::XAXIS, Vec2(0.0f, 1.0f))); // 15
+
+		// Top
+		chunk->mVertexList.Append(VertexData(Vec3(-actual,  actual,  actual),  Vec3::YAXIS, Vec2(0.0f, 0.0f))); // 16
+		chunk->mVertexList.Append(VertexData(Vec3( actual,  actual,  actual),  Vec3::YAXIS, Vec2(1.0f, 0.0f))); // 17
+		chunk->mVertexList.Append(VertexData(Vec3( actual,  actual, -actual),  Vec3::YAXIS, Vec2(1.0f, 1.0f))); // 18
+		chunk->mVertexList.Append(VertexData(Vec3(-actual,  actual, -actual),  Vec3::YAXIS, Vec2(0.0f, 1.0f))); // 19
+
+		// Bottom
+		chunk->mVertexList.Append(VertexData(Vec3(-actual, -actual, -actual), -Vec3::YAXIS, Vec2(0.0f, 0.0f))); // 20
+		chunk->mVertexList.Append(VertexData(Vec3( actual, -actual, -actual), -Vec3::YAXIS, Vec2(1.0f, 0.0f))); // 21
+		chunk->mVertexList.Append(VertexData(Vec3( actual, -actual,  actual), -Vec3::YAXIS, Vec2(1.0f, 1.0f))); // 22
+		chunk->mVertexList.Append(VertexData(Vec3(-actual, -actual,  actual), -Vec3::YAXIS, Vec2(0.0f, 1.0f))); // 23
+
+		// 12 triangles, CCW order
+		chunk->mFaceList.Append(FaceData(0, 1, 2));
+		chunk->mFaceList.Append(FaceData(0, 2, 3));
+
+		chunk->mFaceList.Append(FaceData(4, 5, 6));
+		chunk->mFaceList.Append(FaceData(4, 6, 7));
+
+		chunk->mFaceList.Append(FaceData(8, 9, 10));
+		chunk->mFaceList.Append(FaceData(8, 10, 11));
+
+		chunk->mFaceList.Append(FaceData(12, 13, 14));
+		chunk->mFaceList.Append(FaceData(12, 14, 15));
+
+		chunk->mFaceList.Append(FaceData(16, 17, 18));
+		chunk->mFaceList.Append(FaceData(16, 18, 19));
+
+		chunk->mFaceList.Append(FaceData(20, 21, 22));
+		chunk->mFaceList.Append(FaceData(20, 22, 23));
+
+		mesh->AddMeshChunk(chunk);
+		mesh->UpdateBoundingBox();
+		mesh->RecompileMesh();
+	}
+
+	return mesh;
+}
+
+Mesh* MeshManager::LoadPlane(const char* name, float width, float height)
+{
+	bool created;
+	Mesh* mesh = Create(name, created);
+
+	if (mesh != NULL && created)
+	{
+		MeshChunk* chunk = new MeshChunk();
+
+		float actualWidth = Math::Abs(width) * 0.5f;
+		float actualHeight = Math::Abs(height) * 0.5f;
+
+		/**
+
+			    (-x; +y)      (+x; +y)
+		          ______________
+		         /             /
+		        /     ^ (+z)  /
+		       /      |      /
+		      /             /
+		     /_____________/
+
+		(-x; -y)      (+x; -y)
+
+		*/
+
+		// Only a face, with pos, normal and UVs
+		chunk->mVertexList.Append(VertexData(Vec3(-actualWidth, -actualHeight,  0.0f),  Vec3::ZAXIS, Vec2(0.0f, 0.0f)));
+		chunk->mVertexList.Append(VertexData(Vec3( actualWidth, -actualHeight,  0.0f),  Vec3::ZAXIS, Vec2(1.0f, 0.0f)));
+		chunk->mVertexList.Append(VertexData(Vec3( actualWidth,  actualHeight,  0.0f),  Vec3::ZAXIS, Vec2(1.0f, 1.0f)));
+		chunk->mVertexList.Append(VertexData(Vec3(-actualWidth,  actualHeight,  0.0f),  Vec3::ZAXIS, Vec2(0.0f, 1.0f)));
+
+		// 2 triangles, CCW order
+		chunk->mFaceList.Append(FaceData(0, 1, 2));
+		chunk->mFaceList.Append(FaceData(0, 2, 3));
+
+		mesh->AddMeshChunk(chunk);
+		mesh->UpdateBoundingBox();
+		mesh->RecompileMesh();
+	}
+
+	return mesh;
+}
+
+Mesh* MeshManager::LoadGrid(const char* name, uint size, float tileSize)
+{
+	if (size < 1)
+	{
+		Log::E("MeshManager::LoadGrid: Size must be > 0");
+		return 0;
+	}
+
+	bool created;
+	Mesh* mesh = Create(name, created);
+
+	if (mesh != NULL && created)
+	{
+		MeshChunk* chunk = new MeshChunk();
+
+		float actual = ((float)size * tileSize * 0.5f);
+
+		/**
+
+			   (-x; -z)    (+x; -z)
+		         ____________
+		        /__/__/__/__/
+		       /__/__/__/__/  ^ (+y)
+		      /__/__/__/__/   |
+		     /__/__/__/__/
+
+		(-x; +z)    (+x; +z)
+
+		*/
+
+		// Populate vertex list (generate a grid lying on the xz-plane and facing upwards)
+		float vCoord = 0.0f;//(float)size;
+		float zPos = actual;
+		for (uint h = 0; h <= size; h++)
+		{
+			float uCoord = 0.0f;
+			float xPos = -actual;
+			for (uint w = 0; w <= size; w++)
+			{
+				chunk->mVertexList.Append(VertexData(Vec3(xPos, 0.0f, zPos), Vec3::YAXIS, Vec2(uCoord, vCoord)));
+				xPos += tileSize;
+				uCoord += 1.0f;// / ((float)size + 1.0f);
+			}
+			zPos -= tileSize;
+			vCoord += 1.0f;// / ((float)size + 1.0f);
+		}
+
+		// Generate faces
+		for (uint h = 0; h < size; h++)
+		{
+			for (uint w = 0; w < size; w++)
+			{
+				uint firstRow = (h * (size + 1)) + w;
+				uint secondRow = ((h + 1) * (size + 1)) + w;
+				chunk->mFaceList.Append(FaceData(firstRow, firstRow + 1, secondRow + 1));
+				chunk->mFaceList.Append(FaceData(firstRow, secondRow + 1, secondRow));
+			}
+		}
+
+		mesh->AddMeshChunk(chunk);
+		mesh->UpdateBoundingBox();
+		mesh->RecompileMesh();
+	}
+
+	return mesh;
+}
+
+Mesh* MeshManager::CreateSpecific(const char* name)
+{
+	return new Mesh();
+}
+
+MeshManager meshMgr;
+MeshManager* GetMeshManager()
+{
+	return &meshMgr;
+}
+
+} // namespace Crown
+

+ 109 - 0
src/MeshManager.h

@@ -0,0 +1,109 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+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 "ResourceManager.h"
+#include "Mesh.h"
+
+namespace Crown
+{
+
+/**
+ * Manages mesh loading.
+ */
+class MeshManager : public ResourceManager
+{
+
+public:
+
+	MeshManager();
+
+	/**
+	 * Creates a mesh resource with the given name.
+	 * If a resource with the same name already exists, the
+	 * already existent resource will be returned.
+	 * @param name The name of the resource
+	 * @return A pointer to the created resource
+	 */
+	Mesh* Create(const char* name, bool& created);
+
+	/**
+	 * Loads a mesh resource from file.
+	 * The name of the file determines the name of the resource and vice-versa.
+	 * @param name Tha name of the resource
+	 * @return A pointer to the loaded resource
+	 */
+	Mesh* Load(const char* name);
+
+	/**
+	 * Loads a prefab cube mesh.
+	 * @param name The name of the mesh
+	 * @param size The size of the cube in units
+	 * @return A pointer to the loaded resource
+	 */
+	Mesh* LoadCube(const char* name, float size = 1.0f);
+
+	/**
+	 * Loads a prefab plane mesh.
+	 * @note Plane differs from a grid in the way a plane has
+	 * only four vertices while a grid has many more, depending
+	 * on the size. You can imagine a plane as a singe sheet of
+	 * paper.
+	 * The function generates a plane of size 'width' x 'height' units,
+	 * centered at the origin and facing +Z. 
+	 * @param name The name of the mesh
+	 * @param width The width of the plane in units
+	 * @param height The height of the plane in units
+	 * @return A pointer to the loaded resource
+	 */
+	Mesh* LoadPlane(const char* name, float width = 1.0f, float height = 1.0f);
+
+	/**
+	 * Loads a prefab plane mesh.
+ 	 * @note A grid differs from a plane in the way a grid
+	 * has many more vertices than a plane, depending on the
+	 * size. You can think of a grid as a set of small-tiled
+	 * planes or as a single "triangulated" plane.
+	 * @param name The name of the mesh
+	 * @param size The size of the plane in units
+	 * @param tileSize The size of a tile in units
+	 * @return A pointer to the loaded resource
+	 */
+	Mesh* LoadGrid(const char* name, uint size = 20, float tileSize = 1.0f);
+
+	virtual Mesh* CreateSpecific(const char* name);
+
+private:
+
+	// Disable copying
+	MeshManager(const MeshManager&);
+	MeshManager& operator=(const MeshManager&);
+};
+
+MeshManager* GetMeshManager();
+
+} // namespace Crown
+

+ 249 - 0
src/MovableCamera.cpp

@@ -0,0 +1,249 @@
+/*
+Copyright (c) 2012 Daniele Bartolini, Simone Boscaratto
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#include "Device.h"
+#include "Mat3.h"
+#include "Types.h"
+#include "MovableCamera.h"
+#include "InputManager.h"
+
+namespace Crown
+{
+
+MovableCamera::MovableCamera(const Vec3& position, const Angles& axis,
+				bool visible, float fov, float aspect, bool active, float speed, float sensibility) :
+	Camera(position, axis, visible, fov, aspect, active),
+	mSpeed(speed),
+	mMouseSensibility(sensibility),
+	mUpPressed(false),
+	mRightPressed(false),
+	mDownPressed(false),
+	mLeftPressed(false)
+{
+	GetDevice()->GetInputManager()->RegisterKeyboardListener(this);
+
+	mRotFactor = Vec2(0.0f, 0.0f);
+	mAngleX = 0.0f;
+	mAngleY = 0.0f;
+
+	GetDevice()->GetInputManager()->GetMouse()->SetCursorRelativeXY(Vec2(0.5f, 0.5f));
+}
+
+MovableCamera::~MovableCamera()
+{
+}
+
+float MovableCamera::GetMouseSensibility() const
+{
+	return mMouseSensibility;
+}
+
+void MovableCamera::SetActive(bool active)
+{
+	Camera::SetActive(active);
+	GetDevice()->GetInputManager()->GetMouse()->SetCursorRelativeXY(Vec2(0.5f, 0.5f));
+}
+
+void MovableCamera::SetMouseSensibility(float sensibility)
+{
+	mMouseSensibility = sensibility;
+}
+
+float MovableCamera::GetSpeed() const
+{
+	return mSpeed;
+}
+
+void MovableCamera::SetSpeed(float speed)
+{
+	mSpeed = speed;
+}
+
+void MovableCamera::Render()
+{
+	if (!mActive)
+	{
+		return;
+	}
+
+	SetViewByMouse();
+
+	if (mUpPressed)
+	{
+		MoveForward();
+		UpdateViewMatrix();
+	}
+
+	if (mRightPressed)
+	{
+		StrafeRight();
+		UpdateViewMatrix();
+	}
+
+	if (mDownPressed)
+	{
+		MoveBackward();
+		UpdateViewMatrix();
+	}
+
+	if (mLeftPressed)
+	{
+		StrafeLeft();
+		UpdateViewMatrix();
+	}
+
+	Camera::Render();
+}
+
+void MovableCamera::KeyPressed(const KeyboardEvent& event)
+{
+	switch (event.key)
+	{
+		case 'w':
+		{
+			mUpPressed = true;
+			break;
+		}
+		case 'a':
+		{
+			mLeftPressed = true;
+			break;
+		}
+		case 's':
+		{
+			mDownPressed = true;
+			break;
+		}
+		case 'd':
+		{
+			mRightPressed = true;
+			break;
+		}
+		default:
+		{
+			break;
+		}
+	}
+}
+
+void MovableCamera::KeyReleased(const KeyboardEvent& event)
+{
+	switch (event.key)
+	{
+		case 'w':
+		{
+			mUpPressed = false;
+			break;
+		}
+		case 'a':
+		{
+			mLeftPressed = false;
+			break;
+		}
+		case 's':
+		{
+			mDownPressed = false;
+			break;
+		}
+		case 'd':
+		{
+			mRightPressed = false;
+			break;
+		}
+		default:
+		{
+			break;
+		}
+	}
+}
+
+void MovableCamera::MoveForward()
+{
+	mPosition += mLookAt * mSpeed;
+}
+
+void MovableCamera::MoveBackward()
+{
+	mPosition -= mLookAt * mSpeed;
+}
+
+void MovableCamera::StrafeLeft()
+{
+	Vec3 left = mUp.Cross(mLookAt);
+	left.Normalize();
+	mPosition += left * mSpeed;
+}
+
+void MovableCamera::StrafeRight()
+{
+	Vec3 left = mUp.Cross(mLookAt);
+	left.Normalize();
+	mPosition -= left * mSpeed;
+}
+
+void MovableCamera::SetViewByMouse()
+{
+	Mouse* mouse = GetDevice()->GetInputManager()->GetMouse();
+
+	static Vec2 lastPos = mouse->GetCursorRelativeXY();
+	Vec2 currentPos = mouse->GetCursorRelativeXY();
+	mouse->SetCursorRelativeXY(Vec2(0.5f, 0.5f));
+
+	if (lastPos == currentPos)
+	{
+		return;
+	}
+
+	Vec2 delta = lastPos - currentPos;
+
+	mouse->SetCursorRelativeXY(Vec2(0.5f, 0.5f));
+	lastPos = mouse->GetCursorRelativeXY();
+
+	mAngleX += delta.y * mMouseSensibility;
+	mAngleY += delta.x * mMouseSensibility;
+
+	mAngleX = Math::ClampToRange(-89.999f * Math::DEG_TO_RAD, 89.999f * Math::DEG_TO_RAD, mAngleX);
+	mAngleY = Math::FMod(mAngleY, Math::TWO_PI);
+
+	Vec3 right(1, 0, 0);
+	Vec3 look;
+
+	look.x = 0.0f;
+	look.y = Math::Sin(mAngleX);
+	look.z = -Math::Cos(mAngleX);
+
+	Vec3 up = right.Cross(look);
+	up.Normalize();
+
+	Mat3 m;
+	m.BuildRotationY(mAngleY);
+	look = m * look;
+	mUp = m * up;
+
+	Camera::SetLookAt(look);
+}
+
+} // namespace Crown
+

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