You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-11 13:10:58 +00:00
Add visualization of 3D particle emission shapes
Co-authored-by: Kasper Arnklit Frandsen <kasper.arnklit@gmail.com>
This commit is contained in:
@@ -1567,16 +1567,25 @@ void ParticleProcessMaterial::set_emission_shape(EmissionShape p_shape) {
|
||||
emission_shape = p_shape;
|
||||
notify_property_list_changed();
|
||||
_queue_shader_change();
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_sphere_radius(real_t p_radius) {
|
||||
emission_sphere_radius = p_radius;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_sphere_radius, p_radius);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_box_extents(Vector3 p_extents) {
|
||||
emission_box_extents = p_extents;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_box_extents, p_extents);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_point_texture(const Ref<Texture2D> &p_points) {
|
||||
@@ -1606,26 +1615,41 @@ void ParticleProcessMaterial::set_emission_point_count(int p_count) {
|
||||
void ParticleProcessMaterial::set_emission_ring_axis(Vector3 p_axis) {
|
||||
emission_ring_axis = p_axis;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_ring_axis, p_axis);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_ring_height(real_t p_height) {
|
||||
emission_ring_height = p_height;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_ring_height, p_height);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_ring_radius(real_t p_radius) {
|
||||
emission_ring_radius = p_radius;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_ring_radius, p_radius);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_ring_inner_radius(real_t p_radius) {
|
||||
emission_ring_inner_radius = p_radius;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_ring_inner_radius, p_radius);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_emission_ring_cone_angle(real_t p_angle) {
|
||||
emission_ring_cone_angle = p_angle;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_ring_cone_angle, p_angle);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
void ParticleProcessMaterial::set_inherit_velocity_ratio(double p_ratio) {
|
||||
@@ -1684,6 +1708,9 @@ real_t ParticleProcessMaterial::get_emission_ring_cone_angle() const {
|
||||
void ParticleProcessMaterial::set_emission_shape_offset(const Vector3 &p_emission_shape_offset) {
|
||||
emission_shape_offset = p_emission_shape_offset;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_shape_offset, p_emission_shape_offset);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
Vector3 ParticleProcessMaterial::get_emission_shape_offset() const {
|
||||
@@ -1693,6 +1720,9 @@ Vector3 ParticleProcessMaterial::get_emission_shape_offset() const {
|
||||
void ParticleProcessMaterial::set_emission_shape_scale(const Vector3 &p_emission_shape_scale) {
|
||||
emission_shape_scale = p_emission_shape_scale;
|
||||
RenderingServer::get_singleton()->material_set_param(_get_material(), shader_names->emission_shape_scale, p_emission_shape_scale);
|
||||
#ifdef TOOLS_ENABLED
|
||||
emit_signal("emission_shape_changed");
|
||||
#endif
|
||||
}
|
||||
|
||||
Vector3 ParticleProcessMaterial::get_emission_shape_scale() const {
|
||||
@@ -2209,6 +2239,8 @@ void ParticleProcessMaterial::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "sub_emitter_amount_at_collision", PROPERTY_HINT_RANGE, "1,32,1"), "set_sub_emitter_amount_at_collision", "get_sub_emitter_amount_at_collision");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "sub_emitter_keep_velocity"), "set_sub_emitter_keep_velocity", "get_sub_emitter_keep_velocity");
|
||||
|
||||
ADD_SIGNAL(MethodInfo("emission_shape_changed"));
|
||||
|
||||
BIND_ENUM_CONSTANT(PARAM_INITIAL_LINEAR_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(PARAM_ANGULAR_VELOCITY);
|
||||
BIND_ENUM_CONSTANT(PARAM_ORBIT_VELOCITY);
|
||||
|
||||
Reference in New Issue
Block a user