Formalize render object id contract
This commit is contained in:
@@ -15,6 +15,16 @@
|
||||
namespace XCEngine {
|
||||
namespace Rendering {
|
||||
|
||||
namespace {
|
||||
|
||||
RenderObjectId BuildRenderObjectIdOrInvalid(const Components::GameObject& gameObject) {
|
||||
RenderObjectId renderObjectId = kInvalidRenderObjectId;
|
||||
TryConvertRuntimeObjectIdToRenderObjectId(gameObject.GetID(), renderObjectId);
|
||||
return renderObjectId;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
RenderCameraData BuildRenderCameraData(
|
||||
const Components::CameraComponent& camera,
|
||||
uint32_t viewportWidth,
|
||||
@@ -89,6 +99,7 @@ void AppendRenderItemsForGameObject(
|
||||
const Math::Matrix4x4 localToWorld = gameObject.GetTransform()->GetLocalToWorldMatrix();
|
||||
const Math::Vector3 worldPosition = localToWorld.GetTranslation();
|
||||
const float cameraDistanceSq = (worldPosition - cameraPosition).SqrMagnitude();
|
||||
const RenderObjectId renderObjectId = BuildRenderObjectIdOrInvalid(gameObject);
|
||||
const Containers::Array<Resources::MeshSection>& sections = mesh->GetSections();
|
||||
|
||||
if (!sections.Empty()) {
|
||||
@@ -101,6 +112,7 @@ void AppendRenderItemsForGameObject(
|
||||
visibleItem.meshRenderer = meshRenderer;
|
||||
visibleItem.mesh = mesh;
|
||||
visibleItem.materialIndex = section.materialID;
|
||||
visibleItem.renderObjectId = renderObjectId;
|
||||
visibleItem.sectionIndex = static_cast<Core::uint32>(sectionIndex);
|
||||
visibleItem.hasSection = true;
|
||||
visibleItem.material = ResolveMaterial(meshRenderer, mesh, section.materialID);
|
||||
@@ -117,6 +129,7 @@ void AppendRenderItemsForGameObject(
|
||||
visibleItem.meshFilter = meshFilter;
|
||||
visibleItem.meshRenderer = meshRenderer;
|
||||
visibleItem.mesh = mesh;
|
||||
visibleItem.renderObjectId = renderObjectId;
|
||||
visibleItem.materialIndex = 0;
|
||||
visibleItem.sectionIndex = 0;
|
||||
visibleItem.hasSection = false;
|
||||
|
||||
Reference in New Issue
Block a user