You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-09 12:50:35 +00:00
Freelook interpolation fixes
- Smooth freelook position more explicitely - Don't let orbit zoom produce translation when it shouldn't - Make base speed framerate-independent (and tweaked setting for that) - Don't rely on camera for calculations because it no longer reflect immediate state - Avoid potential divide-by-zero with zoom inertia - Make speed/zoom relation optional (if enabled, speed is adjusted from zoom) - Never change zoom distance when freelook is active - Orbit inertia also applies on freelook
This commit is contained in:
@@ -131,7 +131,7 @@ private:
|
||||
float gizmo_scale;
|
||||
|
||||
bool freelook_active;
|
||||
Vector3 freelook_target_position;
|
||||
real_t freelook_speed;
|
||||
|
||||
PanelContainer *info;
|
||||
Label *info_label;
|
||||
@@ -231,6 +231,7 @@ private:
|
||||
|
||||
Vector3 pos;
|
||||
float x_rot, y_rot, distance;
|
||||
Vector3 eye_pos; // Used in freelook mode
|
||||
bool region_select;
|
||||
Point2 region_begin, region_end;
|
||||
|
||||
@@ -239,10 +240,17 @@ private:
|
||||
distance = 4;
|
||||
region_select = false;
|
||||
}
|
||||
} cursor, camera_cursor;
|
||||
};
|
||||
// Viewport camera supports movement smoothing,
|
||||
// so one cursor is the real cursor, while the other can be an interpolated version.
|
||||
Cursor cursor; // Immediate cursor
|
||||
Cursor camera_cursor; // That one may be interpolated (don't modify this one except for smoothing purposes)
|
||||
|
||||
void scale_cursor_distance(real_t scale);
|
||||
|
||||
void set_freelook_active(bool active_now);
|
||||
void scale_freelook_speed(real_t scale);
|
||||
|
||||
real_t zoom_indicator_delay;
|
||||
|
||||
RID move_gizmo_instance[3], move_plane_gizmo_instance[3], rotate_gizmo_instance[3], scale_gizmo_instance[3];
|
||||
|
||||
Reference in New Issue
Block a user