feat(rendering): select managed SRP through asset instances

This commit is contained in:
2026-04-18 16:41:53 +08:00
parent 849625e732
commit 30ee70a4d1
7 changed files with 226 additions and 93 deletions

View File

@@ -2,6 +2,7 @@
#include <XCEngine/Rendering/Pipelines/ScriptableRenderPipelineHost.h>
#include <cstdint>
#include <cstddef>
#include <memory>
#include <string>
@@ -19,11 +20,16 @@ struct ManagedRenderPipelineAssetDescriptor {
std::string assemblyName;
std::string namespaceName;
std::string className;
uint32_t managedAssetHandle = 0u;
bool IsValid() const {
return !assemblyName.empty() && !className.empty();
}
bool HasManagedAssetHandle() const {
return managedAssetHandle != 0u;
}
std::string GetFullName() const {
return namespaceName.empty()
? className

View File

@@ -72,6 +72,10 @@ public:
MonoObject* GetManagedInstanceObject(const ScriptComponent* component) const;
MonoObject* CreateManagedComponentWrapper(MonoClass* componentClass, uint64_t gameObjectUUID);
bool DestroyManagedObject(MonoObject* managedObject);
MonoObject* GetExternalManagedObject(uint32_t gcHandle) const;
uint32_t RetainExternalManagedObjectReference(MonoObject* managedObject);
void ReleaseExternalManagedObject(uint32_t gcHandle);
bool IsScriptableRenderPipelineAssetObject(MonoObject* managedObject) const;
bool TryGetFieldValue(
const ScriptComponent* component,