From 3819bde882037dc0fe35fa40c56c3610b6285593 Mon Sep 17 00:00:00 2001 From: extrawurst Date: Thu, 27 Feb 2025 14:33:53 +0100 Subject: [PATCH] support setting spawn point --- assets/maps/map1.map | 6 +++++ assets/models/spawn.glb | Bin 0 -> 2880 bytes src/main.rs | 52 +++++++++++++++++++++++++++++++++++--- trenchbroom/hedz/hedz.fgd | 5 ++++ 4 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 assets/models/spawn.glb diff --git a/assets/maps/map1.map b/assets/maps/map1.map index 909e13a..82f9b1b 100644 --- a/assets/maps/map1.map +++ b/assets/maps/map1.map @@ -213,3 +213,9 @@ ( 3840 832 320 ) ( 3840 832 321 ) ( 3840 833 320 ) TinyTexPack2/Brick/Brick_14_window [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 } } +// entity 1 +{ +"classname" "spawn_point" +"origin" "152 232 -248" +"scale" "50" +} diff --git a/assets/models/spawn.glb b/assets/models/spawn.glb new file mode 100644 index 0000000000000000000000000000000000000000..68f18e5e8390ab2fecdd2188f3e95031e5320b78 GIT binary patch literal 2880 zcmcIl&2HO95Z>5{T_^o{1!1qHncd~`PlqUunxJlNtFVlqfDp8lw3Z1_q(M?{13`d+ z0zLFa`WVWkx1vwbLm#Av&a6m@mMY5vS_0(E&d%R{^N}1x7jJe5Aupd1^5;GwU$t9j zV;W?c%4vN}2P#%+kS8gv)32}6Bu=v0077c7A{F;lT04H;s@+J_GNnrmdZW@TOk!{r zCZiLBW<5wi>#Wc+TJMZ$91Oum+j`HSane_~!QM^YEmmVXRN0jdE&Q9Ku7VnAk_Wji z(qRTSn86?_>je?y?ARs~(sF#4JC2mXbHQW92L5>(#96e+!%SN^p2eBPJZU>pKw{m_ zFvwLJ2GOkZelqGtsvY)KpVsqqq@dr~VNMG_Xz;q5o~k^EqOf17yFsR! zNtC2-f}TdS!%W76E4Xld?r>%^pWCj%Oph_{3MoBqdjgt)Lvm<(SY$2Z0oAlDFt?fZ zWMYiz=1!qD-?Cc^x|H1V9oJ#LWVVgyW4BTOVjg#0*SF<%z3OviSDFEHY80csPQziC zhd0G$kmqUG9p$(j({Ebs-_ZSgx0x1FJ6D!Y_-n6_>R%Km>4vS`(Y15 zEI_cFQk@}4>k>+XmI>{<37u*}x0;YoG+%-q)XI`{#+UBs@=~R5L-m91vX>06lUT+1 z#rtbutIdUD&|Wf%;a&4E*^fYBV4mrCw!@g`Iv(?Y$@UD=5MHd#AvX?@t*-Pf%XS^x zvph!_he(iIr=@RSH!XPifN_=bfXs&S_eF~>qQy#WKz_BhHtM5u$X*n0H;+z^&Q}t^ zKvokhu;ZZquiya-Hr2lmJ>BX0(PR6I@KyMLXRFm0@CiU?2|nP$V)j)kY8rOm=jueo zgB(7uKGeo_>+({6^5L732k8L6{+9F|c!5e9Z4AX!4~=!8=W1E*BL^N>7!Oz=N4r908y7H3|GmhKjfa{+I8wKn{u9)4`O6znczX5s&HHuqxYl|g%w!56Cb$Z?upK6nS{1^5b z=7#&jitS;V76dsX5-UMO#ieO&AK o#vXZ0J|=r`e@Z?hpO6E19*}3ijYpaxPk() else { + return; + }; + + // let scale = world.entity(entity).get::().unwrap().scale; + + let mut t = world.entity(entity).get::().unwrap().clone(); + t.scale = Vec3::splat(1.0); + + let mesh = asset_server.load(GltfAssetLabel::Scene(0).from_asset("models/spawn.glb")); + + world + .commands() + .entity(entity) + .insert((Name::new("spawn"), SceneRoot(mesh), t)); + } } fn main() { @@ -31,6 +65,8 @@ fn main() { app.insert_resource(DebugVisuals { unlit: true, tonemapping: Tonemapping::None, + exposure: 0., + shadows: false, }); app.add_plugins(DefaultPlugins.set(ImagePlugin { @@ -54,7 +90,7 @@ fn main() { app.add_systems(Startup, write_trenchbroom_config); app.add_systems(PostStartup, setup_scene); - app.add_systems(Update, (set_materials_unlit, set_tonemapping)); + app.add_systems(Update, (set_materials_unlit, set_tonemapping, set_shadows)); app.run(); } @@ -84,9 +120,13 @@ fn write_trenchbroom_config(server: Res) { server.config.write_folder("trenchbroom/hedz").unwrap() } -fn set_tonemapping(mut cams: Query<&mut Tonemapping, With>, visuals: Res) { - for mut tm in cams.iter_mut() { +fn set_tonemapping( + mut cams: Query<(&mut Tonemapping, &mut ColorGrading), With>, + visuals: Res, +) { + for (mut tm, mut color) in cams.iter_mut() { *tm = visuals.tonemapping; + color.global.exposure = visuals.exposure; } } @@ -102,3 +142,9 @@ fn set_materials_unlit( material.unlit = visuals.unlit; } } + +fn set_shadows(mut lights: Query<&mut DirectionalLight>, visuals: Res) { + for mut l in lights.iter_mut() { + l.shadows_enabled = visuals.shadows; + } +} diff --git a/trenchbroom/hedz/hedz.fgd b/trenchbroom/hedz/hedz.fgd index 499f7fb..7a54f70 100644 --- a/trenchbroom/hedz/hedz.fgd +++ b/trenchbroom/hedz/hedz.fgd @@ -61,6 +61,11 @@ my_value(integer) : "my_value" : 0 : "MY AWESOME VALUE!!" ] +@PointClass base(transform) model({ "path": "models/spawn.glb", "scale": scale }) = spawn_point +[ + scale(float) : "scale" : "0" : "" +] + @BaseClass = transform [ origin(vector) : "Translation/Origin" : "0 0 0" : ""