Use IRenderer in LightingDataProcessor

This commit is contained in:
Jeremy Pritts 2023-05-23 09:03:10 -04:00
parent b72259cb98
commit 0a666bbdda
2 changed files with 24 additions and 9 deletions

View File

@ -10,7 +10,7 @@ using AssetRipper.SourceGenerated.Classes.ClassID_108;
using AssetRipper.SourceGenerated.Classes.ClassID_1120; using AssetRipper.SourceGenerated.Classes.ClassID_1120;
using AssetRipper.SourceGenerated.Classes.ClassID_157; using AssetRipper.SourceGenerated.Classes.ClassID_157;
using AssetRipper.SourceGenerated.Classes.ClassID_218; using AssetRipper.SourceGenerated.Classes.ClassID_218;
using AssetRipper.SourceGenerated.Classes.ClassID_23; using AssetRipper.SourceGenerated.Classes.ClassID_25;
using AssetRipper.SourceGenerated.Classes.ClassID_258; using AssetRipper.SourceGenerated.Classes.ClassID_258;
using AssetRipper.SourceGenerated.Extensions; using AssetRipper.SourceGenerated.Extensions;
using AssetRipper.SourceGenerated.Subclasses.LightmapData; using AssetRipper.SourceGenerated.Subclasses.LightmapData;
@ -90,10 +90,10 @@ namespace AssetRipper.Processing
foreach (IUnityObjectBase asset in collection) foreach (IUnityObjectBase asset in collection)
{ {
if (asset is IMeshRenderer meshRenderer) //Need to do all renderer types if (asset is IRenderer renderer) //Need to do all renderer types
{ {
if ((meshRenderer.LightmapIndex_C23_Byte == byte.MaxValue || meshRenderer.LightmapIndex_C23_UInt16 == ushort.MaxValue) ushort lightmapIndex = renderer.GetLightmapIndex();
&& meshRenderer.LightmapIndexDynamic_C23 == ushort.MaxValue) if (lightmapIndex == ushort.MaxValue && renderer.LightmapIndexDynamic_C25 == ushort.MaxValue)
{ {
// No lightmap data associated with renderer // No lightmap data associated with renderer
continue; continue;
@ -105,12 +105,12 @@ namespace AssetRipper.Processing
//The lightmap index, lightmap uv scale/offset value, etc //The lightmap index, lightmap uv scale/offset value, etc
IRendererData rendererData = lightingDataAsset.LightmappedRendererData_C1120.AddNew(); IRendererData rendererData = lightingDataAsset.LightmappedRendererData_C1120.AddNew();
rendererData.LightmapIndex = Math.Max(meshRenderer.LightmapIndex_C23_Byte, meshRenderer.LightmapIndex_C23_UInt16); rendererData.LightmapIndex = lightmapIndex;
rendererData.LightmapIndexDynamic = meshRenderer.LightmapIndexDynamic_C23; rendererData.LightmapIndexDynamic = renderer.LightmapIndexDynamic_C25;
rendererData.LightmapST.CopyValues(meshRenderer.LightmapTilingOffset_C23); rendererData.LightmapST.CopyValues(renderer.LightmapTilingOffset_C25);
if (meshRenderer.Has_LightmapTilingOffsetDynamic_C23()) if (renderer.Has_LightmapTilingOffsetDynamic_C25())
{ {
rendererData.LightmapSTDynamic.CopyValues(meshRenderer.LightmapTilingOffsetDynamic_C23); rendererData.LightmapSTDynamic.CopyValues(renderer.LightmapTilingOffsetDynamic_C25);
} }
} }
else if (asset is ITerrain terrain) else if (asset is ITerrain terrain)

View File

@ -1,6 +1,7 @@
using AssetRipper.SourceGenerated.Classes.ClassID_21; using AssetRipper.SourceGenerated.Classes.ClassID_21;
using AssetRipper.SourceGenerated.Classes.ClassID_25; using AssetRipper.SourceGenerated.Classes.ClassID_25;
using AssetRipper.SourceGenerated.Enums; using AssetRipper.SourceGenerated.Enums;
using System.Diagnostics;
namespace AssetRipper.SourceGenerated.Extensions namespace AssetRipper.SourceGenerated.Extensions
{ {
@ -63,5 +64,19 @@ namespace AssetRipper.SourceGenerated.Extensions
renderer.AutoUVMaxAngle_C25 = 89.0f; renderer.AutoUVMaxAngle_C25 = 89.0f;
renderer.LightmapParameters_C25P = null; renderer.LightmapParameters_C25P = null;
} }
public static ushort GetLightmapIndex(this IRenderer renderer)
{
if (renderer.Has_LightmapIndex_C25_UInt16())
{
return renderer.LightmapIndex_C25_UInt16;
}
else
{
Debug.Assert(renderer.Has_LightmapIndex_C25_Byte());
byte value = renderer.LightmapIndex_C25_Byte;
return value == byte.MaxValue ? ushort.MaxValue : value;
}
}
} }
} }