~zanneth/zge

29a2b41dfd3194e5c37909773c149f8fbe23ce03 — Charles Magahern 2 years ago 6b4f68e
Add test program, fix Linux issues
M .gitignore => .gitignore +3 -1
@@ 1,11 1,13 @@
lib
build

# cmake
CMakeCache.txt
CMakeFiles
CMakeLists.txt.user
CMakeScripts
CTestTestfile.cmake
Makefile
cmake_install.cmake
install_manifest.txt
CTestTestfile.cmake


M CMakeLists.txt => CMakeLists.txt +29 -27
@@ 1,19 1,23 @@
cmake_minimum_required(VERSION 3.0)

include(CheckCXXCompilerFlag)
include(FindPkgConfig)
cmake_minimum_required(VERSION 3.5)

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

project(ZGE C CXX)

file(GLOB_RECURSE SOURCES "src/zge/*.cpp")
file(GLOB_RECURSE HEADERS "src/zge/*.h")
################################################################################
# zge library
################################################################################

add_library(zge SHARED ${SOURCES} ${HEADERS})
file(GLOB_RECURSE ZGE_SOURCES "src/zge/*.cpp")
file(GLOB_RECURSE ZGE_HEADERS "src/zge/*.h")

add_library(zge SHARED ${ZGE_SOURCES} ${ZGE_HEADERS})

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/zge/audio)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/zge/contrib)


@@ 31,27 35,15 @@ target_include_directories(zge
    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src
)

set(CMAKE_CXX_COMPILER "clang++")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")

# OpenGL/ES
set(OpenGL_GL_PREFERENCE "GLVND")
find_package(OpenGL)

if (OPENGL_FOUND)
    include_directories(${OPENGL_INCLUDE_DIR})
    target_link_libraries(zge ${OPENGL_LIBRARIES})
else()
    find_package(OpenGLES2)
    include_directories(${OPENGLES2_INCLUDE_DIR})
    target_link_libraries(zge ${OPENGLES2_LIBRARIES})
    add_definitions(-DOPENGL_ES -DOPENGL_ES2)
endif()
# GLEW
find_package(GLEW REQUIRED)
include_directories(${GLEW_INCLUDE_DIRS})
target_link_libraries(zge ${GLEW_LIBRARIES})

# SDL
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIR})
target_link_libraries(zge ${SDL2_LIBRARY})
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(zge ${SDL2_LIBRARIES})

# SDL_Image
find_package(SDL2_image REQUIRED)


@@ 60,7 52,7 @@ target_link_libraries(zge ${SDL2_IMAGE_LIBRARIES})

# lib3ds
find_package(Lib3ds REQUIRED)
include_directories(${LIB3DS_INCLUDE_DIR})
include_directories(${LIB3DS_INCLUDE_DIRS})
target_link_libraries(zge ${LIB3DS_LIBRARY})

# Freetype


@@ 72,7 64,17 @@ target_link_libraries(zge ${FREETYPE_LIBRARIES})
find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIRS})

