@@ -32,7 +32,7 @@ namespace Tools
3232/* *
3333*/
3434void
35- SelectionTool::Update (Math::vec2 const & viewPortPosition, Math::vec2 const & viewPortSize, Editor::Camera const * camera )
35+ SelectionTool::Update (Presentation::Modules::Viewport* viewport )
3636{
3737 Ptr<Input::Mouse> mouse = Input::InputServer::Instance ()->GetDefaultMouse ();
3838 Ptr<Input::Keyboard> keyboard = Input::InputServer::Instance ()->GetDefaultKeyboard ();
@@ -45,15 +45,15 @@ SelectionTool::Update(Math::vec2 const& viewPortPosition, Math::vec2 const& view
4545
4646 if (mouse->ButtonUp (Input::MouseButton::Code::LeftButton))
4747 {
48- Tools::SelectionContext::PerformPicking (viewPortPosition, viewPortSize, camera);
48+ Tools::SelectionContext::PerformPicking (viewport-> lastViewportImagePosition , viewport-> lastViewportImageSize , &viewport-> camera );
4949 }
5050}
5151
5252// ------------------------------------------------------------------------------
5353/* *
5454*/
5555void
56- SelectionTool::Render (Math::vec2 const & viewPortPosition, Math::vec2 const & viewPortSize, Editor::Camera const * camera )
56+ SelectionTool::Render (Presentation::Modules::Viewport* viewport )
5757{
5858 SelectionContext::ValidateSelection ();
5959
@@ -64,7 +64,7 @@ SelectionTool::Render(Math::vec2 const& viewPortPosition, Math::vec2 const& view
6464
6565 Game::World* defaultWorld = Game::GetWorld (WORLD_DEFAULT);
6666 Ptr<Input::Mouse> mouse = Input::InputServer::Instance ()->GetDefaultMouse ();
67- Im3d::Im3dContext::SetViewportRect (viewPortPosition, viewPortSize );
67+ Im3d::Im3dContext::SetViewportRect (viewport-> lastViewportImagePosition , viewport-> lastViewportImageSize );
6868
6969 Ptr<Input::Keyboard> keyboard = Input::InputServer::Instance ()->GetDefaultKeyboard ();
7070
@@ -93,17 +93,17 @@ SelectionTool::Render(Math::vec2 const& viewPortPosition, Math::vec2 const& view
9393 }
9494
9595 Math::vec2 mousePos = mouse->GetScreenPosition ();
96- mousePos -= viewPortPosition ;
97- mousePos = { mousePos.x / viewPortSize .x , mousePos.y / viewPortSize .y };
96+ mousePos -= viewport-> lastViewportImagePosition ;
97+ mousePos = { mousePos.x / viewport-> lastViewportImageSize .x , mousePos.y / viewport-> lastViewportImageSize .y };
9898
99- Math::mat4 const camTransform = Math::inverse (camera-> GetViewTransform ());
100- Math::mat4 const invProj = Math::inverse (camera-> GetProjectionTransform ());
99+ Math::mat4 const camTransform = Math::inverse (viewport-> camera . GetViewTransform ());
100+ Math::mat4 const invProj = Math::inverse (viewport-> camera . GetProjectionTransform ());
101101
102102 Math::line ray = RenderUtil::MouseRayUtil::ComputeWorldMouseRay (mousePos, 10000 , camTransform, invProj, 0 .01f );
103103
104104 if (this ->translation .dragTimer .Running () && !this ->translation .isDirty )
105105 {
106- this ->translation .originEntity = SelectionContext::GetSelectedEntityUnderMouse (viewPortPosition, viewPortSize, camera);
106+ this ->translation .originEntity = SelectionContext::GetSelectedEntityUnderMouse (viewport-> lastViewportImagePosition , viewport-> lastViewportImageSize , &viewport-> camera );
107107 if (this ->translation .originEntity == Editor::Entity::Invalid ())
108108 {
109109 // failed to find entity. Cancel translation attempt
0 commit comments