blood tweaks
This commit is contained in:
parent
d6d3c8915f
commit
0f7b6d2ffc
@ -1342,6 +1342,11 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
//- Update ent controls
|
//- Update ent controls
|
||||||
|
|
||||||
|
for (S_Ent *ent = S_FirstEnt(world); ent->valid; ent = S_NextEnt(ent))
|
||||||
|
{
|
||||||
|
ent->fire_presses = 0;
|
||||||
|
}
|
||||||
|
|
||||||
for (S_CmdNode *cmd_node = input->first_cmd_node; cmd_node; cmd_node = cmd_node->next)
|
for (S_CmdNode *cmd_node = input->first_cmd_node; cmd_node; cmd_node = cmd_node->next)
|
||||||
{
|
{
|
||||||
S_Cmd cmd = cmd_node->cmd;
|
S_Cmd cmd = cmd_node->cmd;
|
||||||
@ -1353,6 +1358,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
target->move = ClampVec2Len(cmd.move, 1);
|
target->move = ClampVec2Len(cmd.move, 1);
|
||||||
target->look = cmd.look;
|
target->look = cmd.look;
|
||||||
target->fire_held = cmd.fire_held;
|
target->fire_held = cmd.fire_held;
|
||||||
|
target->fire_presses += cmd.fire_presses;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1600,7 +1606,8 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
S_EntList bullets_to_spawn = Zi;
|
S_EntList bullets_to_spawn = Zi;
|
||||||
for (S_Ent *firer = S_FirstEnt(world); firer->valid; firer = S_NextEnt(firer))
|
for (S_Ent *firer = S_FirstEnt(world); firer->valid; firer = S_NextEnt(firer))
|
||||||
{
|
{
|
||||||
if (firer->fire_held)
|
// if (firer->fire_held)
|
||||||
|
if (firer->fire_presses)
|
||||||
{
|
{
|
||||||
// i64 fire_delta_ns = world->time_ns - firer->last_fire_ns;
|
// i64 fire_delta_ns = world->time_ns - firer->last_fire_ns;
|
||||||
|
|
||||||
@ -1608,10 +1615,10 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
|
|
||||||
// i64 tick_bullets_count = sim_dt * firer->fire_rate;
|
// i64 tick_bullets_count = sim_dt * firer->fire_rate;
|
||||||
|
|
||||||
f32 fire_rate = 50;
|
f32 fire_rate = 20;
|
||||||
f32 bullets_per_fire = 3;
|
f32 bullets_per_fire = 1;
|
||||||
f32 spread = Tau * 0.05;
|
// f32 spread = Tau * 0.05;
|
||||||
// f32 spread = Tau * 0.01;
|
f32 spread = Tau * 0.01;
|
||||||
f32 tweak_speed = TweakFloat("Bullet speed", 100, 1, 100);
|
f32 tweak_speed = TweakFloat("Bullet speed", 100, 1, 100);
|
||||||
|
|
||||||
b32 can_fire = (firer->last_fire_ns + NsFromSeconds(1.0 / fire_rate)) <= world->time_ns;
|
b32 can_fire = (firer->last_fire_ns + NsFromSeconds(1.0 / fire_rate)) <= world->time_ns;
|
||||||
@ -1883,7 +1890,7 @@ void S_TickForever(WaveLaneCtx *lane)
|
|||||||
{
|
{
|
||||||
Vec4 color = VEC4(0.8, 0.8, 0.8, 1);
|
Vec4 color = VEC4(0.8, 0.8, 0.8, 1);
|
||||||
Vec2 p0 = world_shape.centroid;
|
Vec2 p0 = world_shape.centroid;
|
||||||
Vec2 p1 = S_SupportPointFromShape(world_shape, ent->look).p;
|
Vec2 p1 = S_EdgePointFromShape(world_shape, ent->look);
|
||||||
S_DebugDrawLine(p0, p1, color);
|
S_DebugDrawLine(p0, p1, color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -71,6 +71,7 @@ Struct(S_Ent)
|
|||||||
Vec2 move;
|
Vec2 move;
|
||||||
Vec2 look;
|
Vec2 look;
|
||||||
f32 fire_held;
|
f32 fire_held;
|
||||||
|
f32 fire_presses;
|
||||||
|
|
||||||
// TODO: Remove this (weapon testing)
|
// TODO: Remove this (weapon testing)
|
||||||
i64 last_fire_ns;
|
i64 last_fire_ns;
|
||||||
@ -260,6 +261,7 @@ Struct(S_Cmd)
|
|||||||
Vec2 move;
|
Vec2 move;
|
||||||
Vec2 look;
|
Vec2 look;
|
||||||
b32 fire_held;
|
b32 fire_held;
|
||||||
|
i32 fire_presses;
|
||||||
};
|
};
|
||||||
|
|
||||||
Struct(S_CmdNode)
|
Struct(S_CmdNode)
|
||||||
|
|||||||
@ -2562,6 +2562,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
if (frame->held_buttons[Button_S]) move.y += 1;
|
if (frame->held_buttons[Button_S]) move.y += 1;
|
||||||
}
|
}
|
||||||
f32 fire_held = frame->held_buttons[Button_M1];
|
f32 fire_held = frame->held_buttons[Button_M1];
|
||||||
|
f32 fire_presses = fire_held && !last_frame->held_buttons[Button_M1];
|
||||||
Vec2 look = Zi;
|
Vec2 look = Zi;
|
||||||
{
|
{
|
||||||
Vec2 center = MulXformV2(player->xf, player->local_shape.centroid);
|
Vec2 center = MulXformV2(player->xf, player->local_shape.centroid);
|
||||||
@ -2580,6 +2581,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
frame->move = move;
|
frame->move = move;
|
||||||
frame->look = look;
|
frame->look = look;
|
||||||
frame->fire_held = fire_held;
|
frame->fire_held = fire_held;
|
||||||
|
frame->fire_presses = fire_presses;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2590,6 +2592,7 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
cmd->move = frame->move;
|
cmd->move = frame->move;
|
||||||
cmd->look = frame->look;
|
cmd->look = frame->look;
|
||||||
cmd->fire_held = frame->fire_held;
|
cmd->fire_held = frame->fire_held;
|
||||||
|
cmd->fire_presses = frame->fire_presses;
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
@ -2819,12 +2822,12 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
V_ParticleFlag flags = 0;
|
V_ParticleFlag flags = 0;
|
||||||
flags |= V_ParticleFlag_PruneWhenStill;
|
flags |= V_ParticleFlag_PruneWhenStill;
|
||||||
flags |= V_ParticleFlag_StainOnPrune;
|
flags |= V_ParticleFlag_StainOnPrune;
|
||||||
if (TweakBool("Emitter stain trail", 0))
|
if (TweakBool("Emitter stain trail", 1))
|
||||||
{
|
{
|
||||||
flags |= V_ParticleFlag_StainTrail;
|
flags |= V_ParticleFlag_StainTrail;
|
||||||
}
|
}
|
||||||
// f32 count = TweakFloat("Emitter count", 50, 0, 10000);
|
// f32 count = TweakFloat("Emitter count", 50, 0, 10000);
|
||||||
f32 count = TweakFloat("Emitter count", 50, 1, 1000);
|
f32 count = TweakFloat("Emitter count", 20, 1, 1000);
|
||||||
f32 speed = TweakFloat("Emitter speed", 20, 0, 100);
|
f32 speed = TweakFloat("Emitter speed", 20, 0, 100);
|
||||||
f32 falloff = TweakFloat("Emitter falloff", 50, 0, 100);
|
f32 falloff = TweakFloat("Emitter falloff", 50, 0, 100);
|
||||||
f32 angle_spread = TweakFloat("Emitter angle spread", 0.1, 0, 1) * Tau;
|
f32 angle_spread = TweakFloat("Emitter angle spread", 0.1, 0, 1) * Tau;
|
||||||
@ -2852,9 +2855,10 @@ void V_TickForever(WaveLaneCtx *lane)
|
|||||||
// emitter.angle_spread = Tau / 32;
|
// emitter.angle_spread = Tau / 32;
|
||||||
|
|
||||||
// emitter.color_lin = LinearFromSrgb(VEC4(0.5, 0.1, 0.1, 1));
|
// emitter.color_lin = LinearFromSrgb(VEC4(0.5, 0.1, 0.1, 1));
|
||||||
emitter.color_lin = LinearFromSrgb(VEC4(0.5, 0.1, 0.1, 1));
|
emitter.color_lin = LinearFromSrgb(VEC4(0.5, 0.1, 0.1, 0.5));
|
||||||
|
|
||||||
emitter.color_spread = VEC4(0.1, 0, 0, 0);
|
// emitter.color_spread = VEC4(0.1, 0, 0, 0);
|
||||||
|
emitter.color_spread = VEC4(0.1, 0, 0, 0.5);
|
||||||
|
|
||||||
// emitter.color = LinearFromSrgb(Vec4(0.5, 0.1, 0.1, 1));
|
// emitter.color = LinearFromSrgb(Vec4(0.5, 0.1, 0.1, 1));
|
||||||
|
|
||||||
|
|||||||
@ -268,6 +268,7 @@ Struct(V_Frame)
|
|||||||
Vec2 move;
|
Vec2 move;
|
||||||
Vec2 look;
|
Vec2 look;
|
||||||
f32 fire_held;
|
f32 fire_held;
|
||||||
|
f32 fire_presses;
|
||||||
|
|
||||||
// Sim cmds
|
// Sim cmds
|
||||||
u64 sim_cmds_count;
|
u64 sim_cmds_count;
|
||||||
|
|||||||
@ -118,7 +118,8 @@ ComputeShader2D(V_BackdropCS, 8, 8)
|
|||||||
|
|
||||||
case S_TileKind_Wall:
|
case S_TileKind_Wall:
|
||||||
{
|
{
|
||||||
result = Color_Red;
|
// result = Color_Red;
|
||||||
|
result = Color_Black;
|
||||||
} break;
|
} break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -402,7 +403,17 @@ ComputeShader(V_SimParticlesCS, 64)
|
|||||||
cells[cell_pos] = color;
|
cells[cell_pos] = color;
|
||||||
if (should_stain)
|
if (should_stain)
|
||||||
{
|
{
|
||||||
stains[cell_pos] = color;
|
// stains[cell_pos] = color;
|
||||||
|
|
||||||
|
|
||||||
|
Vec4 old_stain = stains[cell_pos];
|
||||||
|
|
||||||
|
Vec4 new_stain = 0;
|
||||||
|
new_stain.rgb = (old_stain.rgb * old_stain.a) + (color.rgb * (1.0 - old_stain.a));
|
||||||
|
new_stain.a = color.a = (old_stain.a * 1) + (color.a * (1.0 - old_stain.a));
|
||||||
|
|
||||||
|
|
||||||
|
stains[cell_pos] = new_stain;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user