diff --git a/src/Core/Render/CCamera.cpp b/src/Core/Render/CCamera.cpp index 785b4786..adb8e014 100644 --- a/src/Core/Render/CCamera.cpp +++ b/src/Core/Render/CCamera.cpp @@ -16,7 +16,7 @@ CCamera::CCamera() // todo: make it actually look at the target! // don't actually use this constructor, it's unfinished and won't work properly -CCamera::CCamera(CVector3f Position, CVector3f /*Target*/) +CCamera::CCamera(const CVector3f& Position, const CVector3f& /*Target*/) : mPosition(Position) , mYaw(-Math::skHalfPi) { @@ -65,7 +65,7 @@ void CCamera::Zoom(float Amount) mFrustumPlanesDirty = true; } -void CCamera::Snap(CVector3f Position) +void CCamera::Snap(const CVector3f& Position) { mPosition = Position; mYaw = -Math::skHalfPi; @@ -119,7 +119,7 @@ void CCamera::ProcessMouseInput(FKeyInputs KeyFlags, FMouseInputs MouseFlags, fl } } -CRay CCamera::CastRay(CVector2f DeviceCoords) const +CRay CCamera::CastRay(const CVector2f& DeviceCoords) const { const CMatrix4f InverseVP = (ViewMatrix().Transpose() * ProjectionMatrix().Transpose()).Inverse(); diff --git a/src/Core/Render/CCamera.h b/src/Core/Render/CCamera.h index 438edee1..bd7fce2d 100644 --- a/src/Core/Render/CCamera.h +++ b/src/Core/Render/CCamera.h @@ -54,15 +54,15 @@ class CCamera public: CCamera(); - CCamera(CVector3f Position, CVector3f Target); + explicit CCamera(const CVector3f& Position, const CVector3f& Target); void Pan(float XAmount, float YAmount); void Rotate(float XAmount, float YAmount); void Zoom(float Amount); - void Snap(CVector3f Position); + void Snap(const CVector3f& Position); void ProcessKeyInput(FKeyInputs KeyFlags, double DeltaTime); void ProcessMouseInput(FKeyInputs KeyFlags, FMouseInputs MouseFlags, float XMovement, float YMovement); - CRay CastRay(CVector2f DeviceCoords) const; + CRay CastRay(const CVector2f& DeviceCoords) const; void LoadMatrices() const; CTransform4f GetCameraTransform() const; @@ -73,10 +73,10 @@ public: void SetOrbitDistance(float Distance); // Inline Accessors - CVector3f Position() const { UpdateTransform(); return mPosition; } - CVector3f Direction() const { UpdateTransform(); return mDirection; } - CVector3f UpVector() const { UpdateTransform(); return mUpVector; } - CVector3f RightVector() const { UpdateTransform(); return mRightVector; } + const CVector3f& Position() const { UpdateTransform(); return mPosition; } + const CVector3f& Direction() const { UpdateTransform(); return mDirection; } + const CVector3f& UpVector() const { UpdateTransform(); return mUpVector; } + const CVector3f& RightVector() const { UpdateTransform(); return mRightVector; } float Yaw() const { return mYaw; } float Pitch() const { return mPitch; } float FieldOfView() const { return 55.f; } diff --git a/src/Core/Render/CRenderBucket.cpp b/src/Core/Render/CRenderBucket.cpp index fbd7c200..e456b077 100644 --- a/src/Core/Render/CRenderBucket.cpp +++ b/src/Core/Render/CRenderBucket.cpp @@ -19,8 +19,8 @@ void CRenderBucket::CSubBucket::Sort(const CCamera* pkCamera, bool DebugVisualiz { std::stable_sort(mRenderables.begin(), mRenderables.begin() + mSize, [&, pkCamera](const auto& rkLeft, const auto& rkRight) { - const CVector3f CamPos = pkCamera->Position(); - const CVector3f CamDir = pkCamera->Direction(); + const CVector3f& CamPos = pkCamera->Position(); + const CVector3f& CamDir = pkCamera->Direction(); const CVector3f DistL = rkLeft.AABox.ClosestPointAlongVector(CamDir) - CamPos; const CVector3f DistR = rkRight.AABox.ClosestPointAlongVector(CamDir) - CamPos; diff --git a/src/Core/Scene/CLightNode.cpp b/src/Core/Scene/CLightNode.cpp index 7938aa31..71b42aaa 100644 --- a/src/Core/Scene/CLightNode.cpp +++ b/src/Core/Scene/CLightNode.cpp @@ -91,7 +91,7 @@ SRayIntersection CLightNode::RayNodeIntersectTest(const CRay& rkRay, uint32 Asse const CVector3f PlaneForward = -rkViewInfo.pCamera->Direction(); const CVector3f PlaneRight = -rkViewInfo.pCamera->RightVector(); - const CVector3f PlaneUp = rkViewInfo.pCamera->UpVector(); + const CVector3f& PlaneUp = rkViewInfo.pCamera->UpVector(); const CQuaternion PlaneRot = CQuaternion::FromAxes(PlaneRight, PlaneForward, PlaneUp); const CVector3f RotatedHitPoint = PlaneRot.Inverse() * RelHitPoint; diff --git a/src/Core/Scene/CScriptNode.cpp b/src/Core/Scene/CScriptNode.cpp index bff8d72c..58ca387b 100644 --- a/src/Core/Scene/CScriptNode.cpp +++ b/src/Core/Scene/CScriptNode.cpp @@ -392,7 +392,7 @@ SRayIntersection CScriptNode::RayNodeIntersectTest(const CRay& rkRay, uint32 Ass const CVector3f PlaneForward = -rkViewInfo.pCamera->Direction(); const CVector3f PlaneRight = -rkViewInfo.pCamera->RightVector(); - const CVector3f PlaneUp = rkViewInfo.pCamera->UpVector(); + const CVector3f& PlaneUp = rkViewInfo.pCamera->UpVector(); const CQuaternion PlaneRot = CQuaternion::FromAxes(PlaneRight, PlaneForward, PlaneUp); const CVector3f RotatedHitPoint = PlaneRot.Inverse() * RelHitPoint;