You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-06 17:25:19 +00:00
-Fixed redraw always on 3D viewprot bug
-Changed manipulation inertia default values. Do not touch them again or I'll cut your fingers and eat them.
This commit is contained in:
@@ -1564,6 +1564,7 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const {
|
|||||||
p_shader->canvas_item.blend_mode = Shader::CanvasItem::BLEND_MODE_MIX;
|
p_shader->canvas_item.blend_mode = Shader::CanvasItem::BLEND_MODE_MIX;
|
||||||
p_shader->canvas_item.uses_screen_texture = false;
|
p_shader->canvas_item.uses_screen_texture = false;
|
||||||
p_shader->canvas_item.uses_screen_uv = false;
|
p_shader->canvas_item.uses_screen_uv = false;
|
||||||
|
p_shader->canvas_item.uses_time = false;
|
||||||
|
|
||||||
shaders.actions_canvas.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_ADD);
|
shaders.actions_canvas.render_mode_values["blend_add"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_ADD);
|
||||||
shaders.actions_canvas.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MIX);
|
shaders.actions_canvas.render_mode_values["blend_mix"] = Pair<int *, int>(&p_shader->canvas_item.blend_mode, Shader::CanvasItem::BLEND_MODE_MIX);
|
||||||
@@ -1595,6 +1596,7 @@ void RasterizerStorageGLES3::_update_shader(Shader *p_shader) const {
|
|||||||
p_shader->spatial.unshaded = false;
|
p_shader->spatial.unshaded = false;
|
||||||
p_shader->spatial.no_depth_test = false;
|
p_shader->spatial.no_depth_test = false;
|
||||||
p_shader->spatial.uses_sss = false;
|
p_shader->spatial.uses_sss = false;
|
||||||
|
p_shader->spatial.uses_time = false;
|
||||||
p_shader->spatial.uses_vertex_lighting = false;
|
p_shader->spatial.uses_vertex_lighting = false;
|
||||||
p_shader->spatial.uses_screen_texture = false;
|
p_shader->spatial.uses_screen_texture = false;
|
||||||
p_shader->spatial.uses_vertex = false;
|
p_shader->spatial.uses_vertex = false;
|
||||||
|
|||||||
@@ -690,11 +690,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
|
|||||||
hints["editors/3d/navigation_feel/orbit_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/orbit_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
hints["editors/3d/navigation_feel/orbit_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/orbit_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
||||||
set("editors/3d/navigation_feel/translation_inertia", 0.15);
|
set("editors/3d/navigation_feel/translation_inertia", 0.15);
|
||||||
hints["editors/3d/navigation_feel/translation_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/translation_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
hints["editors/3d/navigation_feel/translation_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/translation_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
||||||
set("editors/3d/navigation_feel/zoom_inertia", 0.1);
|
set("editors/3d/navigation_feel/zoom_inertia", 0.075);
|
||||||
hints["editors/3d/navigation_feel/zoom_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/zoom_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
hints["editors/3d/navigation_feel/zoom_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/zoom_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
||||||
set("editors/3d/navigation_feel/manipulation_orbit_inertia", 0.1);
|
set("editors/3d/navigation_feel/manipulation_orbit_inertia", 0.075);
|
||||||
hints["editors/3d/navigation_feel/manipulation_orbit_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/manipulation_orbit_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
hints["editors/3d/navigation_feel/manipulation_orbit_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/manipulation_orbit_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
||||||
set("editors/3d/navigation_feel/manipulation_translation_inertia", 0.1);
|
set("editors/3d/navigation_feel/manipulation_translation_inertia", 0.075);
|
||||||
hints["editors/3d/navigation_feel/manipulation_translation_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/manipulation_translation_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
hints["editors/3d/navigation_feel/manipulation_translation_inertia"] = PropertyInfo(Variant::REAL, "editors/3d/navigation_feel/manipulation_translation_inertia", PROPERTY_HINT_RANGE, "0.0, 1, 0.01");
|
||||||
|
|
||||||
// freelook
|
// freelook
|
||||||
|
|||||||
@@ -70,20 +70,17 @@
|
|||||||
#define MAX_FOV 179
|
#define MAX_FOV 179
|
||||||
|
|
||||||
void SpatialEditorViewport::_update_camera(float p_interp_delta) {
|
void SpatialEditorViewport::_update_camera(float p_interp_delta) {
|
||||||
if (orthogonal) {
|
|
||||||
//camera->set_orthogonal(size.width*cursor.distance,get_znear(),get_zfar());
|
bool is_orthogonal = camera->get_projection() == Camera::PROJECTION_ORTHOGONAL;
|
||||||
camera->set_orthogonal(2 * cursor.distance, 0.1, 8192);
|
|
||||||
} else
|
|
||||||
camera->set_perspective(get_fov(), get_znear(), get_zfar());
|
|
||||||
|
|
||||||
//when not being manipulated, move softly
|
//when not being manipulated, move softly
|
||||||
float free_orbit_inertia = EDITOR_DEF("editors/3d/navigation_feel/orbit_inertia", 0.15);
|
float free_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/orbit_inertia");
|
||||||
float free_translation_inertia = EDITOR_DEF("editors/3d/navigation_feel/translation_inertia", 0.15);
|
float free_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/translation_inertia");
|
||||||
//when being manipulated, move more quickly
|
//when being manipulated, move more quickly
|
||||||
float manip_orbit_inertia = EDITOR_DEF("editors/3d/navigation_feel/manipulation_orbit_inertia", 0.1);
|
float manip_orbit_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_orbit_inertia");
|
||||||
float manip_translation_inertia = EDITOR_DEF("editors/3d/navigation_feel/manipulation_translation_inertia", 0.1);
|
float manip_translation_inertia = EDITOR_GET("editors/3d/navigation_feel/manipulation_translation_inertia");
|
||||||
|
|
||||||
float zoom_inertia = EDITOR_DEF("editors/3d/navigation_feel/zoom_inertia", 0.1);
|
float zoom_inertia = EDITOR_GET("editors/3d/navigation_feel/zoom_inertia");
|
||||||
|
|
||||||
//determine if being manipulated
|
//determine if being manipulated
|
||||||
bool manipulated = (Input::get_singleton()->get_mouse_button_mask() & (2 | 4)) || Input::get_singleton()->is_key_pressed(KEY_SHIFT) || Input::get_singleton()->is_key_pressed(KEY_ALT) || Input::get_singleton()->is_key_pressed(KEY_CONTROL);
|
bool manipulated = (Input::get_singleton()->get_mouse_button_mask() & (2 | 4)) || Input::get_singleton()->is_key_pressed(KEY_SHIFT) || Input::get_singleton()->is_key_pressed(KEY_ALT) || Input::get_singleton()->is_key_pressed(KEY_CONTROL);
|
||||||
@@ -104,21 +101,30 @@ void SpatialEditorViewport::_update_camera(float p_interp_delta) {
|
|||||||
camera_cursor = cursor;
|
camera_cursor = cursor;
|
||||||
}
|
}
|
||||||
|
|
||||||
float tolerance = 0.0001;
|
float tolerance = 0.001;
|
||||||
bool equal = true;
|
bool equal = true;
|
||||||
if (Math::abs(old_camera_cursor.x_rot - camera_cursor.x_rot) > tolerance || Math::abs(old_camera_cursor.y_rot - camera_cursor.y_rot) > tolerance)
|
if (Math::abs(old_camera_cursor.x_rot - camera_cursor.x_rot) > tolerance || Math::abs(old_camera_cursor.y_rot - camera_cursor.y_rot) > tolerance) {
|
||||||
equal = false;
|
equal = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (equal && old_camera_cursor.pos.distance_squared_to(camera_cursor.pos) > tolerance * tolerance)
|
if (equal && old_camera_cursor.pos.distance_squared_to(camera_cursor.pos) > tolerance * tolerance) {
|
||||||
equal = false;
|
equal = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (equal && Math::abs(old_camera_cursor.distance - camera_cursor.distance) > tolerance)
|
if (equal && Math::abs(old_camera_cursor.distance - camera_cursor.distance) > tolerance) {
|
||||||
equal = false;
|
equal = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!equal || p_interp_delta == 0 || is_freelook_active()) {
|
if (!equal || p_interp_delta == 0 || is_freelook_active() || is_orthogonal != orthogonal) {
|
||||||
|
|
||||||
camera->set_global_transform(to_camera_transform(camera_cursor));
|
camera->set_global_transform(to_camera_transform(camera_cursor));
|
||||||
update_transform_gizmo_view();
|
update_transform_gizmo_view();
|
||||||
|
|
||||||
|
if (orthogonal) {
|
||||||
|
//camera->set_orthogonal(size.width*cursor.distance,get_znear(),get_zfar());
|
||||||
|
camera->set_orthogonal(2 * cursor.distance, 0.1, 8192);
|
||||||
|
} else
|
||||||
|
camera->set_perspective(get_fov(), get_znear(), get_zfar());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -589,11 +589,29 @@ class VisualServerRaster : public VisualServer {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
void _draw_margins();
|
void _draw_margins();
|
||||||
|
static void _changes_changed() {}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
//if editor is redrawing when it shouldn't, enable this and put a breakpoint in _changes_changed()
|
||||||
|
//#define DEBUG_CHANGES
|
||||||
|
|
||||||
|
#ifdef DEBUG_CHANGES
|
||||||
|
_FORCE_INLINE_ static void redraw_request() {
|
||||||
|
changes++;
|
||||||
|
_changes_changed();
|
||||||
|
}
|
||||||
|
|
||||||
|
#define DISPLAY_CHANGED \
|
||||||
|
changes++; \
|
||||||
|
_changes_changed();
|
||||||
|
|
||||||
|
#else
|
||||||
_FORCE_INLINE_ static void redraw_request() { changes++; }
|
_FORCE_INLINE_ static void redraw_request() { changes++; }
|
||||||
|
|
||||||
#define DISPLAY_CHANGED changes++;
|
#define DISPLAY_CHANGED \
|
||||||
|
changes++;
|
||||||
|
#endif
|
||||||
|
// print_line(String("CHANGED: ") + __FUNCTION__);
|
||||||
|
|
||||||
#define BIND0R(m_r, m_name) \
|
#define BIND0R(m_r, m_name) \
|
||||||
m_r m_name() { return BINDBASE->m_name(); }
|
m_r m_name() { return BINDBASE->m_name(); }
|
||||||
|
|||||||
Reference in New Issue
Block a user