41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
![]() |
using System.Collections;
|
||
|
using System.Collections.Generic;
|
||
|
using UnityEngine;
|
||
|
using DigitalOpus.MB.Core;
|
||
|
|
||
|
|
||
|
|
||
|
/// <summary>
|
||
|
/// This script is used to fix a bug where lightmapping on combined meshes
|
||
|
/// is not preserved after reloading a scene or entering gamemode. This problem
|
||
|
/// was caused by the lightmap index and scale offset data being lost. This script
|
||
|
/// sets the lightmap index and scale offset back to where it should be so that lightmapping
|
||
|
/// is actually preserved.
|
||
|
/// </summary>
|
||
|
|
||
|
[ExecuteInEditMode]
|
||
|
public class MB_PreserveLightmapData : MonoBehaviour
|
||
|
{
|
||
|
public int lightmapIndex;
|
||
|
public Vector4 lightmapScaleOffset;
|
||
|
void Awake()
|
||
|
{
|
||
|
MeshRenderer curRend = GetComponent<MeshRenderer>();
|
||
|
if (curRend == null)
|
||
|
{
|
||
|
Debug.LogError("The MB_PreserveLightmapData script must be on a GameObject with a MeshRenderer. There was no MeshRenderer on object: " + name);
|
||
|
return;
|
||
|
}
|
||
|
if (curRend.lightmapIndex != -1)
|
||
|
{
|
||
|
lightmapIndex = curRend.lightmapIndex;
|
||
|
}
|
||
|
if (curRend.lightmapIndex == -1)
|
||
|
{
|
||
|
curRend.lightmapIndex = lightmapIndex;
|
||
|
}
|
||
|
lightmapScaleOffset = new Vector4(1, 1, 0, 0);
|
||
|
curRend.lightmapScaleOffset = lightmapScaleOffset;
|
||
|
}
|
||
|
}
|