diff --git a/rg3d-ui/src/curve/mod.rs b/rg3d-ui/src/curve/mod.rs index b52c1e727..2208472d5 100644 --- a/rg3d-ui/src/curve/mod.rs +++ b/rg3d-ui/src/curve/mod.rs @@ -329,7 +329,7 @@ impl> Control for CurveEditor { self.change_selected_keys_kind(kind.clone(), ui); } CurveEditorMessage::AddKey(screen_pos) => { - let local_pos = self.point_to_local_space(*screen_pos); + let local_pos = dbg!(self.point_to_local_space(*screen_pos)); self.keys.push(CurveKeyView { position: local_pos, kind: CurveKeyKind::Linear, @@ -450,9 +450,13 @@ impl> CurveEditor { /// Transforms a point to local space. pub fn point_to_local_space(&self, point: Vector2) -> Vector2 { - self.inv_screen_matrix + let mut p = point - self.screen_position(); + p.y = self.actual_size().y - p.y; + self.view_matrix .get() - .transform_point(&Point2::from(point)) + .try_inverse() + .unwrap_or_default() + .transform_point(&Point2::from(p)) .coords }