| 183 | } |
| 184 | |
| 185 | bool Camera::IsPointOnView(const Vector3& worldSpaceLocation) const |
| 186 | { |
| 187 | Vector3 cameraUp = GetTransform().GetUp(); |
| 188 | Vector3 cameraForward = GetTransform().GetForward(); |
| 189 | Vector3 directionToPosition = (worldSpaceLocation - GetPosition()).GetNormalized(); |
| 190 | if (Vector3::Dot(cameraForward, directionToPosition) < 0) |
| 191 | return false; |
| 192 | |
| 193 | Quaternion lookAt = Quaternion::LookRotation(directionToPosition, cameraUp); |
| 194 | Vector3 lookAtDirection = lookAt * Vector3::Forward; |
| 195 | Vector3 newWorldLocation = GetPosition() + lookAtDirection; |
| 196 | |
| 197 | Float2 windowSpace; |
| 198 | const Viewport viewport = GetViewport(); |
| 199 | ProjectPoint(newWorldLocation, windowSpace, viewport); |
| 200 | |
| 201 | return windowSpace.X >= 0 && windowSpace.X <= viewport.Size.X && windowSpace.Y >= 0 && windowSpace.Y <= viewport.Size.Y; |
| 202 | } |
| 203 | |
| 204 | Ray Camera::ConvertMouseToRay(const Float2& mousePosition) const |
| 205 | { |
nothing calls this directly
no test coverage detected