CCamera: Pass vectors by reference

Avoids a few redundant copies.
This commit is contained in:
Lioncache
2025-12-14 01:14:48 -05:00
parent 057c52f5e5
commit 71303fffd3
5 changed files with 14 additions and 14 deletions

View File

@@ -16,7 +16,7 @@ CCamera::CCamera()
// todo: make it actually look at the target! // todo: make it actually look at the target!
// don't actually use this constructor, it's unfinished and won't work properly // 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) : mPosition(Position)
, mYaw(-Math::skHalfPi) , mYaw(-Math::skHalfPi)
{ {
@@ -65,7 +65,7 @@ void CCamera::Zoom(float Amount)
mFrustumPlanesDirty = true; mFrustumPlanesDirty = true;
} }
void CCamera::Snap(CVector3f Position) void CCamera::Snap(const CVector3f& Position)
{ {
mPosition = Position; mPosition = Position;
mYaw = -Math::skHalfPi; 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(); const CMatrix4f InverseVP = (ViewMatrix().Transpose() * ProjectionMatrix().Transpose()).Inverse();

View File

@@ -54,15 +54,15 @@ class CCamera
public: public:
CCamera(); CCamera();
CCamera(CVector3f Position, CVector3f Target); explicit CCamera(const CVector3f& Position, const CVector3f& Target);
void Pan(float XAmount, float YAmount); void Pan(float XAmount, float YAmount);
void Rotate(float XAmount, float YAmount); void Rotate(float XAmount, float YAmount);
void Zoom(float Amount); void Zoom(float Amount);
void Snap(CVector3f Position); void Snap(const CVector3f& Position);
void ProcessKeyInput(FKeyInputs KeyFlags, double DeltaTime); void ProcessKeyInput(FKeyInputs KeyFlags, double DeltaTime);
void ProcessMouseInput(FKeyInputs KeyFlags, FMouseInputs MouseFlags, float XMovement, float YMovement); void ProcessMouseInput(FKeyInputs KeyFlags, FMouseInputs MouseFlags, float XMovement, float YMovement);
CRay CastRay(CVector2f DeviceCoords) const; CRay CastRay(const CVector2f& DeviceCoords) const;
void LoadMatrices() const; void LoadMatrices() const;
CTransform4f GetCameraTransform() const; CTransform4f GetCameraTransform() const;
@@ -73,10 +73,10 @@ public:
void SetOrbitDistance(float Distance); void SetOrbitDistance(float Distance);
// Inline Accessors // Inline Accessors
CVector3f Position() const { UpdateTransform(); return mPosition; } const CVector3f& Position() const { UpdateTransform(); return mPosition; }
CVector3f Direction() const { UpdateTransform(); return mDirection; } const CVector3f& Direction() const { UpdateTransform(); return mDirection; }
CVector3f UpVector() const { UpdateTransform(); return mUpVector; } const CVector3f& UpVector() const { UpdateTransform(); return mUpVector; }
CVector3f RightVector() const { UpdateTransform(); return mRightVector; } const CVector3f& RightVector() const { UpdateTransform(); return mRightVector; }
float Yaw() const { return mYaw; } float Yaw() const { return mYaw; }
float Pitch() const { return mPitch; } float Pitch() const { return mPitch; }
float FieldOfView() const { return 55.f; } float FieldOfView() const { return 55.f; }

View File

@@ -19,8 +19,8 @@ void CRenderBucket::CSubBucket::Sort(const CCamera* pkCamera, bool DebugVisualiz
{ {
std::stable_sort(mRenderables.begin(), mRenderables.begin() + mSize, std::stable_sort(mRenderables.begin(), mRenderables.begin() + mSize,
[&, pkCamera](const auto& rkLeft, const auto& rkRight) { [&, pkCamera](const auto& rkLeft, const auto& rkRight) {
const CVector3f CamPos = pkCamera->Position(); const CVector3f& CamPos = pkCamera->Position();
const CVector3f CamDir = pkCamera->Direction(); const CVector3f& CamDir = pkCamera->Direction();
const CVector3f DistL = rkLeft.AABox.ClosestPointAlongVector(CamDir) - CamPos; const CVector3f DistL = rkLeft.AABox.ClosestPointAlongVector(CamDir) - CamPos;
const CVector3f DistR = rkRight.AABox.ClosestPointAlongVector(CamDir) - CamPos; const CVector3f DistR = rkRight.AABox.ClosestPointAlongVector(CamDir) - CamPos;

View File

@@ -91,7 +91,7 @@ SRayIntersection CLightNode::RayNodeIntersectTest(const CRay& rkRay, uint32 Asse
const CVector3f PlaneForward = -rkViewInfo.pCamera->Direction(); const CVector3f PlaneForward = -rkViewInfo.pCamera->Direction();
const CVector3f PlaneRight = -rkViewInfo.pCamera->RightVector(); 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 CQuaternion PlaneRot = CQuaternion::FromAxes(PlaneRight, PlaneForward, PlaneUp);
const CVector3f RotatedHitPoint = PlaneRot.Inverse() * RelHitPoint; const CVector3f RotatedHitPoint = PlaneRot.Inverse() * RelHitPoint;

View File

@@ -392,7 +392,7 @@ SRayIntersection CScriptNode::RayNodeIntersectTest(const CRay& rkRay, uint32 Ass
const CVector3f PlaneForward = -rkViewInfo.pCamera->Direction(); const CVector3f PlaneForward = -rkViewInfo.pCamera->Direction();
const CVector3f PlaneRight = -rkViewInfo.pCamera->RightVector(); 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 CQuaternion PlaneRot = CQuaternion::FromAxes(PlaneRight, PlaneForward, PlaneUp);
const CVector3f RotatedHitPoint = PlaneRot.Inverse() * RelHitPoint; const CVector3f RotatedHitPoint = PlaneRot.Inverse() * RelHitPoint;