From 8612ad60d6797fd27f0e93cb06454b4c200ba3ee Mon Sep 17 00:00:00 2001 From: Monty Marz <m.marzouq@gmx.de> Date: Sun, 22 Nov 2020 16:32:18 +0100 Subject: [PATCH] street lamp particles, ground fire bowl, misc fixes --- assets/voxygen/shaders/particle-vert.glsl | 12 ++++++++++++ .../voxel/sprite/misc/lantern_ground_open.vox | Bin 0 -> 1680 bytes .../voxygen/voxel/sprite/misc/street_lamp.vox | Bin 3280 -> 3380 bytes assets/voxygen/voxel/sprite_manifest.ron | 11 +++++++++++ assets/world/style/colors.ron | 2 +- common/src/loadout_builder.rs | 4 +--- common/src/terrain/sprite.rs | 3 +++ voxygen/src/hud/minimap.rs | 4 ++-- voxygen/src/render/pipelines/particle.rs | 1 + voxygen/src/scene/particle.rs | 8 ++++++++ voxygen/src/scene/terrain/watcher.rs | 10 ++++++++-- 11 files changed, 47 insertions(+), 8 deletions(-) create mode 100644 assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox diff --git a/assets/voxygen/shaders/particle-vert.glsl b/assets/voxygen/shaders/particle-vert.glsl index ad1165c0dd..ba4b815033 100644 --- a/assets/voxygen/shaders/particle-vert.glsl +++ b/assets/voxygen/shaders/particle-vert.glsl @@ -54,6 +54,7 @@ const int HEALING_BEAM = 13; const int ENERGY_NATURE = 14; const int FLAMETHROWER = 15; const int FIRE_SHOCKWAVE = 16; +const int FIRE_BOWL = 17; // meters per second squared (acceleration) const float earth_gravity = 9.807; @@ -163,6 +164,17 @@ void main() { vec4(2, 1.5 + rand5 * 0.5, 0, start_end(1.0, 0.0)), spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) ); + } else if (inst_mode == FIRE_BOWL) { + f_reflect = 0.0; // Fire doesn't reflect light, it emits it + attr = Attr( + linear_motion( + vec3(normalize(vec2(rand0, rand1)) * 0.1, 0.6), + vec3(rand2 * 0.2, rand3 * 0.5, 0.8 + rand4 * 0.5) + ), + vec3(0.2), // Size + vec4(2, 1.5 + rand5 * 0.5, 0, start_end(1.0, 0.0)), // Colour + spin_in_axis(vec3(rand6, rand7, rand8), rand9 * 3) + ); } else if (inst_mode == GUN_POWDER_SPARK) { attr = Attr( linear_motion( diff --git a/assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox b/assets/voxygen/voxel/sprite/misc/lantern_ground_open.vox new file mode 100644 index 0000000000000000000000000000000000000000..7505e704b90e4e0cb2666e7af3abd107840b94dd GIT binary patch literal 1680 zcmciBe@NVA90%~v^L?J@oAhH@J9T$ndikSyXKeW+f8@5#)NQ)C<t*E7OGa$W;~1^4 zA=_~n+f`&@GZVL<WfmeaW}BE4{b3R^24f5x5roKy=->W`=)ZUG)BcKP|Mi6zZ$8iG z`Fy|6eebSo|H06hh_pAh?qf*G73pk^wLF+9c-{9mF3Z6~vDUp#W>sWlEj%UC%cWjT zhAeTfCrWyi63=03reRv9%M^z_a!8XQOD>6KPjil`$&h93GR3e*4rwxE$tAJuS<W#v z(=aX5Wr{1Faydtu3|VqB>!LhI6wj}Ce#P@Eo?UrLsa}UP8M5SZT^z-;v*)N4O@=IM zmqfEij%JSxS=KIzVUHZc9vQN%T@uUZS@uYiAxmy%-R1dQu9G3lS}BKTb39FkENkU3 zNogi2!z5+7*K#izvaFTToY$P!oY$P!oM)2KOj3qP%5tyeUNU4^D`hxu_-+i}jp4g7 zoM)2KOj3qP%5pDhGGs|9%NffalMd{9u94sE>Qz@)hg2$syCZ_#mljd%`xC$Wd{|g$ zN9MZH`sKQ^qq*=O4I$KDj_`Orq{TuK_d_Ngg)HVGyIqiXQV<*#Jb6`+l@L6X7Hnjl zds$H3{s7ueW+QfXBi@~R49zJ)$Ee_yX~CJ>ob3ppAYO!$R0K7%QRI6*6b%IsnJh%b z_07mTA}Be_dyfgW%?soOK0lcS8QlPx@nK-|Bba(B2Y0sT18t9ER0MPM1N}myrv=j= z2o|OUH?Fac3MN_vUmXxEpAf`YpY9S2ALDwTpeZcqt`qb%3odfKqdI_iOA(SCWf(hN ziPVd=80%@m!aFbF*U31_i*vE9vJiWoEyMAyS|r*8>6ZoLuM6hS3u+1iXpNNMNX-^_ z&GqPt<RV_3kD*<qnC;$**z=7@9NmZ1slyoTKY`?{F$}+zz)<=%q?2*@9^QapFo;kn zgo<zxYPLLqXDY+kUR{p;JL@t0W)Rb#6ye7k5iH*-$47kT?4;o4H-ewP7bN3lxR|cO z;*}=+_ERUk!E6kD?!&d)ek`N#fBF2?!A)og1^@N)S5;Nv{n~MCt(ZW=z&ZHSeq8@l zaObe#a#<O|;V^oN`>=QS3?!XIj+cYE3v1tDe}KQ8f&#ozI*J_)BRDqrHa2zV;no+W zn2Y%_!gu!1_n+C9x!0l2oA7#oGZ&_i{%jWS&3uOszg@!9rv|X&+&K1pJde(+ONd6J sxGR8U5&nQ)60Cf^cD@z<zW%GvKjG^C>|U8^-m8~cU$3`%<Mrp|FWe1ht^fc4 literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/sprite/misc/street_lamp.vox b/assets/voxygen/voxel/sprite/misc/street_lamp.vox index df920331d69bcbd44c7957c81cd728a3bca5caf9..bf8722bf58dd269372dba1f1f2306d7642b11f84 100644 GIT binary patch delta 467 zcmXYuy-EW?6oq$Z?!6NsRu=AzBGDqXodj(}EK>M~ATe(sSos2Zhy`CmL_4t)ONn5i z`Dv^zEEf`3zkmZDXU;j?I}1CEkEwHU(revjS$4GFJw~$Da+aNU`-jbi;Vk{rLVK6} z?r(z&XZODIYG;+WqEc|asJt&`0t$wALMCLOV0fowN(KtH@K#g;3gu~78&uv!Hb*wc z${@ISllwSxKJrR@7f>*KAkQVvozMv#C>TDF=gOSYDIF*nK9J`|XLKN-V2cOKpRhe} zE{(lQBLM}&2bbo#Pkc!ld7sAO(?n5&K%NVoFehmulBSB9q){Nxl}_n2O+}gGZV<?G zOLJ%G%NsjUwWK4%JnS_-ywuM{T@D-TE8o|v^=CiTZ{3ahWoN5?YPZXS=9TA<ly}X| EKX*%fpa1{> delta 341 zcmW;FF;2rU6vlDe&+oaF%ES_zC2#`PZZI%J5zq<=m5Nj30$hMC5;IpobYx~`;27)- z@xVV=`sK?P$9{+MmDl&TyY|I7cYWF25bk5;++DZ7BL3Hs=d8u<Vc$J3cwwErtv_u$ z#n22Inkh_h7R5Su|F-=HvhQ2s-N!sc#t;~sL{q?4yAA#-!CN*b9$9=v3xWTxcb z2!+uTe9SdKB70C6J;5vIAj%#TMo;j@o^g(hq>?rd9DmYzn?k8x3KI$wNO&dTt<?9| U#kY)`<;8edJxbsA<MGky9}eVJ_y7O^ diff --git a/assets/voxygen/voxel/sprite_manifest.ron b/assets/voxygen/voxel/sprite_manifest.ron index 72354dbcb8..a271d51272 100644 --- a/assets/voxygen/voxel/sprite_manifest.ron +++ b/assets/voxygen/voxel/sprite_manifest.ron @@ -2005,6 +2005,17 @@ PotionMinor: Some(( ], wind_sway: 0.0, )), +// Ground Fire Bowls +FireBowlGround: Some(( + variations: [ + ( + model: "voxygen.voxel.sprite.misc.lantern_ground_open", + offset: (-3.5, -3.5, 0.0), + lod_axes: (1.0, 1.0, 1.0), + ), +], + wind_sway: 0.0, +)), // Underwater Grass GrassBlue: Some(( variations: [ diff --git a/assets/world/style/colors.ron b/assets/world/style/colors.ron index 6f234e82d0..94c24db425 100644 --- a/assets/world/style/colors.ron +++ b/assets/world/style/colors.ron @@ -147,7 +147,7 @@ plot_dirt: (90, 70, 50), plot_grass: (100, 200, 0), plot_water: (100, 150, 250), - plot_town: (150, 110, 60), + plot_town: (90, 70, 50), // TODO: Add field furrow stuff. ), ), diff --git a/common/src/loadout_builder.rs b/common/src/loadout_builder.rs index 1891e87492..43a685571e 100644 --- a/common/src/loadout_builder.rs +++ b/common/src/loadout_builder.rs @@ -404,9 +404,7 @@ impl LoadoutBuilder { back: None, ring: None, neck: None, - lantern: Some(Item::new_from_asset_expect( - "common.items.lantern.black_0", - )), + lantern: None, glider: None, head: None, tabard: None, diff --git a/common/src/terrain/sprite.rs b/common/src/terrain/sprite.rs index f33d4463b4..a9b97918a4 100644 --- a/common/src/terrain/sprite.rs +++ b/common/src/terrain/sprite.rs @@ -107,6 +107,7 @@ make_case_elim!( GrassBlue = 0x51, ChestBurried = 0x52, Mud = 0x53, + FireBowlGround = 0x54, } ); @@ -125,6 +126,7 @@ impl SpriteKind { SpriteKind::StreetLamp => 2.65, SpriteKind::Carrot => 0.18, SpriteKind::Radish => 0.18, + SpriteKind::FireBowlGround => 0.55, // TODO: Uncomment this when we have a way to open doors // SpriteKind::Door => 3.0, SpriteKind::Bed => 1.54, @@ -234,6 +236,7 @@ impl SpriteKind { | SpriteKind::Beehive | SpriteKind::PotionMinor | SpriteKind::VialEmpty + | SpriteKind::FireBowlGround ) } } diff --git a/voxygen/src/hud/minimap.rs b/voxygen/src/hud/minimap.rs index cdea80e8eb..8f4c705fb6 100644 --- a/voxygen/src/hud/minimap.rs +++ b/voxygen/src/hud/minimap.rs @@ -369,11 +369,11 @@ impl<'a> Widget for MiniMap<'a> { let name_len = chunk.meta().name().chars().count(); Text::new(chunk.meta().name()) .mid_top_with_margin_on(state.ids.mmap_frame, match name_len { - 16..=30 => 4.0, + 15..=30 => 4.0, _ => 2.0, }) .font_size(self.fonts.cyri.scale(match name_len { - 0..=16 => 18, + 0..=15 => 18, 16..=30 => 14, _ => 14, })) diff --git a/voxygen/src/render/pipelines/particle.rs b/voxygen/src/render/pipelines/particle.rs index bc71c54e38..86c3d56bc2 100644 --- a/voxygen/src/render/pipelines/particle.rs +++ b/voxygen/src/render/pipelines/particle.rs @@ -113,6 +113,7 @@ pub enum ParticleMode { EnergyNature = 14, FlameThrower = 15, FireShockwave = 16, + FireBowl = 17, } impl ParticleMode { diff --git a/voxygen/src/scene/particle.rs b/voxygen/src/scene/particle.rs index 22e0e3b8b0..20ef430bca 100644 --- a/voxygen/src/scene/particle.rs +++ b/voxygen/src/scene/particle.rs @@ -484,6 +484,14 @@ impl ParticleMgr { mode: ParticleMode::CampfireFire, cond: |_| true, }, + BlockParticles { + blocks: |boi| &boi.fire_bowls, + range: 2, + rate: 20.0, + lifetime: 0.25, + mode: ParticleMode::FireBowl, + cond: |_| true, + }, BlockParticles { blocks: |boi| &boi.smokers, range: 8, diff --git a/voxygen/src/scene/terrain/watcher.rs b/voxygen/src/scene/terrain/watcher.rs index 6914c3f2e3..7e01763d46 100644 --- a/voxygen/src/scene/terrain/watcher.rs +++ b/voxygen/src/scene/terrain/watcher.rs @@ -15,12 +15,15 @@ pub struct BlocksOfInterest { pub beehives: Vec<Vec3<i32>>, pub reeds: Vec<Vec3<i32>>, pub flowers: Vec<Vec3<i32>>, + pub fire_bowls: Vec<Vec3<i32>>, // Note: these are only needed for chunks within the iteraction range so this is a potential // area for optimization pub interactables: Vec<Vec3<i32>>, pub lights: Vec<(Vec3<i32>, u8)>, } +use inline_tweak::*; + impl BlocksOfInterest { pub fn from_chunk(chunk: &TerrainChunk) -> Self { span!(_guard, "from_chunk", "BlocksOfInterest::from_chunk"); @@ -34,6 +37,7 @@ impl BlocksOfInterest { let mut flowers = Vec::new(); let mut interactables = Vec::new(); let mut lights = Vec::new(); + let mut fire_bowls = Vec::new(); chunk .vol_iter( @@ -68,8 +72,9 @@ impl BlocksOfInterest { }, // Offset positions to account for block height. // TODO: Is this a good idea? - Some(SpriteKind::StreetLamp) => fires.push(pos + Vec3::unit_z() * 3), - Some(SpriteKind::StreetLampTall) => fires.push(pos + Vec3::unit_z() * 4), + Some(SpriteKind::StreetLamp) => fire_bowls.push(pos + Vec3::unit_z() * 2), + Some(SpriteKind::FireBowlGround) => fire_bowls.push(pos + Vec3::unit_z() * 1), + Some(SpriteKind::StreetLampTall) => fire_bowls.push(pos + Vec3::unit_z() * 4), Some(SpriteKind::Beehive) => beehives.push(pos), Some(SpriteKind::Reed) => reeds.push(pos), Some(SpriteKind::PinkFlower) => flowers.push(pos), @@ -100,6 +105,7 @@ impl BlocksOfInterest { flowers, interactables, lights, + fire_bowls, } } }