diff --git a/Data/resources/textures/.kp3d/banner.png b/Data/resources/textures/.kp3d/banner.png new file mode 100644 index 0000000..970cf7c Binary files /dev/null and b/Data/resources/textures/.kp3d/banner.png differ diff --git a/Data/sandbox-log.txt b/Data/sandbox-log.txt index 81920e6..07ebbbe 100644 --- a/Data/sandbox-log.txt +++ b/Data/sandbox-log.txt @@ -1,504 +1,85 @@ -[07:25:25 PM] Info: Starting... +[02:17:44 AM] Info: Starting... KP3D version 2 =============================== Copyright (C) kpworld.xyz 2018-2024 Contact me! @kp_cftsz -[07:25:25 PM] Info: Initializing SDL -[07:25:26 PM] Info: Initializing OpenGL -[07:25:26 PM] Info: OpenGL version: 4.6.0 NVIDIA 536.23 -[07:25:26 PM] Info: Initializing GLEW -[07:25:26 PM] Info: Initializing SDL_mixer -[07:25:26 PM] Info: Reticulating splines... -[07:25:26 PM] Info: Ready! -[07:25:26 PM] Info: Finalized mesh with 45 batches -[07:25:31 PM] Info: Finalized mesh with 50 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:33 PM] Info: Finalized mesh with 51 batches -[07:25:35 PM] Info: Finalized mesh with 57 batches -[07:25:38 PM] Info: Finalized mesh with 59 batches -[07:25:40 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:40 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:40 PM] Info: Finalized mesh with 61 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:42 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:42 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 65 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:43 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:43 PM] Info: Finalized mesh with 68 batches -[07:25:44 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Info: Finalized mesh with 68 batches -[07:25:44 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Info: Finalized mesh with 68 batches -[07:25:44 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Info: Finalized mesh with 68 batches -[07:25:44 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:44 PM] Info: Finalized mesh with 68 batches -[07:25:45 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Info: Finalized mesh with 68 batches -[07:25:45 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Info: Finalized mesh with 68 batches -[07:25:45 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Info: Finalized mesh with 68 batches -[07:25:45 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Info: Finalized mesh with 68 batches -[07:25:45 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Info: Finalized mesh with 68 batches -[07:25:45 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:45 PM] Info: Finalized mesh with 68 batches -[07:25:56 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:56 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:56 PM] Info: Finalized mesh with 70 batches -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:56 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:57 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:58 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:59 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:25:59 PM] Info: Finalized mesh with 72 batches -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:25:59 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Error: Bad any cast: Bad any_cast -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:00 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:00 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 76 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:01 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:01 PM] Info: Finalized mesh with 80 batches -[07:26:02 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:02 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:02 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:02 PM] Info: Finalized mesh with 80 batches -[07:26:02 PM] Warning: Sector 12 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:02 PM] Warning: Sector 9 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:02 PM] Warning: Sector 10 error; a sector may not overlap another sector unless all of its walls fit inside -[07:26:02 PM] Info: Finalized mesh with 80 batches +[02:17:44 AM] Info: Initializing SDL +[02:17:44 AM] Info: Initializing OpenGL +[02:17:44 AM] Info: OpenGL version: 4.6.0 NVIDIA 536.23 +[02:17:44 AM] Info: Initializing GLEW +[02:17:44 AM] Info: Initializing SDL_mixer +[02:17:44 AM] Info: Reticulating splines... +[02:17:45 AM] Info: Ready! +[02:17:45 AM] Info: Finalized mesh with 45 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:53 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:54 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:58 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:17:59 AM] Info: Finalized mesh with 44 batches +[02:18:00 AM] Info: Finalized mesh with 44 batches +[02:18:00 AM] Info: Finalized mesh with 44 batches +[02:18:00 AM] Info: Finalized mesh with 44 batches +[02:18:00 AM] Info: Finalized mesh with 44 batches +[02:18:00 AM] Info: Finalized mesh with 44 batches +[02:18:00 AM] Info \ No newline at end of file diff --git a/KP3Dii/KP3Dii.vcxproj b/KP3Dii/KP3Dii.vcxproj index e05954e..ab4f352 100644 --- a/KP3Dii/KP3Dii.vcxproj +++ b/KP3Dii/KP3Dii.vcxproj @@ -149,6 +149,7 @@ + @@ -160,6 +161,7 @@ + @@ -202,6 +204,7 @@ + @@ -211,6 +214,7 @@ + diff --git a/KP3Dii/KP3Dii.vcxproj.filters b/KP3Dii/KP3Dii.vcxproj.filters index 62374ac..4e93f3c 100644 --- a/KP3Dii/KP3Dii.vcxproj.filters +++ b/KP3Dii/KP3Dii.vcxproj.filters @@ -41,6 +41,8 @@ + + @@ -95,6 +97,8 @@ + + diff --git a/KP3Dii/src/KP3D_Game.cpp b/KP3Dii/src/KP3D_Game.cpp index 2941cf3..748d746 100644 --- a/KP3Dii/src/KP3D_Game.cpp +++ b/KP3Dii/src/KP3D_Game.cpp @@ -204,10 +204,10 @@ Game::Game(std::string path, std::string cfg_path, std::string log_path): ImGui::GetIO().IniFilename = NULL; ImFontConfig font_cfg; // Uncomment for non-anti-aliased fonts: - // font_cfg.FontBuilderFlags = ImGuiFreeTypeBuilderFlags_Bitmap; - font_cfg.FontBuilderFlags = ImGuiFreeTypeBuilderFlags_ForceAutoHint; + font_cfg.FontBuilderFlags = ImGuiFreeTypeBuilderFlags_Bitmap; + font_cfg.FontBuilderFlags |= ImGuiFreeTypeBuilderFlags_ForceAutoHint; font_cfg.FontNo = 2; - ImGui::GetIO().Fonts->AddFontFromFileTTF((sys::GetFontDir() + ".kp3d/msgothic.ttc").c_str(), 16.0f, &font_cfg); + ImGui::GetIO().Fonts->AddFontFromFileTTF((sys::GetFontDir() + ".kp3d/msgothic.ttc").c_str(), 13.0f, &font_cfg); font_cfg.FontNo = 0; ImGui::GetIO().Fonts->AddFontFromFileTTF((sys::GetFontDir() + ".kp3d/msgothic.ttc").c_str(), 13.0f, &font_cfg); ImGui::GetIO().ConfigFlags |= ImGuiConfigFlags_NoMouseCursorChange; diff --git a/KP3Dii/src/KP3D_Material.cpp b/KP3Dii/src/KP3D_Material.cpp new file mode 100644 index 0000000..e69de29 diff --git a/KP3Dii/src/KP3D_Material.h b/KP3Dii/src/KP3D_Material.h new file mode 100644 index 0000000..cddc394 --- /dev/null +++ b/KP3Dii/src/KP3D_Material.h @@ -0,0 +1,20 @@ +#pragma once + +#include "KP3D_Common.h" +#include "KP3D_Texture.h" + +namespace kp3d { + +enum MaterialTextureIndex +{ + MAT_TEX_DIFFUSE, + MAT_TEX_NORMAL, + NUM_MAT_TEX +}; + +struct Material +{ + Texture textures[NUM_MAT_TEX]; +}; + +} // namespace kp3d diff --git a/KP3Dii/src/KP3D_Resources.cpp b/KP3Dii/src/KP3D_Resources.cpp new file mode 100644 index 0000000..d70dc56 --- /dev/null +++ b/KP3Dii/src/KP3D_Resources.cpp @@ -0,0 +1,41 @@ +#include "KP3D_Resources.h" + +#include +#include + +#include "KP3D_StringUtils.h" +#include "KP3D_SystemUtils.h" + +namespace kp3d::res { + +void LoadMaterials() +{ + texture_cache.clear(); + + // Load every available texture + for (const auto& entry: std::filesystem::recursive_directory_iterator(kp3d::sys::GetTextureDir())) + { + if (entry.is_directory()) + continue; + + std::filesystem::path entry_path = entry.path(); + std::string path_str = entry_path.string(); + + if (!kp3d::str::EndsWith(path_str, ".png") && !kp3d::str::EndsWith(path_str, ".jpg")) + continue; + + std::string filename = std::filesystem::proximate(path_str, kp3d::sys::GetTextureDir()).string(); + std::replace(filename.begin(), filename.end(), '\\', '/'); + + // texture_cache.emplace(filename, ); + + // new: + // m_loaded_res_mutex.lock(); + // m_raw_texture_data.push_back(new kp3d::RawTexture(filename)); + // kp3d::EventBus::GetInstance().PublishDeferred(new kp3d::TextureLoadEvent(filename, m_raw_texture_data.size() - 1)); + // m_num_loaded++; + // m_loaded_res_mutex.unlock(); + } +} + +} // namespace kp3d::res diff --git a/KP3Dii/src/KP3D_Resources.h b/KP3Dii/src/KP3D_Resources.h new file mode 100644 index 0000000..9bfc53d --- /dev/null +++ b/KP3Dii/src/KP3D_Resources.h @@ -0,0 +1,16 @@ +#pragma once + +#include +#include + +#include "KP3D_Common.h" +#include "KP3D_Texture.h" +#include "KP3D_Material.h" + +namespace kp3d::res { + +std::unordered_map texture_cache; + +void LoadMaterials(); + +} // namespace kp3d::res diff --git a/Sandbox/src/Editor.cpp b/Sandbox/src/Editor.cpp index 6da6bb5..56da3e6 100644 --- a/Sandbox/src/Editor.cpp +++ b/Sandbox/src/Editor.cpp @@ -31,6 +31,7 @@ inline float Distance(kp3d::Vec3 a, kp3d::Vec3 b) Editor::Editor() { + m_banner.Load(".kp3d/banner.png"); m_stem.Load("editor/stem.png"); m_block.Load("block.png", true); m_mode = MODE_BUILD; @@ -260,45 +261,72 @@ void Editor::RenderUI() if (ImGui::BeginMenu("View")) { ImGui::Checkbox("Info overlay", &show_info_overlay); + ImGui::Checkbox("Selection information", &show_selection_info); ImGui::Checkbox("Console", &kp3d::console::open); ImGui::EndMenu(); } + if (ImGui::BeginMenu("Help")) + { + ImGui::Checkbox("About KP3Dii", &show_about_view); + ImGui::EndMenu(); + } ImGui::EndMainMenuBar(); // Overlay RenderUIInfo(); + RenderUIAbout(); // Sector window // ImGui::SetNextWindowSize({400, 500}, ImGuiCond_FirstUseEver); - ImGui::SetNextWindowPos({20, 200}); - if (ImGui::Begin("Selection Information", nullptr, ImGuiWindowFlags_AlwaysAutoResize)) + ImGui::SetNextWindowPos({20, 200}, ImGuiCond_FirstUseEver); + if (show_selection_info) { - if (kp3d::editor_hovered_batch) + if (ImGui::Begin("Selection Information", &show_selection_info, ImGuiWindowFlags_AlwaysAutoResize)) { - try { - const auto& info = std::any_cast(kp3d::editor_hovered_batch->userdata); - if (info.sector) - { - ImGui::SeparatorText("Hierarchy"); - ImGui::Text("ID: %u\n", info.sector->id); - ImGui::Text("Parent ID: %u %s\n", info.sector->parent_id, info.sector->parent_id == 0 ? "(N/A)" : ""); - ImGui::Text("Children (%u):\n", info.sector->children.size()); - ImGui::Indent(); - for (const auto& sc : info.sector->children) - ImGui::Text("- ID: %u", sc->id); - ImGui::Unindent(); - ImGui::SeparatorText("Properties"); - ImGui::InputFloat("Floor height", &info.sector->floor.base_height); - ImGui::InputFloat("Ceiling height", &info.sector->ceiling.base_height); - ImGui::Checkbox("Inverted", &info.sector->inverted); - } - } catch (std::bad_any_cast& e) { - KP3D_LOG_ERROR("Bad any cast: {}", e.what()); + if (m_mode == MODE_BUILD) + { + ImGui::Text("No selection"); + } + else if (m_mode == MODE_NORMAL) + { + if (kp3d::editor_hovered_batch) + { + try + { + const auto& info = std::any_cast(kp3d::editor_hovered_batch->userdata); + if (info.sector) + { + ImGui::SeparatorText("Hierarchy"); + ImGui::Text("ID: %u\n", info.sector->id); + ImGui::Text("Parent ID: %u %s\n", info.sector->parent_id, info.sector->parent_id == 0 ? "(N/A)" : ""); + ImGui::Text("Children (%u):\n", info.sector->children.size()); + ImGui::Indent(); + for (const auto& sc : info.sector->children) + ImGui::Text("- ID: %u", sc->id); + ImGui::Unindent(); + ImGui::SeparatorText("Properties"); + ImGui::InputFloat("Floor height", &info.sector->floor.base_height); + ImGui::InputFloat("Ceiling height", &info.sector->ceiling.base_height); + ImGui::Checkbox("Inverted", &info.sector->inverted); + ImGui::SeparatorText("Materials"); + ImGui::Text("Floor:"); + ImGui::ImageButton((ImTextureID) info.sector->floor.texture->GetGLID(), {128, 128}); + ImGui::Text("Ceiling:"); + ImGui::ImageButton((ImTextureID)info.sector->ceiling.texture->GetGLID(), { 128, 128 }); + } + } + catch (std::bad_any_cast& e) + { + KP3D_LOG_ERROR("Bad any cast: {}", e.what()); + } + } } - } - ImGui::End(); + ImGui::End(); + } } + + //ImGui::ShowDemoWindow(); } void Editor::RenderUIInfo() @@ -332,6 +360,26 @@ void Editor::RenderUIInfo() } } +void Editor::RenderUIAbout() +{ + if (!show_about_view) + return; + + if (ImGui::Begin("About KP3Dii", &show_about_view, ImGuiWindowFlags_AlwaysAutoResize)) + { + ImGui::Image((ImTextureID)m_banner.GetGLID(), {500.0f, 200.0f}); + ImGui::Separator(); + ImGui::Text("The swaggiest game engine ever made, you dig?"); + ImGui::Text("This map editor needs work. Consider it an ad-hoc release until\nI get time to put something nicer together."); + ImGui::Text(fmt::format("\nVersion {:.{}f} {}", KP3D_VERSION, 1, KP3D_VERSION <= 2.1 ? "(in-dev dist.)" : "").c_str()); + ImGui::Text("https://www.kpworld.xyz/"); + ImGui::Separator(); + ImGui::Text("Copyright (C) kpworld.xyz 2018-2024"); + + ImGui::End(); + } +} + void Editor::OnScrollWheel(const kp3d::ScrollWheelEvent* e) { using namespace kp3d; diff --git a/Sandbox/src/Editor.h b/Sandbox/src/Editor.h index ca90602..933b096 100644 --- a/Sandbox/src/Editor.h +++ b/Sandbox/src/Editor.h @@ -29,6 +29,7 @@ public: void RenderUI(); void RenderUIInfo(); + void RenderUIAbout(); void OnScrollWheel(const kp3d::ScrollWheelEvent* e); void OnKeyPress(const kp3d::KeyPressEvent* e); @@ -37,6 +38,7 @@ private: void RenderLine(kp3d::Vec3 start, kp3d::Vec3 end, kp3d::uint color); private: + kp3d::Texture m_banner; kp3d::Texture m_stem; kp3d::Texture m_block; kp3d::Vec3 m_stem_pos; @@ -44,6 +46,7 @@ private: // TODO: Refactor me! bool show_info_overlay = true; - + bool show_selection_info = false; + bool show_about_view = false; };