install (FILES ${HEADERS}
install(FILES ${ZGE_HEADERS}
   DESTINATION include/zge
   COMPONENT devel
)

################################################################################
# test program
################################################################################

file(GLOB_RECURSE ZGETEST_SOURCES "test/src/*.cpp")
file(GLOB_RECURSE ZGETEST_HEADERS "test/src/*.h")

add_executable(zgetest ${ZGETEST_SOURCES} ${ZGETEST_HEADERS})
target_link_libraries(zgetest PRIVATE zge)

D ZGE.xcodeproj/project.pbxproj => ZGE.xcodeproj/project.pbxproj +0 -2345
@@ 1,2345 0,0 @@
// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 46;
	objects = {

/* Begin PBXBuildFile section */
		0C010DFC1DB4875E005B6F4E /* openglext.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C010DFA1DB4875E005B6F4E /* openglext.cpp */; };
		0C010DFF1DB48B0C005B6F4E /* openglext.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C010DFB1DB4875E005B6F4E /* openglext.h */; };
		0C10F97019D3C91D0010815F /* audio_asset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF1D2A919176D9300CDBEEE /* audio_asset.cpp */; };
		0C10F97219D3C91D0010815F /* audio_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF1D2981917664800CDBEEE /* audio_manager.cpp */; };
		0C10F97519D3C91D0010815F /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF1D2A519176D2600CDBEEE /* sound.cpp */; };
		0C10F97719D3C91D0010815F /* 3dcamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C898C741917251000CF3009 /* 3dcamera.cpp */; };
		0C10F97919D3C91D0010815F /* camera_controller.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE0341719D1D6EC00CD7A19 /* camera_controller.cpp */; };
		0C10F97B19D3C91D0010815F /* cube.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C7D3E0F19C57194003AC9E9 /* cube.cpp */; };
		0C10F97D19D3C91D0010815F /* orthocamera.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C898C70191722B600CF3009 /* orthocamera.cpp */; };
		0C10F97F19D3C91D0010815F /* quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C898C7819172F2900CF3009 /* quad.cpp */; };
		0C10F98119D3C91D0010815F /* sprite_node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CDE862819311B0F00C787FD /* sprite_node.cpp */; };
		0C10F98319D3C91D0010815F /* wave_audio_asset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF1D2AD19176F9400CDBEEE /* wave_audio_asset.cpp */; };
		0C10F98519D3C91D0010815F /* application.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3A816D208A900E43D7B /* application.cpp */; };
		0C10F98719D3C91D0010815F /* color.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C07BD7317C0496A00C38084 /* color.cpp */; };
		0C10F98A19D3C91D0010815F /* display.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3A916D208A900E43D7B /* display.cpp */; };
		0C10F98C19D3C91D0010815F /* engine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3AD16D208A900E43D7B /* engine.cpp */; };
		0C10F99219D3C91D0010815F /* resource_bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C82C32D191C87FB006E0295 /* resource_bundle.cpp */; };
		0C10F99419D3C91D0010815F /* run_loop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3BC16D208A900E43D7B /* run_loop.cpp */; };
		0C10F99919D3C91D0010815F /* schedulable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C0634A219D27E8700832237 /* schedulable.cpp */; };
		0C10F99B19D3C91D0010815F /* timer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CCD2F59176128AC00F497CF /* timer.cpp */; };
		0C10F9A019D3C91D0010815F /* matrix.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C62280E18610B6F00DA3182 /* matrix.cpp */; };
		0C10F9A319D3C91D0010815F /* vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CA262661863F71A003E8D37 /* vector.cpp */; };
		0C10F9A519D3C91D0010815F /* action.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C89D4421931424400F1D9DB /* action.cpp */; };
		0C10F9A719D3C91D0010815F /* geometry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C688F9E18726E64002C38EF /* geometry.cpp */; };
		0C10F9A919D3C91D0010815F /* material.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C688FA218727756002C38EF /* material.cpp */; };
		0C10F9AB19D3C91D0010815F /* model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C688F9618726A65002C38EF /* model.cpp */; };
		0C10F9AD19D3C91D0010815F /* node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CEC024B176D5DF90029DE82 /* node.cpp */; };
		0C10F9AF19D3C91D0010815F /* scene.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CEC024D176D5DF90029DE82 /* scene.cpp */; };
		0C10F9B119D3C91D0010815F /* event.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF1D29D19176ADC00CDBEEE /* event.cpp */; };
		0C10F9B319D3C91D0010815F /* input_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CF1D29F19176ADC00CDBEEE /* input_manager.cpp */; };
		0C10F9B519D3C91D0010815F /* responder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE0341B19D1D76800CD7A19 /* responder.cpp */; };
		0C10F9BA19D3C91D0010815F /* image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE99A07191C99F50011DED6 /* image.cpp */; };
		0C10F9BC19D3C91D0010815F /* light.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C7D3E1919C67376003AC9E9 /* light.cpp */; };
		0C10F9BF19D3C91D0010815F /* render_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C4B4AF31749A83500FD4B53 /* render_context.cpp */; };
		0C10F9C119D3C91D0010815F /* render_manager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C2B01A9176D5FE300522671 /* render_manager.cpp */; };
		0C10F9C319D3C91D0010815F /* shader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C5D324A1761C82A0013ACFF /* shader.cpp */; };
		0C10F9C519D3C91D0010815F /* shader_program.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C4B4AEF1749A52700FD4B53 /* shader_program.cpp */; };
		0C10F9C719D3C91D0010815F /* texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CAA7A50191C975200462668 /* texture.cpp */; };
		0C10F9CA19D3C91D0010815F /* uniform.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CD633A5188EF3E20061D259 /* uniform.cpp */; };
		0C10F9CC19D3C91D0010815F /* vertex_array.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C1F28B817C1C3FF00CA03C4 /* vertex_array.cpp */; };
		0C10F9D019D3C91D0010815F /* data.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C0D7C6C18C410B100021CD6 /* data.cpp */; };
		0C10F9D219D3C91D0010815F /* exception.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3D216D208A900E43D7B /* exception.cpp */; };
		0C10F9D419D3C91D0010815F /* glutil.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C21E5E918C2AC80009E508D /* glutil.cpp */; };
		0C10F9D619D3C91D0010815F /* logger.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3D416D208A900E43D7B /* logger.cpp */; };
		0C10F9D819D3C91D0010815F /* util.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C50D3D816D208A900E43D7B /* util.cpp */; };
		0C10FB7B19D3CB540010815F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C10FB7A19D3CB540010815F /* OpenGL.framework */; };
		0C1C6E981A8455A8005710AA /* layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C1C6E961A8455A8005710AA /* layout.cpp */; };
		0C42CCA11A5D041900AA2566 /* display_render_context.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C42CC9F1A5D041900AA2566 /* display_render_context.cpp */; };
		0C66315C1D8E4FB500987867 /* audio_asset.h in Copy Audio Headers */ = {isa = PBXBuildFile; fileRef = 0CF1D2AA19176D9300CDBEEE /* audio_asset.h */; };
		0C66315D1D8E4FB500987867 /* audio_manager.h in Copy Audio Headers */ = {isa = PBXBuildFile; fileRef = 0CF1D2991917664800CDBEEE /* audio_manager.h */; };
		0C66315E1D8E4FB500987867 /* sound.h in Copy Audio Headers */ = {isa = PBXBuildFile; fileRef = 0CF1D2A619176D2600CDBEEE /* sound.h */; };
		0C66315F1D8E4FB500987867 /* sound_private.h in Copy Audio Headers */ = {isa = PBXBuildFile; fileRef = 0C7712F819177E4D0050C098 /* sound_private.h */; };
		0C6631611D8E4FD500987867 /* 3dcamera.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0C898C751917251000CF3009 /* 3dcamera.h */; };
		0C6631621D8E4FD500987867 /* camera_controller.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0CE0341819D1D6EC00CD7A19 /* camera_controller.h */; };
		0C6631631D8E4FD500987867 /* cube.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0C7D3E1019C57194003AC9E9 /* cube.h */; };
		0C6631641D8E4FD500987867 /* box_layout.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0CE9FF961A845832001B19EE /* box_layout.h */; };
		0C6631651D8E4FD500987867 /* line.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0C71922D1A80070900A2073A /* line.h */; };
		0C6631661D8E4FD500987867 /* orthocamera.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0C898C71191722B600CF3009 /* orthocamera.h */; };
		0C6631671D8E4FD500987867 /* plane.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0C91834D1B731BB200ED9A83 /* plane.h */; };
		0C6631681D8E4FD500987867 /* quad.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0C898C7919172F2900CF3009 /* quad.h */; };
		0C6631691D8E4FD500987867 /* sprite_node.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0CDE862919311B0F00C787FD /* sprite_node.h */; };
		0C66316A1D8E4FD500987867 /* wave_audio_asset.h in Copy Contrib Headers */ = {isa = PBXBuildFile; fileRef = 0CF1D2AE19176F9400CDBEEE /* wave_audio_asset.h */; };
		0C66316C1D8E4FEE00987867 /* application.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3A716D208A900E43D7B /* application.h */; };
		0C66316D1D8E4FEE00987867 /* color.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C07BD7417C0496A00C38084 /* color.h */; };
		0C66316E1D8E4FEE00987867 /* defines.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0CE6989818C9AB8100D57528 /* defines.h */; };
		0C66316F1D8E4FEE00987867 /* display.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3AA16D208A900E43D7B /* display.h */; };
		0C6631701D8E4FEE00987867 /* engine.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3AE16D208A900E43D7B /* engine.h */; };
		0C6631711D8E4FEE00987867 /* foundation.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C82C32B191C859A006E0295 /* foundation.h */; };
		0C6631721D8E4FEE00987867 /* noncopyable.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3B716D208A900E43D7B /* noncopyable.h */; };
		0C6631731D8E4FEE00987867 /* observable.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0CD633A8188F8E360061D259 /* observable.h */; };
		0C6631741D8E4FEE00987867 /* observable.hpp in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0CD633A7188F8E360061D259 /* observable.hpp */; };
		0C6631751D8E4FEE00987867 /* resource_bundle.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C82C32E191C87FB006E0295 /* resource_bundle.h */; };
		0C6631761D8E4FEE00987867 /* run_loop.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3BD16D208A900E43D7B /* run_loop.h */; };
		0C6631771D8E4FEE00987867 /* schedulable.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3BE16D208A900E43D7B /* schedulable.h */; };
		0C6631781D8E4FEE00987867 /* schedulable.hpp in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C06349F19D26DE100832237 /* schedulable.hpp */; };
		0C6631791D8E4FEE00987867 /* timer.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0CCD2F5A176128AC00F497CF /* timer.h */; };
		0C66317A1D8E4FEE00987867 /* types.h in Copy Core Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3BF16D208A900E43D7B /* types.h */; };
		0C66317C1D8E500800987867 /* constants.h in Copy Math Headers */ = {isa = PBXBuildFile; fileRef = 0CDEB0721B77F23000E4032A /* constants.h */; };
		0C66317D1D8E500800987867 /* matrix.h in Copy Math Headers */ = {isa = PBXBuildFile; fileRef = 0C62280F18610B6F00DA3182 /* matrix.h */; };
		0C66317E1D8E500800987867 /* vector.h in Copy Math Headers */ = {isa = PBXBuildFile; fileRef = 0CA262671863F71A003E8D37 /* vector.h */; };
		0C66317F1D8E500800987867 /* vector_private.h in Copy Math Headers */ = {isa = PBXBuildFile; fileRef = 0C49AEDE18642152005A1D78 /* vector_private.h */; };
		0C6631811D8E502800987867 /* action.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0C89D4431931424400F1D9DB /* action.h */; };
		0C6631821D8E502800987867 /* geometry.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0C688F9F18726E64002C38EF /* geometry.h */; };
		0C6631831D8E502800987867 /* layout.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0C1C6E971A8455A8005710AA /* layout.h */; };
		0C6631841D8E502800987867 /* material.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0C688FA318727756002C38EF /* material.h */; };
		0C6631851D8E502800987867 /* model.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0C688F9718726A65002C38EF /* model.h */; };
		0C6631861D8E502800987867 /* node.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0CEC024C176D5DF90029DE82 /* node.h */; };
		0C6631871D8E502800987867 /* scene.h in Copy Graph Headers */ = {isa = PBXBuildFile; fileRef = 0CEC024E176D5DF90029DE82 /* scene.h */; };
		0C6631891D8E505000987867 /* event.h in Copy Input Headers */ = {isa = PBXBuildFile; fileRef = 0CF1D29E19176ADC00CDBEEE /* event.h */; };
		0C66318A1D8E505000987867 /* input_manager.h in Copy Input Headers */ = {isa = PBXBuildFile; fileRef = 0CF1D2A019176ADC00CDBEEE /* input_manager.h */; };
		0C66318B1D8E505000987867 /* responder.h in Copy Input Headers */ = {isa = PBXBuildFile; fileRef = 0CE0341C19D1D76800CD7A19 /* responder.h */; };
		0C66318D1D8E506800987867 /* camera.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3C716D208A900E43D7B /* camera.h */; };
		0C66318E1D8E506800987867 /* display_render_context.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C42CCA01A5D041900AA2566 /* display_render_context.h */; };
		0C66318F1D8E506800987867 /* eagl_render_context.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C42CC961A5D036800AA2566 /* eagl_render_context.h */; };
		0C6631901D8E506800987867 /* graphics_buffer.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3C916D208A900E43D7B /* graphics_buffer.h */; };
		0C6631911D8E506800987867 /* image.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0CE99A08191C99F50011DED6 /* image.h */; };
		0C6631921D8E506800987867 /* light.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C7D3E1A19C67376003AC9E9 /* light.h */; };
		0C6631931D8E506800987867 /* opengl.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C064489177029CC004AAA20 /* opengl.h */; };
		0C6631941D8E506800987867 /* renderable.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C59F75E1A828A8700D2BA8A /* renderable.h */; };
		0C6631951D8E506800987867 /* render_context.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C4B4AF41749A83500FD4B53 /* render_context.h */; };
		0C6631961D8E506800987867 /* render_manager.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C2B01AA176D5FE300522671 /* render_manager.h */; };
		0C6631971D8E506800987867 /* shader.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C5D324B1761C82A0013ACFF /* shader.h */; };
		0C6631981D8E506800987867 /* shader_program.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C4B4AF01749A52700FD4B53 /* shader_program.h */; };
		0C6631991D8E506800987867 /* texture.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0CAA7A51191C975200462668 /* texture.h */; };
		0C66319A1D8E506800987867 /* uniform.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C8302D3187FF4BC00708944 /* uniform.h */; };
		0C66319B1D8E506800987867 /* uniform.hpp in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C8302D2187FF4BC00708944 /* uniform.hpp */; };
		0C66319C1D8E506800987867 /* vertex_array.h in Copy Renderer Headers */ = {isa = PBXBuildFile; fileRef = 0C1F28B917C1C3FF00CA03C4 /* vertex_array.h */; };
		0C66319E1D8E508600987867 /* font.h in Copy Text Headers */ = {isa = PBXBuildFile; fileRef = 0CA36B3C19F20B17003543FE /* font.h */; };
		0C66319F1D8E508600987867 /* glyph.h in Copy Text Headers */ = {isa = PBXBuildFile; fileRef = 0C69589719F3874700208B27 /* glyph.h */; };
		0C6631A01D8E508600987867 /* text_node.h in Copy Text Headers */ = {isa = PBXBuildFile; fileRef = 0C69589319F3532100208B27 /* text_node.h */; };
		0C6631A21D8E50A300987867 /* data.h in Copy Util Headers */ = {isa = PBXBuildFile; fileRef = 0C0D7C6D18C410B100021CD6 /* data.h */; };
		0C6631A31D8E50A300987867 /* describable.h in Copy Util Headers */ = {isa = PBXBuildFile; fileRef = 0CE0A6BC19F8C70A00AA119A /* describable.h */; };
		0C6631A41D8E50A300987867 /* exception.h in Copy Util Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3D316D208A900E43D7B /* exception.h */; };
		0C6631A51D8E50A300987867 /* glutil.h in Copy Util Headers */ = {isa = PBXBuildFile; fileRef = 0C21E5EB18C2AC99009E508D /* glutil.h */; };
		0C6631A61D8E50A300987867 /* logger.h in Copy Util Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3D516D208A900E43D7B /* logger.h */; };
		0C6631A71D8E50A300987867 /* util.h in Copy Util Headers */ = {isa = PBXBuildFile; fileRef = 0C50D3D916D208A900E43D7B /* util.h */; };
		0C6631A91D8E50E100987867 /* zge.h in Copy Umbrella Headers */ = {isa = PBXBuildFile; fileRef = 0C50D25A16D2089C00E43D7B /* zge.h */; };
		0C6631AA1D8E50E300987867 /* zge.pch in Copy Umbrella Headers */ = {isa = PBXBuildFile; fileRef = 0CF7E21A161C010F00105F7C /* zge.pch */; };
		0C69589419F3532100208B27 /* text_node.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C69589219F3532100208B27 /* text_node.cpp */; };
		0C69589819F3874700208B27 /* glyph.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C69589619F3874700208B27 /* glyph.cpp */; };
		0C71922E1A80070900A2073A /* line.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C71922C1A80070900A2073A /* line.cpp */; };
		0C91834E1B731BB200ED9A83 /* plane.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0C91834C1B731BB200ED9A83 /* plane.cpp */; };
		0C984AB120467B78000BF01C /* libSDL2_image-2.0.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0C984AB020467B78000BF01C /* libSDL2_image-2.0.0.dylib */; };
		0CA36B3D19F20B17003543FE /* font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CA36B3B19F20B17003543FE /* font.cpp */; };
		0CB816871D8E533E00F90A92 /* libSDL2-2.0.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CB816861D8E533E00F90A92 /* libSDL2-2.0.0.dylib */; };
		0CB8168D1D8E7C5100F90A92 /* lib3ds-1.3.0.0.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CB8168C1D8E7C5100F90A92 /* lib3ds-1.3.0.0.dylib */; };
		0CBD3F1320F16DF8000D6E3E /* libfreetype.6.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 0CBD3F1220F16DF8000D6E3E /* libfreetype.6.dylib */; };
		0CD4858E1BF8633600AD5659 /* graphics_buffer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CD4858D1BF8633600AD5659 /* graphics_buffer.cpp */; };
		0CE0A6BF19F8C81900AA119A /* describable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE0A6BE19F8C81900AA119A /* describable.cpp */; };
		0CE70A9E1A5E2C4800663A32 /* vertex.vsh.h in Resources */ = {isa = PBXBuildFile; fileRef = 0CE70A9D1A5E2C4800663A32 /* vertex.vsh.h */; };
		0CE70AA11A5E2C5100663A32 /* fragment.fsh.h in Resources */ = {isa = PBXBuildFile; fileRef = 0CE70AA01A5E2C5100663A32 /* fragment.fsh.h */; };
		0CE99E481A01EC36009DF9BB /* types.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE99E471A01EC36009DF9BB /* types.cpp */; };
		0CE9FF971A845832001B19EE /* box_layout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0CE9FF951A845832001B19EE /* box_layout.cpp */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		0C6631171D8E4E6700987867 /* Copy Audio Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/audio;
			dstSubfolderSpec = 1;
			files = (
				0C66315C1D8E4FB500987867 /* audio_asset.h in Copy Audio Headers */,
				0C66315D1D8E4FB500987867 /* audio_manager.h in Copy Audio Headers */,
				0C66315E1D8E4FB500987867 /* sound.h in Copy Audio Headers */,
				0C66315F1D8E4FB500987867 /* sound_private.h in Copy Audio Headers */,
			);
			name = "Copy Audio Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C6631601D8E4FC000987867 /* Copy Contrib Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/contrib;
			dstSubfolderSpec = 1;
			files = (
				0C6631611D8E4FD500987867 /* 3dcamera.h in Copy Contrib Headers */,
				0C6631621D8E4FD500987867 /* camera_controller.h in Copy Contrib Headers */,
				0C6631631D8E4FD500987867 /* cube.h in Copy Contrib Headers */,
				0C6631641D8E4FD500987867 /* box_layout.h in Copy Contrib Headers */,
				0C6631651D8E4FD500987867 /* line.h in Copy Contrib Headers */,
				0C6631661D8E4FD500987867 /* orthocamera.h in Copy Contrib Headers */,
				0C6631671D8E4FD500987867 /* plane.h in Copy Contrib Headers */,
				0C6631681D8E4FD500987867 /* quad.h in Copy Contrib Headers */,
				0C6631691D8E4FD500987867 /* sprite_node.h in Copy Contrib Headers */,
				0C66316A1D8E4FD500987867 /* wave_audio_asset.h in Copy Contrib Headers */,
			);
			name = "Copy Contrib Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C66316B1D8E4FDE00987867 /* Copy Core Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/core;
			dstSubfolderSpec = 1;
			files = (
				0C66316C1D8E4FEE00987867 /* application.h in Copy Core Headers */,
				0C66316D1D8E4FEE00987867 /* color.h in Copy Core Headers */,
				0C66316E1D8E4FEE00987867 /* defines.h in Copy Core Headers */,
				0C66316F1D8E4FEE00987867 /* display.h in Copy Core Headers */,
				0C6631701D8E4FEE00987867 /* engine.h in Copy Core Headers */,
				0C6631711D8E4FEE00987867 /* foundation.h in Copy Core Headers */,
				0C6631721D8E4FEE00987867 /* noncopyable.h in Copy Core Headers */,
				0C6631731D8E4FEE00987867 /* observable.h in Copy Core Headers */,
				0C6631741D8E4FEE00987867 /* observable.hpp in Copy Core Headers */,
				0C6631751D8E4FEE00987867 /* resource_bundle.h in Copy Core Headers */,
				0C6631761D8E4FEE00987867 /* run_loop.h in Copy Core Headers */,
				0C6631771D8E4FEE00987867 /* schedulable.h in Copy Core Headers */,
				0C6631781D8E4FEE00987867 /* schedulable.hpp in Copy Core Headers */,
				0C6631791D8E4FEE00987867 /* timer.h in Copy Core Headers */,
				0C66317A1D8E4FEE00987867 /* types.h in Copy Core Headers */,
			);
			name = "Copy Core Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C66317B1D8E4FF800987867 /* Copy Math Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/math;
			dstSubfolderSpec = 1;
			files = (
				0C66317C1D8E500800987867 /* constants.h in Copy Math Headers */,
				0C66317D1D8E500800987867 /* matrix.h in Copy Math Headers */,
				0C66317E1D8E500800987867 /* vector.h in Copy Math Headers */,
				0C66317F1D8E500800987867 /* vector_private.h in Copy Math Headers */,
			);
			name = "Copy Math Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C6631801D8E501200987867 /* Copy Graph Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/graph;
			dstSubfolderSpec = 1;
			files = (
				0C6631811D8E502800987867 /* action.h in Copy Graph Headers */,
				0C6631821D8E502800987867 /* geometry.h in Copy Graph Headers */,
				0C6631831D8E502800987867 /* layout.h in Copy Graph Headers */,
				0C6631841D8E502800987867 /* material.h in Copy Graph Headers */,
				0C6631851D8E502800987867 /* model.h in Copy Graph Headers */,
				0C6631861D8E502800987867 /* node.h in Copy Graph Headers */,
				0C6631871D8E502800987867 /* scene.h in Copy Graph Headers */,
			);
			name = "Copy Graph Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C6631881D8E503400987867 /* Copy Input Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/input;
			dstSubfolderSpec = 1;
			files = (
				0C6631891D8E505000987867 /* event.h in Copy Input Headers */,
				0C66318A1D8E505000987867 /* input_manager.h in Copy Input Headers */,
				0C66318B1D8E505000987867 /* responder.h in Copy Input Headers */,
			);
			name = "Copy Input Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C66318C1D8E505400987867 /* Copy Renderer Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/renderer;
			dstSubfolderSpec = 1;
			files = (
				0C010DFF1DB48B0C005B6F4E /* openglext.h in Copy Renderer Headers */,
				0C66318D1D8E506800987867 /* camera.h in Copy Renderer Headers */,
				0C66318E1D8E506800987867 /* display_render_context.h in Copy Renderer Headers */,
				0C66318F1D8E506800987867 /* eagl_render_context.h in Copy Renderer Headers */,
				0C6631901D8E506800987867 /* graphics_buffer.h in Copy Renderer Headers */,
				0C6631911D8E506800987867 /* image.h in Copy Renderer Headers */,
				0C6631921D8E506800987867 /* light.h in Copy Renderer Headers */,
				0C6631931D8E506800987867 /* opengl.h in Copy Renderer Headers */,
				0C6631941D8E506800987867 /* renderable.h in Copy Renderer Headers */,
				0C6631951D8E506800987867 /* render_context.h in Copy Renderer Headers */,
				0C6631961D8E506800987867 /* render_manager.h in Copy Renderer Headers */,
				0C6631971D8E506800987867 /* shader.h in Copy Renderer Headers */,
				0C6631981D8E506800987867 /* shader_program.h in Copy Renderer Headers */,
				0C6631991D8E506800987867 /* texture.h in Copy Renderer Headers */,
				0C66319A1D8E506800987867 /* uniform.h in Copy Renderer Headers */,
				0C66319B1D8E506800987867 /* uniform.hpp in Copy Renderer Headers */,
				0C66319C1D8E506800987867 /* vertex_array.h in Copy Renderer Headers */,
			);
			name = "Copy Renderer Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C66319D1D8E506E00987867 /* Copy Text Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/text;
			dstSubfolderSpec = 1;
			files = (
				0C66319E1D8E508600987867 /* font.h in Copy Text Headers */,
				0C66319F1D8E508600987867 /* glyph.h in Copy Text Headers */,
				0C6631A01D8E508600987867 /* text_node.h in Copy Text Headers */,
			);
			name = "Copy Text Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C6631A11D8E508F00987867 /* Copy Util Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers/util;
			dstSubfolderSpec = 1;
			files = (
				0C6631A21D8E50A300987867 /* data.h in Copy Util Headers */,
				0C6631A31D8E50A300987867 /* describable.h in Copy Util Headers */,
				0C6631A41D8E50A300987867 /* exception.h in Copy Util Headers */,
				0C6631A51D8E50A300987867 /* glutil.h in Copy Util Headers */,
				0C6631A61D8E50A300987867 /* logger.h in Copy Util Headers */,
				0C6631A71D8E50A300987867 /* util.h in Copy Util Headers */,
			);
			name = "Copy Util Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
		0C6631A81D8E50D000987867 /* Copy Umbrella Headers */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = Headers;
			dstSubfolderSpec = 1;
			files = (
				0C6631A91D8E50E100987867 /* zge.h in Copy Umbrella Headers */,
				0C6631AA1D8E50E300987867 /* zge.pch in Copy Umbrella Headers */,
			);
			name = "Copy Umbrella Headers";
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		0C010DFA1DB4875E005B6F4E /* openglext.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = openglext.cpp; sourceTree = "<group>"; };
		0C010DFB1DB4875E005B6F4E /* openglext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = openglext.h; sourceTree = "<group>"; };
		0C06349F19D26DE100832237 /* schedulable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = schedulable.hpp; sourceTree = "<group>"; };
		0C0634A219D27E8700832237 /* schedulable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = schedulable.cpp; sourceTree = "<group>"; };
		0C064489177029CC004AAA20 /* opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = opengl.h; sourceTree = "<group>"; };
		0C07BD7317C0496A00C38084 /* color.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = color.cpp; sourceTree = "<group>"; };
		0C07BD7417C0496A00C38084 /* color.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = color.h; sourceTree = "<group>"; };
		0C07D5C2199730910020B332 /* SDL_image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_image.h; sourceTree = "<group>"; };
		0C0D7B0318C4100500021CD6 /* Array */ = {isa = PBXFileReference; lastKnownFileType = text; path = Array; sourceTree = "<group>"; };
		0C0D7B0418C4100500021CD6 /* Cholesky */ = {isa = PBXFileReference; lastKnownFileType = text; path = Cholesky; sourceTree = "<group>"; };
		0C0D7B0518C4100500021CD6 /* CholmodSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = CholmodSupport; sourceTree = "<group>"; };
		0C0D7B0618C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B0718C4100500021CD6 /* Core */ = {isa = PBXFileReference; lastKnownFileType = text; path = Core; sourceTree = "<group>"; };
		0C0D7B0818C4100500021CD6 /* Dense */ = {isa = PBXFileReference; lastKnownFileType = text; path = Dense; sourceTree = "<group>"; };
		0C0D7B0918C4100500021CD6 /* Eigen */ = {isa = PBXFileReference; lastKnownFileType = text; path = Eigen; sourceTree = "<group>"; };
		0C0D7B0A18C4100500021CD6 /* Eigen2Support */ = {isa = PBXFileReference; lastKnownFileType = text; path = Eigen2Support; sourceTree = "<group>"; };
		0C0D7B0B18C4100500021CD6 /* Eigenvalues */ = {isa = PBXFileReference; lastKnownFileType = text; path = Eigenvalues; sourceTree = "<group>"; };
		0C0D7B0C18C4100500021CD6 /* Geometry */ = {isa = PBXFileReference; lastKnownFileType = text; path = Geometry; sourceTree = "<group>"; };
		0C0D7B0D18C4100500021CD6 /* Householder */ = {isa = PBXFileReference; lastKnownFileType = text; path = Householder; sourceTree = "<group>"; };
		0C0D7B0E18C4100500021CD6 /* IterativeLinearSolvers */ = {isa = PBXFileReference; lastKnownFileType = text; path = IterativeLinearSolvers; sourceTree = "<group>"; };
		0C0D7B0F18C4100500021CD6 /* Jacobi */ = {isa = PBXFileReference; lastKnownFileType = text; path = Jacobi; sourceTree = "<group>"; };
		0C0D7B1018C4100500021CD6 /* LeastSquares */ = {isa = PBXFileReference; lastKnownFileType = text; path = LeastSquares; sourceTree = "<group>"; };
		0C0D7B1118C4100500021CD6 /* LU */ = {isa = PBXFileReference; lastKnownFileType = text; path = LU; sourceTree = "<group>"; };
		0C0D7B1218C4100500021CD6 /* MetisSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = MetisSupport; sourceTree = "<group>"; };
		0C0D7B1318C4100500021CD6 /* OrderingMethods */ = {isa = PBXFileReference; lastKnownFileType = text; path = OrderingMethods; sourceTree = "<group>"; };
		0C0D7B1418C4100500021CD6 /* PardisoSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = PardisoSupport; sourceTree = "<group>"; };
		0C0D7B1518C4100500021CD6 /* PaStiXSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = PaStiXSupport; sourceTree = "<group>"; };
		0C0D7B1618C4100500021CD6 /* QR */ = {isa = PBXFileReference; lastKnownFileType = text; path = QR; sourceTree = "<group>"; };
		0C0D7B1718C4100500021CD6 /* QtAlignedMalloc */ = {isa = PBXFileReference; lastKnownFileType = text; path = QtAlignedMalloc; sourceTree = "<group>"; };
		0C0D7B1818C4100500021CD6 /* Sparse */ = {isa = PBXFileReference; lastKnownFileType = text; path = Sparse; sourceTree = "<group>"; };
		0C0D7B1918C4100500021CD6 /* SparseCholesky */ = {isa = PBXFileReference; lastKnownFileType = text; path = SparseCholesky; sourceTree = "<group>"; };
		0C0D7B1A18C4100500021CD6 /* SparseCore */ = {isa = PBXFileReference; lastKnownFileType = text; path = SparseCore; sourceTree = "<group>"; };
		0C0D7B1B18C4100500021CD6 /* SparseLU */ = {isa = PBXFileReference; lastKnownFileType = text; path = SparseLU; sourceTree = "<group>"; };
		0C0D7B1C18C4100500021CD6 /* SparseQR */ = {isa = PBXFileReference; lastKnownFileType = text; path = SparseQR; sourceTree = "<group>"; };
		0C0D7B1D18C4100500021CD6 /* SPQRSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = SPQRSupport; sourceTree = "<group>"; };
		0C0D7B2018C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B2118C4100500021CD6 /* LDLT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LDLT.h; sourceTree = "<group>"; };
		0C0D7B2218C4100500021CD6 /* LLT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLT.h; sourceTree = "<group>"; };
		0C0D7B2318C4100500021CD6 /* LLT_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LLT_MKL.h; sourceTree = "<group>"; };
		0C0D7B2518C4100500021CD6 /* CholmodSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CholmodSupport.h; sourceTree = "<group>"; };
		0C0D7B2618C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B2718C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B2B18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B2C18C4100500021CD6 /* Complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Complex.h; sourceTree = "<group>"; };
		0C0D7B2D18C4100500021CD6 /* PacketMath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PacketMath.h; sourceTree = "<group>"; };
		0C0D7B2E18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B3018C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B3118C4100500021CD6 /* Settings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Settings.h; sourceTree = "<group>"; };
		0C0D7B3318C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B3418C4100500021CD6 /* Complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Complex.h; sourceTree = "<group>"; };
		0C0D7B3518C4100500021CD6 /* PacketMath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PacketMath.h; sourceTree = "<group>"; };
		0C0D7B3718C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B3818C4100500021CD6 /* Complex.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Complex.h; sourceTree = "<group>"; };
		0C0D7B3918C4100500021CD6 /* MathFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathFunctions.h; sourceTree = "<group>"; };
		0C0D7B3A18C4100500021CD6 /* PacketMath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PacketMath.h; sourceTree = "<group>"; };
		0C0D7B3B18C4100500021CD6 /* Array.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Array.h; sourceTree = "<group>"; };
		0C0D7B3C18C4100500021CD6 /* ArrayBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrayBase.h; sourceTree = "<group>"; };
		0C0D7B3D18C4100500021CD6 /* ArrayWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrayWrapper.h; sourceTree = "<group>"; };
		0C0D7B3E18C4100500021CD6 /* Assign.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Assign.h; sourceTree = "<group>"; };
		0C0D7B3F18C4100500021CD6 /* Assign_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Assign_MKL.h; sourceTree = "<group>"; };
		0C0D7B4018C4100500021CD6 /* BandMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BandMatrix.h; sourceTree = "<group>"; };
		0C0D7B4118C4100500021CD6 /* Block.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Block.h; sourceTree = "<group>"; };
		0C0D7B4218C4100500021CD6 /* BooleanRedux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BooleanRedux.h; sourceTree = "<group>"; };
		0C0D7B4318C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B4418C4100500021CD6 /* CommaInitializer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommaInitializer.h; sourceTree = "<group>"; };
		0C0D7B4518C4100500021CD6 /* CoreIterators.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoreIterators.h; sourceTree = "<group>"; };
		0C0D7B4618C4100500021CD6 /* CwiseBinaryOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CwiseBinaryOp.h; sourceTree = "<group>"; };
		0C0D7B4718C4100500021CD6 /* CwiseNullaryOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CwiseNullaryOp.h; sourceTree = "<group>"; };
		0C0D7B4818C4100500021CD6 /* CwiseUnaryOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CwiseUnaryOp.h; sourceTree = "<group>"; };
		0C0D7B4918C4100500021CD6 /* CwiseUnaryView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CwiseUnaryView.h; sourceTree = "<group>"; };
		0C0D7B4A18C4100500021CD6 /* DenseBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DenseBase.h; sourceTree = "<group>"; };
		0C0D7B4B18C4100500021CD6 /* DenseCoeffsBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DenseCoeffsBase.h; sourceTree = "<group>"; };
		0C0D7B4C18C4100500021CD6 /* DenseStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DenseStorage.h; sourceTree = "<group>"; };
		0C0D7B4D18C4100500021CD6 /* Diagonal.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Diagonal.h; sourceTree = "<group>"; };
		0C0D7B4E18C4100500021CD6 /* DiagonalMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiagonalMatrix.h; sourceTree = "<group>"; };
		0C0D7B4F18C4100500021CD6 /* DiagonalProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DiagonalProduct.h; sourceTree = "<group>"; };
		0C0D7B5018C4100500021CD6 /* Dot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Dot.h; sourceTree = "<group>"; };
		0C0D7B5118C4100500021CD6 /* EigenBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EigenBase.h; sourceTree = "<group>"; };
		0C0D7B5218C4100500021CD6 /* Flagged.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Flagged.h; sourceTree = "<group>"; };
		0C0D7B5318C4100500021CD6 /* ForceAlignedAccess.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ForceAlignedAccess.h; sourceTree = "<group>"; };
		0C0D7B5418C4100500021CD6 /* Functors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Functors.h; sourceTree = "<group>"; };
		0C0D7B5518C4100500021CD6 /* Fuzzy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Fuzzy.h; sourceTree = "<group>"; };
		0C0D7B5618C4100500021CD6 /* GeneralProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralProduct.h; sourceTree = "<group>"; };
		0C0D7B5718C4100500021CD6 /* GenericPacketMath.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GenericPacketMath.h; sourceTree = "<group>"; };
		0C0D7B5818C4100500021CD6 /* GlobalFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GlobalFunctions.h; sourceTree = "<group>"; };
		0C0D7B5918C4100500021CD6 /* IO.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IO.h; sourceTree = "<group>"; };
		0C0D7B5A18C4100500021CD6 /* Map.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Map.h; sourceTree = "<group>"; };
		0C0D7B5B18C4100500021CD6 /* MapBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MapBase.h; sourceTree = "<group>"; };
		0C0D7B5C18C4100500021CD6 /* MathFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathFunctions.h; sourceTree = "<group>"; };
		0C0D7B5D18C4100500021CD6 /* Matrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Matrix.h; sourceTree = "<group>"; };
		0C0D7B5E18C4100500021CD6 /* MatrixBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MatrixBase.h; sourceTree = "<group>"; };
		0C0D7B5F18C4100500021CD6 /* NestByValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NestByValue.h; sourceTree = "<group>"; };
		0C0D7B6018C4100500021CD6 /* NoAlias.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NoAlias.h; sourceTree = "<group>"; };
		0C0D7B6118C4100500021CD6 /* NumTraits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NumTraits.h; sourceTree = "<group>"; };
		0C0D7B6218C4100500021CD6 /* PermutationMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PermutationMatrix.h; sourceTree = "<group>"; };
		0C0D7B6318C4100500021CD6 /* PlainObjectBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlainObjectBase.h; sourceTree = "<group>"; };
		0C0D7B6418C4100500021CD6 /* ProductBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProductBase.h; sourceTree = "<group>"; };
		0C0D7B6618C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B6718C4100500021CD6 /* CoeffBasedProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CoeffBasedProduct.h; sourceTree = "<group>"; };
		0C0D7B6818C4100500021CD6 /* GeneralBlockPanelKernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralBlockPanelKernel.h; sourceTree = "<group>"; };
		0C0D7B6918C4100500021CD6 /* GeneralMatrixMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralMatrixMatrix.h; sourceTree = "<group>"; };
		0C0D7B6A18C4100500021CD6 /* GeneralMatrixMatrix_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralMatrixMatrix_MKL.h; sourceTree = "<group>"; };
		0C0D7B6B18C4100500021CD6 /* GeneralMatrixMatrixTriangular.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralMatrixMatrixTriangular.h; sourceTree = "<group>"; };
		0C0D7B6C18C4100500021CD6 /* GeneralMatrixMatrixTriangular_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralMatrixMatrixTriangular_MKL.h; sourceTree = "<group>"; };
		0C0D7B6D18C4100500021CD6 /* GeneralMatrixVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralMatrixVector.h; sourceTree = "<group>"; };
		0C0D7B6E18C4100500021CD6 /* GeneralMatrixVector_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralMatrixVector_MKL.h; sourceTree = "<group>"; };
		0C0D7B6F18C4100500021CD6 /* Parallelizer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Parallelizer.h; sourceTree = "<group>"; };
		0C0D7B7018C4100500021CD6 /* SelfadjointMatrixMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfadjointMatrixMatrix.h; sourceTree = "<group>"; };
		0C0D7B7118C4100500021CD6 /* SelfadjointMatrixMatrix_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfadjointMatrixMatrix_MKL.h; sourceTree = "<group>"; };
		0C0D7B7218C4100500021CD6 /* SelfadjointMatrixVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfadjointMatrixVector.h; sourceTree = "<group>"; };
		0C0D7B7318C4100500021CD6 /* SelfadjointMatrixVector_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfadjointMatrixVector_MKL.h; sourceTree = "<group>"; };
		0C0D7B7418C4100500021CD6 /* SelfadjointProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfadjointProduct.h; sourceTree = "<group>"; };
		0C0D7B7518C4100500021CD6 /* SelfadjointRank2Update.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfadjointRank2Update.h; sourceTree = "<group>"; };
		0C0D7B7618C4100500021CD6 /* TriangularMatrixMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularMatrixMatrix.h; sourceTree = "<group>"; };
		0C0D7B7718C4100500021CD6 /* TriangularMatrixMatrix_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularMatrixMatrix_MKL.h; sourceTree = "<group>"; };
		0C0D7B7818C4100500021CD6 /* TriangularMatrixVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularMatrixVector.h; sourceTree = "<group>"; };
		0C0D7B7918C4100500021CD6 /* TriangularMatrixVector_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularMatrixVector_MKL.h; sourceTree = "<group>"; };
		0C0D7B7A18C4100500021CD6 /* TriangularSolverMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularSolverMatrix.h; sourceTree = "<group>"; };
		0C0D7B7B18C4100500021CD6 /* TriangularSolverMatrix_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularSolverMatrix_MKL.h; sourceTree = "<group>"; };
		0C0D7B7C18C4100500021CD6 /* TriangularSolverVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularSolverVector.h; sourceTree = "<group>"; };
		0C0D7B7D18C4100500021CD6 /* Random.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Random.h; sourceTree = "<group>"; };
		0C0D7B7E18C4100500021CD6 /* Redux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Redux.h; sourceTree = "<group>"; };
		0C0D7B7F18C4100500021CD6 /* Ref.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ref.h; sourceTree = "<group>"; };
		0C0D7B8018C4100500021CD6 /* Replicate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Replicate.h; sourceTree = "<group>"; };
		0C0D7B8118C4100500021CD6 /* ReturnByValue.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReturnByValue.h; sourceTree = "<group>"; };
		0C0D7B8218C4100500021CD6 /* Reverse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Reverse.h; sourceTree = "<group>"; };
		0C0D7B8318C4100500021CD6 /* Select.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Select.h; sourceTree = "<group>"; };
		0C0D7B8418C4100500021CD6 /* SelfAdjointView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfAdjointView.h; sourceTree = "<group>"; };
		0C0D7B8518C4100500021CD6 /* SelfCwiseBinaryOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfCwiseBinaryOp.h; sourceTree = "<group>"; };
		0C0D7B8618C4100500021CD6 /* SolveTriangular.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SolveTriangular.h; sourceTree = "<group>"; };
		0C0D7B8718C4100500021CD6 /* StableNorm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StableNorm.h; sourceTree = "<group>"; };
		0C0D7B8818C4100500021CD6 /* Stride.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Stride.h; sourceTree = "<group>"; };
		0C0D7B8918C4100500021CD6 /* Swap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Swap.h; sourceTree = "<group>"; };
		0C0D7B8A18C4100500021CD6 /* Transpose.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Transpose.h; sourceTree = "<group>"; };
		0C0D7B8B18C4100500021CD6 /* Transpositions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Transpositions.h; sourceTree = "<group>"; };
		0C0D7B8C18C4100500021CD6 /* TriangularMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularMatrix.h; sourceTree = "<group>"; };
		0C0D7B8E18C4100500021CD6 /* BlasUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BlasUtil.h; sourceTree = "<group>"; };
		0C0D7B8F18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7B9018C4100500021CD6 /* Constants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Constants.h; sourceTree = "<group>"; };
		0C0D7B9118C4100500021CD6 /* DisableStupidWarnings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DisableStupidWarnings.h; sourceTree = "<group>"; };
		0C0D7B9218C4100500021CD6 /* ForwardDeclarations.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ForwardDeclarations.h; sourceTree = "<group>"; };
		0C0D7B9318C4100500021CD6 /* Macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Macros.h; sourceTree = "<group>"; };
		0C0D7B9418C4100500021CD6 /* Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Memory.h; sourceTree = "<group>"; };
		0C0D7B9518C4100500021CD6 /* Meta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Meta.h; sourceTree = "<group>"; };
		0C0D7B9618C4100500021CD6 /* MKL_support.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MKL_support.h; sourceTree = "<group>"; };
		0C0D7B9718C4100500021CD6 /* NonMPL2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NonMPL2.h; sourceTree = "<group>"; };
		0C0D7B9818C4100500021CD6 /* ReenableStupidWarnings.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ReenableStupidWarnings.h; sourceTree = "<group>"; };
		0C0D7B9918C4100500021CD6 /* StaticAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StaticAssert.h; sourceTree = "<group>"; };
		0C0D7B9A18C4100500021CD6 /* XprHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = XprHelper.h; sourceTree = "<group>"; };
		0C0D7B9B18C4100500021CD6 /* VectorBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VectorBlock.h; sourceTree = "<group>"; };
		0C0D7B9C18C4100500021CD6 /* VectorwiseOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VectorwiseOp.h; sourceTree = "<group>"; };
		0C0D7B9D18C4100500021CD6 /* Visitor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Visitor.h; sourceTree = "<group>"; };
		0C0D7B9F18C4100500021CD6 /* Block.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Block.h; sourceTree = "<group>"; };
		0C0D7BA018C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BA118C4100500021CD6 /* Cwise.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Cwise.h; sourceTree = "<group>"; };
		0C0D7BA218C4100500021CD6 /* CwiseOperators.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CwiseOperators.h; sourceTree = "<group>"; };
		0C0D7BA418C4100500021CD6 /* AlignedBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlignedBox.h; sourceTree = "<group>"; };
		0C0D7BA518C4100500021CD6 /* All.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = All.h; sourceTree = "<group>"; };
		0C0D7BA618C4100500021CD6 /* AngleAxis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AngleAxis.h; sourceTree = "<group>"; };
		0C0D7BA718C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BA818C4100500021CD6 /* Hyperplane.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Hyperplane.h; sourceTree = "<group>"; };
		0C0D7BA918C4100500021CD6 /* ParametrizedLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParametrizedLine.h; sourceTree = "<group>"; };
		0C0D7BAA18C4100500021CD6 /* Quaternion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Quaternion.h; sourceTree = "<group>"; };
		0C0D7BAB18C4100500021CD6 /* Rotation2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Rotation2D.h; sourceTree = "<group>"; };
		0C0D7BAC18C4100500021CD6 /* RotationBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RotationBase.h; sourceTree = "<group>"; };
		0C0D7BAD18C4100500021CD6 /* Scaling.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Scaling.h; sourceTree = "<group>"; };
		0C0D7BAE18C4100500021CD6 /* Transform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Transform.h; sourceTree = "<group>"; };
		0C0D7BAF18C4100500021CD6 /* Translation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Translation.h; sourceTree = "<group>"; };
		0C0D7BB018C4100500021CD6 /* Lazy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Lazy.h; sourceTree = "<group>"; };
		0C0D7BB118C4100500021CD6 /* LeastSquares.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LeastSquares.h; sourceTree = "<group>"; };
		0C0D7BB218C4100500021CD6 /* LU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LU.h; sourceTree = "<group>"; };
		0C0D7BB318C4100500021CD6 /* Macros.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Macros.h; sourceTree = "<group>"; };
		0C0D7BB418C4100500021CD6 /* MathFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MathFunctions.h; sourceTree = "<group>"; };
		0C0D7BB518C4100500021CD6 /* Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Memory.h; sourceTree = "<group>"; };
		0C0D7BB618C4100500021CD6 /* Meta.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Meta.h; sourceTree = "<group>"; };
		0C0D7BB718C4100500021CD6 /* Minor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Minor.h; sourceTree = "<group>"; };
		0C0D7BB818C4100500021CD6 /* QR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QR.h; sourceTree = "<group>"; };
		0C0D7BB918C4100500021CD6 /* SVD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SVD.h; sourceTree = "<group>"; };
		0C0D7BBA18C4100500021CD6 /* TriangularSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularSolver.h; sourceTree = "<group>"; };
		0C0D7BBB18C4100500021CD6 /* VectorBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VectorBlock.h; sourceTree = "<group>"; };
		0C0D7BBD18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BBE18C4100500021CD6 /* ComplexEigenSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComplexEigenSolver.h; sourceTree = "<group>"; };
		0C0D7BBF18C4100500021CD6 /* ComplexSchur.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComplexSchur.h; sourceTree = "<group>"; };
		0C0D7BC018C4100500021CD6 /* ComplexSchur_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ComplexSchur_MKL.h; sourceTree = "<group>"; };
		0C0D7BC118C4100500021CD6 /* EigenSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EigenSolver.h; sourceTree = "<group>"; };
		0C0D7BC218C4100500021CD6 /* GeneralizedEigenSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralizedEigenSolver.h; sourceTree = "<group>"; };
		0C0D7BC318C4100500021CD6 /* GeneralizedSelfAdjointEigenSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneralizedSelfAdjointEigenSolver.h; sourceTree = "<group>"; };
		0C0D7BC418C4100500021CD6 /* HessenbergDecomposition.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HessenbergDecomposition.h; sourceTree = "<group>"; };
		0C0D7BC518C4100500021CD6 /* MatrixBaseEigenvalues.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MatrixBaseEigenvalues.h; sourceTree = "<group>"; };
		0C0D7BC618C4100500021CD6 /* RealQZ.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RealQZ.h; sourceTree = "<group>"; };
		0C0D7BC718C4100500021CD6 /* RealSchur.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RealSchur.h; sourceTree = "<group>"; };
		0C0D7BC818C4100500021CD6 /* RealSchur_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RealSchur_MKL.h; sourceTree = "<group>"; };
		0C0D7BC918C4100500021CD6 /* SelfAdjointEigenSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfAdjointEigenSolver.h; sourceTree = "<group>"; };
		0C0D7BCA18C4100500021CD6 /* SelfAdjointEigenSolver_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SelfAdjointEigenSolver_MKL.h; sourceTree = "<group>"; };
		0C0D7BCB18C4100500021CD6 /* Tridiagonalization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Tridiagonalization.h; sourceTree = "<group>"; };
		0C0D7BCD18C4100500021CD6 /* AlignedBox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AlignedBox.h; sourceTree = "<group>"; };
		0C0D7BCE18C4100500021CD6 /* AngleAxis.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AngleAxis.h; sourceTree = "<group>"; };
		0C0D7BD018C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BD118C4100500021CD6 /* Geometry_SSE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Geometry_SSE.h; sourceTree = "<group>"; };
		0C0D7BD218C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BD318C4100500021CD6 /* EulerAngles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = EulerAngles.h; sourceTree = "<group>"; };
		0C0D7BD418C4100500021CD6 /* Homogeneous.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Homogeneous.h; sourceTree = "<group>"; };
		0C0D7BD518C4100500021CD6 /* Hyperplane.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Hyperplane.h; sourceTree = "<group>"; };
		0C0D7BD618C4100500021CD6 /* OrthoMethods.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = OrthoMethods.h; sourceTree = "<group>"; };
		0C0D7BD718C4100500021CD6 /* ParametrizedLine.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ParametrizedLine.h; sourceTree = "<group>"; };
		0C0D7BD818C4100500021CD6 /* Quaternion.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Quaternion.h; sourceTree = "<group>"; };
		0C0D7BD918C4100500021CD6 /* Rotation2D.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Rotation2D.h; sourceTree = "<group>"; };
		0C0D7BDA18C4100500021CD6 /* RotationBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RotationBase.h; sourceTree = "<group>"; };
		0C0D7BDB18C4100500021CD6 /* Scaling.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Scaling.h; sourceTree = "<group>"; };
		0C0D7BDC18C4100500021CD6 /* Transform.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Transform.h; sourceTree = "<group>"; };
		0C0D7BDD18C4100500021CD6 /* Translation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Translation.h; sourceTree = "<group>"; };
		0C0D7BDE18C4100500021CD6 /* Umeyama.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Umeyama.h; sourceTree = "<group>"; };
		0C0D7BE018C4100500021CD6 /* BlockHouseholder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BlockHouseholder.h; sourceTree = "<group>"; };
		0C0D7BE118C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BE218C4100500021CD6 /* Householder.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Householder.h; sourceTree = "<group>"; };
		0C0D7BE318C4100500021CD6 /* HouseholderSequence.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HouseholderSequence.h; sourceTree = "<group>"; };
		0C0D7BE518C4100500021CD6 /* BasicPreconditioners.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BasicPreconditioners.h; sourceTree = "<group>"; };
		0C0D7BE618C4100500021CD6 /* BiCGSTAB.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BiCGSTAB.h; sourceTree = "<group>"; };
		0C0D7BE718C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BE818C4100500021CD6 /* ConjugateGradient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConjugateGradient.h; sourceTree = "<group>"; };
		0C0D7BE918C4100500021CD6 /* IncompleteLUT.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IncompleteLUT.h; sourceTree = "<group>"; };
		0C0D7BEA18C4100500021CD6 /* IterativeSolverBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = IterativeSolverBase.h; sourceTree = "<group>"; };
		0C0D7BEC18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BED18C4100500021CD6 /* Jacobi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Jacobi.h; sourceTree = "<group>"; };
		0C0D7BF018C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BF118C4100500021CD6 /* Inverse_SSE.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Inverse_SSE.h; sourceTree = "<group>"; };
		0C0D7BF218C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BF318C4100500021CD6 /* Determinant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Determinant.h; sourceTree = "<group>"; };
		0C0D7BF418C4100500021CD6 /* FullPivLU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FullPivLU.h; sourceTree = "<group>"; };
		0C0D7BF518C4100500021CD6 /* Inverse.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Inverse.h; sourceTree = "<group>"; };
		0C0D7BF618C4100500021CD6 /* PartialPivLU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PartialPivLU.h; sourceTree = "<group>"; };
		0C0D7BF718C4100500021CD6 /* PartialPivLU_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PartialPivLU_MKL.h; sourceTree = "<group>"; };
		0C0D7BF918C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BFA18C4100500021CD6 /* MetisSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MetisSupport.h; sourceTree = "<group>"; };
		0C0D7BFC18C4100500021CD6 /* blas.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = blas.h; sourceTree = "<group>"; };
		0C0D7BFD18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7BFE18C4100500021CD6 /* Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
		0C0D7BFF18C4100500021CD6 /* Kernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Kernel.h; sourceTree = "<group>"; };
		0C0D7C0018C4100500021CD6 /* Solve.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Solve.h; sourceTree = "<group>"; };
		0C0D7C0118C4100500021CD6 /* SparseSolve.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseSolve.h; sourceTree = "<group>"; };
		0C0D7C0318C4100500021CD6 /* Amd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Amd.h; sourceTree = "<group>"; };
		0C0D7C0418C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C0518C4100500021CD6 /* Eigen_Colamd.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Eigen_Colamd.h; sourceTree = "<group>"; };
		0C0D7C0618C4100500021CD6 /* Ordering.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Ordering.h; sourceTree = "<group>"; };
		0C0D7C0818C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C0918C4100500021CD6 /* PardisoSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PardisoSupport.h; sourceTree = "<group>"; };
		0C0D7C0B18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C0C18C4100500021CD6 /* PaStiXSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PaStiXSupport.h; sourceTree = "<group>"; };
		0C0D7C0E18C4100500021CD6 /* ArrayCwiseBinaryOps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrayCwiseBinaryOps.h; sourceTree = "<group>"; };
		0C0D7C0F18C4100500021CD6 /* ArrayCwiseUnaryOps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ArrayCwiseUnaryOps.h; sourceTree = "<group>"; };
		0C0D7C1018C4100500021CD6 /* BlockMethods.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BlockMethods.h; sourceTree = "<group>"; };
		0C0D7C1118C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C1218C4100500021CD6 /* CommonCwiseBinaryOps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonCwiseBinaryOps.h; sourceTree = "<group>"; };
		0C0D7C1318C4100500021CD6 /* CommonCwiseUnaryOps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CommonCwiseUnaryOps.h; sourceTree = "<group>"; };
		0C0D7C1418C4100500021CD6 /* MatrixCwiseBinaryOps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MatrixCwiseBinaryOps.h; sourceTree = "<group>"; };
		0C0D7C1518C4100500021CD6 /* MatrixCwiseUnaryOps.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MatrixCwiseUnaryOps.h; sourceTree = "<group>"; };
		0C0D7C1718C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C1818C4100500021CD6 /* ColPivHouseholderQR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColPivHouseholderQR.h; sourceTree = "<group>"; };
		0C0D7C1918C4100500021CD6 /* ColPivHouseholderQR_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ColPivHouseholderQR_MKL.h; sourceTree = "<group>"; };
		0C0D7C1A18C4100500021CD6 /* FullPivHouseholderQR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FullPivHouseholderQR.h; sourceTree = "<group>"; };
		0C0D7C1B18C4100500021CD6 /* HouseholderQR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HouseholderQR.h; sourceTree = "<group>"; };
		0C0D7C1C18C4100500021CD6 /* HouseholderQR_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HouseholderQR_MKL.h; sourceTree = "<group>"; };
		0C0D7C1E18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C1F18C4100500021CD6 /* SimplicialCholesky.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimplicialCholesky.h; sourceTree = "<group>"; };
		0C0D7C2018C4100500021CD6 /* SimplicialCholesky_impl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SimplicialCholesky_impl.h; sourceTree = "<group>"; };
		0C0D7C2218C4100500021CD6 /* AmbiVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AmbiVector.h; sourceTree = "<group>"; };
		0C0D7C2318C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C2418C4100500021CD6 /* CompressedStorage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CompressedStorage.h; sourceTree = "<group>"; };
		0C0D7C2518C4100500021CD6 /* ConservativeSparseSparseProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ConservativeSparseSparseProduct.h; sourceTree = "<group>"; };
		0C0D7C2618C4100500021CD6 /* MappedSparseMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MappedSparseMatrix.h; sourceTree = "<group>"; };
		0C0D7C2718C4100500021CD6 /* SparseBlock.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseBlock.h; sourceTree = "<group>"; };
		0C0D7C2818C4100500021CD6 /* SparseColEtree.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseColEtree.h; sourceTree = "<group>"; };
		0C0D7C2918C4100500021CD6 /* SparseCwiseBinaryOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseCwiseBinaryOp.h; sourceTree = "<group>"; };
		0C0D7C2A18C4100500021CD6 /* SparseCwiseUnaryOp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseCwiseUnaryOp.h; sourceTree = "<group>"; };
		0C0D7C2B18C4100500021CD6 /* SparseDenseProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseDenseProduct.h; sourceTree = "<group>"; };
		0C0D7C2C18C4100500021CD6 /* SparseDiagonalProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseDiagonalProduct.h; sourceTree = "<group>"; };
		0C0D7C2D18C4100500021CD6 /* SparseDot.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseDot.h; sourceTree = "<group>"; };
		0C0D7C2E18C4100500021CD6 /* SparseFuzzy.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseFuzzy.h; sourceTree = "<group>"; };
		0C0D7C2F18C4100500021CD6 /* SparseMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseMatrix.h; sourceTree = "<group>"; };
		0C0D7C3018C4100500021CD6 /* SparseMatrixBase.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseMatrixBase.h; sourceTree = "<group>"; };
		0C0D7C3118C4100500021CD6 /* SparsePermutation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparsePermutation.h; sourceTree = "<group>"; };
		0C0D7C3218C4100500021CD6 /* SparseProduct.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseProduct.h; sourceTree = "<group>"; };
		0C0D7C3318C4100500021CD6 /* SparseRedux.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseRedux.h; sourceTree = "<group>"; };
		0C0D7C3418C4100500021CD6 /* SparseSelfAdjointView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseSelfAdjointView.h; sourceTree = "<group>"; };
		0C0D7C3518C4100500021CD6 /* SparseSparseProductWithPruning.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseSparseProductWithPruning.h; sourceTree = "<group>"; };
		0C0D7C3618C4100500021CD6 /* SparseTranspose.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseTranspose.h; sourceTree = "<group>"; };
		0C0D7C3718C4100500021CD6 /* SparseTriangularView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseTriangularView.h; sourceTree = "<group>"; };
		0C0D7C3818C4100500021CD6 /* SparseUtil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseUtil.h; sourceTree = "<group>"; };
		0C0D7C3918C4100500021CD6 /* SparseVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseVector.h; sourceTree = "<group>"; };
		0C0D7C3A18C4100500021CD6 /* SparseView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseView.h; sourceTree = "<group>"; };
		0C0D7C3B18C4100500021CD6 /* TriangularSolver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TriangularSolver.h; sourceTree = "<group>"; };
		0C0D7C3D18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C3E18C4100500021CD6 /* SparseLU.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU.h; sourceTree = "<group>"; };
		0C0D7C3F18C4100500021CD6 /* SparseLU_column_bmod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_column_bmod.h; sourceTree = "<group>"; };
		0C0D7C4018C4100500021CD6 /* SparseLU_column_dfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_column_dfs.h; sourceTree = "<group>"; };
		0C0D7C4118C4100500021CD6 /* SparseLU_copy_to_ucol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_copy_to_ucol.h; sourceTree = "<group>"; };
		0C0D7C4218C4100500021CD6 /* SparseLU_gemm_kernel.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_gemm_kernel.h; sourceTree = "<group>"; };
		0C0D7C4318C4100500021CD6 /* SparseLU_heap_relax_snode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_heap_relax_snode.h; sourceTree = "<group>"; };
		0C0D7C4418C4100500021CD6 /* SparseLU_kernel_bmod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_kernel_bmod.h; sourceTree = "<group>"; };
		0C0D7C4518C4100500021CD6 /* SparseLU_Memory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_Memory.h; sourceTree = "<group>"; };
		0C0D7C4618C4100500021CD6 /* SparseLU_panel_bmod.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_panel_bmod.h; sourceTree = "<group>"; };
		0C0D7C4718C4100500021CD6 /* SparseLU_panel_dfs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_panel_dfs.h; sourceTree = "<group>"; };
		0C0D7C4818C4100500021CD6 /* SparseLU_pivotL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_pivotL.h; sourceTree = "<group>"; };
		0C0D7C4918C4100500021CD6 /* SparseLU_pruneL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_pruneL.h; sourceTree = "<group>"; };
		0C0D7C4A18C4100500021CD6 /* SparseLU_relax_snode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_relax_snode.h; sourceTree = "<group>"; };
		0C0D7C4B18C4100500021CD6 /* SparseLU_Structs.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_Structs.h; sourceTree = "<group>"; };
		0C0D7C4C18C4100500021CD6 /* SparseLU_SupernodalMatrix.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_SupernodalMatrix.h; sourceTree = "<group>"; };
		0C0D7C4D18C4100500021CD6 /* SparseLU_Utils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLU_Utils.h; sourceTree = "<group>"; };
		0C0D7C4E18C4100500021CD6 /* SparseLUImpl.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseLUImpl.h; sourceTree = "<group>"; };
		0C0D7C5018C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C5118C4100500021CD6 /* SparseQR.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SparseQR.h; sourceTree = "<group>"; };
		0C0D7C5318C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C5418C4100500021CD6 /* SuiteSparseQRSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SuiteSparseQRSupport.h; sourceTree = "<group>"; };
		0C0D7C5618C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C5718C4100500021CD6 /* details.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = details.h; sourceTree = "<group>"; };
		0C0D7C5818C4100500021CD6 /* StdDeque.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StdDeque.h; sourceTree = "<group>"; };
		0C0D7C5918C4100500021CD6 /* StdList.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StdList.h; sourceTree = "<group>"; };
		0C0D7C5A18C4100500021CD6 /* StdVector.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = StdVector.h; sourceTree = "<group>"; };
		0C0D7C5C18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C5D18C4100500021CD6 /* SuperLUSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SuperLUSupport.h; sourceTree = "<group>"; };
		0C0D7C5F18C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C6018C4100500021CD6 /* JacobiSVD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JacobiSVD.h; sourceTree = "<group>"; };
		0C0D7C6118C4100500021CD6 /* JacobiSVD_MKL.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JacobiSVD_MKL.h; sourceTree = "<group>"; };
		0C0D7C6218C4100500021CD6 /* UpperBidiagonalization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UpperBidiagonalization.h; sourceTree = "<group>"; };
		0C0D7C6418C4100500021CD6 /* CMakeLists.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = CMakeLists.txt; sourceTree = "<group>"; };
		0C0D7C6518C4100500021CD6 /* UmfPackSupport.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UmfPackSupport.h; sourceTree = "<group>"; };
		0C0D7C6618C4100500021CD6 /* StdDeque */ = {isa = PBXFileReference; lastKnownFileType = text; path = StdDeque; sourceTree = "<group>"; };
		0C0D7C6718C4100500021CD6 /* StdList */ = {isa = PBXFileReference; lastKnownFileType = text; path = StdList; sourceTree = "<group>"; };
		0C0D7C6818C4100500021CD6 /* StdVector */ = {isa = PBXFileReference; lastKnownFileType = text; path = StdVector; sourceTree = "<group>"; };
		0C0D7C6918C4100500021CD6 /* SuperLUSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = SuperLUSupport; sourceTree = "<group>"; };
		0C0D7C6A18C4100500021CD6 /* SVD */ = {isa = PBXFileReference; lastKnownFileType = text; path = SVD; sourceTree = "<group>"; };
		0C0D7C6B18C4100500021CD6 /* UmfPackSupport */ = {isa = PBXFileReference; lastKnownFileType = text; path = UmfPackSupport; sourceTree = "<group>"; };
		0C0D7C6C18C410B100021CD6 /* data.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = data.cpp; sourceTree = "<group>"; };
		0C0D7C6D18C410B100021CD6 /* data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = data.h; sourceTree = "<group>"; };
		0C10F95619D3C8800010815F /* ZGE.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ZGE.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		0C10F95919D3C8800010815F /* OSX-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "OSX-Info.plist"; sourceTree = "<group>"; };
		0C10FB7A19D3CB540010815F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = DEVELOPER_DIR; };
		0C14B94C1C1292C600BDC892 /* zprelude.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = zprelude.framework; path = "../../../Library/Developer/Xcode/DerivedData/ZGEDevelopment-ejpmgkubuadiavcruovwbmwslzqh/Build/Products/Debug/zprelude.framework"; sourceTree = "<group>"; };
		0C1C6E961A8455A8005710AA /* layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = layout.cpp; path = src/zge/graph/layout.cpp; sourceTree = SOURCE_ROOT; };
		0C1C6E971A8455A8005710AA /* layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = layout.h; path = src/zge/graph/layout.h; sourceTree = SOURCE_ROOT; };
		0C1F28B817C1C3FF00CA03C4 /* vertex_array.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vertex_array.cpp; sourceTree = "<group>"; };
		0C1F28B917C1C3FF00CA03C4 /* vertex_array.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vertex_array.h; sourceTree = "<group>"; };
		0C2167151F1B1A40004B8A16 /* SDL2_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2_image.framework; path = ../../../../../../Library/Frameworks/SDL2_image.framework; sourceTree = "<group>"; };
		0C21E5E918C2AC80009E508D /* glutil.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glutil.cpp; sourceTree = "<group>"; };
		0C21E5EB18C2AC99009E508D /* glutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glutil.h; sourceTree = "<group>"; };
		0C2B01A9176D5FE300522671 /* render_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = render_manager.cpp; sourceTree = "<group>"; };
		0C2B01AA176D5FE300522671 /* render_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = render_manager.h; sourceTree = "<group>"; };
		0C3BE7AD191B1D5F0048742B /* SDL_mixer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SDL_mixer.h; sourceTree = "<group>"; };
		0C42CBE11A5CE44500AA2566 /* iOS-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "iOS-Info.plist"; sourceTree = "<group>"; };
		0C42CBE21A5CE52900AA2566 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/OpenGLES.framework; sourceTree = DEVELOPER_DIR; };
		0C42CBEF1A5CEAD900AA2566 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/CoreFoundation.framework; sourceTree = DEVELOPER_DIR; };
		0C42CBF11A5CEAE200AA2566 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; };
		0C42CBF31A5CEB1400AA2566 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; };
		0C42CBF51A5CEB2200AA2566 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
		0C42CBF71A5CEB3B00AA2566 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; };
		0C42CBFF1A5CFCB400AA2566 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/CoreAudio.framework; sourceTree = DEVELOPER_DIR; };
		0C42CC011A5CFCD300AA2566 /* AudioUnit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioUnit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/AudioUnit.framework; sourceTree = DEVELOPER_DIR; };
		0C42CC031A5CFCE100AA2566 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; };
		0C42CC051A5CFCEA00AA2566 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
		0C42CC0B1A5CFD7C00AA2566 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.1.sdk/System/Library/Frameworks/QuartzCore.framework; sourceTree = DEVELOPER_DIR; };
		0C42CC951A5D036800AA2566 /* eagl_render_context.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = eagl_render_context.mm; sourceTree = "<group>"; };
		0C42CC961A5D036800AA2566 /* eagl_render_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = eagl_render_context.h; sourceTree = "<group>"; };
		0C42CC9F1A5D041900AA2566 /* display_render_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = display_render_context.cpp; sourceTree = "<group>"; };
		0C42CCA01A5D041900AA2566 /* display_render_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = display_render_context.h; sourceTree = "<group>"; };
		0C46F551175F00E800BF6EC9 /* lib3ds.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = lib3ds.h; sourceTree = "<group>"; };
		0C46F553175F00E800BF6EC9 /* begin_code.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = begin_code.h; sourceTree = "<group>"; };
		0C46F554175F00E800BF6EC9 /* close_code.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = close_code.h; sourceTree = "<group>"; };
		0C46F555175F00E800BF6EC9 /* SDL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL.h; sourceTree = "<group>"; };
		0C46F556175F00E800BF6EC9 /* SDL_assert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_assert.h; sourceTree = "<group>"; };
		0C46F557175F00E800BF6EC9 /* SDL_atomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_atomic.h; sourceTree = "<group>"; };
		0C46F558175F00E800BF6EC9 /* SDL_audio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_audio.h; sourceTree = "<group>"; };
		0C46F559175F00E800BF6EC9 /* SDL_bits.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_bits.h; sourceTree = "<group>"; };
		0C46F55A175F00E800BF6EC9 /* SDL_blendmode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_blendmode.h; sourceTree = "<group>"; };
		0C46F55B175F00E800BF6EC9 /* SDL_clipboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_clipboard.h; sourceTree = "<group>"; };
		0C46F55C175F00E800BF6EC9 /* SDL_config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_config.h; sourceTree = "<group>"; };
		0C46F55D175F00E800BF6EC9 /* SDL_cpuinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_cpuinfo.h; sourceTree = "<group>"; };
		0C46F55E175F00E800BF6EC9 /* SDL_endian.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_endian.h; sourceTree = "<group>"; };
		0C46F55F175F00E800BF6EC9 /* SDL_error.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_error.h; sourceTree = "<group>"; };
		0C46F560175F00E800BF6EC9 /* SDL_events.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_events.h; sourceTree = "<group>"; };
		0C46F561175F00E800BF6EC9 /* SDL_gamecontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = "<group>"; };
		0C46F562175F00E800BF6EC9 /* SDL_gesture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gesture.h; sourceTree = "<group>"; };
		0C46F563175F00E800BF6EC9 /* SDL_haptic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_haptic.h; sourceTree = "<group>"; };
		0C46F564175F00E800BF6EC9 /* SDL_hints.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_hints.h; sourceTree = "<group>"; };
		0C46F565175F00E800BF6EC9 /* SDL_joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_joystick.h; sourceTree = "<group>"; };
		0C46F566175F00E800BF6EC9 /* SDL_keyboard.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_keyboard.h; sourceTree = "<group>"; };
		0C46F567175F00E800BF6EC9 /* SDL_keycode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_keycode.h; sourceTree = "<group>"; };
		0C46F568175F00E800BF6EC9 /* SDL_loadso.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_loadso.h; sourceTree = "<group>"; };
		0C46F569175F00E800BF6EC9 /* SDL_log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_log.h; sourceTree = "<group>"; };
		0C46F56A175F00E800BF6EC9 /* SDL_main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_main.h; sourceTree = "<group>"; };
		0C46F56B175F00E800BF6EC9 /* SDL_messagebox.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_messagebox.h; sourceTree = "<group>"; };
		0C46F56C175F00E800BF6EC9 /* SDL_mouse.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_mouse.h; sourceTree = "<group>"; };
		0C46F56D175F00E800BF6EC9 /* SDL_mutex.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_mutex.h; sourceTree = "<group>"; };
		0C46F56E175F00E800BF6EC9 /* SDL_name.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_name.h; sourceTree = "<group>"; };
		0C46F56F175F00E800BF6EC9 /* SDL_opengl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_opengl.h; sourceTree = "<group>"; };
		0C46F570175F00E800BF6EC9 /* SDL_opengles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_opengles.h; sourceTree = "<group>"; };
		0C46F571175F00E800BF6EC9 /* SDL_opengles2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_opengles2.h; sourceTree = "<group>"; };
		0C46F572175F00E800BF6EC9 /* SDL_pixels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_pixels.h; sourceTree = "<group>"; };
		0C46F573175F00E800BF6EC9 /* SDL_platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_platform.h; sourceTree = "<group>"; };
		0C46F574175F00E800BF6EC9 /* SDL_power.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_power.h; sourceTree = "<group>"; };
		0C46F575175F00E800BF6EC9 /* SDL_quit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_quit.h; sourceTree = "<group>"; };
		0C46F576175F00E800BF6EC9 /* SDL_rect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_rect.h; sourceTree = "<group>"; };
		0C46F577175F00E800BF6EC9 /* SDL_render.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_render.h; sourceTree = "<group>"; };
		0C46F578175F00E800BF6EC9 /* SDL_revision.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_revision.h; sourceTree = "<group>"; };
		0C46F579175F00E800BF6EC9 /* SDL_rwops.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_rwops.h; sourceTree = "<group>"; };
		0C46F57A175F00E800BF6EC9 /* SDL_scancode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_scancode.h; sourceTree = "<group>"; };
		0C46F57B175F00E800BF6EC9 /* SDL_shape.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_shape.h; sourceTree = "<group>"; };
		0C46F57C175F00E800BF6EC9 /* SDL_stdinc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_stdinc.h; sourceTree = "<group>"; };
		0C46F57D175F00E800BF6EC9 /* SDL_surface.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_surface.h; sourceTree = "<group>"; };
		0C46F57E175F00E800BF6EC9 /* SDL_system.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_system.h; sourceTree = "<group>"; };
		0C46F57F175F00E800BF6EC9 /* SDL_syswm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_syswm.h; sourceTree = "<group>"; };
		0C46F580175F00E800BF6EC9 /* SDL_test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test.h; sourceTree = "<group>"; };
		0C46F581175F00E800BF6EC9 /* SDL_test_assert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_assert.h; sourceTree = "<group>"; };
		0C46F582175F00E800BF6EC9 /* SDL_test_common.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_common.h; sourceTree = "<group>"; };
		0C46F583175F00E800BF6EC9 /* SDL_test_compare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_compare.h; sourceTree = "<group>"; };
		0C46F584175F00E800BF6EC9 /* SDL_test_crc32.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_crc32.h; sourceTree = "<group>"; };
		0C46F585175F00E800BF6EC9 /* SDL_test_font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_font.h; sourceTree = "<group>"; };
		0C46F586175F00E800BF6EC9 /* SDL_test_fuzzer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_fuzzer.h; sourceTree = "<group>"; };
		0C46F587175F00E800BF6EC9 /* SDL_test_harness.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_harness.h; sourceTree = "<group>"; };
		0C46F588175F00E800BF6EC9 /* SDL_test_images.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_images.h; sourceTree = "<group>"; };
		0C46F589175F00E800BF6EC9 /* SDL_test_log.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_log.h; sourceTree = "<group>"; };
		0C46F58A175F00E800BF6EC9 /* SDL_test_md5.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_md5.h; sourceTree = "<group>"; };
		0C46F58B175F00E800BF6EC9 /* SDL_test_random.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_test_random.h; sourceTree = "<group>"; };
		0C46F58C175F00E800BF6EC9 /* SDL_thread.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_thread.h; sourceTree = "<group>"; };
		0C46F58D175F00E800BF6EC9 /* SDL_timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_timer.h; sourceTree = "<group>"; };
		0C46F58E175F00E800BF6EC9 /* SDL_touch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_touch.h; sourceTree = "<group>"; };
		0C46F58F175F00E800BF6EC9 /* SDL_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_types.h; sourceTree = "<group>"; };
		0C46F590175F00E800BF6EC9 /* SDL_version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_version.h; sourceTree = "<group>"; };
		0C46F591175F00E800BF6EC9 /* SDL_video.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_video.h; sourceTree = "<group>"; };
		0C46F5D2175F014F00BF6EC9 /* lib3ds-2.0.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "lib3ds-2.0.0.0.dylib"; path = "lib/lib3ds-2.0.0.0.dylib"; sourceTree = "<group>"; };
		0C46F5D3175F014F00BF6EC9 /* libSDL2-2.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL2-2.0.0.dylib"; path = "lib/libSDL2-2.0.0.dylib"; sourceTree = "<group>"; };
		0C49AEDE18642152005A1D78 /* vector_private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = vector_private.h; sourceTree = "<group>"; };
		0C4B4AEF1749A52700FD4B53 /* shader_program.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader_program.cpp; sourceTree = "<group>"; };
		0C4B4AF01749A52700FD4B53 /* shader_program.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shader_program.h; sourceTree = "<group>"; };
		0C4B4AF31749A83500FD4B53 /* render_context.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = render_context.cpp; sourceTree = "<group>"; };
		0C4B4AF41749A83500FD4B53 /* render_context.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = render_context.h; sourceTree = "<group>"; };
		0C50D25A16D2089C00E43D7B /* zge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zge.h; sourceTree = "<group>"; };
		0C50D3A716D208A900E43D7B /* application.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = application.h; sourceTree = "<group>"; };
		0C50D3A816D208A900E43D7B /* application.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = application.cpp; sourceTree = "<group>"; };
		0C50D3A916D208A900E43D7B /* display.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = display.cpp; sourceTree = "<group>"; };
		0C50D3AA16D208A900E43D7B /* display.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = display.h; sourceTree = "<group>"; };
		0C50D3AD16D208A900E43D7B /* engine.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = engine.cpp; sourceTree = "<group>"; };
		0C50D3AE16D208A900E43D7B /* engine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = engine.h; sourceTree = "<group>"; };
		0C50D3B716D208A900E43D7B /* noncopyable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = noncopyable.h; sourceTree = "<group>"; };
		0C50D3BC16D208A900E43D7B /* run_loop.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = run_loop.cpp; sourceTree = "<group>"; };
		0C50D3BD16D208A900E43D7B /* run_loop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = run_loop.h; sourceTree = "<group>"; };
		0C50D3BE16D208A900E43D7B /* schedulable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = schedulable.h; sourceTree = "<group>"; };
		0C50D3BF16D208A900E43D7B /* types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
		0C50D3C716D208A900E43D7B /* camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camera.h; sourceTree = "<group>"; };
		0C50D3C916D208A900E43D7B /* graphics_buffer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics_buffer.h; sourceTree = "<group>"; };
		0C50D3D216D208A900E43D7B /* exception.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = exception.cpp; sourceTree = "<group>"; };
		0C50D3D316D208A900E43D7B /* exception.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exception.h; sourceTree = "<group>"; };
		0C50D3D416D208A900E43D7B /* logger.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = logger.cpp; sourceTree = "<group>"; };
		0C50D3D516D208A900E43D7B /* logger.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = logger.h; sourceTree = "<group>"; };
		0C50D3D816D208A900E43D7B /* util.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = util.cpp; sourceTree = "<group>"; };
		0C50D3D916D208A900E43D7B /* util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = util.h; sourceTree = "<group>"; };
		0C59F75E1A828A8700D2BA8A /* renderable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = renderable.h; sourceTree = "<group>"; };
		0C5D324A1761C82A0013ACFF /* shader.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = shader.cpp; sourceTree = "<group>"; };
		0C5D324B1761C82A0013ACFF /* shader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shader.h; sourceTree = "<group>"; };
		0C5E3D79159ED53B0062242E /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; lineEnding = 0; path = README; sourceTree = "<group>"; };
		0C62280E18610B6F00DA3182 /* matrix.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = matrix.cpp; sourceTree = "<group>"; };
		0C62280F18610B6F00DA3182 /* matrix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = matrix.h; sourceTree = "<group>"; };
		0C688F9618726A65002C38EF /* model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = model.cpp; path = src/zge/graph/model.cpp; sourceTree = SOURCE_ROOT; };
		0C688F9718726A65002C38EF /* model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = model.h; path = src/zge/graph/model.h; sourceTree = SOURCE_ROOT; };
		0C688F9E18726E64002C38EF /* geometry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = geometry.cpp; path = src/zge/graph/geometry.cpp; sourceTree = SOURCE_ROOT; };
		0C688F9F18726E64002C38EF /* geometry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = geometry.h; path = src/zge/graph/geometry.h; sourceTree = SOURCE_ROOT; };
		0C688FA218727756002C38EF /* material.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = material.cpp; path = src/zge/graph/material.cpp; sourceTree = SOURCE_ROOT; };
		0C688FA318727756002C38EF /* material.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = material.h; path = src/zge/graph/material.h; sourceTree = SOURCE_ROOT; };
		0C69589219F3532100208B27 /* text_node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = text_node.cpp; sourceTree = "<group>"; };
		0C69589319F3532100208B27 /* text_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = text_node.h; sourceTree = "<group>"; };
		0C69589619F3874700208B27 /* glyph.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glyph.cpp; sourceTree = "<group>"; };
		0C69589719F3874700208B27 /* glyph.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = glyph.h; sourceTree = "<group>"; };
		0C71922C1A80070900A2073A /* line.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = line.cpp; sourceTree = "<group>"; };
		0C71922D1A80070900A2073A /* line.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = line.h; sourceTree = "<group>"; };
		0C7712F819177E4D0050C098 /* sound_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sound_private.h; sourceTree = "<group>"; };
		0C778F301DA398FD00670A9D /* libSDL2_image-2.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL2_image-2.0.0.dylib"; path = "../../../../../../usr/local/Cellar/sdl2_image/2.0.1_1/lib/libSDL2_image-2.0.0.dylib"; sourceTree = "<group>"; };
		0C7D3E0F19C57194003AC9E9 /* cube.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = cube.cpp; sourceTree = "<group>"; };
		0C7D3E1019C57194003AC9E9 /* cube.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cube.h; sourceTree = "<group>"; };
		0C7D3E1919C67376003AC9E9 /* light.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = light.cpp; sourceTree = "<group>"; };
		0C7D3E1A19C67376003AC9E9 /* light.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = light.h; sourceTree = "<group>"; };
		0C82C32B191C859A006E0295 /* foundation.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = foundation.h; sourceTree = "<group>"; };
		0C82C32D191C87FB006E0295 /* resource_bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = resource_bundle.cpp; sourceTree = "<group>"; };
		0C82C32E191C87FB006E0295 /* resource_bundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resource_bundle.h; sourceTree = "<group>"; };
		0C8302D2187FF4BC00708944 /* uniform.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = uniform.hpp; sourceTree = "<group>"; };
		0C8302D3187FF4BC00708944 /* uniform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = uniform.h; sourceTree = "<group>"; };
		0C898C70191722B600CF3009 /* orthocamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = orthocamera.cpp; sourceTree = "<group>"; };
		0C898C71191722B600CF3009 /* orthocamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = orthocamera.h; sourceTree = "<group>"; };
		0C898C741917251000CF3009 /* 3dcamera.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = 3dcamera.cpp; sourceTree = "<group>"; };
		0C898C751917251000CF3009 /* 3dcamera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 3dcamera.h; sourceTree = "<group>"; };
		0C898C7819172F2900CF3009 /* quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = quad.cpp; sourceTree = "<group>"; };
		0C898C7919172F2900CF3009 /* quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quad.h; sourceTree = "<group>"; };
		0C89D4421931424400F1D9DB /* action.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = action.cpp; path = src/zge/graph/action.cpp; sourceTree = SOURCE_ROOT; };
		0C89D4431931424400F1D9DB /* action.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = action.h; path = src/zge/graph/action.h; sourceTree = SOURCE_ROOT; };
		0C91834C1B731BB200ED9A83 /* plane.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = plane.cpp; sourceTree = "<group>"; };
		0C91834D1B731BB200ED9A83 /* plane.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = plane.h; sourceTree = "<group>"; };
		0C977FB0173752B60071E8E6 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
		0C977FB2173752CD0071E8E6 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
		0C984AB020467B78000BF01C /* libSDL2_image-2.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL2_image-2.0.0.dylib"; path = "../../../../../../usr/local/Cellar/sdl2_image/2.0.2/lib/libSDL2_image-2.0.0.dylib"; sourceTree = "<group>"; };
		0CA262661863F71A003E8D37 /* vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = vector.cpp; sourceTree = "<group>"; };
		0CA262671863F71A003E8D37 /* vector.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vector.h; sourceTree = "<group>"; };
		0CA36B0419F206C0003543FE /* ftconfig.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftconfig.h; sourceTree = "<group>"; };
		0CA36B0519F206C0003543FE /* ftheader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftheader.h; sourceTree = "<group>"; };
		0CA36B0619F206C0003543FE /* ftmodule.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmodule.h; sourceTree = "<group>"; };
		0CA36B0719F206C0003543FE /* ftoption.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftoption.h; sourceTree = "<group>"; };
		0CA36B0819F206C0003543FE /* ftstdlib.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftstdlib.h; sourceTree = "<group>"; };
		0CA36B0919F206C0003543FE /* freetype.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = freetype.h; sourceTree = "<group>"; };
		0CA36B0A19F206C0003543FE /* ft2build.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ft2build.h; sourceTree = "<group>"; };
		0CA36B0B19F206C0003543FE /* ftadvanc.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftadvanc.h; sourceTree = "<group>"; };
		0CA36B0C19F206C0003543FE /* ftautoh.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftautoh.h; sourceTree = "<group>"; };
		0CA36B0D19F206C0003543FE /* ftbbox.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbbox.h; sourceTree = "<group>"; };
		0CA36B0E19F206C0003543FE /* ftbdf.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbdf.h; sourceTree = "<group>"; };
		0CA36B0F19F206C0003543FE /* ftbitmap.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbitmap.h; sourceTree = "<group>"; };
		0CA36B1019F206C0003543FE /* ftbzip2.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftbzip2.h; sourceTree = "<group>"; };
		0CA36B1119F206C0003543FE /* ftcache.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcache.h; sourceTree = "<group>"; };
		0CA36B1219F206C0003543FE /* ftcffdrv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcffdrv.h; sourceTree = "<group>"; };
		0CA36B1319F206C0003543FE /* ftchapters.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftchapters.h; sourceTree = "<group>"; };
		0CA36B1419F206C0003543FE /* ftcid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftcid.h; sourceTree = "<group>"; };
		0CA36B1519F206C0003543FE /* fterrdef.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fterrdef.h; sourceTree = "<group>"; };
		0CA36B1619F206C0003543FE /* fterrors.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fterrors.h; sourceTree = "<group>"; };
		0CA36B1719F206C0003543FE /* ftgasp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgasp.h; sourceTree = "<group>"; };
		0CA36B1819F206C0003543FE /* ftglyph.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftglyph.h; sourceTree = "<group>"; };
		0CA36B1919F206C0003543FE /* ftgxval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgxval.h; sourceTree = "<group>"; };
		0CA36B1A19F206C0003543FE /* ftgzip.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftgzip.h; sourceTree = "<group>"; };
		0CA36B1B19F206C0003543FE /* ftimage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftimage.h; sourceTree = "<group>"; };
		0CA36B1C19F206C0003543FE /* ftincrem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftincrem.h; sourceTree = "<group>"; };
		0CA36B1D19F206C0003543FE /* ftlcdfil.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftlcdfil.h; sourceTree = "<group>"; };
		0CA36B1E19F206C0003543FE /* ftlist.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftlist.h; sourceTree = "<group>"; };
		0CA36B1F19F206C0003543FE /* ftlzw.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftlzw.h; sourceTree = "<group>"; };
		0CA36B2019F206C0003543FE /* ftmac.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmac.h; sourceTree = "<group>"; };
		0CA36B2119F206C0003543FE /* ftmm.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmm.h; sourceTree = "<group>"; };
		0CA36B2219F206C0003543FE /* ftmodapi.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmodapi.h; sourceTree = "<group>"; };
		0CA36B2319F206C0003543FE /* ftmoderr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftmoderr.h; sourceTree = "<group>"; };
		0CA36B2419F206C0003543FE /* ftotval.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftotval.h; sourceTree = "<group>"; };
		0CA36B2519F206C0003543FE /* ftoutln.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftoutln.h; sourceTree = "<group>"; };
		0CA36B2619F206C0003543FE /* ftpfr.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftpfr.h; sourceTree = "<group>"; };
		0CA36B2719F206C0003543FE /* ftrender.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftrender.h; sourceTree = "<group>"; };
		0CA36B2819F206C0003543FE /* ftsizes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsizes.h; sourceTree = "<group>"; };
		0CA36B2919F206C0003543FE /* ftsnames.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsnames.h; sourceTree = "<group>"; };
		0CA36B2A19F206C0003543FE /* ftstroke.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftstroke.h; sourceTree = "<group>"; };
		0CA36B2B19F206C0003543FE /* ftsynth.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsynth.h; sourceTree = "<group>"; };
		0CA36B2C19F206C0003543FE /* ftsystem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftsystem.h; sourceTree = "<group>"; };
		0CA36B2D19F206C0003543FE /* fttrigon.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fttrigon.h; sourceTree = "<group>"; };
		0CA36B2E19F206C0003543FE /* ftttdrv.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftttdrv.h; sourceTree = "<group>"; };
		0CA36B2F19F206C0003543FE /* fttypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = fttypes.h; sourceTree = "<group>"; };
		0CA36B3019F206C0003543FE /* ftwinfnt.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftwinfnt.h; sourceTree = "<group>"; };
		0CA36B3119F206C0003543FE /* ftxf86.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ftxf86.h; sourceTree = "<group>"; };
		0CA36B3219F206C0003543FE /* t1tables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = t1tables.h; sourceTree = "<group>"; };
		0CA36B3319F206C0003543FE /* ttnameid.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ttnameid.h; sourceTree = "<group>"; };
		0CA36B3419F206C0003543FE /* tttables.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tttables.h; sourceTree = "<group>"; };
		0CA36B3519F206C0003543FE /* tttags.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = tttags.h; sourceTree = "<group>"; };
		0CA36B3619F206C0003543FE /* ttunpat.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ttunpat.h; sourceTree = "<group>"; };
		0CA36B3B19F20B17003543FE /* font.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = font.cpp; sourceTree = "<group>"; };
		0CA36B3C19F20B17003543FE /* font.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = font.h; sourceTree = "<group>"; };
		0CAA7A50191C975200462668 /* texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = texture.cpp; sourceTree = "<group>"; };
		0CAA7A51191C975200462668 /* texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = texture.h; sourceTree = "<group>"; };
		0CB816841D8E532D00F90A92 /* lib3ds-2.0.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "lib3ds-2.0.0.0.dylib"; path = "../../../../../../usr/local/lib/lib3ds-2.0.0.0.dylib"; sourceTree = "<group>"; };
		0CB816861D8E533E00F90A92 /* libSDL2-2.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL2-2.0.0.dylib"; path = "../../../../../../usr/local/lib/libSDL2-2.0.0.dylib"; sourceTree = "<group>"; };
		0CB816881D8E534C00F90A92 /* libfreetype.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfreetype.6.dylib; path = ../../../../../../usr/local/Cellar/freetype/2.7/lib/libfreetype.6.dylib; sourceTree = "<group>"; };
		0CB8168A1D8E536000F90A92 /* libSDL_image-1.2.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "libSDL_image-1.2.0.dylib"; path = "../../../../../../usr/local/Cellar/sdl_image/1.2.12_3/lib/libSDL_image-1.2.0.dylib"; sourceTree = "<group>"; };
		0CB8168C1D8E7C5100F90A92 /* lib3ds-1.3.0.0.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = "lib3ds-1.3.0.0.dylib"; path = "../../../../../../usr/local/Cellar/lib3ds/1.3.0/lib/lib3ds-1.3.0.0.dylib"; sourceTree = "<group>"; };
		0CBD3F1220F16DF8000D6E3E /* libfreetype.6.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libfreetype.6.dylib; path = ../../../../../../usr/local/Cellar/freetype/2.9.1/lib/libfreetype.6.dylib; sourceTree = "<group>"; };
		0CCD2F59176128AC00F497CF /* timer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = timer.cpp; sourceTree = "<group>"; };
		0CCD2F5A176128AC00F497CF /* timer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = timer.h; sourceTree = "<group>"; };
		0CD4858D1BF8633600AD5659 /* graphics_buffer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = graphics_buffer.cpp; sourceTree = "<group>"; };
		0CD633A5188EF3E20061D259 /* uniform.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = uniform.cpp; sourceTree = "<group>"; };
		0CD633A7188F8E360061D259 /* observable.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = observable.hpp; sourceTree = "<group>"; };
		0CD633A8188F8E360061D259 /* observable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = observable.h; sourceTree = "<group>"; };
		0CDE862819311B0F00C787FD /* sprite_node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sprite_node.cpp; sourceTree = "<group>"; };
		0CDE862919311B0F00C787FD /* sprite_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sprite_node.h; sourceTree = "<group>"; };
		0CDEB0721B77F23000E4032A /* constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = constants.h; sourceTree = "<group>"; };
		0CE0341719D1D6EC00CD7A19 /* camera_controller.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = camera_controller.cpp; sourceTree = "<group>"; };
		0CE0341819D1D6EC00CD7A19 /* camera_controller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = camera_controller.h; sourceTree = "<group>"; };
		0CE0341B19D1D76800CD7A19 /* responder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = responder.cpp; sourceTree = "<group>"; };
		0CE0341C19D1D76800CD7A19 /* responder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = responder.h; sourceTree = "<group>"; };
		0CE0A6BC19F8C70A00AA119A /* describable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = describable.h; sourceTree = "<group>"; };
		0CE0A6BE19F8C81900AA119A /* describable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = describable.cpp; sourceTree = "<group>"; };
		0CE6989818C9AB8100D57528 /* defines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = "<group>"; };
		0CE70A9D1A5E2C4800663A32 /* vertex.vsh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vertex.vsh.h; sourceTree = "<group>"; };
		0CE70AA01A5E2C5100663A32 /* fragment.fsh.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fragment.fsh.h; sourceTree = "<group>"; };
		0CE99A07191C99F50011DED6 /* image.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = "<group>"; };
		0CE99A08191C99F50011DED6 /* image.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = "<group>"; };
		0CE99E471A01EC36009DF9BB /* types.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = types.cpp; sourceTree = "<group>"; };
		0CE9FF951A845832001B19EE /* box_layout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = box_layout.cpp; sourceTree = "<group>"; };
		0CE9FF961A845832001B19EE /* box_layout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = box_layout.h; sourceTree = "<group>"; };
		0CEC024B176D5DF90029DE82 /* node.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = node.cpp; path = src/zge/graph/node.cpp; sourceTree = SOURCE_ROOT; };
		0CEC024C176D5DF90029DE82 /* node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = node.h; path = src/zge/graph/node.h; sourceTree = SOURCE_ROOT; };
		0CEC024D176D5DF90029DE82 /* scene.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = scene.cpp; path = src/zge/graph/scene.cpp; sourceTree = SOURCE_ROOT; };
		0CEC024E176D5DF90029DE82 /* scene.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = scene.h; path = src/zge/graph/scene.h; sourceTree = SOURCE_ROOT; };
		0CF1D2951917639400CDBEEE /* OpenAL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenAL.framework; path = System/Library/Frameworks/OpenAL.framework; sourceTree = SDKROOT; };
		0CF1D2981917664800CDBEEE /* audio_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio_manager.cpp; sourceTree = "<group>"; };
		0CF1D2991917664800CDBEEE /* audio_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_manager.h; sourceTree = "<group>"; };
		0CF1D29D19176ADC00CDBEEE /* event.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = event.cpp; sourceTree = "<group>"; };
		0CF1D29E19176ADC00CDBEEE /* event.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = event.h; sourceTree = "<group>"; };
		0CF1D29F19176ADC00CDBEEE /* input_manager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = input_manager.cpp; sourceTree = "<group>"; };
		0CF1D2A019176ADC00CDBEEE /* input_manager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = input_manager.h; sourceTree = "<group>"; };
		0CF1D2A519176D2600CDBEEE /* sound.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = sound.cpp; sourceTree = "<group>"; };
		0CF1D2A619176D2600CDBEEE /* sound.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sound.h; sourceTree = "<group>"; };
		0CF1D2A919176D9300CDBEEE /* audio_asset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = audio_asset.cpp; sourceTree = "<group>"; };
		0CF1D2AA19176D9300CDBEEE /* audio_asset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = audio_asset.h; sourceTree = "<group>"; };
		0CF1D2AD19176F9400CDBEEE /* wave_audio_asset.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wave_audio_asset.cpp; sourceTree = "<group>"; };
		0CF1D2AE19176F9400CDBEEE /* wave_audio_asset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wave_audio_asset.h; sourceTree = "<group>"; };
		0CF7E21A161C010F00105F7C /* zge.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zge.pch; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		0C10F95219D3C8800010815F /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0CBD3F1320F16DF8000D6E3E /* libfreetype.6.dylib in Frameworks */,
				0C984AB120467B78000BF01C /* libSDL2_image-2.0.0.dylib in Frameworks */,
				0CB8168D1D8E7C5100F90A92 /* lib3ds-1.3.0.0.dylib in Frameworks */,
				0CB816871D8E533E00F90A92 /* libSDL2-2.0.0.dylib in Frameworks */,
				0C10FB7B19D3CB540010815F /* OpenGL.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		0C0D7B0218C4100500021CD6 /* Eigen */ = {
			isa = PBXGroup;
			children = (
				0C0D7B0318C4100500021CD6 /* Array */,
				0C0D7B0418C4100500021CD6 /* Cholesky */,
				0C0D7B0518C4100500021CD6 /* CholmodSupport */,
				0C0D7B0618C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B0718C4100500021CD6 /* Core */,
				0C0D7B0818C4100500021CD6 /* Dense */,
				0C0D7B0918C4100500021CD6 /* Eigen */,
				0C0D7B0A18C4100500021CD6 /* Eigen2Support */,
				0C0D7B0B18C4100500021CD6 /* Eigenvalues */,
				0C0D7B0C18C4100500021CD6 /* Geometry */,
				0C0D7B0D18C4100500021CD6 /* Householder */,
				0C0D7B0E18C4100500021CD6 /* IterativeLinearSolvers */,
				0C0D7B0F18C4100500021CD6 /* Jacobi */,
				0C0D7B1018C4100500021CD6 /* LeastSquares */,
				0C0D7B1118C4100500021CD6 /* LU */,
				0C0D7B1218C4100500021CD6 /* MetisSupport */,
				0C0D7B1318C4100500021CD6 /* OrderingMethods */,
				0C0D7B1418C4100500021CD6 /* PardisoSupport */,
				0C0D7B1518C4100500021CD6 /* PaStiXSupport */,
				0C0D7B1618C4100500021CD6 /* QR */,
				0C0D7B1718C4100500021CD6 /* QtAlignedMalloc */,
				0C0D7B1818C4100500021CD6 /* Sparse */,
				0C0D7B1918C4100500021CD6 /* SparseCholesky */,
				0C0D7B1A18C4100500021CD6 /* SparseCore */,
				0C0D7B1B18C4100500021CD6 /* SparseLU */,
				0C0D7B1C18C4100500021CD6 /* SparseQR */,
				0C0D7B1D18C4100500021CD6 /* SPQRSupport */,
				0C0D7B1E18C4100500021CD6 /* src */,
				0C0D7C6618C4100500021CD6 /* StdDeque */,
				0C0D7C6718C4100500021CD6 /* StdList */,
				0C0D7C6818C4100500021CD6 /* StdVector */,
				0C0D7C6918C4100500021CD6 /* SuperLUSupport */,
				0C0D7C6A18C4100500021CD6 /* SVD */,
				0C0D7C6B18C4100500021CD6 /* UmfPackSupport */,
			);
			path = Eigen;
			sourceTree = "<group>";
		};
		0C0D7B1E18C4100500021CD6 /* src */ = {
			isa = PBXGroup;
			children = (
				0C0D7B1F18C4100500021CD6 /* Cholesky */,
				0C0D7B2418C4100500021CD6 /* CholmodSupport */,
				0C0D7B2718C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B2818C4100500021CD6 /* Core */,
				0C0D7B9E18C4100500021CD6 /* Eigen2Support */,
				0C0D7BBC18C4100500021CD6 /* Eigenvalues */,
				0C0D7BCC18C4100500021CD6 /* Geometry */,
				0C0D7BDF18C4100500021CD6 /* Householder */,
				0C0D7BE418C4100500021CD6 /* IterativeLinearSolvers */,
				0C0D7BEB18C4100500021CD6 /* Jacobi */,
				0C0D7BEE18C4100500021CD6 /* LU */,
				0C0D7BF818C4100500021CD6 /* MetisSupport */,
				0C0D7BFB18C4100500021CD6 /* misc */,
				0C0D7C0218C4100500021CD6 /* OrderingMethods */,
				0C0D7C0718C4100500021CD6 /* PardisoSupport */,
				0C0D7C0A18C4100500021CD6 /* PaStiXSupport */,
				0C0D7C0D18C4100500021CD6 /* plugins */,
				0C0D7C1618C4100500021CD6 /* QR */,
				0C0D7C1D18C4100500021CD6 /* SparseCholesky */,
				0C0D7C2118C4100500021CD6 /* SparseCore */,
				0C0D7C3C18C4100500021CD6 /* SparseLU */,
				0C0D7C4F18C4100500021CD6 /* SparseQR */,
				0C0D7C5218C4100500021CD6 /* SPQRSupport */,
				0C0D7C5518C4100500021CD6 /* StlSupport */,
				0C0D7C5B18C4100500021CD6 /* SuperLUSupport */,
				0C0D7C5E18C4100500021CD6 /* SVD */,
				0C0D7C6318C4100500021CD6 /* UmfPackSupport */,
			);
			path = src;
			sourceTree = "<group>";
		};
		0C0D7B1F18C4100500021CD6 /* Cholesky */ = {
			isa = PBXGroup;
			children = (
				0C0D7B2018C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B2118C4100500021CD6 /* LDLT.h */,
				0C0D7B2218C4100500021CD6 /* LLT.h */,
				0C0D7B2318C4100500021CD6 /* LLT_MKL.h */,
			);
			path = Cholesky;
			sourceTree = "<group>";
		};
		0C0D7B2418C4100500021CD6 /* CholmodSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7B2518C4100500021CD6 /* CholmodSupport.h */,
				0C0D7B2618C4100500021CD6 /* CMakeLists.txt */,
			);
			path = CholmodSupport;
			sourceTree = "<group>";
		};
		0C0D7B2818C4100500021CD6 /* Core */ = {
			isa = PBXGroup;
			children = (
				0C0D7B2918C4100500021CD6 /* arch */,
				0C0D7B3B18C4100500021CD6 /* Array.h */,
				0C0D7B3C18C4100500021CD6 /* ArrayBase.h */,
				0C0D7B3D18C4100500021CD6 /* ArrayWrapper.h */,
				0C0D7B3E18C4100500021CD6 /* Assign.h */,
				0C0D7B3F18C4100500021CD6 /* Assign_MKL.h */,
				0C0D7B4018C4100500021CD6 /* BandMatrix.h */,
				0C0D7B4118C4100500021CD6 /* Block.h */,
				0C0D7B4218C4100500021CD6 /* BooleanRedux.h */,
				0C0D7B4318C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B4418C4100500021CD6 /* CommaInitializer.h */,
				0C0D7B4518C4100500021CD6 /* CoreIterators.h */,
				0C0D7B4618C4100500021CD6 /* CwiseBinaryOp.h */,
				0C0D7B4718C4100500021CD6 /* CwiseNullaryOp.h */,
				0C0D7B4818C4100500021CD6 /* CwiseUnaryOp.h */,
				0C0D7B4918C4100500021CD6 /* CwiseUnaryView.h */,
				0C0D7B4A18C4100500021CD6 /* DenseBase.h */,
				0C0D7B4B18C4100500021CD6 /* DenseCoeffsBase.h */,
				0C0D7B4C18C4100500021CD6 /* DenseStorage.h */,
				0C0D7B4D18C4100500021CD6 /* Diagonal.h */,
				0C0D7B4E18C4100500021CD6 /* DiagonalMatrix.h */,
				0C0D7B4F18C4100500021CD6 /* DiagonalProduct.h */,
				0C0D7B5018C4100500021CD6 /* Dot.h */,
				0C0D7B5118C4100500021CD6 /* EigenBase.h */,
				0C0D7B5218C4100500021CD6 /* Flagged.h */,
				0C0D7B5318C4100500021CD6 /* ForceAlignedAccess.h */,
				0C0D7B5418C4100500021CD6 /* Functors.h */,
				0C0D7B5518C4100500021CD6 /* Fuzzy.h */,
				0C0D7B5618C4100500021CD6 /* GeneralProduct.h */,
				0C0D7B5718C4100500021CD6 /* GenericPacketMath.h */,
				0C0D7B5818C4100500021CD6 /* GlobalFunctions.h */,
				0C0D7B5918C4100500021CD6 /* IO.h */,
				0C0D7B5A18C4100500021CD6 /* Map.h */,
				0C0D7B5B18C4100500021CD6 /* MapBase.h */,
				0C0D7B5C18C4100500021CD6 /* MathFunctions.h */,
				0C0D7B5D18C4100500021CD6 /* Matrix.h */,
				0C0D7B5E18C4100500021CD6 /* MatrixBase.h */,
				0C0D7B5F18C4100500021CD6 /* NestByValue.h */,
				0C0D7B6018C4100500021CD6 /* NoAlias.h */,
				0C0D7B6118C4100500021CD6 /* NumTraits.h */,
				0C0D7B6218C4100500021CD6 /* PermutationMatrix.h */,
				0C0D7B6318C4100500021CD6 /* PlainObjectBase.h */,
				0C0D7B6418C4100500021CD6 /* ProductBase.h */,
				0C0D7B6518C4100500021CD6 /* products */,
				0C0D7B7D18C4100500021CD6 /* Random.h */,
				0C0D7B7E18C4100500021CD6 /* Redux.h */,
				0C0D7B7F18C4100500021CD6 /* Ref.h */,
				0C0D7B8018C4100500021CD6 /* Replicate.h */,
				0C0D7B8118C4100500021CD6 /* ReturnByValue.h */,
				0C0D7B8218C4100500021CD6 /* Reverse.h */,
				0C0D7B8318C4100500021CD6 /* Select.h */,
				0C0D7B8418C4100500021CD6 /* SelfAdjointView.h */,
				0C0D7B8518C4100500021CD6 /* SelfCwiseBinaryOp.h */,
				0C0D7B8618C4100500021CD6 /* SolveTriangular.h */,
				0C0D7B8718C4100500021CD6 /* StableNorm.h */,
				0C0D7B8818C4100500021CD6 /* Stride.h */,
				0C0D7B8918C4100500021CD6 /* Swap.h */,
				0C0D7B8A18C4100500021CD6 /* Transpose.h */,
				0C0D7B8B18C4100500021CD6 /* Transpositions.h */,
				0C0D7B8C18C4100500021CD6 /* TriangularMatrix.h */,
				0C0D7B8D18C4100500021CD6 /* util */,
				0C0D7B9B18C4100500021CD6 /* VectorBlock.h */,
				0C0D7B9C18C4100500021CD6 /* VectorwiseOp.h */,
				0C0D7B9D18C4100500021CD6 /* Visitor.h */,
			);
			path = Core;
			sourceTree = "<group>";
		};
		0C0D7B2918C4100500021CD6 /* arch */ = {
			isa = PBXGroup;
			children = (
				0C0D7B2A18C4100500021CD6 /* AltiVec */,
				0C0D7B2E18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B2F18C4100500021CD6 /* Default */,
				0C0D7B3218C4100500021CD6 /* NEON */,
				0C0D7B3618C4100500021CD6 /* SSE */,
			);
			path = arch;
			sourceTree = "<group>";
		};
		0C0D7B2A18C4100500021CD6 /* AltiVec */ = {
			isa = PBXGroup;
			children = (
				0C0D7B2B18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B2C18C4100500021CD6 /* Complex.h */,
				0C0D7B2D18C4100500021CD6 /* PacketMath.h */,
			);
			path = AltiVec;
			sourceTree = "<group>";
		};
		0C0D7B2F18C4100500021CD6 /* Default */ = {
			isa = PBXGroup;
			children = (
				0C0D7B3018C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B3118C4100500021CD6 /* Settings.h */,
			);
			path = Default;
			sourceTree = "<group>";
		};
		0C0D7B3218C4100500021CD6 /* NEON */ = {
			isa = PBXGroup;
			children = (
				0C0D7B3318C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B3418C4100500021CD6 /* Complex.h */,
				0C0D7B3518C4100500021CD6 /* PacketMath.h */,
			);
			path = NEON;
			sourceTree = "<group>";
		};
		0C0D7B3618C4100500021CD6 /* SSE */ = {
			isa = PBXGroup;
			children = (
				0C0D7B3718C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B3818C4100500021CD6 /* Complex.h */,
				0C0D7B3918C4100500021CD6 /* MathFunctions.h */,
				0C0D7B3A18C4100500021CD6 /* PacketMath.h */,
			);
			path = SSE;
			sourceTree = "<group>";
		};
		0C0D7B6518C4100500021CD6 /* products */ = {
			isa = PBXGroup;
			children = (
				0C0D7B6618C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B6718C4100500021CD6 /* CoeffBasedProduct.h */,
				0C0D7B6818C4100500021CD6 /* GeneralBlockPanelKernel.h */,
				0C0D7B6918C4100500021CD6 /* GeneralMatrixMatrix.h */,
				0C0D7B6A18C4100500021CD6 /* GeneralMatrixMatrix_MKL.h */,
				0C0D7B6B18C4100500021CD6 /* GeneralMatrixMatrixTriangular.h */,
				0C0D7B6C18C4100500021CD6 /* GeneralMatrixMatrixTriangular_MKL.h */,
				0C0D7B6D18C4100500021CD6 /* GeneralMatrixVector.h */,
				0C0D7B6E18C4100500021CD6 /* GeneralMatrixVector_MKL.h */,
				0C0D7B6F18C4100500021CD6 /* Parallelizer.h */,
				0C0D7B7018C4100500021CD6 /* SelfadjointMatrixMatrix.h */,
				0C0D7B7118C4100500021CD6 /* SelfadjointMatrixMatrix_MKL.h */,
				0C0D7B7218C4100500021CD6 /* SelfadjointMatrixVector.h */,
				0C0D7B7318C4100500021CD6 /* SelfadjointMatrixVector_MKL.h */,
				0C0D7B7418C4100500021CD6 /* SelfadjointProduct.h */,
				0C0D7B7518C4100500021CD6 /* SelfadjointRank2Update.h */,
				0C0D7B7618C4100500021CD6 /* TriangularMatrixMatrix.h */,
				0C0D7B7718C4100500021CD6 /* TriangularMatrixMatrix_MKL.h */,
				0C0D7B7818C4100500021CD6 /* TriangularMatrixVector.h */,
				0C0D7B7918C4100500021CD6 /* TriangularMatrixVector_MKL.h */,
				0C0D7B7A18C4100500021CD6 /* TriangularSolverMatrix.h */,
				0C0D7B7B18C4100500021CD6 /* TriangularSolverMatrix_MKL.h */,
				0C0D7B7C18C4100500021CD6 /* TriangularSolverVector.h */,
			);
			path = products;
			sourceTree = "<group>";
		};
		0C0D7B8D18C4100500021CD6 /* util */ = {
			isa = PBXGroup;
			children = (
				0C0D7B8E18C4100500021CD6 /* BlasUtil.h */,
				0C0D7B8F18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7B9018C4100500021CD6 /* Constants.h */,
				0C0D7B9118C4100500021CD6 /* DisableStupidWarnings.h */,
				0C0D7B9218C4100500021CD6 /* ForwardDeclarations.h */,
				0C0D7B9318C4100500021CD6 /* Macros.h */,
				0C0D7B9418C4100500021CD6 /* Memory.h */,
				0C0D7B9518C4100500021CD6 /* Meta.h */,
				0C0D7B9618C4100500021CD6 /* MKL_support.h */,
				0C0D7B9718C4100500021CD6 /* NonMPL2.h */,
				0C0D7B9818C4100500021CD6 /* ReenableStupidWarnings.h */,
				0C0D7B9918C4100500021CD6 /* StaticAssert.h */,
				0C0D7B9A18C4100500021CD6 /* XprHelper.h */,
			);
			path = util;
			sourceTree = "<group>";
		};
		0C0D7B9E18C4100500021CD6 /* Eigen2Support */ = {
			isa = PBXGroup;
			children = (
				0C0D7B9F18C4100500021CD6 /* Block.h */,
				0C0D7BA018C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BA118C4100500021CD6 /* Cwise.h */,
				0C0D7BA218C4100500021CD6 /* CwiseOperators.h */,
				0C0D7BA318C4100500021CD6 /* Geometry */,
				0C0D7BB018C4100500021CD6 /* Lazy.h */,
				0C0D7BB118C4100500021CD6 /* LeastSquares.h */,
				0C0D7BB218C4100500021CD6 /* LU.h */,
				0C0D7BB318C4100500021CD6 /* Macros.h */,
				0C0D7BB418C4100500021CD6 /* MathFunctions.h */,
				0C0D7BB518C4100500021CD6 /* Memory.h */,
				0C0D7BB618C4100500021CD6 /* Meta.h */,
				0C0D7BB718C4100500021CD6 /* Minor.h */,
				0C0D7BB818C4100500021CD6 /* QR.h */,
				0C0D7BB918C4100500021CD6 /* SVD.h */,
				0C0D7BBA18C4100500021CD6 /* TriangularSolver.h */,
				0C0D7BBB18C4100500021CD6 /* VectorBlock.h */,
			);
			path = Eigen2Support;
			sourceTree = "<group>";
		};
		0C0D7BA318C4100500021CD6 /* Geometry */ = {
			isa = PBXGroup;
			children = (
				0C0D7BA418C4100500021CD6 /* AlignedBox.h */,
				0C0D7BA518C4100500021CD6 /* All.h */,
				0C0D7BA618C4100500021CD6 /* AngleAxis.h */,
				0C0D7BA718C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BA818C4100500021CD6 /* Hyperplane.h */,
				0C0D7BA918C4100500021CD6 /* ParametrizedLine.h */,
				0C0D7BAA18C4100500021CD6 /* Quaternion.h */,
				0C0D7BAB18C4100500021CD6 /* Rotation2D.h */,
				0C0D7BAC18C4100500021CD6 /* RotationBase.h */,
				0C0D7BAD18C4100500021CD6 /* Scaling.h */,
				0C0D7BAE18C4100500021CD6 /* Transform.h */,
				0C0D7BAF18C4100500021CD6 /* Translation.h */,
			);
			path = Geometry;
			sourceTree = "<group>";
		};
		0C0D7BBC18C4100500021CD6 /* Eigenvalues */ = {
			isa = PBXGroup;
			children = (
				0C0D7BBD18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BBE18C4100500021CD6 /* ComplexEigenSolver.h */,
				0C0D7BBF18C4100500021CD6 /* ComplexSchur.h */,
				0C0D7BC018C4100500021CD6 /* ComplexSchur_MKL.h */,
				0C0D7BC118C4100500021CD6 /* EigenSolver.h */,
				0C0D7BC218C4100500021CD6 /* GeneralizedEigenSolver.h */,
				0C0D7BC318C4100500021CD6 /* GeneralizedSelfAdjointEigenSolver.h */,
				0C0D7BC418C4100500021CD6 /* HessenbergDecomposition.h */,
				0C0D7BC518C4100500021CD6 /* MatrixBaseEigenvalues.h */,
				0C0D7BC618C4100500021CD6 /* RealQZ.h */,
				0C0D7BC718C4100500021CD6 /* RealSchur.h */,
				0C0D7BC818C4100500021CD6 /* RealSchur_MKL.h */,
				0C0D7BC918C4100500021CD6 /* SelfAdjointEigenSolver.h */,
				0C0D7BCA18C4100500021CD6 /* SelfAdjointEigenSolver_MKL.h */,
				0C0D7BCB18C4100500021CD6 /* Tridiagonalization.h */,
			);
			path = Eigenvalues;
			sourceTree = "<group>";
		};
		0C0D7BCC18C4100500021CD6 /* Geometry */ = {
			isa = PBXGroup;
			children = (
				0C0D7BCD18C4100500021CD6 /* AlignedBox.h */,
				0C0D7BCE18C4100500021CD6 /* AngleAxis.h */,
				0C0D7BCF18C4100500021CD6 /* arch */,
				0C0D7BD218C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BD318C4100500021CD6 /* EulerAngles.h */,
				0C0D7BD418C4100500021CD6 /* Homogeneous.h */,
				0C0D7BD518C4100500021CD6 /* Hyperplane.h */,
				0C0D7BD618C4100500021CD6 /* OrthoMethods.h */,
				0C0D7BD718C4100500021CD6 /* ParametrizedLine.h */,
				0C0D7BD818C4100500021CD6 /* Quaternion.h */,
				0C0D7BD918C4100500021CD6 /* Rotation2D.h */,
				0C0D7BDA18C4100500021CD6 /* RotationBase.h */,
				0C0D7BDB18C4100500021CD6 /* Scaling.h */,
				0C0D7BDC18C4100500021CD6 /* Transform.h */,
				0C0D7BDD18C4100500021CD6 /* Translation.h */,
				0C0D7BDE18C4100500021CD6 /* Umeyama.h */,
			);
			path = Geometry;
			sourceTree = "<group>";
		};
		0C0D7BCF18C4100500021CD6 /* arch */ = {
			isa = PBXGroup;
			children = (
				0C0D7BD018C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BD118C4100500021CD6 /* Geometry_SSE.h */,
			);
			path = arch;
			sourceTree = "<group>";
		};
		0C0D7BDF18C4100500021CD6 /* Householder */ = {
			isa = PBXGroup;
			children = (
				0C0D7BE018C4100500021CD6 /* BlockHouseholder.h */,
				0C0D7BE118C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BE218C4100500021CD6 /* Householder.h */,
				0C0D7BE318C4100500021CD6 /* HouseholderSequence.h */,
			);
			path = Householder;
			sourceTree = "<group>";
		};
		0C0D7BE418C4100500021CD6 /* IterativeLinearSolvers */ = {
			isa = PBXGroup;
			children = (
				0C0D7BE518C4100500021CD6 /* BasicPreconditioners.h */,
				0C0D7BE618C4100500021CD6 /* BiCGSTAB.h */,
				0C0D7BE718C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BE818C4100500021CD6 /* ConjugateGradient.h */,
				0C0D7BE918C4100500021CD6 /* IncompleteLUT.h */,
				0C0D7BEA18C4100500021CD6 /* IterativeSolverBase.h */,
			);
			path = IterativeLinearSolvers;
			sourceTree = "<group>";
		};
		0C0D7BEB18C4100500021CD6 /* Jacobi */ = {
			isa = PBXGroup;
			children = (
				0C0D7BEC18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BED18C4100500021CD6 /* Jacobi.h */,
			);
			path = Jacobi;
			sourceTree = "<group>";
		};
		0C0D7BEE18C4100500021CD6 /* LU */ = {
			isa = PBXGroup;
			children = (
				0C0D7BEF18C4100500021CD6 /* arch */,
				0C0D7BF218C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BF318C4100500021CD6 /* Determinant.h */,
				0C0D7BF418C4100500021CD6 /* FullPivLU.h */,
				0C0D7BF518C4100500021CD6 /* Inverse.h */,
				0C0D7BF618C4100500021CD6 /* PartialPivLU.h */,
				0C0D7BF718C4100500021CD6 /* PartialPivLU_MKL.h */,
			);
			path = LU;
			sourceTree = "<group>";
		};
		0C0D7BEF18C4100500021CD6 /* arch */ = {
			isa = PBXGroup;
			children = (
				0C0D7BF018C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BF118C4100500021CD6 /* Inverse_SSE.h */,
			);
			path = arch;
			sourceTree = "<group>";
		};
		0C0D7BF818C4100500021CD6 /* MetisSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7BF918C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BFA18C4100500021CD6 /* MetisSupport.h */,
			);
			path = MetisSupport;
			sourceTree = "<group>";
		};
		0C0D7BFB18C4100500021CD6 /* misc */ = {
			isa = PBXGroup;
			children = (
				0C0D7BFC18C4100500021CD6 /* blas.h */,
				0C0D7BFD18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7BFE18C4100500021CD6 /* Image.h */,
				0C0D7BFF18C4100500021CD6 /* Kernel.h */,
				0C0D7C0018C4100500021CD6 /* Solve.h */,
				0C0D7C0118C4100500021CD6 /* SparseSolve.h */,
			);
			path = misc;
			sourceTree = "<group>";
		};
		0C0D7C0218C4100500021CD6 /* OrderingMethods */ = {
			isa = PBXGroup;
			children = (
				0C0D7C0318C4100500021CD6 /* Amd.h */,
				0C0D7C0418C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C0518C4100500021CD6 /* Eigen_Colamd.h */,
				0C0D7C0618C4100500021CD6 /* Ordering.h */,
			);
			path = OrderingMethods;
			sourceTree = "<group>";
		};
		0C0D7C0718C4100500021CD6 /* PardisoSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7C0818C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C0918C4100500021CD6 /* PardisoSupport.h */,
			);
			path = PardisoSupport;
			sourceTree = "<group>";
		};
		0C0D7C0A18C4100500021CD6 /* PaStiXSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7C0B18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C0C18C4100500021CD6 /* PaStiXSupport.h */,
			);
			path = PaStiXSupport;
			sourceTree = "<group>";
		};
		0C0D7C0D18C4100500021CD6 /* plugins */ = {
			isa = PBXGroup;
			children = (
				0C0D7C0E18C4100500021CD6 /* ArrayCwiseBinaryOps.h */,
				0C0D7C0F18C4100500021CD6 /* ArrayCwiseUnaryOps.h */,
				0C0D7C1018C4100500021CD6 /* BlockMethods.h */,
				0C0D7C1118C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C1218C4100500021CD6 /* CommonCwiseBinaryOps.h */,
				0C0D7C1318C4100500021CD6 /* CommonCwiseUnaryOps.h */,
				0C0D7C1418C4100500021CD6 /* MatrixCwiseBinaryOps.h */,
				0C0D7C1518C4100500021CD6 /* MatrixCwiseUnaryOps.h */,
			);
			path = plugins;
			sourceTree = "<group>";
		};
		0C0D7C1618C4100500021CD6 /* QR */ = {
			isa = PBXGroup;
			children = (
				0C0D7C1718C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C1818C4100500021CD6 /* ColPivHouseholderQR.h */,
				0C0D7C1918C4100500021CD6 /* ColPivHouseholderQR_MKL.h */,
				0C0D7C1A18C4100500021CD6 /* FullPivHouseholderQR.h */,
				0C0D7C1B18C4100500021CD6 /* HouseholderQR.h */,
				0C0D7C1C18C4100500021CD6 /* HouseholderQR_MKL.h */,
			);
			path = QR;
			sourceTree = "<group>";
		};
		0C0D7C1D18C4100500021CD6 /* SparseCholesky */ = {
			isa = PBXGroup;
			children = (
				0C0D7C1E18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C1F18C4100500021CD6 /* SimplicialCholesky.h */,
				0C0D7C2018C4100500021CD6 /* SimplicialCholesky_impl.h */,
			);
			path = SparseCholesky;
			sourceTree = "<group>";
		};
		0C0D7C2118C4100500021CD6 /* SparseCore */ = {
			isa = PBXGroup;
			children = (
				0C0D7C2218C4100500021CD6 /* AmbiVector.h */,
				0C0D7C2318C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C2418C4100500021CD6 /* CompressedStorage.h */,
				0C0D7C2518C4100500021CD6 /* ConservativeSparseSparseProduct.h */,
				0C0D7C2618C4100500021CD6 /* MappedSparseMatrix.h */,
				0C0D7C2718C4100500021CD6 /* SparseBlock.h */,
				0C0D7C2818C4100500021CD6 /* SparseColEtree.h */,
				0C0D7C2918C4100500021CD6 /* SparseCwiseBinaryOp.h */,
				0C0D7C2A18C4100500021CD6 /* SparseCwiseUnaryOp.h */,
				0C0D7C2B18C4100500021CD6 /* SparseDenseProduct.h */,
				0C0D7C2C18C4100500021CD6 /* SparseDiagonalProduct.h */,
				0C0D7C2D18C4100500021CD6 /* SparseDot.h */,
				0C0D7C2E18C4100500021CD6 /* SparseFuzzy.h */,
				0C0D7C2F18C4100500021CD6 /* SparseMatrix.h */,
				0C0D7C3018C4100500021CD6 /* SparseMatrixBase.h */,
				0C0D7C3118C4100500021CD6 /* SparsePermutation.h */,
				0C0D7C3218C4100500021CD6 /* SparseProduct.h */,
				0C0D7C3318C4100500021CD6 /* SparseRedux.h */,
				0C0D7C3418C4100500021CD6 /* SparseSelfAdjointView.h */,
				0C0D7C3518C4100500021CD6 /* SparseSparseProductWithPruning.h */,
				0C0D7C3618C4100500021CD6 /* SparseTranspose.h */,
				0C0D7C3718C4100500021CD6 /* SparseTriangularView.h */,
				0C0D7C3818C4100500021CD6 /* SparseUtil.h */,
				0C0D7C3918C4100500021CD6 /* SparseVector.h */,
				0C0D7C3A18C4100500021CD6 /* SparseView.h */,
				0C0D7C3B18C4100500021CD6 /* TriangularSolver.h */,
			);
			path = SparseCore;
			sourceTree = "<group>";
		};
		0C0D7C3C18C4100500021CD6 /* SparseLU */ = {
			isa = PBXGroup;
			children = (
				0C0D7C3D18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C3E18C4100500021CD6 /* SparseLU.h */,
				0C0D7C3F18C4100500021CD6 /* SparseLU_column_bmod.h */,
				0C0D7C4018C4100500021CD6 /* SparseLU_column_dfs.h */,
				0C0D7C4118C4100500021CD6 /* SparseLU_copy_to_ucol.h */,
				0C0D7C4218C4100500021CD6 /* SparseLU_gemm_kernel.h */,
				0C0D7C4318C4100500021CD6 /* SparseLU_heap_relax_snode.h */,
				0C0D7C4418C4100500021CD6 /* SparseLU_kernel_bmod.h */,
				0C0D7C4518C4100500021CD6 /* SparseLU_Memory.h */,
				0C0D7C4618C4100500021CD6 /* SparseLU_panel_bmod.h */,
				0C0D7C4718C4100500021CD6 /* SparseLU_panel_dfs.h */,
				0C0D7C4818C4100500021CD6 /* SparseLU_pivotL.h */,
				0C0D7C4918C4100500021CD6 /* SparseLU_pruneL.h */,
				0C0D7C4A18C4100500021CD6 /* SparseLU_relax_snode.h */,
				0C0D7C4B18C4100500021CD6 /* SparseLU_Structs.h */,
				0C0D7C4C18C4100500021CD6 /* SparseLU_SupernodalMatrix.h */,
				0C0D7C4D18C4100500021CD6 /* SparseLU_Utils.h */,
				0C0D7C4E18C4100500021CD6 /* SparseLUImpl.h */,
			);
			path = SparseLU;
			sourceTree = "<group>";
		};
		0C0D7C4F18C4100500021CD6 /* SparseQR */ = {
			isa = PBXGroup;
			children = (
				0C0D7C5018C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C5118C4100500021CD6 /* SparseQR.h */,
			);
			path = SparseQR;
			sourceTree = "<group>";
		};
		0C0D7C5218C4100500021CD6 /* SPQRSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7C5318C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C5418C4100500021CD6 /* SuiteSparseQRSupport.h */,
			);
			path = SPQRSupport;
			sourceTree = "<group>";
		};
		0C0D7C5518C4100500021CD6 /* StlSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7C5618C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C5718C4100500021CD6 /* details.h */,
				0C0D7C5818C4100500021CD6 /* StdDeque.h */,
				0C0D7C5918C4100500021CD6 /* StdList.h */,
				0C0D7C5A18C4100500021CD6 /* StdVector.h */,
			);
			path = StlSupport;
			sourceTree = "<group>";
		};
		0C0D7C5B18C4100500021CD6 /* SuperLUSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7C5C18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C5D18C4100500021CD6 /* SuperLUSupport.h */,
			);
			path = SuperLUSupport;
			sourceTree = "<group>";
		};
		0C0D7C5E18C4100500021CD6 /* SVD */ = {
			isa = PBXGroup;
			children = (
				0C0D7C5F18C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C6018C4100500021CD6 /* JacobiSVD.h */,
				0C0D7C6118C4100500021CD6 /* JacobiSVD_MKL.h */,
				0C0D7C6218C4100500021CD6 /* UpperBidiagonalization.h */,
			);
			path = SVD;
			sourceTree = "<group>";
		};
		0C0D7C6318C4100500021CD6 /* UmfPackSupport */ = {
			isa = PBXGroup;
			children = (
				0C0D7C6418C4100500021CD6 /* CMakeLists.txt */,
				0C0D7C6518C4100500021CD6 /* UmfPackSupport.h */,
			);
			path = UmfPackSupport;
			sourceTree = "<group>";
		};
		0C10F95819D3C8800010815F /* support */ = {
			isa = PBXGroup;
			children = (
				0C42CBE11A5CE44500AA2566 /* iOS-Info.plist */,
				0C10F95919D3C8800010815F /* OSX-Info.plist */,
			);
			path = support;
			sourceTree = "<group>";
		};
		0C3BE7AC191B1D5F0048742B /* SDL_mixer */ = {
			isa = PBXGroup;
			children = (
				0C3BE7AD191B1D5F0048742B /* SDL_mixer.h */,
			);
			path = SDL_mixer;
			sourceTree = "<group>";
		};
		0C46F550175F00E800BF6EC9 /* lib3ds */ = {
			isa = PBXGroup;
			children = (
				0C46F551175F00E800BF6EC9 /* lib3ds.h */,
			);
			path = lib3ds;
			sourceTree = "<group>";
		};
		0C46F552175F00E800BF6EC9 /* SDL2 */ = {
			isa = PBXGroup;
			children = (
				0C07D5C2199730910020B332 /* SDL_image.h */,
				0C46F553175F00E800BF6EC9 /* begin_code.h */,
				0C46F554175F00E800BF6EC9 /* close_code.h */,
				0C46F555175F00E800BF6EC9 /* SDL.h */,
				0C46F556175F00E800BF6EC9 /* SDL_assert.h */,
				0C46F557175F00E800BF6EC9 /* SDL_atomic.h */,
				0C46F558175F00E800BF6EC9 /* SDL_audio.h */,
				0C46F559175F00E800BF6EC9 /* SDL_bits.h */,
				0C46F55A175F00E800BF6EC9 /* SDL_blendmode.h */,
				0C46F55B175F00E800BF6EC9 /* SDL_clipboard.h */,
				0C46F55C175F00E800BF6EC9 /* SDL_config.h */,
				0C46F55D175F00E800BF6EC9 /* SDL_cpuinfo.h */,
				0C46F55E175F00E800BF6EC9 /* SDL_endian.h */,
				0C46F55F175F00E800BF6EC9 /* SDL_error.h */,
				0C46F560175F00E800BF6EC9 /* SDL_events.h */,
				0C46F561175F00E800BF6EC9 /* SDL_gamecontroller.h */,
				0C46F562175F00E800BF6EC9 /* SDL_gesture.h */,
				0C46F563175F00E800BF6EC9 /* SDL_haptic.h */,
				0C46F564175F00E800BF6EC9 /* SDL_hints.h */,
				0C46F565175F00E800BF6EC9 /* SDL_joystick.h */,
				0C46F566175F00E800BF6EC9 /* SDL_keyboard.h */,
				0C46F567175F00E800BF6EC9 /* SDL_keycode.h */,
				0C46F568175F00E800BF6EC9 /* SDL_loadso.h */,
				0C46F569175F00E800BF6EC9 /* SDL_log.h */,
				0C46F56A175F00E800BF6EC9 /* SDL_main.h */,
				0C46F56B175F00E800BF6EC9 /* SDL_messagebox.h */,
				0C46F56C175F00E800BF6EC9 /* SDL_mouse.h */,
				0C46F56D175F00E800BF6EC9 /* SDL_mutex.h */,
				0C46F56E175F00E800BF6EC9 /* SDL_name.h */,
				0C46F56F175F00E800BF6EC9 /* SDL_opengl.h */,
				0C46F570175F00E800BF6EC9 /* SDL_opengles.h */,
				0C46F571175F00E800BF6EC9 /* SDL_opengles2.h */,
				0C46F572175F00E800BF6EC9 /* SDL_pixels.h */,
				0C46F573175F00E800BF6EC9 /* SDL_platform.h */,
				0C46F574175F00E800BF6EC9 /* SDL_power.h */,
				0C46F575175F00E800BF6EC9 /* SDL_quit.h */,
				0C46F576175F00E800BF6EC9 /* SDL_rect.h */,
				0C46F577175F00E800BF6EC9 /* SDL_render.h */,
				0C46F578175F00E800BF6EC9 /* SDL_revision.h */,
				0C46F579175F00E800BF6EC9 /* SDL_rwops.h */,
				0C46F57A175F00E800BF6EC9 /* SDL_scancode.h */,
				0C46F57B175F00E800BF6EC9 /* SDL_shape.h */,
				0C46F57C175F00E800BF6EC9 /* SDL_stdinc.h */,
				0C46F57D175F00E800BF6EC9 /* SDL_surface.h */,
				0C46F57E175F00E800BF6EC9 /* SDL_system.h */,
				0C46F57F175F00E800BF6EC9 /* SDL_syswm.h */,
				0C46F580175F00E800BF6EC9 /* SDL_test.h */,
				0C46F581175F00E800BF6EC9 /* SDL_test_assert.h */,
				0C46F582175F00E800BF6EC9 /* SDL_test_common.h */,
				0C46F583175F00E800BF6EC9 /* SDL_test_compare.h */,
				0C46F584175F00E800BF6EC9 /* SDL_test_crc32.h */,
				0C46F585175F00E800BF6EC9 /* SDL_test_font.h */,
				0C46F586175F00E800BF6EC9 /* SDL_test_fuzzer.h */,
				0C46F587175F00E800BF6EC9 /* SDL_test_harness.h */,
				0C46F588175F00E800BF6EC9 /* SDL_test_images.h */,
				0C46F589175F00E800BF6EC9 /* SDL_test_log.h */,
				0C46F58A175F00E800BF6EC9 /* SDL_test_md5.h */,
				0C46F58B175F00E800BF6EC9 /* SDL_test_random.h */,
				0C46F58C175F00E800BF6EC9 /* SDL_thread.h */,
				0C46F58D175F00E800BF6EC9 /* SDL_timer.h */,
				0C46F58E175F00E800BF6EC9 /* SDL_touch.h */,
				0C46F58F175F00E800BF6EC9 /* SDL_types.h */,
				0C46F590175F00E800BF6EC9 /* SDL_version.h */,
				0C46F591175F00E800BF6EC9 /* SDL_video.h */,
			);
			path = SDL2;
			sourceTree = "<group>";
		};
		0C50D25B16D208A900E43D7B /* include */ = {
			isa = PBXGroup;
			children = (
				0C0D7B0218C4100500021CD6 /* Eigen */,
				0CA36B0219F206C0003543FE /* freetype2 */,
				0C46F550175F00E800BF6EC9 /* lib3ds */,
				0C46F552175F00E800BF6EC9 /* SDL2 */,
				0C3BE7AC191B1D5F0048742B /* SDL_mixer */,
			);
			path = include;
			sourceTree = "<group>";
		};
		0C50D3A216D208A900E43D7B /* src */ = {
			isa = PBXGroup;
			children = (
				0C6631161D8E299800987867 /* zge */,
			);
			path = src;
			sourceTree = "<group>";
		};
		0C50D3A316D208A900E43D7B /* contrib */ = {
			isa = PBXGroup;
			children = (
				0C898C751917251000CF3009 /* 3dcamera.h */,
				0C898C741917251000CF3009 /* 3dcamera.cpp */,
				0CE0341819D1D6EC00CD7A19 /* camera_controller.h */,
				0CE0341719D1D6EC00CD7A19 /* camera_controller.cpp */,
				0C7D3E1019C57194003AC9E9 /* cube.h */,
				0C7D3E0F19C57194003AC9E9 /* cube.cpp */,
				0CE9FF961A845832001B19EE /* box_layout.h */,
				0CE9FF951A845832001B19EE /* box_layout.cpp */,
				0C71922D1A80070900A2073A /* line.h */,
				0C71922C1A80070900A2073A /* line.cpp */,
				0C898C71191722B600CF3009 /* orthocamera.h */,
				0C898C70191722B600CF3009 /* orthocamera.cpp */,
				0C91834D1B731BB200ED9A83 /* plane.h */,
				0C91834C1B731BB200ED9A83 /* plane.cpp */,
				0C898C7919172F2900CF3009 /* quad.h */,
				0C898C7819172F2900CF3009 /* quad.cpp */,
				0CDE862919311B0F00C787FD /* sprite_node.h */,
				0CDE862819311B0F00C787FD /* sprite_node.cpp */,
				0CF1D2AE19176F9400CDBEEE /* wave_audio_asset.h */,
				0CF1D2AD19176F9400CDBEEE /* wave_audio_asset.cpp */,
			);
			path = contrib;
			sourceTree = "<group>";
		};
		0C50D3A616D208A900E43D7B /* core */ = {
			isa = PBXGroup;
			children = (
				0C50D3A716D208A900E43D7B /* application.h */,
				0C50D3A816D208A900E43D7B /* application.cpp */,
				0C07BD7417C0496A00C38084 /* color.h */,
				0C07BD7317C0496A00C38084 /* color.cpp */,
				0CE6989818C9AB8100D57528 /* defines.h */,
				0C50D3AA16D208A900E43D7B /* display.h */,
				0C50D3A916D208A900E43D7B /* display.cpp */,
				0C50D3AE16D208A900E43D7B /* engine.h */,
				0C50D3AD16D208A900E43D7B /* engine.cpp */,
				0C82C32B191C859A006E0295 /* foundation.h */,
				0C50D3B716D208A900E43D7B /* noncopyable.h */,
				0CD633A8188F8E360061D259 /* observable.h */,
				0CD633A7188F8E360061D259 /* observable.hpp */,
				0C82C32E191C87FB006E0295 /* resource_bundle.h */,
				0C82C32D191C87FB006E0295 /* resource_bundle.cpp */,
				0C50D3BD16D208A900E43D7B /* run_loop.h */,
				0C50D3BC16D208A900E43D7B /* run_loop.cpp */,
				0C50D3BE16D208A900E43D7B /* schedulable.h */,
				0C06349F19D26DE100832237 /* schedulable.hpp */,
				0C0634A219D27E8700832237 /* schedulable.cpp */,
				0CCD2F5A176128AC00F497CF /* timer.h */,
				0CCD2F59176128AC00F497CF /* timer.cpp */,
				0C50D3BF16D208A900E43D7B /* types.h */,
				0CE99E471A01EC36009DF9BB /* types.cpp */,
			);
			path = core;
			sourceTree = "<group>";
		};
		0C50D3C016D208A900E43D7B /* graph */ = {
			isa = PBXGroup;
			children = (
				0C89D4431931424400F1D9DB /* action.h */,
				0C89D4421931424400F1D9DB /* action.cpp */,
				0C688F9F18726E64002C38EF /* geometry.h */,
				0C688F9E18726E64002C38EF /* geometry.cpp */,
				0C1C6E971A8455A8005710AA /* layout.h */,
				0C1C6E961A8455A8005710AA /* layout.cpp */,
				0C688FA318727756002C38EF /* material.h */,
				0C688FA218727756002C38EF /* material.cpp */,
				0C688F9718726A65002C38EF /* model.h */,
				0C688F9618726A65002C38EF /* model.cpp */,
				0CEC024C176D5DF90029DE82 /* node.h */,
				0CEC024B176D5DF90029DE82 /* node.cpp */,
				0CEC024E176D5DF90029DE82 /* scene.h */,
				0CEC024D176D5DF90029DE82 /* scene.cpp */,
			);
			path = graph;
			sourceTree = "<group>";
		};
		0C50D3C516D208A900E43D7B /* renderer */ = {
			isa = PBXGroup;
			children = (
				0C50D3C716D208A900E43D7B /* camera.h */,
				0C42CCA01A5D041900AA2566 /* display_render_context.h */,
				0C42CC9F1A5D041900AA2566 /* display_render_context.cpp */,
				0C42CC961A5D036800AA2566 /* eagl_render_context.h */,
				0C42CC951A5D036800AA2566 /* eagl_render_context.mm */,
				0C50D3C916D208A900E43D7B /* graphics_buffer.h */,
				0CD4858D1BF8633600AD5659 /* graphics_buffer.cpp */,
				0CE99A08191C99F50011DED6 /* image.h */,
				0CE99A07191C99F50011DED6 /* image.cpp */,
				0C7D3E1A19C67376003AC9E9 /* light.h */,
				0C7D3E1919C67376003AC9E9 /* light.cpp */,
				0C064489177029CC004AAA20 /* opengl.h */,
				0C010DFB1DB4875E005B6F4E /* openglext.h */,
				0C010DFA1DB4875E005B6F4E /* openglext.cpp */,
				0C59F75E1A828A8700D2BA8A /* renderable.h */,
				0C4B4AF41749A83500FD4B53 /* render_context.h */,
				0C4B4AF31749A83500FD4B53 /* render_context.cpp */,
				0C2B01AA176D5FE300522671 /* render_manager.h */,
				0C2B01A9176D5FE300522671 /* render_manager.cpp */,
				0C5D324B1761C82A0013ACFF /* shader.h */,
				0C5D324A1761C82A0013ACFF /* shader.cpp */,
				0C4B4AF01749A52700FD4B53 /* shader_program.h */,
				0C4B4AEF1749A52700FD4B53 /* shader_program.cpp */,
				0CAA7A51191C975200462668 /* texture.h */,
				0CAA7A50191C975200462668 /* texture.cpp */,
				0C8302D3187FF4BC00708944 /* uniform.h */,
				0C8302D2187FF4BC00708944 /* uniform.hpp */,
				0CD633A5188EF3E20061D259 /* uniform.cpp */,
				0C1F28B917C1C3FF00CA03C4 /* vertex_array.h */,
				0C1F28B817C1C3FF00CA03C4 /* vertex_array.cpp */,
			);
			path = renderer;
			sourceTree = "<group>";
		};
		0C50D3D116D208A900E43D7B /* util */ = {
			isa = PBXGroup;
			children = (
				0C0D7C6D18C410B100021CD6 /* data.h */,
				0C0D7C6C18C410B100021CD6 /* data.cpp */,
				0CE0A6BC19F8C70A00AA119A /* describable.h */,
				0CE0A6BE19F8C81900AA119A /* describable.cpp */,
				0C50D3D316D208A900E43D7B /* exception.h */,
				0C50D3D216D208A900E43D7B /* exception.cpp */,
				0C21E5EB18C2AC99009E508D /* glutil.h */,
				0C21E5E918C2AC80009E508D /* glutil.cpp */,
				0C50D3D516D208A900E43D7B /* logger.h */,
				0C50D3D416D208A900E43D7B /* logger.cpp */,
				0C50D3D916D208A900E43D7B /* util.h */,
				0C50D3D816D208A900E43D7B /* util.cpp */,
			);
			path = util;
			sourceTree = "<group>";
		};
		0C5D32451761C38B0013ACFF /* shaders */ = {
			isa = PBXGroup;
			children = (
				0CE70A9D1A5E2C4800663A32 /* vertex.vsh.h */,
				0CE70AA01A5E2C5100663A32 /* fragment.fsh.h */,
			);
			path = shaders;
			sourceTree = "<group>";
		};
		0C6631161D8E299800987867 /* zge */ = {
			isa = PBXGroup;
			children = (
				0C50D25A16D2089C00E43D7B /* zge.h */,
				0CF7E21A161C010F00105F7C /* zge.pch */,
				0CF1D2971917663200CDBEEE /* audio */,
				0C50D3A316D208A900E43D7B /* contrib */,
				0C50D3A616D208A900E43D7B /* core */,
				0CC464B6186109B400C6AF22 /* math */,
				0C50D3C016D208A900E43D7B /* graph */,
				0CF1D29C19176ADC00CDBEEE /* input */,
				0C50D3C516D208A900E43D7B /* renderer */,
				0C5D32451761C38B0013ACFF /* shaders */,
				0CA36B3A19F20B0C003543FE /* text */,
				0C50D3D116D208A900E43D7B /* util */,
			);
			path = zge;
			sourceTree = "<group>";
		};
		0CA36B0219F206C0003543FE /* freetype2 */ = {
			isa = PBXGroup;
			children = (
				0CA36B0319F206C0003543FE /* config */,
				0CA36B0919F206C0003543FE /* freetype.h */,
				0CA36B0A19F206C0003543FE /* ft2build.h */,
				0CA36B0B19F206C0003543FE /* ftadvanc.h */,
				0CA36B0C19F206C0003543FE /* ftautoh.h */,
				0CA36B0D19F206C0003543FE /* ftbbox.h */,
				0CA36B0E19F206C0003543FE /* ftbdf.h */,
				0CA36B0F19F206C0003543FE /* ftbitmap.h */,
				0CA36B1019F206C0003543FE /* ftbzip2.h */,
				0CA36B1119F206C0003543FE /* ftcache.h */,
				0CA36B1219F206C0003543FE /* ftcffdrv.h */,
				0CA36B1319F206C0003543FE /* ftchapters.h */,
				0CA36B1419F206C0003543FE /* ftcid.h */,
				0CA36B1519F206C0003543FE /* fterrdef.h */,
				0CA36B1619F206C0003543FE /* fterrors.h */,
				0CA36B1719F206C0003543FE /* ftgasp.h */,
				0CA36B1819F206C0003543FE /* ftglyph.h */,
				0CA36B1919F206C0003543FE /* ftgxval.h */,
				0CA36B1A19F206C0003543FE /* ftgzip.h */,
				0CA36B1B19F206C0003543FE /* ftimage.h */,
				0CA36B1C19F206C0003543FE /* ftincrem.h */,
				0CA36B1D19F206C0003543FE /* ftlcdfil.h */,
				0CA36B1E19F206C0003543FE /* ftlist.h */,
				0CA36B1F19F206C0003543FE /* ftlzw.h */,
				0CA36B2019F206C0003543FE /* ftmac.h */,
				0CA36B2119F206C0003543FE /* ftmm.h */,
				0CA36B2219F206C0003543FE /* ftmodapi.h */,
				0CA36B2319F206C0003543FE /* ftmoderr.h */,
				0CA36B2419F206C0003543FE /* ftotval.h */,
				0CA36B2519F206C0003543FE /* ftoutln.h */,
				0CA36B2619F206C0003543FE /* ftpfr.h */,
				0CA36B2719F206C0003543FE /* ftrender.h */,
				0CA36B2819F206C0003543FE /* ftsizes.h */,
				0CA36B2919F206C0003543FE /* ftsnames.h */,
				0CA36B2A19F206C0003543FE /* ftstroke.h */,
				0CA36B2B19F206C0003543FE /* ftsynth.h */,
				0CA36B2C19F206C0003543FE /* ftsystem.h */,
				0CA36B2D19F206C0003543FE /* fttrigon.h */,
				0CA36B2E19F206C0003543FE /* ftttdrv.h */,
				0CA36B2F19F206C0003543FE /* fttypes.h */,
				0CA36B3019F206C0003543FE /* ftwinfnt.h */,
				0CA36B3119F206C0003543FE /* ftxf86.h */,
				0CA36B3219F206C0003543FE /* t1tables.h */,
				0CA36B3319F206C0003543FE /* ttnameid.h */,
				0CA36B3419F206C0003543FE /* tttables.h */,
				0CA36B3519F206C0003543FE /* tttags.h */,
				0CA36B3619F206C0003543FE /* ttunpat.h */,
			);
			path = freetype2;
			sourceTree = "<group>";
		};
		0CA36B0319F206C0003543FE /* config */ = {
			isa = PBXGroup;
			children = (
				0CA36B0419F206C0003543FE /* ftconfig.h */,
				0CA36B0519F206C0003543FE /* ftheader.h */,
				0CA36B0619F206C0003543FE /* ftmodule.h */,
				0CA36B0719F206C0003543FE /* ftoption.h */,
				0CA36B0819F206C0003543FE /* ftstdlib.h */,
			);
			path = config;
			sourceTree = "<group>";
		};
		0CA36B3A19F20B0C003543FE /* text */ = {
			isa = PBXGroup;
			children = (
				0CA36B3C19F20B17003543FE /* font.h */,
				0CA36B3B19F20B17003543FE /* font.cpp */,
				0C69589719F3874700208B27 /* glyph.h */,
				0C69589619F3874700208B27 /* glyph.cpp */,
				0C69589319F3532100208B27 /* text_node.h */,
				0C69589219F3532100208B27 /* text_node.cpp */,
			);
			path = text;
			sourceTree = "<group>";
		};
		0CC464B6186109B400C6AF22 /* math */ = {
			isa = PBXGroup;
			children = (
				0CDEB0721B77F23000E4032A /* constants.h */,
				0C62280F18610B6F00DA3182 /* matrix.h */,
				0C62280E18610B6F00DA3182 /* matrix.cpp */,
				0CA262671863F71A003E8D37 /* vector.h */,
				0C49AEDE18642152005A1D78 /* vector_private.h */,
				0CA262661863F71A003E8D37 /* vector.cpp */,
			);
			path = math;
			sourceTree = "<group>";
		};
		0CF1D2971917663200CDBEEE /* audio */ = {
			isa = PBXGroup;
			children = (
				0CF1D2AA19176D9300CDBEEE /* audio_asset.h */,
				0CF1D2A919176D9300CDBEEE /* audio_asset.cpp */,
				0CF1D2991917664800CDBEEE /* audio_manager.h */,
				0CF1D2981917664800CDBEEE /* audio_manager.cpp */,
				0CF1D2A619176D2600CDBEEE /* sound.h */,
				0C7712F819177E4D0050C098 /* sound_private.h */,
				0CF1D2A519176D2600CDBEEE /* sound.cpp */,
			);
			path = audio;
			sourceTree = "<group>";
		};
		0CF1D29C19176ADC00CDBEEE /* input */ = {
			isa = PBXGroup;
			children = (
				0CF1D29E19176ADC00CDBEEE /* event.h */,
				0CF1D29D19176ADC00CDBEEE /* event.cpp */,
				0CF1D2A019176ADC00CDBEEE /* input_manager.h */,
				0CF1D29F19176ADC00CDBEEE /* input_manager.cpp */,
				0CE0341C19D1D76800CD7A19 /* responder.h */,
				0CE0341B19D1D76800CD7A19 /* responder.cpp */,
			);
			path = input;
			sourceTree = "<group>";
		};
		563B6E8B14B2FD2600004C6A = {
			isa = PBXGroup;
			children = (
				0C5E3D79159ED53B0062242E /* README */,
				0C50D25B16D208A900E43D7B /* include */,
				0C50D3A216D208A900E43D7B /* src */,
				0C10F95819D3C8800010815F /* support */,
				563B6EC214B2FD8500004C6A /* Frameworks */,
				563B6E9714B2FD2600004C6A /* Products */,
			);
			sourceTree = "<group>";
		};
		563B6E9714B2FD2600004C6A /* Products */ = {
			isa = PBXGroup;
			children = (
				0C10F95619D3C8800010815F /* ZGE.framework */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		563B6EC214B2FD8500004C6A /* Frameworks */ = {
			isa = PBXGroup;
			children = (
				0CBD3F1220F16DF8000D6E3E /* libfreetype.6.dylib */,
				0C984AB020467B78000BF01C /* libSDL2_image-2.0.0.dylib */,
				0C2167151F1B1A40004B8A16 /* SDL2_image.framework */,
				0C778F301DA398FD00670A9D /* libSDL2_image-2.0.0.dylib */,
				0CB8168C1D8E7C5100F90A92 /* lib3ds-1.3.0.0.dylib */,
				0CB8168A1D8E536000F90A92 /* libSDL_image-1.2.0.dylib */,
				0CB816881D8E534C00F90A92 /* libfreetype.6.dylib */,
				0CB816861D8E533E00F90A92 /* libSDL2-2.0.0.dylib */,
				0CB816841D8E532D00F90A92 /* lib3ds-2.0.0.0.dylib */,
				0C14B94C1C1292C600BDC892 /* zprelude.framework */,
				0C42CC0B1A5CFD7C00AA2566 /* QuartzCore.framework */,
				0C42CC051A5CFCEA00AA2566 /* Foundation.framework */,
				0C42CC031A5CFCE100AA2566 /* AudioToolbox.framework */,
				0C42CC011A5CFCD300AA2566 /* AudioUnit.framework */,
				0C42CBFF1A5CFCB400AA2566 /* CoreAudio.framework */,
				0C42CBF71A5CEB3B00AA2566 /* MobileCoreServices.framework */,
				0C42CBF51A5CEB2200AA2566 /* UIKit.framework */,
				0C42CBF31A5CEB1400AA2566 /* ImageIO.framework */,
				0C42CBF11A5CEAE200AA2566 /* CoreGraphics.framework */,
				0C42CBEF1A5CEAD900AA2566 /* CoreFoundation.framework */,
				0C42CBE21A5CE52900AA2566 /* OpenGLES.framework */,
				0C10FB7A19D3CB540010815F /* OpenGL.framework */,
				0CF1D2951917639400CDBEEE /* OpenAL.framework */,
				0C46F5D2175F014F00BF6EC9 /* lib3ds-2.0.0.0.dylib */,
				0C46F5D3175F014F00BF6EC9 /* libSDL2-2.0.0.dylib */,
				0C977FB2173752CD0071E8E6 /* CoreFoundation.framework */,
				0C977FB0173752B60071E8E6 /* OpenGL.framework */,
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		0C10F95519D3C8800010815F /* ZGE OSX */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 0C10F96919D3C8800010815F /* Build configuration list for PBXNativeTarget "ZGE OSX" */;
			buildPhases = (
				0C10F95119D3C8800010815F /* Sources */,
				0C10F95219D3C8800010815F /* Frameworks */,
				0C6631A81D8E50D000987867 /* Copy Umbrella Headers */,
				0C6631171D8E4E6700987867 /* Copy Audio Headers */,
				0C6631601D8E4FC000987867 /* Copy Contrib Headers */,
				0C66316B1D8E4FDE00987867 /* Copy Core Headers */,
				0C66317B1D8E4FF800987867 /* Copy Math Headers */,
				0C6631801D8E501200987867 /* Copy Graph Headers */,
				0C6631881D8E503400987867 /* Copy Input Headers */,
				0C66318C1D8E505400987867 /* Copy Renderer Headers */,
				0C66319D1D8E506E00987867 /* Copy Text Headers */,
				0C6631A11D8E508F00987867 /* Copy Util Headers */,
				0C10F95419D3C8800010815F /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = "ZGE OSX";
			productName = ZGE;
			productReference = 0C10F95619D3C8800010815F /* ZGE.framework */;
			productType = "com.apple.product-type.framework";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		563B6E8D14B2FD2600004C6A /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0600;
				ORGANIZATIONNAME = omegaHern;
				TargetAttributes = {
					0C10F95519D3C8800010815F = {
						CreatedOnToolsVersion = 6.0;
					};
				};
			};
			buildConfigurationList = 563B6E9014B2FD2600004C6A /* Build configuration list for PBXProject "ZGE" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
			);
			mainGroup = 563B6E8B14B2FD2600004C6A;
			productRefGroup = 563B6E9714B2FD2600004C6A /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				0C10F95519D3C8800010815F /* ZGE OSX */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		0C10F95419D3C8800010815F /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0CE70A9E1A5E2C4800663A32 /* vertex.vsh.h in Resources */,
				0CE70AA11A5E2C5100663A32 /* fragment.fsh.h in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		0C10F95119D3C8800010815F /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0C10F97019D3C91D0010815F /* audio_asset.cpp in Sources */,
				0C10F97219D3C91D0010815F /* audio_manager.cpp in Sources */,
				0CE99E481A01EC36009DF9BB /* types.cpp in Sources */,
				0C10F97519D3C91D0010815F /* sound.cpp in Sources */,
				0C10F97719D3C91D0010815F /* 3dcamera.cpp in Sources */,
				0C10F97919D3C91D0010815F /* camera_controller.cpp in Sources */,
				0C10F97B19D3C91D0010815F /* cube.cpp in Sources */,
				0C10F97D19D3C91D0010815F /* orthocamera.cpp in Sources */,
				0C10F97F19D3C91D0010815F /* quad.cpp in Sources */,
				0C69589419F3532100208B27 /* text_node.cpp in Sources */,
				0C10F98119D3C91D0010815F /* sprite_node.cpp in Sources */,
				0C10F98319D3C91D0010815F /* wave_audio_asset.cpp in Sources */,
				0C10F98519D3C91D0010815F /* application.cpp in Sources */,
				0C10F98719D3C91D0010815F /* color.cpp in Sources */,
				0C10F98A19D3C91D0010815F /* display.cpp in Sources */,
				0C10F98C19D3C91D0010815F /* engine.cpp in Sources */,
				0C10F99219D3C91D0010815F /* resource_bundle.cpp in Sources */,
				0C10F99419D3C91D0010815F /* run_loop.cpp in Sources */,
				0C10F99919D3C91D0010815F /* schedulable.cpp in Sources */,
				0C42CCA11A5D041900AA2566 /* display_render_context.cpp in Sources */,
				0CE9FF971A845832001B19EE /* box_layout.cpp in Sources */,
				0C10F99B19D3C91D0010815F /* timer.cpp in Sources */,
				0CD4858E1BF8633600AD5659 /* graphics_buffer.cpp in Sources */,
				0C10F9A019D3C91D0010815F /* matrix.cpp in Sources */,
				0C10F9A319D3C91D0010815F /* vector.cpp in Sources */,
				0C10F9A519D3C91D0010815F /* action.cpp in Sources */,
				0CE0A6BF19F8C81900AA119A /* describable.cpp in Sources */,
				0C10F9A719D3C91D0010815F /* geometry.cpp in Sources */,
				0C010DFC1DB4875E005B6F4E /* openglext.cpp in Sources */,
				0C10F9A919D3C91D0010815F /* material.cpp in Sources */,
				0C71922E1A80070900A2073A /* line.cpp in Sources */,
				0C1C6E981A8455A8005710AA /* layout.cpp in Sources */,
				0C91834E1B731BB200ED9A83 /* plane.cpp in Sources */,
				0C10F9AB19D3C91D0010815F /* model.cpp in Sources */,
				0C10F9AD19D3C91D0010815F /* node.cpp in Sources */,
				0C10F9AF19D3C91D0010815F /* scene.cpp in Sources */,
				0C10F9B119D3C91D0010815F /* event.cpp in Sources */,
				0C10F9B319D3C91D0010815F /* input_manager.cpp in Sources */,
				0C10F9B519D3C91D0010815F /* responder.cpp in Sources */,
				0C69589819F3874700208B27 /* glyph.cpp in Sources */,
				0C10F9BA19D3C91D0010815F /* image.cpp in Sources */,
				0C10F9BC19D3C91D0010815F /* light.cpp in Sources */,
				0C10F9BF19D3C91D0010815F /* render_context.cpp in Sources */,
				0C10F9C119D3C91D0010815F /* render_manager.cpp in Sources */,
				0C10F9C319D3C91D0010815F /* shader.cpp in Sources */,
				0C10F9C519D3C91D0010815F /* shader_program.cpp in Sources */,
				0C10F9C719D3C91D0010815F /* texture.cpp in Sources */,
				0C10F9CA19D3C91D0010815F /* uniform.cpp in Sources */,
				0C10F9CC19D3C91D0010815F /* vertex_array.cpp in Sources */,
				0C10F9D019D3C91D0010815F /* data.cpp in Sources */,
				0C10F9D219D3C91D0010815F /* exception.cpp in Sources */,
				0C10F9D419D3C91D0010815F /* glutil.cpp in Sources */,
				0C10F9D619D3C91D0010815F /* logger.cpp in Sources */,
				0CA36B3D19F20B17003543FE /* font.cpp in Sources */,
				0C10F9D819D3C91D0010815F /* util.cpp in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin XCBuildConfiguration section */
		0C10F96A19D3C8800010815F /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COMBINE_HIDPI_IMAGES = YES;
				COPY_PHASE_STRIP = NO;
				CURRENT_PROJECT_VERSION = 1;
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(inherited)",
					"$(LOCAL_LIBRARY_DIR)/Frameworks",
				);
				FRAMEWORK_VERSION = A;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				HEADER_SEARCH_PATHS = (
					"$(SRCROOT)/include",
					"$(SRCROOT)/include/freetype2",
					"$(SRCROOT)/src",
					/usr/local/include,
					/usr/local/include/eigen3,
					/usr/local/include/freetype2,
				);
				INFOPLIST_FILE = "support/OSX-Info.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					/usr/local/lib,
				);
				MTL_ENABLE_DEBUG_INFO = YES;
				PRODUCT_NAME = ZGE;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = macosx;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Debug;
		};
		0C10F96B19D3C8800010815F /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				COMBINE_HIDPI_IMAGES = YES;
				COPY_PHASE_STRIP = YES;
				CURRENT_PROJECT_VERSION = 1;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				DYLIB_COMPATIBILITY_VERSION = 1;
				DYLIB_CURRENT_VERSION = 1;
				DYLIB_INSTALL_NAME_BASE = "@rpath";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(inherited)",
					"$(LOCAL_LIBRARY_DIR)/Frameworks",
				);
				FRAMEWORK_VERSION = A;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				HEADER_SEARCH_PATHS = (
					"$(SRCROOT)/include",
					"$(SRCROOT)/include/freetype2",
					"$(SRCROOT)/src",
					/usr/local/include,
					/usr/local/include/eigen3,
					/usr/local/include/freetype2,
				);
				INFOPLIST_FILE = "support/OSX-Info.plist";
				INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					/usr/local/lib,
				);
				MTL_ENABLE_DEBUG_INFO = NO;
				PRODUCT_NAME = ZGE;
				SKIP_INSTALL = YES;
				SUPPORTED_PLATFORMS = macosx;
				VERSIONING_SYSTEM = "apple-generic";
				VERSION_INFO_PREFIX = "";
			};
			name = Release;
		};
		563B6E9814B2FD2600004C6A /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_WARN_EMPTY_BODY = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				HEADER_SEARCH_PATHS = "$(SRCROOT)/include";
				LD_RUNPATH_SEARCH_PATHS = "@rpath";
				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/lib";
				ONLY_ACTIVE_ARCH = YES;
				SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
			};
			name = Debug;
		};
		563B6E9914B2FD2600004C6A /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				CLANG_CXX_LANGUAGE_STANDARD = "c++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_WARN_EMPTY_BODY = YES;
				GCC_PRECOMPILE_PREFIX_HEADER = YES;
				GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
				GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES;
				GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES;
				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
				GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				HEADER_SEARCH_PATHS = "$(SRCROOT)/include";
				LD_RUNPATH_SEARCH_PATHS = "@rpath";
				LIBRARY_SEARCH_PATHS = "$(SRCROOT)/lib";
				SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		0C10F96919D3C8800010815F /* Build configuration list for PBXNativeTarget "ZGE OSX" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0C10F96A19D3C8800010815F /* Debug */,
				0C10F96B19D3C8800010815F /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		563B6E9014B2FD2600004C6A /* Build configuration list for PBXProject "ZGE" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				563B6E9814B2FD2600004C6A /* Debug */,
				563B6E9914B2FD2600004C6A /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 563B6E8D14B2FD2600004C6A /* Project object */;
}

