diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..13566b8
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/game-physics.iml b/.idea/game-physics.iml
new file mode 100644
index 0000000..f08604b
--- /dev/null
+++ b/.idea/game-physics.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..79b3c94
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..92afa18
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AntTweakBar/src/CMakeLists.txt b/AntTweakBar/src/CMakeLists.txt
new file mode 100644
index 0000000..62d4876
--- /dev/null
+++ b/AntTweakBar/src/CMakeLists.txt
@@ -0,0 +1,457 @@
+set(PROJECT_NAME AntTweakBar)
+
+################################################################################
+# Source groups
+################################################################################
+set(no_group_source_files
+ "FontSmall.pgm"
+ "res/cur00000.cur"
+ "res/cur00001.cur"
+ "res/cur00002.cur"
+ "res/cur00003.cur"
+ "res/cur00004.cur"
+ "res/cur00005.cur"
+ "res/cur00006.cur"
+ "res/cur00007.cur"
+ "res/cur00008.cur"
+ "res/cur00009.cur"
+ "res/cur00010.cur"
+ "res/cur00011.cur"
+ "res/cur00012.cur"
+ "res/cur00013.cur"
+ "res/FontChars.txt"
+ "res/FontFixed1.pgm"
+ "res/FontLargeAA.pgm"
+ "res/FontNormal.pgm"
+# "TwDirect3D11.hlsl"
+)
+source_group("" FILES ${no_group_source_files})
+
+set(Headers
+ "../include/AntTweakBar.h"
+ "AntPerfTimer.h"
+ "LoadOGL.h"
+ "LoadOGLCore.h"
+ "MiniGLFW.h"
+ "MiniGLUT.h"
+ "MiniSDL12.h"
+ "MiniSDL13.h"
+ "MiniSFML16.h"
+ "res/TwXCursors.h"
+ "resource.h"
+ "TwBar.h"
+ "TwColors.h"
+ "TwDirect3D10.h"
+ "TwDirect3D11.h"
+ "TwDirect3D9.h"
+ "TwFonts.h"
+ "TwGraph.h"
+ "TwMgr.h"
+ "TwOpenGL.h"
+ "TwOpenGLCore.h"
+ "TwPrecomp.h"
+)
+source_group("Headers" FILES ${Headers})
+
+set(Sources
+ "LoadOGL.cpp"
+ "LoadOGLCore.cpp"
+ "TwBar.cpp"
+ "TwColors.cpp"
+ "TwDirect3D10.cpp"
+ "TwDirect3D11.cpp"
+ "TwDirect3D9.cpp"
+ "TwEventGLFW.c"
+ "TwEventGLUT.c"
+ "TwEventSDL.c"
+ "TwEventSDL12.c"
+ "TwEventSDL13.c"
+ "TwEventSFML.cpp"
+ "TwEventWin.c"
+ "TwFonts.cpp"
+ "TwMgr.cpp"
+ "TwOpenGL.cpp"
+ "TwOpenGLCore.cpp"
+ "TwPrecomp.cpp"
+)
+source_group("Sources" FILES ${Sources})
+
+set(ALL_FILES
+ ${no_group_source_files}
+ ${Headers}
+ ${Sources}
+)
+
+################################################################################
+# Target
+################################################################################
+add_library(${PROJECT_NAME} SHARED ${ALL_FILES})
+
+target_precompile_headers(${PROJECT_NAME} PRIVATE
+ "$<$:${CMAKE_CURRENT_SOURCE_DIR}/TwPrecomp.h>"
+)
+
+use_props(${PROJECT_NAME} "${CMAKE_CONFIGURATION_TYPES}" "${DEFAULT_CXX_PROPS}")
+set(ROOT_NAMESPACE AntTweakBar)
+
+################################################################################
+# Target name
+################################################################################
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ TARGET_NAME_DEBUG "AntTweakBar"
+ TARGET_NAME_RELEASE "AntTweakBar"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ TARGET_NAME_DEBUG "AntTweakBar64"
+ TARGET_NAME_RELEASE "AntTweakBar64"
+ )
+endif()
+################################################################################
+# Output directory
+################################################################################
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../lib/debug"
+ OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../lib"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/../lib/debug"
+ OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/../lib"
+ )
+endif()
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}"
+ ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIRECTORY}"
+ ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIRECTORY}"
+ )
+endif()
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ ARCHIVE_OUTPUT_NAME_DEBUG "${TARGET_NAME}"
+ ARCHIVE_OUTPUT_NAME_RELEASE "${TARGET_NAME}"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ ARCHIVE_OUTPUT_NAME_DEBUG "${TARGET_NAME}"
+ ARCHIVE_OUTPUT_NAME_RELEASE "${TARGET_NAME}"
+ )
+endif()
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ PDB_OUTPUT_DIRECTORY "${OUTPUT_DIRECTORY}"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ PDB_OUTPUT_DIRECTORY "${OUTPUT_DIRECTORY}"
+ )
+endif()
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ set_target_properties(${PROJECT_NAME} PROPERTIES
+ INTERPROCEDURAL_OPTIMIZATION_RELEASE "TRUE"
+ )
+endif()
+################################################################################
+# MSVC runtime library
+################################################################################
+get_property(MSVC_RUNTIME_LIBRARY_DEFAULT TARGET ${PROJECT_NAME} PROPERTY MSVC_RUNTIME_LIBRARY)
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
+ $<$:
+ MultiThreadedDebug
+ >
+ $<$:
+ MultiThreaded
+ >
+ $<$,$>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT "MSVC_RUNTIME_LIBRARY_STR"
+ $<$:
+ MultiThreadedDebug
+ >
+ $<$:
+ MultiThreaded
+ >
+ $<$,$>>:${MSVC_RUNTIME_LIBRARY_DEFAULT}>
+ )
+endif()
+set_target_properties(${PROJECT_NAME} PROPERTIES MSVC_RUNTIME_LIBRARY ${MSVC_RUNTIME_LIBRARY_STR})
+
+################################################################################
+# Include directories
+################################################################################
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ target_include_directories(${PROJECT_NAME} PUBLIC
+ "${CMAKE_CURRENT_SOURCE_DIR}/../include"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ target_include_directories(${PROJECT_NAME} PUBLIC
+ "${CMAKE_CURRENT_SOURCE_DIR}/../include"
+ )
+endif()
+
+################################################################################
+# Compile definitions
+################################################################################
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ target_compile_definitions(${PROJECT_NAME} PRIVATE
+ "$<$:"
+ "_DEBUG"
+ ">"
+ "$<$:"
+ "NDEBUG"
+ ">"
+ "WIN32;"
+ "_WINDOWS;"
+ "_USRDLL;"
+ "TW_EXPORTS;"
+ "_MBCS"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ target_compile_definitions(${PROJECT_NAME} PRIVATE
+ "$<$:"
+ "_DEBUG"
+ ">"
+ "$<$:"
+ "NDEBUG"
+ ">"
+ "WIN64;"
+ "_WIN64;"
+ "_WINDOWS;"
+ "_USRDLL;"
+ "TW_EXPORTS;"
+ "_MBCS"
+ )
+endif()
+
+################################################################################
+# Compile and link options
+################################################################################
+if(MSVC)
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ $<$:
+ /Od;
+ /RTC1;
+ /ZI
+ >
+ $<$:
+ /Ox;
+ /Ob1;
+ /Oi;
+ /GF;
+ /Gy;
+ ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
+ /Ot;
+ /Zc:forScope
+ >
+ /W4;
+ ${DEFAULT_CXX_EXCEPTION_HANDLING}
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ target_compile_options(${PROJECT_NAME} PRIVATE
+ $<$:
+ /Od;
+ /RTC1;
+ /Zi
+ >
+ $<$:
+ /Ox;
+ /Ob1;
+ /Oi;
+ /GF;
+ /Gy;
+ ${DEFAULT_CXX_DEBUG_INFORMATION_FORMAT};
+ /Ot;
+ /Zc:forScope
+ >
+ /W4;
+ ${DEFAULT_CXX_EXCEPTION_HANDLING}
+ )
+ endif()
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventGLFW.c ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventGLUT.c ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventSDL.c ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventSDL12.c ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventSDL13.c ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventSFML.cpp ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwEventWin.c ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ string(CONCAT FILE_CL_OPTIONS
+ "/Y-"
+ )
+ endif()
+ source_file_compile_options(TwOpenGLCore.cpp ${FILE_CL_OPTIONS})
+ if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ target_link_options(${PROJECT_NAME} PRIVATE
+ $<$:
+ /DEBUG;
+ /INCREMENTAL
+ >
+ $<$:
+ /INCREMENTAL:NO
+ >
+ /NOLOGO;
+ /DYNAMICBASE:NO
+ )
+ elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ target_link_options(${PROJECT_NAME} PRIVATE
+ $<$:
+ /DEBUG;
+ /INCREMENTAL
+ >
+ $<$:
+ /INCREMENTAL:NO
+ >
+ /NOLOGO;
+ /MACHINE:X64;
+ /DYNAMICBASE:NO
+ )
+ endif()
+endif()
+
+################################################################################
+# Pre build events
+################################################################################
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ add_custom_command_if(
+ TARGET ${PROJECT_NAME}
+ PRE_BUILD
+ COMMANDS
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E LineRectVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E LineRectCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T ps_4_0_level_9_1 /E LineRectPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectPS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E TextVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E TextCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T ps_4_0_level_9_1 /E TextPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextPS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T vs_4_0_level_9_1 /E LineRectVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc/T vs_4_0_level_9_1 /E LineRectCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T ps_4_0_level_9_1 /E LineRectPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectPS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T vs_4_0_level_9_1 /E TextVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T vs_4_0_level_9_1 /E TextCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T ps_4_0_level_9_1 /E TextPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextPS.h TwDirect3D11.hlsl
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ add_custom_command_if(
+ TARGET ${PROJECT_NAME}
+ PRE_BUILD
+ COMMANDS
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E LineRectVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E LineRectCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T ps_4_0_level_9_1 /E LineRectPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectPS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E TextVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T vs_4_0_level_9_1 /E TextCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /Od /Zi /T ps_4_0_level_9_1 /E TextPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextPS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T vs_4_0_level_9_1 /E LineRectVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc/T vs_4_0_level_9_1 /E LineRectCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T ps_4_0_level_9_1 /E LineRectPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_LineRectPS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T vs_4_0_level_9_1 /E TextVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T vs_4_0_level_9_1 /E TextCstColorVS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextCstColorVS.h TwDirect3D11.hlsl
+ COMMAND $ fxc /T ps_4_0_level_9_1 /E TextPS /Fh ${CMAKE_CURRENT_BINARY_DIR}\\${CMAKE_CFG_INTDIR}\\TwDirect3D11_TextPS.h TwDirect3D11.hlsl
+ )
+endif()
+
+################################################################################
+# Post build events
+################################################################################
+if("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "Win32")
+ add_custom_command_if(
+ TARGET ${PROJECT_NAME}
+ POST_BUILD
+ COMMANDS
+ COMMAND $ mkdir "$${CMAKE_VS_PLATFORM_NAME}/$"
+ COMMAND $ xcopy /y /f "$>" "$${CMAKE_VS_PLATFORM_NAME}/$"
+ COMMAND $ mkdir "$${CMAKE_VS_PLATFORM_NAME}/$"
+ COMMAND $ xcopy /y /f "$>" "$${CMAKE_VS_PLATFORM_NAME}/$"
+ )
+elseif("${CMAKE_VS_PLATFORM_NAME}" STREQUAL "x64")
+ add_custom_command_if(
+ TARGET ${PROJECT_NAME}
+ POST_BUILD
+ COMMANDS
+ COMMAND $ mkdir "$${CMAKE_VS_PLATFORM_NAME}/$"
+ COMMAND $ xcopy /y /f "$>" "$${CMAKE_VS_PLATFORM_NAME}/$"
+ COMMAND $ mkdir "$${CMAKE_VS_PLATFORM_NAME}/$"
+ COMMAND $ xcopy /y /f "$>" "$${CMAKE_VS_PLATFORM_NAME}/$"
+ )
+endif()
+
diff --git a/CMake/Default.cmake b/CMake/Default.cmake
new file mode 100644
index 0000000..70bfa90
--- /dev/null
+++ b/CMake/Default.cmake
@@ -0,0 +1,65 @@
+################################################################################
+# Command for variable_watch. This command issues error message, if a variable
+# is changed. If variable PROPERTY_READER_GUARD_DISABLED is TRUE nothing happens
+# variable_watch( property_reader_guard)
+################################################################################
+function(property_reader_guard VARIABLE ACCESS VALUE CURRENT_LIST_FILE STACK)
+ if("${PROPERTY_READER_GUARD_DISABLED}")
+ return()
+ endif()
+
+ if("${ACCESS}" STREQUAL "MODIFIED_ACCESS")
+ message(FATAL_ERROR
+ " Variable ${VARIABLE} is not supposed to be changed.\n"
+ " It is used only for reading target property ${VARIABLE}.\n"
+ " Use\n"
+ " set_target_properties(\"\" PROPERTIES \"${VARIABLE}\" \"\")\n"
+ " or\n"
+ " set_target_properties(\"\" PROPERTIES \"${VARIABLE}_\" \"\")\n"
+ " instead.\n")
+ endif()
+endfunction()
+
+################################################################################
+# Create variable with generator expression that expands to value of
+# target property _. If property is empty or not set then property
+# is used instead. Variable has watcher property_reader_guard that
+# doesn't allow to edit it.
+# create_property_reader()
+# Input:
+# name - Name of watched property and output variable
+################################################################################
+function(create_property_reader NAME)
+ set(PROPERTY_READER_GUARD_DISABLED TRUE)
+ set(CONFIG_VALUE "$>>>")
+ set(IS_CONFIG_VALUE_EMPTY "$")
+ set(GENERAL_VALUE "$>")
+ set("${NAME}" "$" PARENT_SCOPE)
+ variable_watch("${NAME}" property_reader_guard)
+endfunction()
+
+################################################################################
+# Set property $_${PROPS_CONFIG_U} of ${PROPS_TARGET} to
+# set_config_specific_property( )
+# Input:
+# name - Prefix of property name
+# value - New value
+################################################################################
+function(set_config_specific_property NAME VALUE)
+ set_target_properties("${PROPS_TARGET}" PROPERTIES "${NAME}_${PROPS_CONFIG_U}" "${VALUE}")
+endfunction()
+
+################################################################################
+
+create_property_reader("TARGET_NAME")
+create_property_reader("OUTPUT_DIRECTORY")
+
+set_config_specific_property("TARGET_NAME" "${PROPS_TARGET}")
+set_config_specific_property("OUTPUT_NAME" "${TARGET_NAME}")
+set_config_specific_property("ARCHIVE_OUTPUT_NAME" "${TARGET_NAME}")
+set_config_specific_property("LIBRARY_OUTPUT_NAME" "${TARGET_NAME}")
+set_config_specific_property("RUNTIME_OUTPUT_NAME" "${TARGET_NAME}")
+
+set_config_specific_property("ARCHIVE_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
+set_config_specific_property("LIBRARY_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
+set_config_specific_property("RUNTIME_OUTPUT_DIRECTORY" "${OUTPUT_DIRECTORY}")
\ No newline at end of file
diff --git a/CMake/DefaultCXX.cmake b/CMake/DefaultCXX.cmake
new file mode 100644
index 0000000..eff0e56
--- /dev/null
+++ b/CMake/DefaultCXX.cmake
@@ -0,0 +1,12 @@
+include("${CMAKE_CURRENT_LIST_DIR}/Default.cmake")
+
+set_config_specific_property("OUTPUT_DIRECTORY" "${CMAKE_SOURCE_DIR}$<$>:/${CMAKE_VS_PLATFORM_NAME}>/${PROPS_CONFIG}")
+
+if(MSVC)
+ create_property_reader("DEFAULT_CXX_EXCEPTION_HANDLING")
+ create_property_reader("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT")
+
+ set_target_properties("${PROPS_TARGET}" PROPERTIES MSVC_RUNTIME_LIBRARY "MultiThreaded$<$:Debug>DLL")
+ set_config_specific_property("DEFAULT_CXX_EXCEPTION_HANDLING" "/EHsc")
+ set_config_specific_property("DEFAULT_CXX_DEBUG_INFORMATION_FORMAT" "/Zi")
+endif()
diff --git a/CMake/DefaultFortran.cmake b/CMake/DefaultFortran.cmake
new file mode 100644
index 0000000..3c16740
--- /dev/null
+++ b/CMake/DefaultFortran.cmake
@@ -0,0 +1,12 @@
+include("${CMAKE_CURRENT_LIST_DIR}/Default.cmake")
+
+set_config_specific_property("OUTPUT_DIRECTORY" "${CMAKE_CURRENT_SOURCE_DIR}$<$>:/${CMAKE_VS_PLATFORM_NAME}>/${PROPS_CONFIG}")
+
+get_target_property(${PROPS_TARGET}_BINARY_DIR ${PROPS_TARGET} BINARY_DIR)
+set(DEFAULT_FORTRAN_MODULES_DIR "${${PROPS_TARGET}_BINARY_DIR}/${PROPS_TARGET}.Modules.dir")
+set_target_properties(${PROPS_TARGET} PROPERTIES Fortran_MODULE_DIRECTORY ${DEFAULT_FORTRAN_MODULES_DIR})
+
+if(${CMAKE_GENERATOR} MATCHES "Visual Studio")
+ # Hack for visual studio generator (https://gitlab.kitware.com/cmake/cmake/issues/19552)
+ add_custom_command(TARGET ${PROPS_TARGET} PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory $/${CMAKE_CFG_INTDIR})
+endif()
\ No newline at end of file
diff --git a/CMake/Utils.cmake b/CMake/Utils.cmake
new file mode 100644
index 0000000..9e2f961
--- /dev/null
+++ b/CMake/Utils.cmake
@@ -0,0 +1,234 @@
+# utils file for projects came from visual studio solution with cmake-converter.
+
+################################################################################
+# Wrap each token of the command with condition
+################################################################################
+cmake_policy(PUSH)
+cmake_policy(SET CMP0054 NEW)
+macro(prepare_commands)
+ unset(TOKEN_ROLE)
+ unset(COMMANDS)
+ foreach(TOKEN ${ARG_COMMANDS})
+ if("${TOKEN}" STREQUAL "COMMAND")
+ set(TOKEN_ROLE "KEYWORD")
+ elseif("${TOKEN_ROLE}" STREQUAL "KEYWORD")
+ set(TOKEN_ROLE "CONDITION")
+ elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
+ set(TOKEN_ROLE "COMMAND")
+ elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
+ set(TOKEN_ROLE "ARG")
+ endif()
+
+ if("${TOKEN_ROLE}" STREQUAL "KEYWORD")
+ list(APPEND COMMANDS "${TOKEN}")
+ elseif("${TOKEN_ROLE}" STREQUAL "CONDITION")
+ set(CONDITION ${TOKEN})
+ elseif("${TOKEN_ROLE}" STREQUAL "COMMAND")
+ list(APPEND COMMANDS "$<$:${DUMMY}>$<${CONDITION}:${TOKEN}>")
+ elseif("${TOKEN_ROLE}" STREQUAL "ARG")
+ list(APPEND COMMANDS "$<${CONDITION}:${TOKEN}>")
+ endif()
+ endforeach()
+endmacro()
+cmake_policy(POP)
+
+################################################################################
+# Transform all the tokens to absolute paths
+################################################################################
+macro(prepare_output)
+ unset(OUTPUT)
+ foreach(TOKEN ${ARG_OUTPUT})
+ if(IS_ABSOLUTE ${TOKEN})
+ list(APPEND OUTPUT "${TOKEN}")
+ else()
+ list(APPEND OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/${TOKEN}")
+ endif()
+ endforeach()
+endmacro()
+
+################################################################################
+# Parse add_custom_command_if args.
+#
+# Input:
+# PRE_BUILD - Pre build event option
+# PRE_LINK - Pre link event option
+# POST_BUILD - Post build event option
+# TARGET - Target
+# OUTPUT - List of output files
+# DEPENDS - List of files on which the command depends
+# COMMANDS - List of commands(COMMAND condition1 commannd1 args1 COMMAND
+# condition2 commannd2 args2 ...)
+# Output:
+# OUTPUT - Output files
+# DEPENDS - Files on which the command depends
+# COMMENT - Comment
+# PRE_BUILD - TRUE/FALSE
+# PRE_LINK - TRUE/FALSE
+# POST_BUILD - TRUE/FALSE
+# TARGET - Target name
+# COMMANDS - Prepared commands(every token is wrapped in CONDITION)
+# NAME - Unique name for custom target
+# STEP - PRE_BUILD/PRE_LINK/POST_BUILD
+################################################################################
+function(add_custom_command_if_parse_arguments)
+ cmake_parse_arguments("ARG" "PRE_BUILD;PRE_LINK;POST_BUILD" "TARGET;COMMENT" "DEPENDS;OUTPUT;COMMANDS" ${ARGN})
+
+ if(WIN32)
+ set(DUMMY "cd.")
+ elseif(UNIX)
+ set(DUMMY "true")
+ endif()
+
+ prepare_commands()
+ prepare_output()
+
+ set(DEPENDS "${ARG_DEPENDS}")
+ set(COMMENT "${ARG_COMMENT}")
+ set(PRE_BUILD "${ARG_PRE_BUILD}")
+ set(PRE_LINK "${ARG_PRE_LINK}")
+ set(POST_BUILD "${ARG_POST_BUILD}")
+ set(TARGET "${ARG_TARGET}")
+ if(PRE_BUILD)
+ set(STEP "PRE_BUILD")
+ elseif(PRE_LINK)
+ set(STEP "PRE_LINK")
+ elseif(POST_BUILD)
+ set(STEP "POST_BUILD")
+ endif()
+ set(NAME "${TARGET}_${STEP}")
+
+ set(OUTPUT "${OUTPUT}" PARENT_SCOPE)
+ set(DEPENDS "${DEPENDS}" PARENT_SCOPE)
+ set(COMMENT "${COMMENT}" PARENT_SCOPE)
+ set(PRE_BUILD "${PRE_BUILD}" PARENT_SCOPE)
+ set(PRE_LINK "${PRE_LINK}" PARENT_SCOPE)
+ set(POST_BUILD "${POST_BUILD}" PARENT_SCOPE)
+ set(TARGET "${TARGET}" PARENT_SCOPE)
+ set(COMMANDS "${COMMANDS}" PARENT_SCOPE)
+ set(STEP "${STEP}" PARENT_SCOPE)
+ set(NAME "${NAME}" PARENT_SCOPE)
+endfunction()
+
+################################################################################
+# Add conditional custom command
+#
+# Generating Files
+# The first signature is for adding a custom command to produce an output:
+# add_custom_command_if(
+#