This commit is contained in:
2026-07-04 18:03:35 +02:00
parent 605d0e73b4
commit e0fdf2ff16
8 changed files with 488 additions and 52 deletions
+34 -10
View File
@@ -45,6 +45,21 @@
text = ''exec python ${gen}/make_wok.py "$@"'';
};
# Pure-Python .mdl + .wok + solid-colour .tga (the shipping model path;
# no Blender, and unlike Neverblender it keeps per-texture trimesh nodes).
mkmdlpy = pkgs.writeShellApplication {
name = "wgt-mdl";
runtimeInputs = [ py ];
text = ''exec python ${gen}/make_mdl.py "$@"'';
};
# Tileset palette (GFF ITP) so the toolset registers the set.
mkitp = pkgs.writeShellApplication {
name = "wgt-itp";
runtimeInputs = [ py pkgs.neverwinter-nim ];
text = ''exec python ${gen}/make_itp.py "$@"'';
};
# Real .mdl + .wok export via the Neverblender addon (must be enabled in
# this Blender's user config — confirmed working headless).
mkmdl = pkgs.writeShellApplication {
@@ -59,24 +74,25 @@
'';
};
# One shot: build -> export -> .set, then stage the loose files into the
# toolset's development/ folder (no .hak). Work dir defaults to ./build.
# One shot: models (.mdl/.wok/.tga) + .set + .itp, staged into the toolset's
# development/ folder (no .hak, no Blender). Work dir defaults to ./build.
mkdev = pkgs.writeShellApplication {
name = "wgt-dev-install";
runtimeInputs = [ blender py ];
runtimeInputs = [ py pkgs.neverwinter-nim ];
text = ''
work="''${1:-$PWD/build}"
dev="$HOME/Documents/Neverwinter Nights/development"
mkdir -p "$work/mdl" "$dev"
blend="$work/westgate_urban_foundation_mvp.blend"
blender-4.0.2 --background --python ${gen}/build.py --python-exit-code 1 -- "$blend"
blender-4.0.2 --background "$blend" --python ${gen}/export_mdl.py --python-exit-code 1 -- "$work/mdl"
python ${gen}/make_mdl.py "$work/mdl" # .mdl + .wok + .tga
python ${gen}/make_set.py "$work/twu01.set"
# replace only our own prefix in development/, leave everything else alone
rm -f "$dev"/twu01_*.mdl "$dev"/twu01_*.wok "$dev"/twu01.set
cp "$work"/mdl/twu01_*.mdl "$work"/mdl/twu01_*.wok "$work"/twu01.set "$dev"/
python ${gen}/make_itp.py "$work/twu01palstd.itp"
# replace only our own files in development/, leave everything else alone
rm -f "$dev"/twu01_*.mdl "$dev"/twu01_*.wok "$dev"/twu01_*.tga \
"$dev"/twu01.set "$dev"/twu01palstd.itp
cp "$work"/mdl/twu01_*.mdl "$work"/mdl/twu01_*.wok "$work"/mdl/twu01_*.tga \
"$work"/twu01.set "$work"/twu01palstd.itp "$dev"/
n=$(find "$work/mdl" -name 'twu01_*.mdl' | wc -l)
echo "installed $n tiles + twu01.set -> $dev"
echo "installed $n tiles + twu01.set + twu01palstd.itp -> $dev"
'';
};
in
@@ -100,6 +116,14 @@
type = "app";
program = "${mkwok}/bin/wgt-wok";
};
mdl = {
type = "app";
program = "${mkmdlpy}/bin/wgt-mdl";
};
itp = {
type = "app";
program = "${mkitp}/bin/wgt-itp";
};
export = {
type = "app";
program = "${mkmdl}/bin/wgt-export";