D ZGE.xcodeproj/project.xcworkspace/contents.xcworkspacedata => ZGE.xcodeproj/project.xcworkspace/contents.xcworkspacedata +0 -7
@@ 1,7 0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
   version = "1.0">
   <FileRef
      location = "self:ZGE.xcodeproj">
   </FileRef>
</Workspace>

D cmake/Modules/FindSDL2.cmake => cmake/Modules/FindSDL2.cmake +0 -163
@@ 1,163 0,0 @@
# Locate SDL2 library
# This module defines
# SDL2_LIBRARY, the name of the library to link against
# SDL2_FOUND, if false, do not try to link to SDL2
# SDL2_INCLUDE_DIR, where to find SDL.h
#
# This module responds to the the flag:
# SDL2_BUILDING_LIBRARY
# If this is defined, then no SDL2main will be linked in because
# only applications need main().
# Otherwise, it is assumed you are building an application and this
# module will attempt to locate and set the the proper link flags
# as part of the returned SDL2_LIBRARY variable.
#
# Don't forget to include SDLmain.h and SDLmain.m your project for the
# OS X framework based version. (Other versions link to -lSDL2main which
# this module will try to find on your behalf.) Also for OS X, this
# module will automatically add the -framework Cocoa on your behalf.
#
#
# Additional Note: If you see an empty SDL2_LIBRARY_TEMP in your configuration
# and no SDL2_LIBRARY, it means CMake did not find your SDL2 library
# (SDL2.dll, libsdl2.so, SDL2.framework, etc).
# Set SDL2_LIBRARY_TEMP to point to your SDL2 library, and configure again.
# Similarly, if you see an empty SDL2MAIN_LIBRARY, you should set this value
# as appropriate. These values are used to generate the final SDL2_LIBRARY
# variable, but when these values are unset, SDL2_LIBRARY does not get created.
#
#
# $SDL2DIR is an environment variable that would
# correspond to the ./configure --prefix=$SDL2DIR
# used in building SDL2.
# l.e.galup  9-20-02
#
# Modified by Eric Wing.
# Added code to assist with automated building by using environmental variables
# and providing a more controlled/consistent search behavior.
# Added new modifications to recognize OS X frameworks and
# additional Unix paths (FreeBSD, etc).
# Also corrected the header search path to follow "proper" SDL guidelines.
# Added a search for SDL2main which is needed by some platforms.
# Added a search for threads which is needed by some platforms.
# Added needed compile switches for MinGW.
#
# On OSX, this will prefer the Framework version (if found) over others.
# People will have to manually change the cache values of
# SDL2_LIBRARY to override this selection or set the CMake environment
# CMAKE_INCLUDE_PATH to modify the search paths.
#
# Note that the header path has changed from SDL2/SDL.h to just SDL.h
# This needed to change because "proper" SDL convention
# is #include "SDL.h", not <SDL2/SDL.h>. This is done for portability
# reasons because not all systems place things in SDL2/ (see FreeBSD).

