Start of inheriting Materials, create material instance for getMaterial from scripts

This commit is contained in:
Simon Lübeß
2025-02-14 12:39:35 +01:00
parent aaed4199d3
commit 24295731f3
6 changed files with 66 additions and 17 deletions
+22
View File
@@ -1054,6 +1054,17 @@ static class ScriptGlue
static void SpriteRenderer_GetMaterial(UUID entityId, out AssetHandle assetId)
{
SpriteRendererComponent* spriteRenderer = GetComponentSafe<SpriteRendererComponent>(entityId);
Material material = GetAssetOrThrow!<Material>((AssetHandle)spriteRenderer.Material);
if (!material.IsRuntimeInstance)
{
material = new Material(material, true);
material.Identifier = scope $"(Instance) {material.Identifier}";
Content.ManageAsset(material);
spriteRenderer.Material = material.Handle;
}
assetId = spriteRenderer.Material;
}
@@ -1162,6 +1173,17 @@ static class ScriptGlue
static void MeshRenderer_GetMaterial(UUID entityId, out AssetHandle assetId)
{
MeshRendererComponent* meshRenderer = GetComponentSafe<MeshRendererComponent>(entityId);
Material material = GetAssetOrThrow!<Material>((AssetHandle)meshRenderer.Material);
if (!material.IsRuntimeInstance)
{
material = new Material(material, true);
material.Identifier = scope $"(Instance) {material.Identifier}";
Content.ManageAsset(material);
meshRenderer.Material = material.Handle;
}
assetId = meshRenderer.Material;
}