Formalize render object id contract

This commit is contained in:
2026-04-10 01:57:15 +08:00
parent 4debbbea1f
commit b5ba985831
12 changed files with 282 additions and 102 deletions

View File

@@ -31,7 +31,15 @@ bool BuiltinSelectionMaskPass::Render(
const RenderSurface& surface,
const RenderSceneData& sceneData,
const std::vector<uint64_t>& selectedObjectIds) {
m_selectedObjectIds = selectedObjectIds;
m_selectedObjectIds.clear();
m_selectedObjectIds.reserve(selectedObjectIds.size());
for (uint64_t selectedObjectId : selectedObjectIds) {
RenderObjectId renderObjectId = kInvalidRenderObjectId;
if (TryConvertRuntimeObjectIdToRenderObjectId(selectedObjectId, renderObjectId)) {
m_selectedObjectIds.push_back(renderObjectId);
}
}
if (m_selectedObjectIds.empty()) {
return false;
}
@@ -45,18 +53,18 @@ bool BuiltinSelectionMaskPass::Render(
surface,
selectionMaskSceneData,
nullptr,
nullptr
nullptr,
RHI::ResourceStates::Common
};
return Execute(passContext);
}
bool BuiltinSelectionMaskPass::ShouldRenderVisibleItem(const VisibleRenderItem& visibleItem) const {
if (visibleItem.gameObject == nullptr) {
if (!IsValidRenderObjectId(visibleItem.renderObjectId)) {
return false;
}
const uint64_t objectId = visibleItem.gameObject->GetID();
return std::find(m_selectedObjectIds.begin(), m_selectedObjectIds.end(), objectId) !=
return std::find(m_selectedObjectIds.begin(), m_selectedObjectIds.end(), visibleItem.renderObjectId) !=
m_selectedObjectIds.end();
}