#=============================================================================
# Copyright 2003-2009 Kitware, Inc.
#
# Distributed under the OSI-approved BSD License (the "License");
# see accompanying file Copyright.txt for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# See the License for more information.
#=============================================================================
# (To distribute this file outside of CMake, substitute the full
#  License text for the above reference.)

SET(SDL2_SEARCH_PATHS
	~/Library/Frameworks
	/Library/Frameworks
	/usr/local
	/usr
	/sw # Fink
	/opt/local # DarwinPorts
	/opt/csw # Blastwave
	/opt
)

FIND_PATH(SDL2_INCLUDE_DIR SDL.h
	HINTS
	$ENV{SDL2DIR}
	PATH_SUFFIXES include/SDL2 include
	PATHS ${SDL2_SEARCH_PATHS}
)

FIND_LIBRARY(SDL2_LIBRARY_TEMP
	NAMES SDL2
	HINTS
	$ENV{SDL2DIR}
	PATH_SUFFIXES lib64 lib
	PATHS ${SDL2_SEARCH_PATHS}
)

IF(NOT SDL2_BUILDING_LIBRARY)
	IF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
		# Non-OS X framework versions expect you to also dynamically link to
		# SDL2main. This is mainly for Windows and OS X. Other (Unix) platforms
		# seem to provide SDL2main for compatibility even though they don't
		# necessarily need it.
		FIND_LIBRARY(SDL2MAIN_LIBRARY
			NAMES SDL2main
			HINTS
			$ENV{SDL2DIR}
			PATH_SUFFIXES lib64 lib
			PATHS ${SDL2_SEARCH_PATHS}
		)
	ENDIF(NOT ${SDL2_INCLUDE_DIR} MATCHES ".framework")
