diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-07-18 15:49:12 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-07-18 15:49:12 -0400 |
| commit | 2ecda48bd1cc16b2e5e3e1ebb05098e191121aad (patch) | |
| tree | e77ba873ec58ee95ffeac825cd00b7d906b80b36 | |
| parent | 8fbeadda53243b701957a26dba1113d84ad5c7c4 (diff) | |
libpke-editor: shared lib + load as plugin working
| -rw-r--r-- | Makefile | 45 | ||||
| -rw-r--r-- | config.mk | 5 | ||||
| -rw-r--r-- | editor/editor-main.cpp | 2 | ||||
| -rw-r--r-- | editor/editor-plugin.cpp | 10 | ||||
| -rw-r--r-- | editor/editor-plugin.hpp | 8 | ||||
| -rw-r--r-- | editor/editor.cpp | 3 | ||||
| -rw-r--r-- | runtime/runtime.cpp | 6 |
7 files changed, 52 insertions, 27 deletions
@@ -97,7 +97,7 @@ DST_SHADERS = \ $(DIR_OBJ)/shaders/ui-base.frag.spv \ .PHONY: default -default: options .WAIT $(DIR_EXE)/pke-editor $(DIR_OBJ)/libpke-example.$(LIB_EXT) $(DIR_EXE)/pke-runtime ; +default: options .WAIT $(DIR_OBJ)/libpke-editor.$(OBJ_EXT) $(DIR_OBJ)/libpke-example.$(LIB_EXT) $(DIR_EXE)/pke-runtime ; .PHONY: prepare prepare: config.h @@ -137,7 +137,7 @@ $(DIR_OBJ)/%.$(OBJ_EXT) : src/%.c | prepare $(cc-command) $(FLG_PKE) $(DIR_OBJ)/%.$(OBJ_EXT) : embed/%.c | prepare $(cc-command) $(FLG_PKE) -$(DIR_OBJ)/%.$(OBJ_EXT) : src/vendor/tinyfiledialogs/%.c | prepare +$(DIR_OBJ)/%.$(OBJ_EXT) : editor/%.c | prepare $(cc-command) $(FLG_PKE) $(DIR_OBJ)/%.$(OBJ_EXT) : tests/%.c | prepare $(cc-command) $(FLG_TST) @@ -155,24 +155,24 @@ $(DIR_OBJ)/%.$(OBJ_EXT) : runtime/%.cpp | prepare $(DIR_OBJ)/%.$(OBJ_EXT) : tests/%.cpp | prepare $(cxx-command) $(FLG_TST) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_demo.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_draw.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_tables.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_widgets.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_impl_glfw.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_impl_vulkan.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/imgui_stdlib.$(OBJ_EXT) -$(DIR_OBJ)/libImgui.$(LIB_EXT): $(DIR_OBJ)/vendor-imgui-ext.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_demo.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_draw.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_tables.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_widgets.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_impl_glfw.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_impl_vulkan.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/imgui_stdlib.$(OBJ_EXT) +$(DIR_OBJ)/libpke-imgui.$(LIB_EXT): $(DIR_OBJ)/vendor-imgui-ext.$(OBJ_EXT) ar rc $@ $^ ranlib $@ # -j$$((`nproc`-1)) -$(DIR_OBJ)/libBullet3.$(LIB_EXT): +$(DIR_OBJ)/libpke-bullet3.$(LIB_EXT): (cd sub/bullet3/build3 && ./premake4_linux64 gmake) ${MAKE} no-demos=1 no-extras=1 no-test=1 config=$(BLT_BUILD_MODE) -C sub/bullet3/build3/gmake \ - BulletDynamics BulletCollision LinearMath Bullet3Common - ar r $@ sub/bullet3/build3/gmake/obj/x64/$(BLT_BUILD_DIR)/*/*.o + BulletDynamics BulletCollision LinearMath Bullet3Common Bullet3Geometry + ar rc $@ sub/bullet3/build3/gmake/obj/x64/$(BLT_BUILD_DIR)/*/*.o ranlib $@ $(DIR_OBJ)/libpke.$(LIB_EXT): $(DST_SHADERS) @@ -218,14 +218,19 @@ $(DIR_OBJ)/libpke.$(LIB_EXT): ar rc $@ $(filter %.$(OBJ_EXT),$^) ranlib $@ -$(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-main.$(OBJ_EXT) $(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-types.$(OBJ_EXT) $(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-io.$(OBJ_EXT) +$(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor-plugin.$(OBJ_EXT) $(DIR_OBJ)/libpke-editor.$(LIB_EXT): $(DIR_OBJ)/editor.$(OBJ_EXT) $(DIR_OBJ)/libpke-editor.$(LIB_EXT): ar rc $@ $(filter %.$(OBJ_EXT),$^) ranlib $@ +$(DIR_OBJ)/libpke-editor.$(OBJ_EXT): $(DIR_OBJ)/libpke-editor.$(LIB_EXT) +$(DIR_OBJ)/libpke-editor.$(OBJ_EXT): /home/pikum/build/msdf-atlas-gen/dbg/msdf-atlas-gen.a +$(DIR_OBJ)/libpke-editor.$(OBJ_EXT): /home/pikum/build/msdfgen/dbg/msdfgen.a + $(CXX) -shared -Wl,-soname,libpke-editor.$(OBJ_EXT).$(PKE_VERSION_MAJ).$(PKE_VERSION_MIN) -o $@ -Wl,--whole-archive $^ -Wl,--no-whole-archive $(LDFLAGS) + $(DIR_OBJ)/libpke-example.$(LIB_EXT): $(DIR_OBJ)/example.$(OBJ_EXT) ar rc $@ $(filter %.$(OBJ_EXT),$^) ranlib $@ @@ -237,16 +242,16 @@ $(DIR_OBJ)/libpke-test.$(LIB_EXT): $(DIR_OBJ)/pke-test-serialization.$(OBJ_EXT) $(DIR_OBJ)/libpke-test.$(LIB_EXT): $(DIR_OBJ)/pke-test-asset-manager.$(OBJ_EXT) ar rcs $@ $(filter %.$(OBJ_EXT),$^) -$(DIR_EXE)/pke-editor: $(DIR_OBJ)/libpke-editor.$(LIB_EXT) $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libImgui.$(LIB_EXT) $(DIR_OBJ)/libBullet3.$(LIB_EXT) -$(DIR_EXE)/pke-editor: +$(DIR_EXE)/pke-editor: $(DIR_OBJ)/libpke-editor.$(LIB_EXT) $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libpke-imgui.$(LIB_EXT) $(DIR_OBJ)/libpke-bullet3.$(LIB_EXT) +$(DIR_EXE)/pke-editor: $(DIR_OBJ)/editor-main.$(OBJ_EXT) $(CXX) -v -std=c++23 $(OPT_FLAGS) $(INCS) $^ /home/pikum/build/msdf-atlas-gen/dbg/msdf-atlas-gen.a /home/pikum/build/msdfgen/dbg/msdfgen.a $(LDFLAGS) $(CXXFLAGS) -o $@ -$(DIR_EXE)/pke-runtime: $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libImgui.$(LIB_EXT) $(DIR_OBJ)/libBullet3.$(LIB_EXT) +$(DIR_EXE)/pke-runtime: $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libpke-bullet3.$(LIB_EXT) $(DIR_OBJ)/libpke-imgui.$(LIB_EXT) $(DIR_EXE)/pke-runtime: $(DIR_OBJ)/runtime.$(OBJ_EXT) @echo $^ - $(CXX) -v -std=c++23 $(OPT_FLAGS) $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -o $@ + $(CXX) -v -std=c++23 $(CXXFLAGS) $(OPT_FLAGS) $(INCS) $(DIR_OBJ)/runtime.$(OBJ_EXT) -Lobj -Wl,--whole-archive $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libpke-bullet3.$(LIB_EXT) $(DIR_OBJ)/libpke-imgui.$(LIB_EXT) -Wl,--no-whole-archive -ldl $(LDFLAGS) -o $@ -$(DIR_EXE)/pke-test: $(DIR_OBJ)/libpke-test.$(LIB_EXT) $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libImgui.$(LIB_EXT) $(DIR_OBJ)/libBullet3.$(LIB_EXT) +$(DIR_EXE)/pke-test: $(DIR_OBJ)/libpke-test.$(LIB_EXT) $(DIR_OBJ)/libpke.$(LIB_EXT) $(DIR_OBJ)/libpke-imgui.$(LIB_EXT) $(DIR_OBJ)/libpke-bullet3.$(LIB_EXT) $(DIR_EXE)/pke-test: $(DIR_OBJ)/pke-test.$(OBJ_EXT) @echo $^ $(CXX) -v -std=c++23 $(OPT_FLAGS) $(INCS) $^ $(LDFLAGS) $(CXXFLAGS) -o $@ @@ -1,5 +1,8 @@ # pikul_two version -PKE_VERSION=0.1.0 +PKE_VERSION_MAJ=0 +PKE_VERSION_MIN=1 +PKE_VERSION_PAT=0 +PKE_VERSION=$(PKE_VERSION_MAJ).$(PKE_VERSION_MIN).$(PKE_VERSION_PAT) # paths PREFIX = /usr/local diff --git a/editor/editor-main.cpp b/editor/editor-main.cpp index 9bb6d8f..541e11f 100644 --- a/editor/editor-main.cpp +++ b/editor/editor-main.cpp @@ -22,8 +22,6 @@ int main(int argc, char *argv[]) { struct pk_membucket *bkt_editor = pk_mem_bucket_create("pke-editor", 2048, PK_MEMBUCKET_FLAG_NONE); // setup { - pkeSettings.isSimulationPaused = true; - pkeSettings.isShowingEditor = true; PKEPluginInterface itfc; itfc.OnInit = PkeEditor_Init; itfc.OnTick = PkeEditor_Tick; diff --git a/editor/editor-plugin.cpp b/editor/editor-plugin.cpp new file mode 100644 index 0000000..4acdb6c --- /dev/null +++ b/editor/editor-plugin.cpp @@ -0,0 +1,10 @@ + +#include "editor-plugin.hpp" +#include "editor.hpp" + +struct PKEPluginInterface pkePluginInterface = { + .OnInit = PkeEditor_Init, + .OnTick = PkeEditor_Tick, + .OnTeardown = PkeEditor_Teardown, + .OnImGuiRender = PkeEditor_RecordImGui, +}; diff --git a/editor/editor-plugin.hpp b/editor/editor-plugin.hpp new file mode 100644 index 0000000..b166a02 --- /dev/null +++ b/editor/editor-plugin.hpp @@ -0,0 +1,8 @@ +#ifndef PKE_EDITOR_PLUGIN_HPP +#define PKE_EDITOR_PLUGIN_HPP + +#include "plugin-types.hpp" + +extern PKEPluginInterface pkePluginInterface; + +#endif /* PKE_EDITOR_PLUGIN_HPP */ diff --git a/editor/editor.cpp b/editor/editor.cpp index 094e555..c9c673b 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -1953,6 +1953,9 @@ void PkeEditor_Teardown() { } void PkeEditor_Init() { + pkeSettings.isSimulationPaused = true; + pkeSettings.isShowingEditor = true; + PkeInputSet debugControlsSet{}; debugControlsSet.title = "debug-editor-controls"; debugControlsSet.actionCount = 14; diff --git a/runtime/runtime.cpp b/runtime/runtime.cpp index e0e9a11..99836b4 100644 --- a/runtime/runtime.cpp +++ b/runtime/runtime.cpp @@ -2,10 +2,8 @@ #include <csignal> #include "arg-handler.hpp" -#include "plugins.hpp" #include "game.hpp" #include "game-settings.hpp" -#include "window-types.hpp" void signal_handler(int signal_num) { fprintf(stdout, "Received signal: %d - shutting down\n", signal_num); @@ -14,9 +12,9 @@ void signal_handler(int signal_num) { int main(int argc, char *argv[]) { signal(SIGTERM, signal_handler); - fprintf(stdout, "PKE_EDITOR ENTERING\n"); + fprintf(stdout, "PKE_RUNTIME ENTERING\n"); PkeArgs_Parse(argc, argv); Game_Main({}, argv[0]); - fprintf(stdout, "PKE_EDITOR EXITING\n"); + fprintf(stdout, "PKE_RUNTIME EXITING\n"); return 0; } |
