implement method to check if world position is within camera view

This commit is contained in:
Ruan Lucas
2022-10-02 00:02:56 -04:00
parent 76a66cf400
commit 6af6649f70
2 changed files with 26 additions and 0 deletions

View File

@@ -5,6 +5,7 @@
#include "Engine/Core/Math/Viewport.h"
#include "Engine/Content/Assets/Model.h"
#include "Engine/Content/Content.h"
#include "Engine/Engine/Screen.h"
#include "Engine/Serialization/Serialization.h"
#if USE_EDITOR
#include "Editor/Editor.h"
@@ -120,6 +121,24 @@ void Camera::ProjectPoint(const Vector3& worldSpaceLocation, Float2& cameraViewp
cameraViewportSpaceLocation = Float2(clipSpaceLocation);
}
bool Camera::CheckPointIsOnView(const Vector3& worldSpaceLocation) const
{
Camera* mainCamera = Camera::GetMainCamera();
if (!mainCamera)
{
return false;
}
Float2 windowSpace = Float2();
Float2 screenSize = Screen::GetSize();
mainCamera->ProjectPoint(worldSpaceLocation, windowSpace);
return (windowSpace.X >= 0 && windowSpace.X <= screenSize.X) &&
(windowSpace.Y >= 0 && windowSpace.Y <= screenSize.Y);
}
Ray Camera::ConvertMouseToRay(const Float2& mousePosition) const
{
return ConvertMouseToRay(mousePosition, GetViewport());