From 10423e024f0e93395c3d85ed7fa78b6963102966 Mon Sep 17 00:00:00 2001 From: ouczbs Date: Thu, 1 Aug 2024 22:22:01 +0800 Subject: [PATCH] add test engine --- .gitignore | 6 ++ engine/include/api.h | 4 + engine/modules/asset/include/asset.h | 4 + engine/modules/asset/src/asset.cpp | 5 ++ engine/modules/asset/xmake.lua | 8 ++ engine/modules/core/include/core.h | 4 + engine/modules/core/src/core.cpp | 5 ++ engine/modules/core/xmake.lua | 8 ++ engine/modules/zlib/include/source_location.h | 88 +++++++++++++++++++ engine/modules/zlib/include/zlib.h | 34 +++++++ engine/modules/zlib/include/zlog.h | 47 ++++++++++ engine/modules/zlib/src/zlib.cpp | 28 ++++++ engine/modules/zlib/src/zlog.cpp | 38 ++++++++ engine/modules/zlib/xmake.lua | 8 ++ engine/src/api.cpp | 6 ++ engine/src/temp | 28 ++++++ engine/xmake.lua | 14 +++ engine/xmake/api_define.lua | 9 ++ engine/xmake/xmake.lua | 16 ++++ game/vulkan/include/vulkan.h | 4 + game/vulkan/src/vulkan.cpp | 6 ++ game/vulkan/xmake.lua | 8 ++ game/zworld/include/zworld.h | 4 + game/zworld/src/zworld.cpp | 5 ++ game/zworld/xmake.lua | 8 ++ game/zworld_editor/src/main.cpp | 11 +++ game/zworld_editor/xmake.lua | 7 ++ xmake.lua | 11 +++ 28 files changed, 424 insertions(+) create mode 100644 .gitignore create mode 100644 engine/include/api.h create mode 100644 engine/modules/asset/include/asset.h create mode 100644 engine/modules/asset/src/asset.cpp create mode 100644 engine/modules/asset/xmake.lua create mode 100644 engine/modules/core/include/core.h create mode 100644 engine/modules/core/src/core.cpp create mode 100644 engine/modules/core/xmake.lua create mode 100644 engine/modules/zlib/include/source_location.h create mode 100644 engine/modules/zlib/include/zlib.h create mode 100644 engine/modules/zlib/include/zlog.h create mode 100644 engine/modules/zlib/src/zlib.cpp create mode 100644 engine/modules/zlib/src/zlog.cpp create mode 100644 engine/modules/zlib/xmake.lua create mode 100644 engine/src/api.cpp create mode 100644 engine/src/temp create mode 100644 engine/xmake.lua create mode 100644 engine/xmake/api_define.lua create mode 100644 engine/xmake/xmake.lua create mode 100644 game/vulkan/include/vulkan.h create mode 100644 game/vulkan/src/vulkan.cpp create mode 100644 game/vulkan/xmake.lua create mode 100644 game/zworld/include/zworld.h create mode 100644 game/zworld/src/zworld.cpp create mode 100644 game/zworld/xmake.lua create mode 100644 game/zworld_editor/src/main.cpp create mode 100644 game/zworld_editor/xmake.lua create mode 100644 xmake.lua diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f01241e --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +.vs/ +.vscode/ +.xmake/ +build/ +vsxmake*/ +.idea/ \ No newline at end of file diff --git a/engine/include/api.h b/engine/include/api.h new file mode 100644 index 0000000..ad288c4 --- /dev/null +++ b/engine/include/api.h @@ -0,0 +1,4 @@ +#pragma once +#include "zlib.h" +ENGINE_API const char* engine(); +inline Module engine_module{engine(), true}; \ No newline at end of file diff --git a/engine/modules/asset/include/asset.h b/engine/modules/asset/include/asset.h new file mode 100644 index 0000000..afe3392 --- /dev/null +++ b/engine/modules/asset/include/asset.h @@ -0,0 +1,4 @@ +#pragma once +#include "zlib.h" +const char* asset(); +inline Module asset_module{ asset(), false}; \ No newline at end of file diff --git a/engine/modules/asset/src/asset.cpp b/engine/modules/asset/src/asset.cpp new file mode 100644 index 0000000..503813d --- /dev/null +++ b/engine/modules/asset/src/asset.cpp @@ -0,0 +1,5 @@ +#include "asset.h" + +const char* asset() { + return "asset"; +} \ No newline at end of file diff --git a/engine/modules/asset/xmake.lua b/engine/modules/asset/xmake.lua new file mode 100644 index 0000000..a19d4fb --- /dev/null +++ b/engine/modules/asset/xmake.lua @@ -0,0 +1,8 @@ +target("asset") + set_kind("static") + set_group("engine/comp") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_deps("core", "zlib", {public = true}) + add_rules("engine.api") \ No newline at end of file diff --git a/engine/modules/core/include/core.h b/engine/modules/core/include/core.h new file mode 100644 index 0000000..754e931 --- /dev/null +++ b/engine/modules/core/include/core.h @@ -0,0 +1,4 @@ +#pragma once +#include "zlib.h" +const char* core(); +inline Module core_module{ core(), false}; \ No newline at end of file diff --git a/engine/modules/core/src/core.cpp b/engine/modules/core/src/core.cpp new file mode 100644 index 0000000..b0886ab --- /dev/null +++ b/engine/modules/core/src/core.cpp @@ -0,0 +1,5 @@ +#include "core.h" +const char* core() +{ + return "core"; +} diff --git a/engine/modules/core/xmake.lua b/engine/modules/core/xmake.lua new file mode 100644 index 0000000..db9c8ef --- /dev/null +++ b/engine/modules/core/xmake.lua @@ -0,0 +1,8 @@ +target("core") + set_kind("static") + set_group("engine/comp") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_deps("zlib", {public = true}) + add_rules("engine.api") diff --git a/engine/modules/zlib/include/source_location.h b/engine/modules/zlib/include/source_location.h new file mode 100644 index 0000000..6f8bee1 --- /dev/null +++ b/engine/modules/zlib/include/source_location.h @@ -0,0 +1,88 @@ +#ifndef NOSTD_SOURCE_LOCATION_HPP +#define NOSTD_SOURCE_LOCATION_HPP + +#pragma once + +#include + +namespace zlog { + struct source_location { + public: + #if not defined(__apple_build_version__) and defined(__clang__) and (__clang_major__ >= 9) + static constexpr source_location current(const char* fileName = __builtin_FILE(), + const char* functionName = __builtin_FUNCTION(), + const uint_least32_t lineNumber = __builtin_LINE(), + const uint_least32_t columnOffset = __builtin_COLUMN()) noexcept + #elif defined(__GNUC__) and (__GNUC__ > 4 or (__GNUC__ == 4 and __GNUC_MINOR__ >= 8)) + static constexpr source_location current(const char* fileName = __builtin_FILE(), + const char* functionName = __builtin_FUNCTION(), + const uint_least32_t lineNumber = __builtin_LINE(), + const uint_least32_t columnOffset = 0) noexcept + #else + static constexpr source_location current(const char* fileName = "unsupported", + const char* functionName = "unsupported", + const uint_least32_t lineNumber = 0, + const uint_least32_t columnOffset = 0) noexcept + #endif + { + return source_location(fileName, functionName, lineNumber, columnOffset); + } + + source_location(const source_location&) = default; + source_location(source_location&&) = default; + + constexpr const char* file_name() const noexcept + { + return fileName; + } + + constexpr const char* function_name() const noexcept + { + return functionName; + } + + constexpr uint_least32_t line() const noexcept + { + return lineNumber; + } + + constexpr std::uint_least32_t column() const noexcept + { + return columnOffset; + } + + private: + constexpr source_location(const char* fileName, const char* functionName, const uint_least32_t lineNumber, + const uint_least32_t columnOffset) noexcept + : fileName(fileName) + , functionName(functionName) + , lineNumber(lineNumber) + , columnOffset(columnOffset) + { + } + + const char* fileName; + const char* functionName; + const std::uint_least32_t lineNumber; + const std::uint_least32_t columnOffset; + }; + + [[nodiscard]] constexpr auto get_log_source_location( + const source_location& location) { + return spdlog::source_loc{location.file_name(), + static_cast(location.line()), + location.function_name()}; + } + + struct format_with_location { + std::string_view value; + spdlog::source_loc loc; + + template + format_with_location(const String& s, const source_location& location = + source_location::current()) + : value{ s }, loc{ get_log_source_location(location) } {} + }; +} // namespace nostd + +#endif \ No newline at end of file diff --git a/engine/modules/zlib/include/zlib.h b/engine/modules/zlib/include/zlib.h new file mode 100644 index 0000000..fb2415c --- /dev/null +++ b/engine/modules/zlib/include/zlib.h @@ -0,0 +1,34 @@ +#pragma once +#include +#include +#include "zlog.h" +struct Detail { + int count = 0; + int new_count = 0; + int del_count = 0; +}; +struct Module; +inline Detail detail{}; +inline std::vector* pModuleList{}; +struct Module { + std::string name; + bool kind; + void* mHandle{nullptr}; + bool Load(std::string path = ""); + void* GetSymbol(const char* name); + Module(std::string name, bool kind):kind(kind), name(name){ + detail.count++; + if (!pModuleList) { + pModuleList = new std::vector; + } + pModuleList->push_back(this); + std::string kind_str = kind ? std::string("shared") : std::string("static"); + std::cout << detail.count << ":" << uintptr_t(&zlog::zlog) << "::" << name << ":" << kind_str << std::endl; + } +}; +const char* zlib(); +#ifdef ZLIB_API_VAL +ZLIB_API inline Module zlib_module{ zlib(), false }; +#else +ZLIB_API extern Module zlib_module; +#endif \ No newline at end of file diff --git a/engine/modules/zlib/include/zlog.h b/engine/modules/zlib/include/zlog.h new file mode 100644 index 0000000..d1401b7 --- /dev/null +++ b/engine/modules/zlib/include/zlog.h @@ -0,0 +1,47 @@ +#pragma once + +#include "spdlog/spdlog.h" +#include "source_location.h" +#include +#include +namespace zlog { + using level_enum = spdlog::level::level_enum; + class zloger { + private: + std::shared_ptr m_logger; + public: + zloger(); + ~zloger(); + template + void log(level_enum level, format_with_location& fmt, Args &&...args) { + m_logger->log(fmt.loc, level, fmt::runtime(fmt.value), std::forward(args)...); + } + void flush() { + m_logger->flush(); + } + }; + ZLIB_API inline zloger zlog; + template + void info(format_with_location fmt, Args &&...args) { + zlog.log(level_enum::info, fmt, std::forward(args)...); + }; + template + void debug(format_with_location fmt, Args &&...args) { + zlog.log(level_enum::debug, fmt, std::forward(args)...); + }; + template + void warn(format_with_location fmt, Args &&...args) { + zlog.log(level_enum::warn, fmt, std::forward(args)...); + }; + template + void error(format_with_location fmt, Args &&...args) { + zlog.log(level_enum::err, fmt, std::forward(args)...); + }; + template + void fatal(format_with_location fmt, Args &&...args) { + zlog.log(level_enum::critical, fmt, std::forward(args)...); + const std::string format_str = fmt::format(std::forward(args)...); + throw std::runtime_error(format_str); + }; + void flush(); +}; \ No newline at end of file diff --git a/engine/modules/zlib/src/zlib.cpp b/engine/modules/zlib/src/zlib.cpp new file mode 100644 index 0000000..b196f1f --- /dev/null +++ b/engine/modules/zlib/src/zlib.cpp @@ -0,0 +1,28 @@ +#include "zlib.h" +const char* zlib() +{ + return "zlib"; +} + +bool Module::Load(std::string path) +{ + if (!path.empty()) + { + mHandle = GetModuleHandle(path.c_str()); + if (mHandle == NULL) + { + mHandle = LoadLibrary(path.c_str()); + } + } + else + { + mHandle = GetModuleHandle(nullptr); + } + return mHandle; +} + +void* Module::GetSymbol(const char* name) +{ + void* addr = (void*)GetProcAddress((HMODULE)mHandle, name); + return addr; +} diff --git a/engine/modules/zlib/src/zlog.cpp b/engine/modules/zlib/src/zlog.cpp new file mode 100644 index 0000000..7eed7c0 --- /dev/null +++ b/engine/modules/zlib/src/zlog.cpp @@ -0,0 +1,38 @@ +#include "zlog.h" +#include +#include +#include +#include +namespace zlog { + zloger::zloger() + { + auto console_sink = std::make_shared(); + console_sink->set_level(spdlog::level::trace); + console_sink->set_pattern("[%Y-%m-%d %H:%M:%S][%s:%#] %-8l %^%v%$"); + + auto file_sink = std::make_shared("logs/zengine.log", true); + file_sink->set_level(spdlog::level::trace); + //file_sink->set_pattern("[%Y-%m-%d %H:%M:%S][%s:%#] %-8l %^%v%$"); + + const spdlog::sinks_init_list sink_list = { console_sink, file_sink }; + + spdlog::init_thread_pool(8192, 1); + + m_logger = std::make_shared("zlogger", + sink_list.begin(), + sink_list.end(), + spdlog::thread_pool(), + spdlog::async_overflow_policy::block); + m_logger->set_level(spdlog::level::trace); + m_logger->set_pattern("[%Y-%m-%d %H:%M:%S][%s:%#] %-8l %^%v%$"); + spdlog::register_logger(m_logger); + } + zloger::~zloger() + { + m_logger->flush(); + spdlog::drop_all(); + } + void flush(){ + zlog.flush(); + } +} diff --git a/engine/modules/zlib/xmake.lua b/engine/modules/zlib/xmake.lua new file mode 100644 index 0000000..c5a7f6c --- /dev/null +++ b/engine/modules/zlib/xmake.lua @@ -0,0 +1,8 @@ +target("zlib") + set_kind("static") + set_group("engine/comp") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_packages("spdlog", {public = true}) + add_rules("engine.api") diff --git a/engine/src/api.cpp b/engine/src/api.cpp new file mode 100644 index 0000000..c712349 --- /dev/null +++ b/engine/src/api.cpp @@ -0,0 +1,6 @@ +#include "api.h" + +const char* engine() +{ + return "engine"; +} diff --git a/engine/src/temp b/engine/src/temp new file mode 100644 index 0000000..6948b9c --- /dev/null +++ b/engine/src/temp @@ -0,0 +1,28 @@ +WORK=C:\Users\ouczbs\AppData\Local\Temp\go-build2430488546 +cd D:\zvulkan +git status --porcelain +cd D:\zvulkan +git -c log.showsignature=false show -s --format=%H:%ct +# cd D:\zvulkan; git -c log.showsignature=false show -s --format=%H:%ct +fatal: your current branch 'master' does not have any commits yet +github.com/veandco/go-sdl2/sdl +mkdir -p $WORK\b047\ +cd C:\Users\ouczbs\go\pkg\mod\github.com\veandco\go-sdl2@v0.4.35\sdl +TERM='dumb' CGO_LDFLAGS='"-LC:\\Users\\ouczbs\\go\\cgo" "-lSDL2"' "C:\\Program Files\\Go\\pkg\\tool\\windows_amd64\\cgo.exe" -objdir "$WORK\\b047\\" -importpath github.com/veandco/go-sdl2/sdl -- -I "$WORK\\b047\\" "-IC:\\Users\\ +ouczbs\\go\\cgo" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\audio.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\blendmode.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\ +\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\clipboard.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\cpuinfo.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\endi +an.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\error.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\events.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\ +veandco\\go-sdl2@v0.4.35\\sdl\\filesystem.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\gamecontroller.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\gesture.g +o" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\guid.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\haptic.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veand +co\\go-sdl2@v0.4.35\\sdl\\hidapi.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\hints.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\joystick.go" "C:\\Users\\ou +czbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\keyboard.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\keycode.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@ +v0.4.35\\sdl\\loadso.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\log.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\mouse.go" "C:\\Users\\ouczbs\\go\\pkg\\mo +d\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\mutex.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\pixels.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\power.g +o" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\rect.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\render.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veand +co\\go-sdl2@v0.4.35\\sdl\\rwops.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\scancode.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sdl.go" "C:\\Users\\ouczb +s\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sdl_cgo.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sensor.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4. +35\\sdl\\shape.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\surface.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\sysrender.go" "C:\\Users\\ouczbs\\go\\pkg\\ +mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\system.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\system_windows.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\s +dl\\syswm.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\syswm_windows.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\thread.go" "C:\\Users\\ouczbs\\go\\pkg\\mo +d\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\timer.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\touch.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\version. +go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\video.go" "C:\\Users\\ouczbs\\go\\pkg\\mod\\github.com\\veandco\\go-sdl2@v0.4.35\\sdl\\vulkan.go" diff --git a/engine/xmake.lua b/engine/xmake.lua new file mode 100644 index 0000000..3b0351b --- /dev/null +++ b/engine/xmake.lua @@ -0,0 +1,14 @@ +target("engine") + set_kind("shared") + set_group("engine") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_includedirs("modules/asset/include", {public = true}) + add_includedirs("modules/core/include", {public = true}) + add_includedirs("modules/zlib/include", {public = true}) + add_deps("asset", "zlib", "core") + add_rules("engine.api") + +includes("xmake/xmake.lua") +includes("modules/*/xmake.lua") \ No newline at end of file diff --git a/engine/xmake/api_define.lua b/engine/xmake/api_define.lua new file mode 100644 index 0000000..f6ceee5 --- /dev/null +++ b/engine/xmake/api_define.lua @@ -0,0 +1,9 @@ +function main(target, name) + local api = string.upper(name) .. "_API" + if target:kind() == "static" then + target:add("defines", api .. "=", api .. "_VAL", {public = false}) + else + target:add("defines", api.."=__declspec(dllimport)", {interface=true}) + target:add("defines", api.."=__declspec(dllexport)", {public=false}) + end +end \ No newline at end of file diff --git a/engine/xmake/xmake.lua b/engine/xmake/xmake.lua new file mode 100644 index 0000000..00d3cee --- /dev/null +++ b/engine/xmake/xmake.lua @@ -0,0 +1,16 @@ +rule("engine.api") + on_load(function (target) + print(target:name()) + import("api_define") + api_define(target, target:name()) + local deps = target:get("deps") + if not deps then return end + import("core.project.project") + local is_static = target:kind() == "static" + for _,name in ipairs(deps) do + local deptarget = project.target(name) + if deptarget:kind() == "static" then + api_define(target, name) + end + end + end) \ No newline at end of file diff --git a/game/vulkan/include/vulkan.h b/game/vulkan/include/vulkan.h new file mode 100644 index 0000000..92a1abe --- /dev/null +++ b/game/vulkan/include/vulkan.h @@ -0,0 +1,4 @@ +#pragma once +#include "zlib.h" +VULKAN_API const char* vulkan(); +inline Module vulkan_module{vulkan(), true}; \ No newline at end of file diff --git a/game/vulkan/src/vulkan.cpp b/game/vulkan/src/vulkan.cpp new file mode 100644 index 0000000..75cfedf --- /dev/null +++ b/game/vulkan/src/vulkan.cpp @@ -0,0 +1,6 @@ +#include "vulkan.h" + +const char* vulkan() +{ + return "vulkan"; +} diff --git a/game/vulkan/xmake.lua b/game/vulkan/xmake.lua new file mode 100644 index 0000000..776cb18 --- /dev/null +++ b/game/vulkan/xmake.lua @@ -0,0 +1,8 @@ +target("vulkan") + set_kind("shared") + set_group("engine") + add_rules("engine.api") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_deps("engine", {public = true}) diff --git a/game/zworld/include/zworld.h b/game/zworld/include/zworld.h new file mode 100644 index 0000000..1b3fae6 --- /dev/null +++ b/game/zworld/include/zworld.h @@ -0,0 +1,4 @@ +#pragma once +#include "zlib.h" +ZWORLD_API const char* zworld(); +inline Module zworld_module{zworld(), true}; \ No newline at end of file diff --git a/game/zworld/src/zworld.cpp b/game/zworld/src/zworld.cpp new file mode 100644 index 0000000..9cfdb2d --- /dev/null +++ b/game/zworld/src/zworld.cpp @@ -0,0 +1,5 @@ +#include "zworld.h" +const char* zworld() +{ + return "zworld"; +} diff --git a/game/zworld/xmake.lua b/game/zworld/xmake.lua new file mode 100644 index 0000000..5446532 --- /dev/null +++ b/game/zworld/xmake.lua @@ -0,0 +1,8 @@ +target("zworld") + set_kind("shared") + set_group("game") + add_rules("engine.api") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_deps("vulkan", "engine", {public = true}) diff --git a/game/zworld_editor/src/main.cpp b/game/zworld_editor/src/main.cpp new file mode 100644 index 0000000..fabc709 --- /dev/null +++ b/game/zworld_editor/src/main.cpp @@ -0,0 +1,11 @@ +#include "zlib.h" +#include "core.h" +#include "asset.h" +#include "api.h" +#include "vulkan.h" +#include "zworld.h" +int main(int argc, char** argv) { + zlog::info("hello world"); + zlog::flush(); + return 0; +} diff --git a/game/zworld_editor/xmake.lua b/game/zworld_editor/xmake.lua new file mode 100644 index 0000000..31123e7 --- /dev/null +++ b/game/zworld_editor/xmake.lua @@ -0,0 +1,7 @@ +target("zworld-editor") + set_kind("binary") + set_group("game") + add_files("src/*.cpp") + add_headerfiles("include/*.h") + add_includedirs("include", {public = true}) + add_deps("zworld", {public = true}) diff --git a/xmake.lua b/xmake.lua new file mode 100644 index 0000000..f78810a --- /dev/null +++ b/xmake.lua @@ -0,0 +1,11 @@ + +add_rules("mode.debug", "mode.release") +set_arch("x64") +set_languages("cxx20") +set_project("zengine") +set_toolchains("clang") +set_runtimes("MD","c++_shared") +add_requires("spdlog") +includes("engine/xmake.lua") +includes("game/*/xmake.lua") +--xmake project -k vsxmake2022 -m "debug;release"