ENDIF(NOT SDL2_BUILDING_LIBRARY)

# SDL2 may require threads on your system.
# The Apple build may not need an explicit flag because one of the
# frameworks may already provide it.
# But for non-OSX systems, I will use the CMake Threads package.
IF(NOT APPLE)
	FIND_PACKAGE(Threads)
ENDIF(NOT APPLE)

# MinGW needs an additional library, mwindows
# It's total link flags should look like -lmingw32 -lSDL2main -lSDL2 -lmwindows
# (Actually on second look, I think it only needs one of the m* libraries.)
IF(MINGW)
	SET(MINGW32_LIBRARY mingw32 CACHE STRING "mwindows for MinGW")
ENDIF(MINGW)

IF(SDL2_LIBRARY_TEMP)
	# For SDL2main
	IF(NOT SDL2_BUILDING_LIBRARY)
		IF(SDL2MAIN_LIBRARY)
			SET(SDL2_LIBRARY_TEMP ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY_TEMP})
		ENDIF(SDL2MAIN_LIBRARY)
	ENDIF(NOT SDL2_BUILDING_LIBRARY)

	# For OS X, SDL2 uses Cocoa as a backend so it must link to Cocoa.
	# CMake doesn't display the -framework Cocoa string in the UI even
	# though it actually is there if I modify a pre-used variable.
	# I think it has something to do with the CACHE STRING.
	# So I use a temporary variable until the end so I can set the
	# "real" variable in one-shot.
	IF(APPLE)
		SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} "-framework Cocoa")
	ENDIF(APPLE)

	# For threads, as mentioned Apple doesn't need this.
	# In fact, there seems to be a problem if I used the Threads package
	# and try using this line, so I'm just skipping it entirely for OS X.
	IF(NOT APPLE)
		SET(SDL2_LIBRARY_TEMP ${SDL2_LIBRARY_TEMP} ${CMAKE_THREAD_LIBS_INIT})
	ENDIF(NOT APPLE)

	# For MinGW library
	IF(MINGW)
		SET(SDL2_LIBRARY_TEMP ${MINGW32_LIBRARY} ${SDL2_LIBRARY_TEMP})
	ENDIF(MINGW)

	# Set the final string here so the GUI reflects the final state.
	SET(SDL2_LIBRARY ${SDL2_LIBRARY_TEMP} CACHE STRING "Where the SDL2 Library can be found")
	# Set the temp variable to INTERNAL so it is not seen in the CMake GUI
	SET(SDL2_LIBRARY_TEMP "${SDL2_LIBRARY_TEMP}" CACHE INTERNAL "")
