CScene: Pass by const in getters

These are overly restrictive, since the parameters are only ever
queried.
This commit is contained in:
Lioncache
2025-12-09 14:56:44 -05:00
parent cddb342632
commit c662ef6266
8 changed files with 62 additions and 56 deletions

View File

@@ -324,12 +324,12 @@ CScriptNode* CScene::NodeForInstanceID(uint32 InstanceID)
return nullptr;
}
CScriptNode* CScene::NodeForInstance(CScriptObject *pObj)
CScriptNode* CScene::NodeForInstance(const CScriptObject *pObj)
{
return (pObj ? NodeForInstanceID(pObj->InstanceID()) : nullptr);
}
CLightNode* CScene::NodeForLight(CLight *pLight)
CLightNode* CScene::NodeForLight(const CLight *pLight)
{
// Slow. Is there a better way to do this?
std::vector<CSceneNode*>& rLights = mNodes[ENodeType::Light];

View File

@@ -64,8 +64,8 @@ public:
SRayIntersection SceneRayCast(const CRay& rkRay, const SViewInfo& rkViewInfo);
CSceneNode* NodeByID(uint32 NodeID);
CScriptNode* NodeForInstanceID(uint32 InstanceID);
CScriptNode* NodeForInstance(CScriptObject *pObj);
CLightNode* NodeForLight(CLight *pLight);
CScriptNode* NodeForInstance(const CScriptObject *pObj);
CLightNode* NodeForLight(const CLight *pLight);
CModel* ActiveSkybox();
CGameArea* ActiveArea();

View File

@@ -76,7 +76,7 @@ CDeleteSelectionCommand::CDeleteSelectionCommand(CWorldEditor *pEditor, const QS
// Remove selected objects from the linked instances list.
LinkedInstances.removeAll(nullptr);
for (CScriptObject *pInst : LinkedInstances)
for (const CScriptObject* pInst : LinkedInstances)
{
if (mpEditor->Scene()->NodeForInstance(pInst)->IsSelected())
LinkedInstances.removeOne(pInst);

View File

@@ -314,8 +314,8 @@ QVariant CInstancesModel::data(const QModelIndex& rkIndex, int Role) const
// Show/Hide Instance
else if (Type == EIndexType::Instance)
{
CScriptObject *pObj = IndexObject(rkIndex);
const CScriptNode *pNode = mpScene->NodeForInstance(pObj);
const CScriptObject* pObj = IndexObject(rkIndex);
const CScriptNode* pNode = mpScene->NodeForInstance(pObj);
if (pNode->MarkedVisible())
return Visible;
return Invisible;

View File

@@ -30,7 +30,7 @@ public:
: QAbstractListModel(pParent)
, mpPoiTemplate(pPoiTemplate)
{
for (auto* obj : mpPoiTemplate->ObjectList())
for (const auto* obj : mpPoiTemplate->ObjectList())
{
auto* pNode = pScene->NodeForInstance(obj);

View File

@@ -30,8 +30,8 @@ QVariant CPoiMapModel::data(const QModelIndex& rkIndex, int Role) const
{
if (rkIndex.row() < rowCount(QModelIndex()))
{
const CPoiToWorld::SPoiMap *pkMap = mpPoiToWorld->MapByIndex(static_cast<size_t>(rkIndex.row()));
CScriptObject *pPOI = mpArea->InstanceByID(pkMap->PoiID);
const CPoiToWorld::SPoiMap* pkMap = mpPoiToWorld->MapByIndex(static_cast<size_t>(rkIndex.row()));
const CScriptObject* pPOI = mpArea->InstanceByID(pkMap->PoiID);
if (Role == Qt::DisplayRole)
{
@@ -48,9 +48,7 @@ QVariant CPoiMapModel::data(const QModelIndex& rkIndex, int Role) const
if (const CScriptNode* pNode = mpEditor->Scene()->NodeForInstance(pPOI))
{
// Get scan
const CScan *pScan = static_cast<CPointOfInterestExtra*>(pNode->Extra())->GetScan();
if (pScan)
if (const CScan* pScan = static_cast<CPointOfInterestExtra*>(pNode->Extra())->GetScan())
IsImportant = pScan->IsCriticalPropertyRef();
}

View File

@@ -252,7 +252,8 @@ bool CWorldEditor::CloseWorld()
emit MapChanged(mpWorld, mpArea);
return true;
}
else return false;
return false;
}
bool CWorldEditor::SetArea(CWorld *pWorld, int AreaIndex)
@@ -414,8 +415,9 @@ void CWorldEditor::Paste()
CVector3f PastePoint;
if (ui->MainViewport->underMouse() && !ui->MainViewport->IsMouseInputActive())
{
PastePoint = ui->MainViewport->HoverPoint();
}
else
{
CRay Ray = ui->MainViewport->Camera().CastRay(CVector2f(0.f, 0.f));
@@ -560,7 +562,7 @@ void CWorldEditor::OnActiveProjectChanged(CGameProject *pProj)
void CWorldEditor::OnLinksModified(const QList<CScriptObject*>& rkInstances)
{
for (CScriptObject *pInstance : rkInstances)
for (const CScriptObject* pInstance : rkInstances)
{
CScriptNode *pNode = mScene.NodeForInstance(pInstance);
pNode->LinksModified();
@@ -610,7 +612,9 @@ void CWorldEditor::OnPropertyModified(IProperty *pProp)
ShouldUpdateSelection = true;
}
else if (pProp->Type() == EPropertyType::AnimationSet)
{
ShouldUpdateSelection = true;
}
}
if (ShouldUpdateSelection)
@@ -758,9 +762,10 @@ void CWorldEditor::UpdateOpenRecentActions()
pAction->setText(ActionText);
pAction->setVisible(true);
}
else
{
pAction->setVisible(false);
}
}
}
@@ -840,10 +845,14 @@ void CWorldEditor::UpdateGizmoUI()
SpinBoxValue = mpSelection->Front()->AbsoluteScale();
break;
default: break;
default:
break;
}
}
else if (!mpSelection->IsEmpty()) SpinBoxValue = mpSelection->Front()->AbsolutePosition();
else if (!mpSelection->IsEmpty())
{
SpinBoxValue = mpSelection->Front()->AbsolutePosition();
}
ui->TransformSpinBox->blockSignals(true);
ui->TransformSpinBox->SetValue(SpinBoxValue);
@@ -907,9 +916,7 @@ void CWorldEditor::UpdateNewLinkLine()
ui->MainViewport->SetLinkLineEnabled(true);
ui->MainViewport->SetLinkLine(Start, End);
}
// Otherwise check whether there's just a sender or just a receiver
else
else // Otherwise check whether there's just a sender or just a receiver
{
CScriptObject *pSender = nullptr;
CScriptObject *pReceiver = nullptr;
@@ -922,21 +929,25 @@ void CWorldEditor::UpdateNewLinkLine()
pReceiver = mpLinkDialog->Receiver();
}
else if (mIsMakingLink && mpNewLinkSender)
{
pSender = mpNewLinkSender;
}
else if (mpScriptSidebar->ModifyTab()->IsPicking() && mpScriptSidebar->ModifyTab()->EditNode()->NodeType() == ENodeType::Script)
{
pSender = static_cast<CScriptNode*>(mpScriptSidebar->ModifyTab()->EditNode())->Instance();
}
// No sender and no receiver = no line
if (!pSender && !pReceiver)
{
ui->MainViewport->SetLinkLineEnabled(false);
}
// Yes sender and yes receiver = yes line
else if (pSender && pReceiver)
{
ui->MainViewport->SetLinkLineEnabled(true);
ui->MainViewport->SetLinkLine( mScene.NodeForInstance(pSender)->CenterPoint(), mScene.NodeForInstance(pReceiver)->CenterPoint() );
}
// Compensate for missing sender or missing receiver
else
{
@@ -944,17 +955,18 @@ void CWorldEditor::UpdateNewLinkLine()
if (ui->MainViewport->underMouse() && !ui->MainViewport->IsMouseInputActive() && IsPicking)
{
CSceneNode *pHoverNode = ui->MainViewport->HoverNode();
CScriptObject *pInst = (pSender ? pSender : pReceiver);
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());
ui->MainViewport->SetLinkLineEnabled(true);
ui->MainViewport->SetLinkLine(Start, End);
}
else
{
ui->MainViewport->SetLinkLineEnabled(false);
}
}
}
}
@@ -1062,7 +1074,6 @@ void CWorldEditor::OnLinkButtonToggled(bool Enabled)
mpNewLinkSender = nullptr;
mpNewLinkReceiver = nullptr;
}
else
{
if (mIsMakingLink)
@@ -1076,7 +1087,6 @@ void CWorldEditor::OnLinkClick(const SRayIntersection& rkIntersect)
{
mpNewLinkSender = static_cast<CScriptNode*>(rkIntersect.pNode)->Instance();
}
else
{
mpNewLinkReceiver = static_cast<CScriptNode*>(rkIntersect.pNode)->Instance();
@@ -1186,28 +1196,30 @@ void CWorldEditor::OnTransformSpinBoxModified(const CVector3f& Value)
switch (mGizmo.Mode())
{
// Use absolute position/rotation, but relative scale. (This way spinbox doesn't show preview multiplier)
case CGizmo::EGizmoMode::Translate:
{
CVector3f Delta = Value - mpSelection->Front()->AbsolutePosition();
UndoStack().push(new CTranslateNodeCommand(this, mpSelection->SelectedNodeList(), Delta, mTranslateSpace));
break;
}
// Use absolute position/rotation, but relative scale. (This way spinbox doesn't show preview multiplier)
case CGizmo::EGizmoMode::Translate:
{
CVector3f Delta = Value - mpSelection->Front()->AbsolutePosition();
UndoStack().push(new CTranslateNodeCommand(this, mpSelection->SelectedNodeList(), Delta, mTranslateSpace));
break;
}
case CGizmo::EGizmoMode::Rotate:
{
CQuaternion Delta = CQuaternion::FromEuler(Value) * mpSelection->Front()->AbsoluteRotation().Inverse();
UndoStack().push(new CRotateNodeCommand(this, mpSelection->SelectedNodeList(), true, mGizmo.Position(), mGizmo.Rotation(), Delta, mRotateSpace));
break;
}
case CGizmo::EGizmoMode::Rotate:
{
CQuaternion Delta = CQuaternion::FromEuler(Value) * mpSelection->Front()->AbsoluteRotation().Inverse();
UndoStack().push(new CRotateNodeCommand(this, mpSelection->SelectedNodeList(), true, mGizmo.Position(), mGizmo.Rotation(), Delta, mRotateSpace));
break;
}
case CGizmo::EGizmoMode::Scale:
{
CVector3f Delta = Value / mpSelection->Front()->AbsoluteScale();
UndoStack().push(new CScaleNodeCommand(this, mpSelection->SelectedNodeList(), true, mGizmo.Position(), Delta));
break;
}
default: break;
case CGizmo::EGizmoMode::Scale:
{
CVector3f Delta = Value / mpSelection->Front()->AbsoluteScale();
UndoStack().push(new CScaleNodeCommand(this, mpSelection->SelectedNodeList(), true, mGizmo.Position(), Delta));
break;
}
default:
break;
}
UpdateGizmoUI();

View File

@@ -92,13 +92,9 @@ void WInstancesTab::OnTreeClick(QModelIndex Index)
// Show/Hide Instance
if (mpTypesModel->IndexType(SourceIndex) == CInstancesModel::EIndexType::Instance)
{
CScriptObject *pObj = mpTypesModel->IndexObject(SourceIndex);
if (pObj)
if (const CScriptObject* pObj = mpTypesModel->IndexObject(SourceIndex))
{
CScriptNode *pNode = mpScene->NodeForInstance(pObj);
if (pNode)
if (CScriptNode* pNode = mpScene->NodeForInstance(pObj))
pNode->SetVisible(!pNode->IsVisible());
}
@@ -151,7 +147,7 @@ void WInstancesTab::OnTreeContextMenu(QPoint Pos)
// Determine type
mMenuIndexType = (IsLayers ? mpLayersModel->IndexType(mMenuIndex) : mpTypesModel->IndexType(mMenuIndex));
CScriptObject *pObject = nullptr;
const CScriptObject *pObject = nullptr;
mpMenuObject = nullptr;
mpMenuLayer = nullptr;
mpMenuTemplate = nullptr;