Compare commits

1 Commits
v0.3 ... master

Author SHA1 Message Date
a514a10621 Minor changes 2026-03-26 13:53:51 +02:00
5 changed files with 210 additions and 194 deletions

View File

@@ -0,0 +1,11 @@
[binaries]
c = 'clang-19'
c_ld = 'lld-19'
cpp = 'clang++-19'
cpp_ld = 'lld-19'
[properties]
c_args = ['-DEV_CC_CLANG=1','-fcolor-diagnostics', '-fansi-escape-codes', '-fms-extensions']
[cmake]
CMAKE_C_COMPILER = 'clang-19'

View File

@@ -0,0 +1,11 @@
[binaries]
c = 'clang.exe'
c_ld = 'lld'
cpp = 'clang++.exe'
cpp_ld = 'lld'
[properties]
c_args = ['-DEV_CC_CLANG=1','-fcolor-diagnostics', '-fansi-escape-codes']
[cmake]
CMAKE_C_COMPILER = 'clang.exe'

View File

@@ -2,7 +2,7 @@ project('evol-sandbox', 'c',
version : '0.1', version : '0.1',
default_options : [ default_options : [
'warning_level=3', 'warning_level=3',
'c_std=c11', 'c_std=gnu23',
], ],
) )
@@ -15,32 +15,30 @@ cc = meson.get_compiler('c')
compiler_name = cc.get_id() compiler_name = cc.get_id()
if compiler_name == 'gcc' if compiler_name == 'gcc'
sandbox_args += '-fms-extensions' sandbox_args += '-fms-extensions'
sandbox_args += '-Wall'
sandbox_args += '-Werror'
endif endif
# The subproject's sole purpose is to make sure that the modules build # The subproject's sole purpose is to make sure that the modules build
# subproject('evmod_glfw') subproject('evmod_glfw')
# subproject('evmod_ecs') subproject('evmod_ecs')
# subproject('evmod_physics') subproject('evmod_physics')
# subproject('evmod_script') subproject('evmod_script')
# subproject('evmod_assets') subproject('evmod_assets')
# subproject('evmod_renderer') subproject('evmod_renderer')
# subproject('evmod_game') subproject('evmod_game')
# evmodglfw_dep = dependency('evmod_glfw') evmodglfw_dep = dependency('evmod_glfw')
# evmodecs_dep = dependency('evmod_ecs') evmodecs_dep = dependency('evmod_ecs')
# evmodphysics_dep = dependency('evmod_physics') evmodphysics_dep = dependency('evmod_physics')
# evmodscript_dep = dependency('evmod_script') evmodscript_dep = dependency('evmod_script')
# evmodgame_dep = dependency('evmod_game') evmodgame_dep = dependency('evmod_game')
# evmodrenderer_dep = dependency('evmod_renderer') evmodrenderer_dep = dependency('evmod_renderer')
# evmod_assets_dep = dependency('evmod_assets') evmod_assets_dep = dependency('evmod_assets')
# subproject('project_assets') subproject('project_assets')
# Setup build directory # Setup build directory
# subdir('buildscripts') subdir('buildscripts')
sandbox_exe = executable( sandbox_exe = executable(
'sandbox', 'sandbox',
@@ -48,15 +46,15 @@ sandbox_exe = executable(
dependencies: [ dependencies: [
evol_dep, evol_dep,
# evmodglfw_dep, evmodglfw_dep,
# evmodecs_dep, evmodecs_dep,
# evmodphysics_dep, evmodphysics_dep,
# evmodscript_dep, evmodscript_dep,
# evmodgame_dep, evmodgame_dep,
# evmodrenderer_dep, evmodrenderer_dep,
# evmod_assets_dep, evmod_assets_dep,
], ],
# install : true, install : true,
c_args: sandbox_args, c_args: sandbox_args,
) )

View File

@@ -1,217 +1,213 @@
/* #include <evol/evol.h> */ #include <evol/evol.h>
/* #include <evol/common/ev_log.h> */ #include <evol/common/ev_log.h>
#include <evol/common/ev_macros.h> #include <evol/common/ev_macros.h>
/* #include <evol/common/ev_profile.h> */ #include <evol/common/ev_profile.h>
/* #include <evol/utils/sleep.h> */ #include <evol/utils/sleep.h>
/* #include <evjson.h> */ #include <evjson.h>
/* #include <evol/core/configloader.h> */ #include <evol/core/configloader.h>
/* #define IMPORT_MODULE evmod_glfw */ #define IMPORT_MODULE evmod_glfw
/* #include IMPORT_MODULE_H */ #include IMPORT_MODULE_H
/* #define IMPORT_MODULE evmod_assets */ #define IMPORT_MODULE evmod_assets
/* #include IMPORT_MODULE_H */ #include IMPORT_MODULE_H
/* #define IMPORT_MODULE evmod_game */ #define IMPORT_MODULE evmod_game
/* #include IMPORT_MODULE_H */ #include IMPORT_MODULE_H
/* #define IMPORT_MODULE evmod_renderer */ #define IMPORT_MODULE evmod_renderer
/* #include IMPORT_MODULE_H */ #include IMPORT_MODULE_H
/* // Close window when Q is pressed */ // Close window when Q is pressed
/* DECLARE_EVENT_LISTENER(keyPressedListener, (KeyPressedEvent *event) { */ DECLARE_EVENT_LISTENER(keyPressedListener, (KeyPressedEvent *event) {
/* if(event->keyCode == 81) // tests if Q was pressed */ if(event->keyCode == 81) // tests if Q was pressed
/* Window->setShouldClose(event->handle, true); */ Window->setShouldClose(event->handle, true);
/* /1* else if(event->keyCode == 49) // Numrow 1 *1/ */ /* else if(event->keyCode == 49) // Numrow 1 */
/* /1* else if(event->keyCode == 50) // Numrow 2 *1/ */ /* else if(event->keyCode == 50) // Numrow 2 */
/* /1* else if(event->keyCode == 45) // Numrow - *1/ */ /* else if(event->keyCode == 45) // Numrow - */
/* /1* else if(event->keyCode == 61) // Numrow = *1/ */ /* else if(event->keyCode == 61) // Numrow = */
/* }) */ })
/* struct { */ struct {
/* evolmodule_t game_mod; */ evolmodule_t game_mod;
/* evolmodule_t asset_mod; */ evolmodule_t asset_mod;
/* evolmodule_t window_mod; */ evolmodule_t window_mod;
/* evolmodule_t input_mod; */ evolmodule_t input_mod;
/* evolmodule_t renderer_mod; */ evolmodule_t renderer_mod;
/* WindowHandle window; */ WindowHandle window;
/* } State; */ } State;
/* void */ void
/* project_changed_cb() */ project_changed_cb()
/* { */ {
/* evol_unloadmodule(State.renderer_mod); */ evol_unloadmodule(State.renderer_mod);
/* Game->reload(); */ Game->reload();
/* State.renderer_mod = evol_loadmodule("renderer"); */ State.renderer_mod = evol_loadmodule("renderer");
/* Renderer->setWindow((GenericHandle)State.window); */ Renderer->setWindow((GenericHandle)State.window);
/* EV_DEFER( */ AssetHandle project_config = Asset->load("project://game.proj");
/* AssetHandle project_config = Asset->load("project://game.proj"), */ {
/* Asset->free(project_config)) */ JSONAsset project_desc = JSONLoader->loadAsset(project_config);
/* { */
/* JSONAsset project_desc = JSONLoader->loadAsset(project_config); */
/* // Loading Scenes */ // Loading Scenes
/* double scene_count = evjs_get(project_desc.json_data, "scenes.len")->as_num; */ double scene_count = evjs_get(project_desc.json_data, "scenes.len")->as_num;
/* for(int i = 0; i < (int)scene_count;i++) { */ for(int i = 0; i < (int)scene_count;i++) {
/* evstring scenepath_id = evstring_newfmt("scenes[%d].path", i); */ evstring scenepath_id = evstring_newfmt("scenes[%d].path", i);
/* evstring sceneid_id = evstring_newfmt("scenes[%d].id", i); */ evstring sceneid_id = evstring_newfmt("scenes[%d].id", i);
/* evstring scenepath = evstring_refclone(evjs_get(project_desc.json_data, scenepath_id)->as_str); */ evstring scenepath = evstring_newFromView(evjs_get(project_desc.json_data, scenepath_id)->as_str);
/* evstring sceneid = evstring_refclone(evjs_get(project_desc.json_data, sceneid_id)->as_str); */ evstring sceneid = evstring_newFromView(evjs_get(project_desc.json_data, sceneid_id)->as_str);
/* GameScene scene = Scene->loadFromFile(scenepath); */ GameScene scene = Scene->loadFromFile(scenepath);
/* Scene->setName(scene, sceneid); */ Scene->setName(scene, sceneid);
/* evstring_free(sceneid); */ evstring_free(sceneid);
/* evstring_free(sceneid_id); */ evstring_free(sceneid_id);
/* evstring_free(scenepath); */ evstring_free(scenepath);
/* evstring_free(scenepath_id); */ evstring_free(scenepath_id);
/* } */ }
/* evstring activeScene = evstring_refclone(evjs_get(project_desc.json_data, "activeScene")->as_str); */ evstring activeScene = evstring_newFromView(evjs_get(project_desc.json_data, "activeScene")->as_str);
/* Game->setActiveScene(Scene->getFromName(activeScene)); */ Game->setActiveScene(Scene->getFromName(activeScene));
/* evstring_free(activeScene); */ evstring_free(activeScene);
/* } */ }
/* } */ Asset->free(project_config);
}
/* void */ void
/* load_project() */ load_project()
/* { */ {
/* State.game_mod = evol_loadmodule("game"); DEBUG_ASSERT(State.game_mod); */ State.game_mod = evol_loadmodule("game"); DEBUG_ASSERT(State.game_mod);
/* State.window_mod = evol_loadmodule("window"); DEBUG_ASSERT(State.window_mod); */ State.window_mod = evol_loadmodule("window"); DEBUG_ASSERT(State.window_mod);
/* State.input_mod = evol_loadmodule("input"); DEBUG_ASSERT(State.input_mod); */ State.input_mod = evol_loadmodule("input"); DEBUG_ASSERT(State.input_mod);
/* State.renderer_mod = evol_loadmodule("renderer"); DEBUG_ASSERT(State.renderer_mod); */ State.renderer_mod = evol_loadmodule("renderer"); DEBUG_ASSERT(State.renderer_mod);
/* imports(State.game_mod , (Game, Object, Camera, Scene)) */ imports(State.game_mod , (Game, Object, Camera, Scene))
/* imports(State.window_mod , (Window)) */ imports(State.window_mod , (Window))
/* imports(State.input_mod , (Input)) */ imports(State.input_mod , (Input))
/* imports(State.renderer_mod, (Renderer)) */ imports(State.renderer_mod, (Renderer))
/* IMPORT_EVENTS_evmod_glfw(State.window_mod); */ IMPORT_EVENTS_evmod_glfw(State.window_mod);
/* U32 width = 1920; */ U32 width = 1920;
/* U32 height = 1050; */ U32 height = 1050;
/* State.window = Window->create(width, height, "Main Window"); */ State.window = Window->create(width, height, "Main Window");
/* Input->setActiveWindow(State.window); */ Input->setActiveWindow(State.window);
/* ACTIVATE_EVENT_LISTENER(keyPressedListener, KeyPressedEvent); */ ACTIVATE_EVENT_LISTENER(keyPressedListener, KeyPressedEvent);
/* evstring project_dir = NULL; */ evstring project_dir = NULL;
/* EvConfigLoaderResult project_dir_get_res = ev_configloader_get("project_dir", EV_TYPE_NAME(STRING), &project_dir); */ EvConfigLoaderResult project_dir_get_res = ev_configloader_get("project_dir", EV_TYPE_NAME(STRING), &project_dir);
/* if(project_dir_get_res != EV_CONFIGLOADER_SUCCESS) { */ if(project_dir_get_res != EV_CONFIGLOADER_SUCCESS) {
/* ev_log_error("[sandbox] Could not get project_dir from config file. Error: %s", EvConfigLoaderResultStrings[project_dir_get_res]); */ ev_log_error("[sandbox] Could not get project_dir from config file. Error: %s", EvConfigLoaderResultStrings[project_dir_get_res]);
/* } */ }
/* assert(project_dir); */ assert(project_dir);
/* evstring project_mountpoint = evstring_new("project"); */ evstring project_mountpoint = evstring_new("project");
/* AssetManager->mount(&project_dir, &project_mountpoint); */ AssetManager->mount(&project_dir, &project_mountpoint);
/* evstring_free(project_mountpoint); */ evstring_free(project_mountpoint);
/* EV_DEFER( */ AssetHandle project_config = Asset->load("project://game.proj");
/* AssetHandle project_config = Asset->load("project://game.proj"), */ JSONAsset project_desc = JSONLoader->loadAsset(project_config);
/* Asset->free(project_config)) */
/* { */
/* JSONAsset project_desc = JSONLoader->loadAsset(project_config); */
/* // Loading filesystem mounts */ // Loading filesystem mounts
/* double mounts_count = evjs_get(project_desc.json_data, "mounts.len")->as_num; */ double mounts_count = evjs_get(project_desc.json_data, "mounts.len")->as_num;
/* for(int i = 0; i < (int)mounts_count;i++) { */ for(int i = 0; i < (int)mounts_count;i++) {
/* evstring path_id = evstring_newfmt("mounts[%d].path", i); */ evstring path_id = evstring_newfmt("mounts[%d].path", i);
/* evstring mountpoint_id = evstring_newfmt("mounts[%d].mountpoint", i); */ evstring mountpoint_id = evstring_newfmt("mounts[%d].mountpoint", i);
/* evstr_ref path_ref = evjs_get(project_desc.json_data, path_id)->as_str; */ evstring_view path_ref = evjs_get(project_desc.json_data, path_id)->as_str;
/* evstr_ref mountpoint_ref = evjs_get(project_desc.json_data, mountpoint_id)->as_str; */ evstring_view mountpoint_ref = evjs_get(project_desc.json_data, mountpoint_id)->as_str;
/* evstring path = evstring_newfmt("%s/%.*s", project_dir, path_ref.len, path_ref.data + path_ref.offset); */ evstring path = evstring_newfmt("%s/%.*s", project_dir, path_ref.len, path_ref.data + path_ref.offset);
/* evstring mountpoint = evstring_refclone(mountpoint_ref); */ evstring mountpoint = evstring_newFromView(mountpoint_ref);
/* AssetManager->mount(&path, &mountpoint); */ AssetManager->mount(&path, &mountpoint);
/* evstring_free(mountpoint); */ evstring_free(mountpoint);
/* evstring_free(path); */ evstring_free(path);
/* evstring_free(mountpoint_id); */ evstring_free(mountpoint_id);
/* evstring_free(path_id); */ evstring_free(path_id);
/* } */ }
/* Renderer->setWindow((GenericHandle)State.window); */ Renderer->setWindow((GenericHandle)State.window);
/* // Loading Scenes */ // Loading Scenes
/* double scene_count = evjs_get(project_desc.json_data, "scenes.len")->as_num; */ double scene_count = evjs_get(project_desc.json_data, "scenes.len")->as_num;
/* for(int i = 0; i < (int)scene_count;i++) { */ for(int i = 0; i < (int)scene_count;i++) {
/* evstring scenepath_id = evstring_newfmt("scenes[%d].path", i); */ evstring scenepath_id = evstring_newfmt("scenes[%d].path", i);
/* evstring sceneid_id = evstring_newfmt("scenes[%d].id", i); */ evstring sceneid_id = evstring_newfmt("scenes[%d].id", i);
/* evstring scenepath = evstring_refclone(evjs_get(project_desc.json_data, scenepath_id)->as_str); */ evstring scenepath = evstring_newFromView(evjs_get(project_desc.json_data, scenepath_id)->as_str);
/* evstring sceneid = evstring_refclone(evjs_get(project_desc.json_data, sceneid_id)->as_str); */ evstring sceneid = evstring_newFromView(evjs_get(project_desc.json_data, sceneid_id)->as_str);
/* GameScene scene = Scene->loadFromFile(scenepath); */ GameScene scene = Scene->loadFromFile(scenepath);
/* Scene->setName(scene, sceneid); */ Scene->setName(scene, sceneid);
/* evstring_free(sceneid); */ evstring_free(sceneid);
/* evstring_free(sceneid_id); */ evstring_free(sceneid_id);
/* evstring_free(scenepath); */ evstring_free(scenepath);
/* evstring_free(scenepath_id); */ evstring_free(scenepath_id);
/* } */ }
/* evstring activeScene = evstring_refclone(evjs_get(project_desc.json_data, "activeScene")->as_str); */ evstring activeScene = evstring_newFromView(evjs_get(project_desc.json_data, "activeScene")->as_str);
/* Game->setActiveScene(Scene->getFromName(activeScene)); */ Game->setActiveScene(Scene->getFromName(activeScene));
/* evstring_free(activeScene); */ evstring_free(activeScene);
/* } */ Asset->free(project_config);
/* evstring_free(project_dir); */ evstring_free(project_dir);
/* } */ }
/* void */ void
/* unload_project() */ unload_project()
/* { */ {
/* evol_unloadmodule(State.renderer_mod); */ evol_unloadmodule(State.renderer_mod);
/* evol_unloadmodule(State.game_mod); */ evol_unloadmodule(State.game_mod);
/* evol_unloadmodule(State.input_mod); */ evol_unloadmodule(State.input_mod);
/* evol_unloadmodule(State.window_mod); */ evol_unloadmodule(State.window_mod);
/* } */ }
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
EV_UNUSED_PARAMS(argc, argv); evolengine_t *engine = evol_create();
/* evolengine_t *engine = evol_create(); */ evol_parse_args(engine, argc, argv);
/* evol_parse_args(engine, argc, argv); */ evol_init(engine);
/* evol_init(engine); */
/* State.asset_mod = evol_loadmodule("assetmanager"); DEBUG_ASSERT(State.asset_mod); */ State.asset_mod = evol_loadmodule("assetmanager"); DEBUG_ASSERT(State.asset_mod);
/* imports(State.asset_mod , (AssetManager, Asset, TextLoader, JSONLoader, ShaderLoader)) */ imports(State.asset_mod , (AssetManager, Asset, TextLoader, JSONLoader, ShaderLoader))
/* load_project(); */ load_project();
/* AssetManager->watchRecursively("project:/", project_changed_cb); */ AssetManager->watchRecursively("project:/", project_changed_cb);
/* rmt_SetCurrentThreadName("Main Thread"); */ rmt_SetCurrentThreadName("Main Thread");
/* U32 result = 0; */ U32 result = 0;
/* while(result == 0) { */ while(result == 0) {
/* ev_ProfileCPU(WindowUpdate, 0) { */ ev_ProfileCPU(WindowUpdate, 0) {
/* result |= Window->update(State.window); */ result |= Window->update(State.window);
/* } */ }
/* ev_ProfileCPU(EventSystemProgress, 0) { */ ev_ProfileCPU(EventSystemProgress, 0) {
/* result |= EventSystem.progress(); */ result |= EventSystem.progress();
/* } */ }
/* ev_ProfileCPU(GameProgress, 0) { */ ev_ProfileCPU(GameProgress, 0) {
/* result |= Game->progress(0.01666667f); */ result |= Game->progress(0.01666667f);
/* } */ }
/* ev_ProfileCPU(GameProgress, 0) { */ ev_ProfileCPU(GameProgress, 0) {
/* AssetManager->update(); */ AssetManager->update();
/* } */ }
/* /1* sleep_ms(17); *1/ */ Renderer->run();
/* } */ /* sleep_ms(17); */
}
/* unload_project(); */ unload_project();
/* evol_unloadmodule(State.asset_mod); */ evol_unloadmodule(State.asset_mod);
/* evol_deinit(engine); */ evol_deinit(engine);
/* evol_destroy(engine); */ evol_destroy(engine);
return 0; return 0;
} }

View File

@@ -1,7 +1,7 @@
[wrap-git] [wrap-git]
directory = evol directory = evol
url = https://github.com/evol3D/evol url = https://github.com/evol3D/evol
revision = v0.3 revision = master
[provide] [provide]
dependency_names = evol dependency_names = evol