ENDIF(SDL2_LIBRARY_TEMP)

INCLUDE(FindPackageHandleStandardArgs)

FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR)

M src/zge/core/display.cpp => src/zge/core/display.cpp +6 -6
@@ 88,7 88,7 @@ void ZDisplay::_init_window()
    
    // setup some parameters required for using OpenGL with SDL
    SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 24);             // request 24-bit depth buffer
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);            // request double-buffering
    SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 2);            // request double-buffering
    SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1);      // request hardware acceleration
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 3);   // request OpenGL version 3.2
    SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 2);


@@ 113,11 113,11 @@ void ZDisplay::_init_window()
    
    // create the window
    _impl->window = SDL_CreateWindow(_display_mode.window_title.c_str(),
                               SDL_WINDOWPOS_UNDEFINED,
                               SDL_WINDOWPOS_UNDEFINED,
                               width,
                               height,
                               sdlflags);
                                     SDL_WINDOWPOS_UNDEFINED,
                                     SDL_WINDOWPOS_UNDEFINED,
                                     width,
                                     height,
                                     sdlflags);
    if (_impl->window == nullptr) {
        ZLogger::log_error("Could not create SDL window. %s", SDL_GetError());
    }

M src/zge/core/run_loop.cpp => src/zge/core/run_loop.cpp +5 -5
@@ 127,11 127,11 @@ static bool _configure_render_thread(void)
        .preemptible = FALSE
    };
    
    kern_return_t policySetResult = thread_policy_set(pthread_mach_thread_np(pthread_self()),
                                                      THREAD_TIME_CONSTRAINT_POLICY,
                                                      (thread_policy_t)&policy,
                                                      THREAD_TIME_CONSTRAINT_POLICY_COUNT);
    return (policySetResult == 0);
    kern_return_t policy_set_result = thread_policy_set(pthread_mach_thread_np(pthread_self()),
                                                        THREAD_TIME_CONSTRAINT_POLICY,
                                                        (thread_policy_t)&policy,
                                                        THREAD_TIME_CONSTRAINT_POLICY_COUNT);
    return (policy_set_result == 0);
