Skip to content

Commit c0cc43f

Browse files
authored
add input (#7090)
1 parent c3980b7 commit c0cc43f

File tree

4 files changed

+25
-2
lines changed

4 files changed

+25
-2
lines changed

code/particle/ParticleEffect.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,10 @@ class ParticleEffect {
333333
modular_curves_submember_input<&particle::max_life>,
334334
ModularCurvesMathOperators::division>{}},
335335
std::pair {"Radius", modular_curves_submember_input<&particle::radius>{}},
336+
std::pair {"Apparent Size", modular_curves_math_input<
337+
modular_curves_functional_input<&getPixelSize>,
338+
modular_curves_global_submember_input<gr_screen, &screen::max_w>,
339+
ModularCurvesMathOperators::division>{}},
336340
std::pair {"Velocity", modular_curves_submember_input<&particle::velocity, &vm_vec_mag_quick>{}},
337341
std::pair {"Parent Object Hitpoints", modular_curves_submember_input<&particle::attached_objnum, &Objects, &object::hull_strength>{}},
338342
std::pair {"Parent Ship Hitpoints Fraction", modular_curves_math_input<

code/particle/particle.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,24 @@ namespace particle
194194
return {new_particle_ptr};
195195
}
196196

197+
float getPixelSize(const particle& subject_particle) {
198+
vec3d pos;
199+
200+
if (subject_particle.attached_objnum < 0) {
201+
pos = subject_particle.pos;
202+
} else {
203+
pos = subject_particle.pos + Objects[subject_particle.attached_objnum].pos;
204+
}
205+
206+
float distance_to_eye = vm_vec_dist(&Eye_position, &pos);
207+
208+
return convert_distance_and_diameter_to_pixel_size(
209+
distance_to_eye,
210+
subject_particle.radius * 2.f,
211+
g3_get_hfov(Eye_fov),
212+
gr_screen.max_w);
213+
}
214+
197215
/**
198216
* @brief Moves a single particle
199217
* @param frametime The length of the current frame

code/particle/particle.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ namespace particle
116116
* @return A weak reference to the particle
117117
*/
118118
WeakParticlePtr createPersistent(particle&& new_particle);
119+
120+
float getPixelSize(const particle& subject_particle);
119121
}
120122

121123
#endif // _PARTICLE_H

code/utils/modular_curves.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,8 +249,7 @@ struct modular_curves_global_submember_input {
249249
};
250250

251251
template<auto grabber_fnc>
252-
struct modular_curves_functional_input {
253-
private:
252+
struct modular_curves_functional_input { private:
254253
template<int tuple_idx, typename input_type>
255254
static inline auto grab_from_tuple(const input_type& input) {
256255
if constexpr(tuple_idx < 0)

0 commit comments

Comments
 (0)