added readme and removed wasm stuff from flake and cmake
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
cmake_minimum_required(VERSION 3.20)
|
cmake_minimum_required(VERSION 3.20)
|
||||||
project(gamejam LANGUAGES C CXX)
|
project(rrmlui LANGUAGES C CXX)
|
||||||
|
|
||||||
set(CMAKE_CXX_STANDARD 17)
|
set(CMAKE_CXX_STANDARD 17)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||||
@@ -11,49 +11,32 @@ endif()
|
|||||||
find_package(raylib REQUIRED)
|
find_package(raylib REQUIRED)
|
||||||
find_package(RmlUi REQUIRED)
|
find_package(RmlUi REQUIRED)
|
||||||
|
|
||||||
add_executable(gamejam
|
add_library(rmlui_backend STATIC
|
||||||
src/main.cpp
|
|
||||||
src/Game.cpp
|
|
||||||
src/Application.cpp
|
|
||||||
src/Creature.cpp
|
|
||||||
src/Round.cpp
|
|
||||||
src/backend/RaylibSystemInterface.cpp
|
src/backend/RaylibSystemInterface.cpp
|
||||||
src/backend/RaylibRenderInterface.cpp
|
src/backend/RaylibRenderInterface.cpp
|
||||||
src/backend/RaylibInput.cpp
|
src/backend/RaylibInput.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(gamejam PRIVATE
|
add_executable(${PROJECT_NAME}
|
||||||
|
src/main.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||||
raylib
|
raylib
|
||||||
|
rmlui_backend
|
||||||
RmlUi::Core
|
RmlUi::Core
|
||||||
RmlUi::Debugger
|
RmlUi::Debugger
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(gamejam PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
||||||
|
|
||||||
set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets)
|
set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets)
|
||||||
|
|
||||||
if(EMSCRIPTEN)
|
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||||
set(CMAKE_EXECUTABLE_SUFFIX ".html")
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||||
|
${ASSET_DIR} $<TARGET_FILE_DIR:${PROJECT_NAME}>/assets
|
||||||
target_link_options(gamejam PRIVATE
|
COMMENT "Copying assets to build output"
|
||||||
"-sUSE_GLFW=3"
|
|
||||||
"-sASYNCIFY"
|
|
||||||
"-sALLOW_MEMORY_GROWTH=1"
|
|
||||||
"-sFORCE_FILESYSTEM=1"
|
|
||||||
"--preload-file=${ASSET_DIR}@assets"
|
|
||||||
# "--shell-file=${CMAKE_SOURCE_DIR}/shell.html"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
else()
|
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
|
||||||
add_custom_command(TARGET gamejam POST_BUILD
|
install(DIRECTORY ${ASSET_DIR} DESTINATION bin)
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
||||||
${ASSET_DIR} $<TARGET_FILE_DIR:gamejam>/assets
|
|
||||||
COMMENT "Copying assets to build output"
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install(TARGETS gamejam RUNTIME DESTINATION bin)
|
|
||||||
|
|
||||||
if(NOT EMSCRIPTEN)
|
|
||||||
install(DIRECTORY ${ASSET_DIR} DESTINATION bin)
|
|
||||||
endif()
|
|
||||||
|
|||||||
61
flake.lock
generated
Normal file
61
flake.lock
generated
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"nixpkgs": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1788039129,
|
||||||
|
"narHash": "sha256-pa4Q0qErvCvzCaaUph7Sm37RhR4xvPrYI8Lgz6k85+A=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "d2f67949798825fe853f7c5d0492b8bf016d3f88",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "nixos-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs",
|
||||||
|
"utils": "utils"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"systems": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1681028828,
|
||||||
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-systems",
|
||||||
|
"repo": "default",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"utils": {
|
||||||
|
"inputs": {
|
||||||
|
"systems": "systems"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1731533236,
|
||||||
|
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "flake-utils",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
||||||
110
flake.nix
110
flake.nix
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
description = "Raylib + RmlUI (with android build support) dev shell";
|
description = "Raylib + RmlUi dev shell";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
@@ -25,13 +25,6 @@
|
|||||||
"-DBUILD_TESTING=OFF"
|
"-DBUILD_TESTING=OFF"
|
||||||
];
|
];
|
||||||
|
|
||||||
wasmFindOverrides = [
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH"
|
|
||||||
"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH"
|
|
||||||
];
|
|
||||||
|
|
||||||
# ---- native RmlUi (shared lib) --------------------------------------
|
|
||||||
rmlui = pkgs.stdenv.mkDerivation {
|
rmlui = pkgs.stdenv.mkDerivation {
|
||||||
pname = "rmlui";
|
pname = "rmlui";
|
||||||
version = "master";
|
version = "master";
|
||||||
@@ -41,67 +34,6 @@
|
|||||||
cmakeFlags = rmluiCmakeFlags ++ [ "-DBUILD_SHARED_LIBS=ON" ];
|
cmakeFlags = rmluiCmakeFlags ++ [ "-DBUILD_SHARED_LIBS=ON" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# ---- WASM Freetype (static, minimal deps) ---------------------------
|
|
||||||
freetypeWasm = pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "freetype-wasm";
|
|
||||||
version = pkgs.freetype.version;
|
|
||||||
src = pkgs.freetype.src;
|
|
||||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
|
||||||
dontFixup = true;
|
|
||||||
configurePhase = ''
|
|
||||||
emcmake cmake -S . -B build \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
-DFT_DISABLE_ZLIB=TRUE \
|
|
||||||
-DFT_DISABLE_BZIP2=TRUE \
|
|
||||||
-DFT_DISABLE_PNG=TRUE \
|
|
||||||
-DFT_DISABLE_HARFBUZZ=TRUE \
|
|
||||||
-DFT_DISABLE_BROTLI=TRUE \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=$out
|
|
||||||
'';
|
|
||||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
|
||||||
installPhase = "emmake make -C build install";
|
|
||||||
};
|
|
||||||
|
|
||||||
# ---- WASM RmlUi (static) ---------------------------------------------
|
|
||||||
rmluiWasm = pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "rmlui-wasm";
|
|
||||||
version = "master";
|
|
||||||
src = rmluiSrc;
|
|
||||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
|
||||||
dontFixup = true;
|
|
||||||
configurePhase = ''
|
|
||||||
emcmake cmake -S . -B build \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DBUILD_SHARED_LIBS=OFF \
|
|
||||||
${pkgs.lib.concatStringsSep " " rmluiCmakeFlags} \
|
|
||||||
${pkgs.lib.concatStringsSep " " wasmFindOverrides} \
|
|
||||||
-DCMAKE_PREFIX_PATH="${freetypeWasm}" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=$out
|
|
||||||
'';
|
|
||||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
|
||||||
installPhase = "emmake make -C build install";
|
|
||||||
};
|
|
||||||
|
|
||||||
# ---- WASM raylib (PLATFORM=Web) ---------------------------------------
|
|
||||||
raylibWasm = pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "raylib-wasm";
|
|
||||||
version = pkgs.raylib.version;
|
|
||||||
src = pkgs.raylib.src;
|
|
||||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
|
||||||
dontFixup = true;
|
|
||||||
configurePhase = ''
|
|
||||||
emcmake cmake -S . -B build \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DPLATFORM=Web \
|
|
||||||
-DBUILD_EXAMPLES=OFF \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=$out
|
|
||||||
'';
|
|
||||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
|
||||||
installPhase = "emmake make -C build install";
|
|
||||||
};
|
|
||||||
|
|
||||||
# ---- native toolchain / runtime ---------------------------------------
|
|
||||||
nativeBuildTools = with pkgs; [
|
nativeBuildTools = with pkgs; [
|
||||||
cmake
|
cmake
|
||||||
pkg-config
|
pkg-config
|
||||||
@@ -135,22 +67,6 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
devShells.wasm = pkgs.mkShell {
|
|
||||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten pkgs.python3 ];
|
|
||||||
shellHook = ''
|
|
||||||
export RAYLIB_WASM="${raylibWasm}"
|
|
||||||
export RMLUI_WASM="${rmluiWasm}"
|
|
||||||
export FREETYPE_WASM="${freetypeWasm}"
|
|
||||||
echo "wasm dev shell ready, configure with:"
|
|
||||||
echo " emcmake cmake -B build-wasm -DPLATFORM=Web \\"
|
|
||||||
echo " -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \\"
|
|
||||||
echo " -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH \\"
|
|
||||||
echo " -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH \\"
|
|
||||||
echo " -DCMAKE_PREFIX_PATH=\"\$RAYLIB_WASM;\$RMLUI_WASM;\$FREETYPE_WASM\""
|
|
||||||
echo " emmake make -C build-wasm"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
packages.default = pkgs.stdenv.mkDerivation {
|
packages.default = pkgs.stdenv.mkDerivation {
|
||||||
pname = "rrmlui";
|
pname = "rrmlui";
|
||||||
version = "0.1.0";
|
version = "0.1.0";
|
||||||
@@ -159,32 +75,10 @@
|
|||||||
buildInputs = nativeRuntimeDeps;
|
buildInputs = nativeRuntimeDeps;
|
||||||
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
|
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
wrapProgram $out/bin/gamejam \
|
wrapProgram $out/bin/rrmlui \
|
||||||
--prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath nativeRuntimeDeps}"
|
--prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath nativeRuntimeDeps}"
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
packages.wasm = pkgs.stdenv.mkDerivation {
|
|
||||||
pname = "rrmlui-wasm";
|
|
||||||
version = "0.1.0";
|
|
||||||
src = ./.;
|
|
||||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
|
||||||
dontFixup = true;
|
|
||||||
configurePhase = ''
|
|
||||||
emcmake cmake -S . -B build \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DPLATFORM=Web \
|
|
||||||
${pkgs.lib.concatStringsSep " " wasmFindOverrides} \
|
|
||||||
-DCMAKE_PREFIX_PATH="${raylibWasm};${rmluiWasm};${freetypeWasm}" \
|
|
||||||
-DCMAKE_INSTALL_PREFIX=$out
|
|
||||||
'';
|
|
||||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
|
||||||
installPhase = ''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -r build/*.html build/*.js build/*.wasm $out/ 2>/dev/null || true
|
|
||||||
emmake make -C build install || true
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
19
readme.md
Normal file
19
readme.md
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
# RmlUi + Raylib
|
||||||
|
|
||||||
|
This project aims to create a fully featured Raylib backend and renderer for Rmlui projects.
|
||||||
|
|
||||||
|
I originally began creating this for a Game Jam project where I got the basic rendering implemented, but realized it would be nice to have as a seperate project to flesh out the rest of the features.
|
||||||
|
|
||||||
|
## Roadmap
|
||||||
|
*Rendering features (from the RmlUi render interfface documentation https://mikke89.github.io/RmlUiDoc/pages/cpp_manual/interfaces/render.html#feature-table):*
|
||||||
|
- [x] Basic rendering
|
||||||
|
- [ ] Clip Mask
|
||||||
|
- [ ] Transforms
|
||||||
|
- [ ] Layers
|
||||||
|
- [ ] Render textures
|
||||||
|
- [ ] Mask images
|
||||||
|
- [ ] Filters
|
||||||
|
- [ ] Shaders
|
||||||
|
|
||||||
|
*Backend features:*
|
||||||
|
- [x] Input handling
|
||||||
Reference in New Issue
Block a user