#else
    // TODO: Configure render thread for other platforms.
    return false;

M src/zge/core/schedulable.hpp => src/zge/core/schedulable.hpp +1 -1
@@ 8,7 8,7 @@
#include <zge/core/schedulable.h>

#ifndef __ZGE_ZSCHEDULABLE_IMPL_GUARD__
#error "Do not include this file directly. Include schedulable.h instead.
#error "Do not include this file directly. Include schedulable.h instead."
#endif

ZGE_BEGIN_NAMESPACE

M src/zge/renderer/render_context.cpp => src/zge/renderer/render_context.cpp +10 -0
@@ 122,6 122,11 @@ ZElementGraphicsBufferRef ZRenderContext::create_elements_buffer()
ZShaderProgramRef ZRenderContext::create_shader_program()
{
    uint32_t handle = glCreateProgram();
    if (handle == 0) {
        ZException exception(ZENGINE_EXCEPTION_CODE);
        exception.extra_info = "Failed to create shader program.";
        throw exception;
    }
    
    auto deleter = [](uint32_t handle) {
        glDeleteProgram(handle);


@@ 195,6 200,11 @@ ZShaderRef ZRenderContext::create_shader(ZShaderType type)
    
    if (gltype != 0) {
        uint32_t handle = glCreateShader(gltype);
        if (handle == 0) {
            ZException exception(ZENGINE_EXCEPTION_CODE);
            exception.description = "Failed to create shader.";
            throw exception;
        }
        
        auto deleter = [](uint32_t handle) {
            glDeleteShader(handle);

M src/zge/renderer/render_context.h => src/zge/renderer/render_context.h +2 -2
@@ 83,10 83,10 @@ public:
    ZElementGraphicsBufferRef create_elements_buffer();
    
    /// Allocates a shader program.
    ZShaderProgramRef create_shader_program();
    ZShaderProgramRef create_shader_program() noexcept(false);
    
    /// Allocates a shader.
    ZShaderRef create_shader(ZShaderType type);
    ZShaderRef create_shader(ZShaderType type) noexcept(false);
    
    /// Allocates a texture object.
    ZTextureRef create_texture(ZImageRef image);

M src/zge/util/logger.cpp => src/zge/util/logger.cpp +1 -0
@@ 6,6 6,7 @@
 */
 
#include <zge/util/logger.h>
#include <cstdarg>

ZGE_BEGIN_NAMESPACE


M src/zge/util/util.cpp => src/zge/util/util.cpp +1 -0
@@ 8,6 8,7 @@
#include <zge/util/util.h>
#include <zge/util/exception.h>
#include <chrono>
#include <cstdarg>
#include <cstdio>
#include <cmath>
#include <sstream>

A test/resources/Monaco.dfont => test/resources/Monaco.dfont +0 -0
A test/src/application.cpp => test/src/application.cpp +58 -0
@@ 0,0 1,58 @@
//
//  application.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 11/13/13.
//  Copyright (c) 2013 Charles Magahern. All rights reserved.
//

#include "application.h"
#include "fps_node.h"
#include "line_scene.h"
#include "node_storm.h"
#include "persp_cube_scene.h"
#include "rot_cube_scene.h"
#include "text_scene.h"
#include <memory>
#include <thread>

using namespace zge;

TestApp::TestApp(int argc, const char **argv) : ZApplication(argc, argv),
    _engine(nullptr),
    _root_scene(nullptr)
{}

void TestApp::application_ready()
{
    ZRunloopRef runloop = get_main_runloop();
    
    _engine = ZEngine::create();
    _engine->initialize(runloop);
    _engine->set_application(this);
    
    // setup display
    ZDisplayMode display_mode;
    display_mode.windowed = true;
    display_mode.window_title = "ZGE Example";
    display_mode.width = 1280;
    display_mode.height = 800;
    
    ZRenderManagerRef renderman = _engine->get_render_manager();
    renderman->create_display(display_mode);
    
    ZRect viewport = _engine->get_viewport_rect();
    std::vector<ZSceneRef> scenes = {
        std::make_shared<RotatingCubeScene>(viewport),
        std::make_shared<PerspectiveCubeScene>(viewport),
        std::make_shared<TextScene>(viewport),
        std::make_shared<LineScene>(viewport),
        std::make_shared<NodeStormScene>(viewport)
    };
    
    _root_scene = Multiscene::create(viewport, scenes);
    _engine->set_current_scene(_root_scene);
    
    auto fps_node = std::make_shared<FPSNode>(_engine);
    _root_scene->add_child(fps_node);
}

A test/src/application.h => test/src/application.h +22 -0
@@ 0,0 1,22 @@
//
//  application.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 11/13/13.
//  Copyright (c) 2013 Charles Magahern. All rights reserved.
//

#pragma once

#include <zge/zge.h>
#include "multiscene.h"

class TestApp : public zge::ZApplication {
public:
    TestApp(int argc, const char **argv);
    void application_ready() override;
    
private:
    zge::ZEngineRef _engine;
    MultisceneRef _root_scene;
};

A test/src/fps_node.cpp => test/src/fps_node.cpp +48 -0
@@ 0,0 1,48 @@
//
//  fps_node.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 12/9/15.
//  Copyright © 2015 Zanneth. All rights reserved.
//

#include "fps_node.h"

FPSNode::FPSNode(zge::ZEngineRef engine) :
    _engine(engine),
    _text_node(zge::ZTextNode::create("000 FPS")),
    _timer(zge::ZTimer::create(std::bind(&FPSNode::_update, this, std::placeholders::_1)))
{
    _timer->set_repeats(true);
    _timer->set_interval(zge::ZTimeInterval(0.5));
    engine->get_application()->get_main_runloop()->schedule(_timer);
    
//    zge::ZFontRef font = zge::ZFont::create("/System/Library/Fonts/Monaco.dfont", 32);
    zge::ZFontRef font = zge::ZFont::create("/usr/share/fonts/truetype/inconsolata/Inconsolata.otf", 32);
    _text_node->set_font(font);
    _text_node->set_text_color(zge::ZColor::white);
    this->add_child(_text_node);
    
    zge::ZRect viewport = _engine->get_viewport_rect();
    zge::ZRect text_node_bounds = _text_node->get_bounds();
    _text_node->set_position({
        viewport.size.width - text_node_bounds.size.width - 20.0f,
        viewport.size.height - text_node_bounds.size.height - 20.0f
    });
    
    zge::ZOrthoCameraRef camera = zge::ZOrthoCamera::create();
    camera->set_clipping_rect({0.0, 0.0, viewport.size.width, viewport.size.height});
    this->set_camera(camera);
}

FPSNode::~FPSNode()
{
    _timer->invalidate();
}

void FPSNode::_update(zge::ZTimerRef timer)
{
    const float fps = _engine->get_render_manager()->get_current_frames_per_second();
    const std::string fps_str = zge::ZUtil::format("%d FPS", (int)fps);
    _text_node->set_text(fps_str);
}

A test/src/fps_node.h => test/src/fps_node.h +25 -0
@@ 0,0 1,25 @@
//
//  fps_node.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 12/9/15.
//  Copyright © 2015 Zanneth. All rights reserved.
//

#pragma once

#include <zge/zge.h>

class FPSNode : public zge::ZNode {
public:
    FPSNode(zge::ZEngineRef engine);
    ~FPSNode();
    
private:
    void _update(zge::ZTimerRef timer);
    
private:
    zge::ZEngineRef     _engine;
    zge::ZTextNodeRef   _text_node;
    zge::ZTimerRef      _timer;
};

A test/src/line_scene.cpp => test/src/line_scene.cpp +35 -0
@@ 0,0 1,35 @@
//
//  line_scene.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 2/2/15.
//  Copyright (c) 2015 Zanneth. All rights reserved.
//

#include "line_scene.h"
#include <cmath>

using namespace zge;

LineScene::LineScene(const ZRect &rect) :
    _viewport(rect)
{
    set_name("Lines");
    
    ZOrthoCameraRef camera = ZOrthoCamera::create();
    camera->set_clipping_rect({0.0, 0.0, _viewport.size.width, _viewport.size.height});
    set_camera(camera);
    
    std::vector<ZVector> points;
    size_t points_to_draw = _viewport.size.width;
    float half_viewport_ht = _viewport.size.height / 2.0;
    for (unsigned i = 0; i < points_to_draw; ++i) {
        float yval = half_viewport_ht + (std::sin(float(i) / 20.0) * half_viewport_ht);
        points.push_back({float(i), yval, 0.0});
    }
    
    ZLineRef line = ZLine::create(points);
    line->add_material(ZColorMaterial::create(ZColor::red));
    ZNodeRef line_node = ZNode::create(line);
    add_child(line_node);
}

A test/src/line_scene.h => test/src/line_scene.h +19 -0
@@ 0,0 1,19 @@
//
//  line_scene.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 2/2/15.
//  Copyright (c) 2015 Zanneth. All rights reserved.
//

#pragma once

#include <zge/zge.h>

class LineScene : public zge::ZScene {
public:
    LineScene(const zge::ZRect &rect);
    
private:
    zge::ZRect _viewport;
};

A test/src/main.cpp => test/src/main.cpp +17 -0
@@ 0,0 1,17 @@
//
//  main.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 10/17/14.
//  Copyright (c) 2014 Zanneth. All rights reserved.
//

#include "application.h"

int main(int argc, const char **argv)
{
    TestApp app(argc, argv);
    app.run();
    
    return 0;
}

A test/src/multiscene.cpp => test/src/multiscene.cpp +183 -0
@@ 0,0 1,183 @@
//
//  multiscene.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 2/13/15.
//  Copyright (c) 2015 Zanneth. All rights reserved.
//

#include "multiscene.h"
#include <cmath>

using namespace zge;

class PickerCell : public zge::ZSpriteNode {
public:
    PickerCell(ZSceneRef scene, ZFontRef font);
    
    void layout();
    
    bool is_selected() const;
    void set_selected(bool selected);
    
    ZSceneRef get_scene() const;
    ZFontRef get_font() const;
    
private:
    ZSceneRef _scene;
    ZFontRef _font;
    ZTextNodeRef _textnode;
    bool _selected;
};

ZGE_DEFINE_SREF_TYPE(PickerCell);

Multiscene::Multiscene(const ZRect &viewport,
                       const std::vector<ZSceneRef> scenes) :
    _viewport(viewport),
    _scenes(scenes),
    _current_scene(nullptr),
    _scene_container(ZNode::create()),
    _picker_panel(nullptr)
{
    add_child(_scene_container);
    _setup_picker_panel();
    
    if (_scenes.size() > 0) {
        _activate_scene(_scenes[0]);
    }
}

std::vector<ZSceneRef> Multiscene::get_child_scenes() const
{
    return _scenes;
}

void Multiscene::handle_input_event(const ZEvent &event)
{
    if (event.type == ZMOUSE_DOWN_EVENT) {
        ZPoint2D clickpos = event.mouse_event.location;
        PickerCellRef prev_picked_cell = nullptr;
        bool selected_new_cell = false;
        
        for (PickerCellRef picker_cell : _picker_cells) {
            ZRect cell_frame = picker_cell->get_bounds();
            if (cell_frame.contains_point(clickpos)) {
                picker_cell->set_selected(true);
                _activate_scene(picker_cell->get_scene());
                selected_new_cell = true;
            } else if (picker_cell->is_selected()) {
                prev_picked_cell = picker_cell;
            }
        }
        
        if (selected_new_cell && prev_picked_cell) {
            prev_picked_cell->set_selected(false);
        }
    }
    
    ZScene::handle_input_event(event);
}

#pragma mark - Internal

void Multiscene::_setup_picker_panel()
{
    if (_picker_panel) {
        _picker_panel->remove_from_parent();
        _picker_panel = nullptr;
    }
    
    std::vector<PickerCellRef> picker_cells;
    ZSpriteNodeRef picker = ZSpriteNode::create();
    picker->set_color(ZColor(0.2, 0.2, 0.2, 0.2));
    picker->set_position(ZVector::zero);
    picker->set_size({_viewport.size.width / 7.0f, _viewport.size.height});
    
    ZOrthoCameraRef camera = ZOrthoCamera::create();
    camera->set_clipping_rect({0.0, 0.0, _viewport.size.width, _viewport.size.height});
    picker->set_camera(camera);
    
    const ZResourceBundle *bundle = ZResourceBundle::get_main_bundle();
//    ZFontRef font = ZFont::create(bundle->get_path_for_resource("Monaco.dfont"), 9.5);
    ZFontRef font = ZFont::create("/usr/share/fonts/truetype/inconsolata/Inconsolata.otf", 9.5);

    const float vpadding = 5.0f;
    const float cellheight = 20.0f;
    float cur_y = vpadding;
    
    for (ZSceneRef scene : _scenes) {
        PickerCellRef cell = std::make_shared<PickerCell>(scene, font);
        cell->set_position({0.0, cur_y});
        cell->set_size({picker->get_size().width, cellheight});
        cell->layout();
        
        picker->add_child(cell);
        picker_cells.push_back(cell);
        
        if (scene == _scenes[0]) {
            cell->set_selected(true);
        }
        
        cur_y += cellheight + vpadding;
    }
    
    add_child(picker);
    _picker_panel = picker;
    _picker_cells = picker_cells;
}

void Multiscene::_activate_scene(ZSceneRef scene)
{
    if (_current_scene) {
        _current_scene->on_exit();
        _current_scene->remove_from_parent();
    }
    
    _current_scene = scene;
    
    if (_current_scene) {
        _scene_container->add_child(_current_scene);
        _current_scene->on_enter();
    }
}

#pragma mark - PickerCell

PickerCell::PickerCell(ZSceneRef scene, ZFontRef font) :
    _scene(scene),
    _font(font)
{
    ZTextNodeRef textnode = ZTextNode::create(scene->get_name(), font);
    textnode->set_text_color(ZColor::white);
    _textnode = textnode;
    
    add_child(_textnode);
    set_selected(false);
}

void PickerCell::layout()
{
    ZSize2D size = get_size();
    _textnode->set_position(ZVector{
        5.0,
        std::rintf(size.height / 2.0 - _textnode->get_bounds().size.height / 1.2)
    });
}

void PickerCell::set_selected(bool selected)
{
    if (selected) {
        set_color(ZColor::white);
        _textnode->set_text_color(ZColor::black);
    } else {
        set_color(ZColor(0.4, 0.4, 0.4, 0.4));
        _textnode->set_text_color(ZColor::white);
    }
    
    _selected = selected;
}

ZSceneRef PickerCell::get_scene() const { return _scene; }
ZFontRef PickerCell::get_font() const { return _font; }
bool PickerCell::is_selected() const { return _selected; }

A test/src/multiscene.h => test/src/multiscene.h +41 -0
@@ 0,0 1,41 @@
//
//  multiscene.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 2/13/15.
//  Copyright (c) 2015 Zanneth. All rights reserved.
//

#pragma once

#include <zge/zge.h>

ZGE_FORWARD_DECLARE_SREF(PickerCell);

class Multiscene : public zge::ZScene {
public:
    Multiscene(const zge::ZRect &viewport,
               const std::vector<zge::ZSceneRef> scenes);
    
    ZGE_DEFINE_SREF_FUNCTIONS(Multiscene);
    
    std::vector<zge::ZSceneRef> get_child_scenes() const;
    
    void handle_input_event(const zge::ZEvent &event) override;
    
private:
    void _setup_picker_panel();
    void _activate_scene(zge::ZSceneRef scene);
    
private:
    zge::ZRect _viewport;
    std::vector<zge::ZSceneRef> _scenes;
    
    zge::ZSceneRef _current_scene;
    zge::ZNodeRef _scene_container;
    
    zge::ZNodeRef _picker_panel;
    std::vector<PickerCellRef> _picker_cells;
};

ZGE_DEFINE_SREF_TYPE(Multiscene);

A test/src/node_storm.cpp => test/src/node_storm.cpp +81 -0
@@ 0,0 1,81 @@
//
//  node_storm.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 6/23/15.
//  Copyright © 2015 Zanneth. All rights reserved.
//

#include "node_storm.h"
#include <random>

#define NODE_COUNT 100
#define NODE_DIMENSIONS 50.0

using namespace zge;

MovingNode::MovingNode(const zge::ZVector &velocity) :
    _velocity(velocity)
{}

const zge::ZVector& MovingNode::get_velocity() const
{
    return _velocity;
}

void MovingNode::set_velocity(const zge::ZVector &velocity)
{
    _velocity = velocity;
}

// -----------------------------------------------------------------------------

NodeStormScene::NodeStormScene(const ZRect &viewport) :
    _viewport(viewport)
{
    set_name("Node Storm");
    
    ZOrthoCameraRef camera = ZOrthoCamera::create();
    camera->set_clipping_rect({0.0, 0.0, _viewport.size.width, _viewport.size.height});
    set_camera(camera);
    
    std::vector<MovingNodeRef> nodes;
    std::random_device rd;
    std::uniform_real_distribution<float> vel_dist(-1.0, 1.0);
    std::uniform_real_distribution<float> x_dist(0.0, _viewport.size.width - NODE_DIMENSIONS);
    std::uniform_real_distribution<float> y_dist(0.0, _viewport.size.height - NODE_DIMENSIONS);
    
    for (unsigned i = 0; i < NODE_COUNT; ++i) {
        ZVector velocity({vel_dist(rd), vel_dist(rd), 0.0});
        MovingNodeRef node = MovingNode::create(velocity);
        node->set_color(ZColor::random_color());
        node->set_size({NODE_DIMENSIONS, NODE_DIMENSIONS});
        node->set_position({x_dist(rd), y_dist(rd)});
        nodes.push_back(node);
        add_child(node);
    }
    _nodes = nodes;
}

void NodeStormScene::update()
{
    ZScene::update();
    
    for (MovingNodeRef node : _nodes) {
        const ZSize2D size = node->get_size();
        const ZVector velocity = node->get_velocity();
        
        ZVector pos = node->get_position();
        pos += velocity;
        
        if (pos.x() + size.width > _viewport.size.width || pos.x() < 0.0) {
            node->set_velocity({-velocity.get_x(), velocity.get_y(), 0.0});
        }
        
        if (pos.y() + size.height > _viewport.size.height || pos.y() < 0.0) {
            node->set_velocity({velocity.get_x(), -velocity.get_y(), 0.0});
        }
        
        node->set_position(pos);
    }
}

A test/src/node_storm.h => test/src/node_storm.h +39 -0
@@ 0,0 1,39 @@
//
//  node_storm.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 6/23/15.
//  Copyright © 2015 Zanneth. All rights reserved.
//

#pragma once

#include <zge/zge.h>

class MovingNode : public zge::ZSpriteNode {
public:
    MovingNode(const zge::ZVector &velocity);
    
    ZGE_DEFINE_SREF_FUNCTIONS(MovingNode);
    
    const zge::ZVector& get_velocity() const;
    void                set_velocity(const zge::ZVector &velocity);
    
private:
    zge::ZVector _velocity;
};

ZGE_DEFINE_SREF_TYPE(MovingNode);

// -----------------------------------------------------------------------------

class NodeStormScene : public zge::ZScene {
public:
    NodeStormScene(const zge::ZRect &viewport);
    
    void update() override;
    
private:
    zge::ZRect                 _viewport;
    std::vector<MovingNodeRef> _nodes;
};

A test/src/persp_cube_scene.cpp => test/src/persp_cube_scene.cpp +76 -0
@@ 0,0 1,76 @@
//
//  persp_cube_scene.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 9/14/14.
//  Copyright (c) 2014 Charles Magahern. All rights reserved.
//

#include "persp_cube_scene.h"

using namespace zge;

PerspectiveCubeScene::PerspectiveCubeScene(const ZRect &viewport) :
    _viewport(viewport),
    _cube1(nullptr),
    _cube2(nullptr)
{
    set_name("Perspective Cubes");
    
    // setup camera
    Z3DCameraRef camera = Z3DCameraRef(new Z3DCamera);
    camera->set_position({0.0, 0.0, 5.0});
    camera->set_look({0.0, 0.0, 0.0});
    camera->set_viewport_rect(_viewport);
    set_camera(camera);
    
    // add a model
    _cube1 = ZNode::create(ZCube::create());
    _cube1->set_name("cube 1");
    _cube1->set_position({-2.0, 0.0, 0.0});
    add_child(_cube1);
    
    _cube1_material = ZColorMaterialRef(new ZColorMaterial);
    _cube1_material->set_color(ZColor::red);
    _cube1->get_geometry()->add_material(_cube1_material);
    
    // add another model
    ZCubeRef cube_geom = ZCube::create();
    _cube2 = ZNode::create(cube_geom);
    _cube2->set_name("cube 2");
    _cube2->set_position({2.0, 0.0, 0.0});
    add_child(_cube2);
    
    ZColorMaterialRef cube2_material = ZColorMaterialRef(new ZColorMaterial);
    cube2_material->set_color(ZColor::green);
    _cube2->get_geometry()->add_material(cube2_material);
    
    ZLightRef light = ZLight::create();
    light->set_color(ZColor::white);
    light->set_position({0.0, 0.0, 0.0});
    add_child(light);
}

void PerspectiveCubeScene::handle_input_event(const ZEvent &event)
{
    if (event.type == ZMOUSE_MOVED_EVENT) {
        float tx = 0.0;
        float ty = 0.0;
        float midx = (float)_viewport.size.width / 2.0;
        float midy = (float)_viewport.size.height / 2.0;
        
        ZMouseEvent mouse_event = event.mouse_event;
        tx = mouse_event.location.x - midx;
        ty = mouse_event.location.y - midy;
        
        ZVector look = {tx / midx, -ty / midy, 0.0};
        Z3DCameraRef camera = std::dynamic_pointer_cast<Z3DCamera>(get_camera());
        camera->set_look(look);
    } else if (event.type == ZKEY_DOWN_EVENT) {
        if (event.key_event.key == ZKEY_SPACE) {
            _cube1_material->set_color(ZColor::random_color());
        } else if (event.key_event.key == ZKEY_BACKSPACE) {
            _cube2->remove_from_parent();
        }
    }
}

A test/src/persp_cube_scene.h => test/src/persp_cube_scene.h +23 -0
@@ 0,0 1,23 @@
//
//  persp_cube_scene.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 9/14/14.
//  Copyright (c) 2014 Charles Magahern. All rights reserved.
//

#pragma once

#include <zge/zge.h>

class PerspectiveCubeScene : public zge::ZScene {
public:
    PerspectiveCubeScene(const zge::ZRect &viewport);
    void handle_input_event(const zge::ZEvent &event) override;
    
private:
    zge::ZRect _viewport;
    zge::ZNodeRef _cube1;
    zge::ZNodeRef _cube2;
    zge::ZColorMaterialRef _cube1_material;
};

A test/src/rot_cube_scene.cpp => test/src/rot_cube_scene.cpp +44 -0
@@ 0,0 1,44 @@
//
//  rot_cube_scene.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 9/14/14.
//  Copyright (c) 2014 Charles Magahern. All rights reserved.
//

#include "rot_cube_scene.h"
#include <cmath>

using namespace zge;

RotatingCubeScene::RotatingCubeScene(const ZRect &viewport) :
    _current_radians(0.0),
    _viewport(viewport)
{
    set_name("Rotating Cube");
    
    Z3DCameraRef camera = Z3DCameraRef(new Z3DCamera);
    camera->set_position({0.0, 0.0, 5.0});
    camera->set_look({0.0, 0.0, 0.0});
    camera->set_viewport_rect(_viewport);
    set_camera(camera);
    
    ZNodeRef cube = ZNode::create(ZCube::create());
    cube->get_geometry()->add_material(ZColorMaterial::create(ZColor::white));
    cube->set_position({0.0, 0.0, -10.0});
    add_child(cube);
    
    ZLightRef light = std::make_shared<ZLight>(ZLIGHT_TYPE_POINT);
    light->set_position({-5.0, 0.0, 0.0});
    light->set_color(ZColor::white);
    add_child(light);
    
    ZLightRef ambient_light = std::make_shared<ZLight>(ZLIGHT_TYPE_AMBIENT);
    ambient_light->set_color(ZColor(1.0, 1.0, 1.0, 0.2));
    add_child(ambient_light);
    
    ZRotationActionRef rotation = ZRotationAction::create(2.0 * M_PI, ZVector{1.0, 0.75, 0.5});
    rotation->set_repeat_count(ZAction::repeat_count_infinity);
    rotation->set_duration(ZTimeInterval(10.0));
    cube->add_action(rotation);
}

A test/src/rot_cube_scene.h => test/src/rot_cube_scene.h +20 -0
@@ 0,0 1,20 @@
//
//  rot_cube_scene.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 9/14/14.
//  Copyright (c) 2014 Charles Magahern. All rights reserved.
//

#pragma once

#include <zge/zge.h>

class RotatingCubeScene : public zge::ZScene {
public:
    RotatingCubeScene(const zge::ZRect &viewport);
    
private:
    zge::ZRect _viewport;
    float _current_radians;
};

A test/src/text_scene.cpp => test/src/text_scene.cpp +32 -0
@@ 0,0 1,32 @@
//
//  text_scene.cpp
//  ZGEDevelopment
//
//  Created by Charles Magahern on 1/10/15.
//  Copyright (c) 2015 Zanneth. All rights reserved.
//

#include "text_scene.h"

using namespace zge;

TextScene::TextScene(const ZRect &viewport) :
    _viewport(viewport)
{
    set_name("Text");
    
    ZOrthoCameraRef camera = ZOrthoCamera::create();
    camera->set_clipping_rect({0.0, 0.0, _viewport.size.width, _viewport.size.height});
    set_camera(camera);
    
    ZSpriteNodeRef square = ZSpriteNode::create();
    square->set_size(ZSize2D{100.0, 100.0});
    square->set_position({100.0, 250.0});
    _scene->add_child(square);
    
//    ZFontRef font = ZFont::create("/System/Library/Fonts/Monaco.dfont", 64);
    ZFontRef font = ZFont::create("/usr/share/fonts/truetype/inconsolata/Inconsolata.otf", 64);
    ZTextNodeRef text_node = ZTextNode::create("cool square!", font);
    text_node->set_position({100.0, 100.0});
    _scene->add_child(text_node);
}

A test/src/text_scene.h => test/src/text_scene.h +19 -0
@@ 0,0 1,19 @@
//
//  text_scene.h
//  ZGEDevelopment
//
//  Created by Charles Magahern on 1/10/15.
//  Copyright (c) 2015 Zanneth. All rights reserved.
//

#pragma once

#include <zge/zge.h>

class TextScene : public zge::ZScene {
public:
    TextScene(const zge::ZRect &viewport);
    
private:
    zge::ZRect _viewport;
};