diff --git a/Source/Engine/Graphics/RenderTask.h b/Source/Engine/Graphics/RenderTask.h
index 5d6a47861..96048bcc2 100644
--- a/Source/Engine/Graphics/RenderTask.h
+++ b/Source/Engine/Graphics/RenderTask.h
@@ -251,7 +251,7 @@ public:
///
/// The scene rendering camera. Can be used to override the rendering view properties based on the current camera setup.
///
- API_FIELD() Camera* Camera = nullptr;
+ API_FIELD() ScriptingObjectReference Camera;
///
/// The render view description.
diff --git a/Source/Engine/Level/Actors/Camera.cpp b/Source/Engine/Level/Actors/Camera.cpp
index 1f9de6d41..c37e30607 100644
--- a/Source/Engine/Level/Actors/Camera.cpp
+++ b/Source/Engine/Level/Actors/Camera.cpp
@@ -17,12 +17,13 @@
Array Camera::Cameras;
Camera* Camera::CutSceneCamera = nullptr;
-Camera* Camera::OverrideMainCamera = nullptr;
+ScriptingObjectReference Camera::OverrideMainCamera;
Camera* Camera::GetMainCamera()
{
- if (OverrideMainCamera)
- return OverrideMainCamera;
+ Camera* overrideMainCamera = OverrideMainCamera.Get();
+ if (overrideMainCamera)
+ return overrideMainCamera;
if (CutSceneCamera)
return CutSceneCamera;
return Cameras.HasItems() ? Cameras.First() : nullptr;
diff --git a/Source/Engine/Level/Actors/Camera.h b/Source/Engine/Level/Actors/Camera.h
index 4bf277279..ecd93cef0 100644
--- a/Source/Engine/Level/Actors/Camera.h
+++ b/Source/Engine/Level/Actors/Camera.h
@@ -28,7 +28,7 @@ DECLARE_SCENE_OBJECT(Camera);
static Camera* CutSceneCamera;
// The overriden main camera.
- API_FIELD() static Camera* OverrideMainCamera;
+ API_FIELD() static ScriptingObjectReference OverrideMainCamera;
// Gets the main camera.
API_PROPERTY() static Camera* GetMainCamera();