From f3fdb2302efb8b1ebb4d30f1781a68b123e03fcc Mon Sep 17 00:00:00 2001 From: Lioncache Date: Sun, 14 Dec 2025 02:31:37 -0500 Subject: [PATCH] CSceneNode: Return getters by const reference where applicable Avoids a few unnecessary copies. --- externals/LibCommon | 2 +- src/Core/Scene/CCollisionNode.cpp | 12 ++++--- src/Core/Scene/CSceneNode.cpp | 10 +++--- src/Core/Scene/CSceneNode.h | 46 ++++++++++++------------- src/Editor/CSceneViewport.cpp | 2 +- src/Editor/CSceneViewport.h | 2 +- src/Editor/WorldEditor/CWorldEditor.cpp | 8 ++--- src/Editor/WorldEditor/WCreateTab.cpp | 8 ++--- 8 files changed, 47 insertions(+), 43 deletions(-) diff --git a/externals/LibCommon b/externals/LibCommon index 4ff3ada3..85c8fc72 160000 --- a/externals/LibCommon +++ b/externals/LibCommon @@ -1 +1 @@ -Subproject commit 4ff3ada3457ec8d62f997d042a6008edabe5e212 +Subproject commit 85c8fc7223df7c93503635a55e47b232695dd748 diff --git a/src/Core/Scene/CCollisionNode.cpp b/src/Core/Scene/CCollisionNode.cpp index e81ae84d..d91f92a1 100644 --- a/src/Core/Scene/CCollisionNode.cpp +++ b/src/Core/Scene/CCollisionNode.cpp @@ -18,9 +18,12 @@ ENodeType CCollisionNode::NodeType() const void CCollisionNode::AddToRenderer(CRenderer *pRenderer, const SViewInfo& rkViewInfo) { - if (!mpCollision) return; - if (!rkViewInfo.ViewFrustum.BoxInFrustum(AABox())) return; - if (rkViewInfo.GameMode) return; + if (!mpCollision) + return; + if (!rkViewInfo.ViewFrustum.BoxInFrustum(AABox())) + return; + if (rkViewInfo.GameMode) + return; pRenderer->AddMesh(this, -1, AABox(), false, ERenderCommand::DrawMesh); @@ -30,7 +33,8 @@ void CCollisionNode::AddToRenderer(CRenderer *pRenderer, const SViewInfo& rkView void CCollisionNode::Draw(FRenderOptions /*Options*/, int /*ComponentIndex*/, ERenderCommand /*Command*/, const SViewInfo& rkViewInfo) { - if (!mpCollision) return; + if (!mpCollision) + return; LoadModelMatrix(); diff --git a/src/Core/Scene/CSceneNode.cpp b/src/Core/Scene/CSceneNode.cpp index d0320f4d..6bbf6153 100644 --- a/src/Core/Scene/CSceneNode.cpp +++ b/src/Core/Scene/CSceneNode.cpp @@ -9,10 +9,10 @@ #include -uint32 CSceneNode::smNumNodes = 0; +uint32_t CSceneNode::smNumNodes = 0; CColor CSceneNode::skSelectionTint = CColor::Integral(39, 154, 167); -CSceneNode::CSceneNode(CScene *pScene, uint32 NodeID, CSceneNode *pParent) +CSceneNode::CSceneNode(CScene *pScene, uint32_t NodeID, CSceneNode *pParent) : _mID(NodeID) , mpParent(pParent) , mpScene(pScene) @@ -168,7 +168,7 @@ void CSceneNode::BuildLightList(CGameArea *pArea) std::sort(LightEntries.begin(), LightEntries.end()); mLightCount = (LightEntries.size() > 8) ? 8 : LightEntries.size(); - for (uint32 iLight = 0; iLight < mLightCount; iLight++) + for (uint32_t iLight = 0; iLight < mLightCount; iLight++) mLights[iLight] = LightEntries[iLight].pLight; } @@ -194,7 +194,7 @@ void CSceneNode::LoadLights(const SViewInfo& rkViewInfo) // World lighting: world ambient color, node dynamic lights CGraphics::sVertexBlock.COLOR0_Amb = mAmbientColor; - for (uint32 iLight = 0; iLight < mLightCount; iLight++) + for (uint32_t iLight = 0; iLight < mLightCount; iLight++) mLights[iLight]->Load(); break; } @@ -384,7 +384,7 @@ CVector3f CSceneNode::AbsoluteScale() const return ret; } -CAABox CSceneNode::AABox() const +const CAABox& CSceneNode::AABox() const { if (_mTransformDirty) ForceRecalculateTransform(); diff --git a/src/Core/Scene/CSceneNode.h b/src/Core/Scene/CSceneNode.h index 232d5034..3298c0da 100644 --- a/src/Core/Scene/CSceneNode.h +++ b/src/Core/Scene/CSceneNode.h @@ -78,10 +78,10 @@ private: bool _mInheritsRotation = true; bool _mInheritsScale = true; - uint32 _mID; + uint32_t _mID; protected: - static uint32 smNumNodes; + static uint32_t smNumNodes; TString mName; CSceneNode *mpParent; CScene *mpScene; @@ -96,13 +96,13 @@ protected: bool mVisible = true; std::list mChildren; - uint32 mLightLayerIndex = 0; - uint32 mLightCount = 0; + uint32_t mLightLayerIndex = 0; + uint32_t mLightCount = 0; std::array mLights{}; CColor mAmbientColor; public: - explicit CSceneNode(CScene *pScene, uint32 NodeID, CSceneNode *pParent = nullptr); + explicit CSceneNode(CScene *pScene, uint32_t NodeID, CSceneNode *pParent = nullptr); ~CSceneNode() override; virtual ENodeType NodeType() const = 0; virtual void PostLoad() {} @@ -110,7 +110,7 @@ public: void AddToRenderer(CRenderer* /*pRenderer*/, const SViewInfo& /*rkViewInfo*/) override {} void DrawSelection() override; virtual void RayAABoxIntersectTest(CRayCollisionTester& rTester, const SViewInfo& rkViewInfo); - virtual SRayIntersection RayNodeIntersectTest(const CRay& rkRay, uint32 AssetID, const SViewInfo& rkViewInfo) = 0; + virtual SRayIntersection RayNodeIntersectTest(const CRay& rkRay, uint32_t AssetID, const SViewInfo& rkViewInfo) = 0; virtual bool AllowsTranslate() const { return true; } virtual bool AllowsRotate() const { return true; } virtual bool AllowsScale() const { return true; } @@ -149,24 +149,24 @@ public: CVector3f AbsolutePosition() const; CQuaternion AbsoluteRotation() const; CVector3f AbsoluteScale() const; - CAABox AABox() const; + const CAABox& AABox() const; // Inline Accessors - TString Name() const { return mName; } - CSceneNode* Parent() const { return mpParent; } - CScene* Scene() const { return mpScene; } - uint32 ID() const { return _mID; } - CVector3f LocalPosition() const { return mPosition; } - CQuaternion LocalRotation() const { return mRotation; } - CVector3f LocalScale() const { return mScale; } - CVector3f CenterPoint() const { return AABox().Center(); } - uint32 LightLayerIndex() const { return mLightLayerIndex; } - bool MarkedVisible() const { return mVisible; } - bool IsMouseHovering() const { return mMouseHovering; } - bool IsSelected() const { return mSelected; } - bool InheritsPosition() const { return _mInheritsPosition; } - bool InheritsRotation() const { return _mInheritsRotation; } - bool InheritsScale() const { return _mInheritsScale; } + const TString& Name() const { return mName; } + CSceneNode* Parent() const { return mpParent; } + CScene* Scene() const { return mpScene; } + uint32_t ID() const { return _mID; } + const CVector3f& LocalPosition() const { return mPosition; } + const CQuaternion& LocalRotation() const { return mRotation; } + const CVector3f& LocalScale() const { return mScale; } + CVector3f CenterPoint() const { return AABox().Center(); } + uint32_t LightLayerIndex() const { return mLightLayerIndex; } + bool MarkedVisible() const { return mVisible; } + bool IsMouseHovering() const { return mMouseHovering; } + bool IsSelected() const { return mSelected; } + bool InheritsPosition() const { return _mInheritsPosition; } + bool InheritsRotation() const { return _mInheritsRotation; } + bool InheritsScale() const { return _mInheritsScale; } // Setters void SetName(TString rkName) { mName = std::move(rkName); } @@ -174,7 +174,7 @@ public: void SetRotation(const CQuaternion& rkRotation) { mRotation = rkRotation; MarkTransformChanged(); } void SetRotation(const CVector3f& rkRotEuler) { mRotation = CQuaternion::FromEuler(rkRotEuler); MarkTransformChanged(); } void SetScale(const CVector3f& rkScale) { mScale = rkScale; MarkTransformChanged(); } - void SetLightLayerIndex(uint32 Index) { mLightLayerIndex = Index; } + void SetLightLayerIndex(uint32_t Index) { mLightLayerIndex = Index; } void SetMouseHovering(bool Hovering) { mMouseHovering = Hovering; } void SetSelected(bool Selected) { mSelected = Selected; } void SetVisible(bool Visible) { mVisible = Visible; } diff --git a/src/Editor/CSceneViewport.cpp b/src/Editor/CSceneViewport.cpp index 653a338c..a1d0c84a 100644 --- a/src/Editor/CSceneViewport.cpp +++ b/src/Editor/CSceneViewport.cpp @@ -69,7 +69,7 @@ CSceneNode* CSceneViewport::HoverNode() return mpHoverNode; } -CVector3f CSceneViewport::HoverPoint() const +const CVector3f& CSceneViewport::HoverPoint() const { return mHoverPoint; } diff --git a/src/Editor/CSceneViewport.h b/src/Editor/CSceneViewport.h index ec81836c..9e23bc6e 100644 --- a/src/Editor/CSceneViewport.h +++ b/src/Editor/CSceneViewport.h @@ -61,7 +61,7 @@ public: FShowFlags ShowFlags() const; CRenderer* Renderer(); CSceneNode* HoverNode(); - CVector3f HoverPoint() const; + const CVector3f& HoverPoint() const; void CheckGizmoInput(const CRay& rkRay); SRayIntersection SceneRayCast(const CRay& rkRay); void ResetHover(); diff --git a/src/Editor/WorldEditor/CWorldEditor.cpp b/src/Editor/WorldEditor/CWorldEditor.cpp index def30d3f..57eea740 100644 --- a/src/Editor/WorldEditor/CWorldEditor.cpp +++ b/src/Editor/WorldEditor/CWorldEditor.cpp @@ -911,8 +911,8 @@ void CWorldEditor::UpdateNewLinkLine() // Check if there is a sender+receiver if (mpLinkDialog->isVisible() && mpLinkDialog->Sender() && mpLinkDialog->Receiver() && !mpLinkDialog->IsPicking()) { - CVector3f Start = mScene.NodeForInstance(mpLinkDialog->Sender())->CenterPoint(); - CVector3f End = mScene.NodeForInstance(mpLinkDialog->Receiver())->CenterPoint(); + const CVector3f& Start = mScene.NodeForInstance(mpLinkDialog->Sender())->CenterPoint(); + const CVector3f& End = mScene.NodeForInstance(mpLinkDialog->Receiver())->CenterPoint(); ui->MainViewport->SetLinkLineEnabled(true); ui->MainViewport->SetLinkLine(Start, End); } @@ -958,8 +958,8 @@ void CWorldEditor::UpdateNewLinkLine() const CSceneNode* pHoverNode = ui->MainViewport->HoverNode(); const CScriptObject* pInst = (pSender ? pSender : pReceiver); - CVector3f Start = mScene.NodeForInstance(pInst)->CenterPoint(); - CVector3f End = (pHoverNode && pHoverNode->NodeType() == ENodeType::Script ? pHoverNode->CenterPoint() : ui->MainViewport->HoverPoint()); + const CVector3f& Start = mScene.NodeForInstance(pInst)->CenterPoint(); + const CVector3f& End = (pHoverNode && pHoverNode->NodeType() == ENodeType::Script ? pHoverNode->CenterPoint() : ui->MainViewport->HoverPoint()); ui->MainViewport->SetLinkLineEnabled(true); ui->MainViewport->SetLinkLine(Start, End); } diff --git a/src/Editor/WorldEditor/WCreateTab.cpp b/src/Editor/WorldEditor/WCreateTab.cpp index 9e8d0f9c..0bf386eb 100644 --- a/src/Editor/WorldEditor/WCreateTab.cpp +++ b/src/Editor/WorldEditor/WCreateTab.cpp @@ -41,13 +41,13 @@ bool WCreateTab::eventFilter(QObject *pObj, QEvent *pEvent) else if (pEvent->type() == QEvent::Drop) { - QDropEvent *pDropEvent = static_cast(pEvent); - const CTemplateMimeData *pMimeData = qobject_cast(pDropEvent->mimeData()); + const auto* pDropEvent = static_cast(pEvent); + const auto* pMimeData = qobject_cast(pDropEvent->mimeData()); if (pMimeData) { - CVector3f SpawnPoint = mpEditor->Viewport()->HoverPoint(); - CCreateInstanceCommand *pCmd = new CCreateInstanceCommand(mpEditor, pMimeData->Template(), mpSpawnLayer, SpawnPoint); + const CVector3f& SpawnPoint = mpEditor->Viewport()->HoverPoint(); + auto* pCmd = new CCreateInstanceCommand(mpEditor, pMimeData->Template(), mpSpawnLayer, SpawnPoint); mpEditor->UndoStack().push(pCmd); return true; }