diff --git a/Makefile b/Makefile index d46877f..bafff9f 100755 --- a/Makefile +++ b/Makefile @@ -18,7 +18,8 @@ ifeq ($(DEBUG), 1) INFO = dbg endif -objprefix = ./bin/obj +BIN = ./bin/ +objprefix = $(BIN)obj DIRS = engine pinball editor brainstorm ETP = ./source/engine/thirdparty/ @@ -47,7 +48,7 @@ define rm endef define findindir - find $(1) -type f -maxdepth 1 -name '$(2)' + find $(1) -maxdepth 1 -type f -name '$(2)' endef # All other sources @@ -55,15 +56,15 @@ edirs != find ./source/engine -type d -name include edirs += ./source/engine ehead != $(call findindir,./source/engine,*.h) eobjects != $(call make_objs, ./source/engine) -eobjects != $(call rm,$(eobjects),sqlite s7 pl_mpeg_extract_frames pl_mpeg_player) +eobjects != $(call rm,$(eobjects),sqlite pl_mpeg_extract_frames pl_mpeg_player yugine.c yugine.c) imguisrcs = imgui imgui_draw imgui_widgets imgui_tables backends/imgui_impl_sdl backends/imgui_impl_opengl3 -imguiobjs != $(call prefix,$(imguisrcs),./source/editor/imgui/,.o) +imguiobjs != $(call prefix,$(imguisrcs),$(objprefix)/source/editor/imgui/,.o) eddirs != find ./source/editor -type d eddirs += ./source/editor edhead != $(call findindir,./source/editor,*.h) -edobjects != find ./source/editor -type f -maxdepth 1 -name '*.c' -o -name '*.cpp' +edobjects != find ./source/editor -maxdepth 1 -type f -name '*.c' -o -name '*.cpp' edobjects != $(call make_obj,$(edobjects)) edobjects += $(imguiobjs) @@ -75,22 +76,23 @@ pinobjects != $(call make_objs, ./source/pinball); edirs += ./source/engine/thirdparty/Chipmunk2D/include ./source/engine/thirdparty/enet/include includeflag != $(call prefix,$(edirs) $(eddirs) $(pindirs) $(bsdirs),-I) +COMPINCLUDE = $(edirs) $(eddirs) $(pindirs) $(bsdirs) #COMPILER_FLAGS specifies the additional compilation options we're using WARNING_FLAGS = -w #-pedantic -Wall -Wextra -Wwrite-strings -COMPILER_FLAGS = -g -O0 $(WARNING_FLAGS) +COMPILER_FLAGS = $(includeflag) -g -O0 $(WARNING_FLAGS) -DGLEW_STATIC -c -MMD -MP $< -o $@ LIBPATH = -L./bin ifeq ($(UNAME), Windows_NT) LINKER_FLAGS = -static -DSDL_MAIN_HANDLED - ELIBS = engine mingw32 SDL2main SDL2 m dinput8 dxguid dxerr8 user32 gdi32 winmm imm32 ole32 oleaut32 shell32 version uuid setupapi opengl32 stdc++ winpthread + ELIBS = engine editor mingw32 SDL2main SDL2 m dinput8 dxguid dxerr8 user32 gdi32 winmm imm32 ole32 oleaut32 shell32 version uuid setupapi opengl32 stdc++ winpthread ELIBS += SDL2_mixer FLAC vorbis vorbisenc vorbisfile mpg123 out123 syn123 opus opusurl opusfile ogg ssp shlwapi CLIBS = glew32 EXT = .exe else LINKER_FLAGS = - ELIBS = engine + ELIBS = editor engine CLIBS = SDL2 SDL2_mixer GLEW GL dl pthread EXT = endif @@ -106,48 +108,52 @@ DEPENDS = $(objects:.o=.d) yuginec = ./source/engine/yugine.c -LINK = $(includeflag) $(LIBPATH) $(LINKER_FLAGS) $(LELIBS) +ENGINE = $(BIN)libengine.a +EDITOR = $(BIN)libeditor.a +INCLUDE = $(BIN)include -engine: libengine.a +linkinclude = ./bin/include + +LINK = $(LIBPATH) $(LINKER_FLAGS) $(LELIBS) -o $@ + +engine: $(yuginec:.%.c=$(objprefix)%.o) $(ENGINE) @echo Linking engine - $(CXX) $(yuginec) -DGLEW_STATIC $(LINK) -o engine + @$(CXX) $< $(linkinclude:%=-I%) $(LINK) -editor: ./bin/libengine.a ./bin/libeditor.a +editor: $(yuginec:.%.c=$(objprefix)%.o) $(EDITOR) $(ENGINE) @echo Linking editor - $(CXX) $(yuginec) -DGLEW_STATIC $(LINK) -o editor + $(CXX) $< $(linkinclude:%=-I%) $(LINK) -./bin/libengine.a: $(eobjects) +$(ENGINE): $(eobjects) @echo Making library engine.a - @ar -r libengine.a $(eobjects) - @mv libengine.a bin/libengine.a - @cp $() bin/include + @ar -r $(ENGINE) $(eobjects) + @cp -u -r $(ehead) $(INCLUDE) -./bin/libeditor.a: $(edobjects) +$(EDITOR): $(edobjects) @echo Making editor library - @ar -r libeditor.a $(edobjects) - @mv libeditor.a bin/libeditor.a - @cp $(edhead) bin/include + @ar -r $(EDITOR) $(edobjects) + @cp -u -r $(edhead) $(INCLUDE) -xbrainstorm: libengine.a $(bsobjects) +xbrainstorm: $(ENGINE) $(bsobjects) @echo Making brainstorm - @$(CXX) $(bsobjects) -DGLEW_STATIC $(LINK) -o $@ - mv xbrainstorm brainstorm/brainstorm$(EXT) + @$(CXX) $(bsobjects) $(LINK) -o $@ + @mv xbrainstorm brainstorm/brainstorm$(EXT) -pinball: libengine.a $(pinobjects) +pinball: $(ENGINE) $(pinobjects) @echo Making pinball - @$(CXX) $(pinobjects) -DGLEW_STATIC $(LINK) -o $@ - mv pinball paladin/pinball + @$(CXX) $(pinobjects) $(LINK) -o $@ + @mv pinball paladin/pinball $(objprefix)/%.o:%.cpp @mkdir -p $(@D) @echo Making C++ object $@ - @$(CXX) $(includeflag) $(COMPILER_FLAGS) -c -MMD -MP $< -o $@ + @$(CXX) $(COMPILER_FLAGS) $(objprefix)/%.o:%.c @mkdir -p $(@D) @echo Making C object $@ - @$(CC) $(includeflag) $(COMPILER_FLAGS) -c -MMD -MP $< -o $@ + @$(CC) $(COMPILER_FLAGS) clean: @echo Cleaning project - @rm -f $(eobjects) $(bsobjects) \ No newline at end of file + @find $(BIN) -type f -delete \ No newline at end of file diff --git a/source/engine/2dphysics.c b/source/engine/2dphysics.c index c419947..0ce7077 100755 --- a/source/engine/2dphysics.c +++ b/source/engine/2dphysics.c @@ -7,7 +7,6 @@ cpBody *ballBody = NULL; cpSpace *space = NULL; float phys2d_gravity = -50.f; -int physOn = 0; void phys2d_init() { @@ -17,7 +16,7 @@ void phys2d_init() void phys2d_update(float deltaT) { - cpSpaceStep(space, deltaT * physOn); + cpSpaceStep(space, deltaT); } void phys2d_apply() diff --git a/source/engine/engine.c b/source/engine/engine.c index 646e8c6..4876d8b 100755 --- a/source/engine/engine.c +++ b/source/engine/engine.c @@ -1,9 +1,19 @@ #include "engine.h" +#define PL_MPEG_IMPLEMENTATION +#define CGLTF_IMPLEMENTATION +#define GL_GLEXT_PROTOTYPES +#define STB_DS_IMPLEMENTATION +#define STB_IMAGE_IMPLEMENTATION + #ifdef EDITOR #include "editor.h" #endif +#include +#include +#include + #include #include #include "openglrender.h" @@ -17,20 +27,8 @@ #include "log.h" #include "resources.h" - - -unsigned int frameCount = 0; -uint32_t lastTick = 0; -uint32_t frameTick = 0; -uint32_t elapsed = 0; - -uint32_t physMS = FPS144; -uint32_t physlag = 0; -uint32_t renderMS = FPS144; -uint32_t renderlag = 0; - // TODO: Init on the heap -struct mCamera camera = {0}; + #include "engine.h" @@ -63,7 +61,6 @@ void engine_init() init_gameobjects(); prefabs = vec_make(MAXNAME, 25); - camera.speed = 500; stbi_set_flip_vertically_on_load(1); phys2d_init(); gui_init(); diff --git a/source/engine/engine.h b/source/engine/engine.h index 587906d..2e6f5ab 100755 --- a/source/engine/engine.h +++ b/source/engine/engine.h @@ -7,13 +7,7 @@ #define FPS144 7 #define FPS300 3 -#include -#include -#include - void engine_init(); void engine_stop(); - - #endif \ No newline at end of file diff --git a/source/engine/gameobject.c b/source/engine/gameobject.c index d385fac..aa513b7 100755 --- a/source/engine/gameobject.c +++ b/source/engine/gameobject.c @@ -203,3 +203,7 @@ void gameobject_rotate(struct mGameObject *go, float as) a += as * deltaT; cpBodySetAngle(go->body, a); } + +void update_gameobjects() { + vec_walk(gameobjects, gameobject_update); +} \ No newline at end of file diff --git a/source/engine/yugine.c b/source/engine/yugine.c index 75c46ea..5e67a42 100755 --- a/source/engine/yugine.c +++ b/source/engine/yugine.c @@ -1,16 +1,30 @@ -#define PL_MPEG_IMPLEMENTATION -#define CGLTF_IMPLEMENTATION -#define GL_GLEXT_PROTOTYPES -#define STB_DS_IMPLEMENTATION -#define STB_IMAGE_IMPLEMENTATION - #include - +#include "camera.h" +#include "window.h" #include "engine.h" +#include "editor.h" +#include "input.h" +#include "2dphysics.h" +#include "openglrender.h" +#include "gameobject.h" + +int physOn = 0; +unsigned int frameCount = 0; +Uint32 lastTick = 0; +Uint32 frameTick = 0; +Uint32 elapsed = 0; + +Uint32 physMS = FPS144; +Uint32 physlag = 0; +Uint32 renderMS = FPS144; +Uint32 renderlag = 0; + +struct mCamera camera = {0}; int main(int argc, char **args) { -/* + camera.speed = 500; + engine_init(); struct mSDLWindow *window = MakeSDLWindow("Untitled Game", 1920, 1080, @@ -18,13 +32,13 @@ int main(int argc, char **args) SDL_WINDOW_RESIZABLE); - openglInit(window); + openglInit(); editor_init(window); - quit = false; + int quit = 0; SDL_Event e; //While application is running @@ -48,7 +62,7 @@ int main(int argc, char **args) if (renderlag >= renderMS) { if (physOn) { - vec_walk(gameobjects, gameobject_update); + update_gameobjects(); } @@ -69,7 +83,7 @@ int main(int argc, char **args) engine_stop(); - */ + return 0; }