75 lines
2.7 KiB
C#
75 lines
2.7 KiB
C#
|
#if UNITY_EDITOR
|
|||
|
using UnityEditor;
|
|||
|
|
|||
|
namespace VLB
|
|||
|
{
|
|||
|
public abstract class Editor_EffectAbstractBase<T> : Editor_CommonSD where T : EffectAbstractBase
|
|||
|
{
|
|||
|
SerializedProperty componentsToChange = null;
|
|||
|
SerializedProperty restoreIntensityOnDisable = null;
|
|||
|
|
|||
|
protected TargetList<T> m_Targets;
|
|||
|
|
|||
|
protected override void OnEnable()
|
|||
|
{
|
|||
|
base.OnEnable();
|
|||
|
m_Targets = new TargetList<T>(targets);
|
|||
|
}
|
|||
|
|
|||
|
protected abstract void DisplayChildProperties();
|
|||
|
|
|||
|
public sealed override void OnInspectorGUI()
|
|||
|
{
|
|||
|
base.OnInspectorGUI();
|
|||
|
|
|||
|
if (m_Targets.HasAtLeastOneTargetWith((T comp) => { return comp.GetComponent<UnityEngine.Light>() == null && comp.GetComponent<VolumetricLightBeamAbstractBase>() == null; }))
|
|||
|
{
|
|||
|
EditorGUILayout.HelpBox(EditorStrings.Effects.HelpNoValidComponents, MessageType.Error);
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
if (m_Targets.HasAtLeastOneTargetWith((T comp) =>
|
|||
|
{
|
|||
|
if (comp.componentsToChange.HasFlag(EffectAbstractBase.ComponentsToChange.UnityLight))
|
|||
|
{
|
|||
|
var light = comp.GetComponent<UnityEngine.Light>();
|
|||
|
#if UNITY_5_6_OR_NEWER
|
|||
|
return (light && light.lightmapBakeType == UnityEngine.LightmapBakeType.Baked);
|
|||
|
#else
|
|||
|
return (light && light.lightmappingMode == UnityEngine.LightmappingMode.Baked);
|
|||
|
#endif
|
|||
|
}
|
|||
|
return false;
|
|||
|
}))
|
|||
|
{
|
|||
|
EditorGUILayout.HelpBox(EditorStrings.Effects.HelpLightNotChangeable, MessageType.Warning);
|
|||
|
}
|
|||
|
|
|||
|
if (m_Targets.HasAtLeastOneTargetWith((T comp) =>
|
|||
|
{
|
|||
|
if (comp.componentsToChange.HasFlag(EffectAbstractBase.ComponentsToChange.VolumetricLightBeam))
|
|||
|
{
|
|||
|
var beam = comp.GetComponent<VolumetricLightBeamSD>();
|
|||
|
return (beam && !beam.trackChangesDuringPlaytime);
|
|||
|
}
|
|||
|
return false;
|
|||
|
}))
|
|||
|
{
|
|||
|
EditorGUILayout.HelpBox(EditorStrings.Effects.HelpBeamNotChangeable, MessageType.Warning);
|
|||
|
}
|
|||
|
|
|||
|
DisplayChildProperties();
|
|||
|
|
|||
|
if (FoldableHeader.Begin(this, EditorStrings.Effects.HeaderMisc))
|
|||
|
{
|
|||
|
componentsToChange.CustomMask<EffectAbstractBase.ComponentsToChange>(EditorStrings.Effects.ComponentsToChange);
|
|||
|
EditorGUILayout.PropertyField(restoreIntensityOnDisable, EditorStrings.Effects.RestoreIntensityOnDisable);
|
|||
|
}
|
|||
|
FoldableHeader.End();
|
|||
|
|
|||
|
serializedObject.ApplyModifiedProperties();
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
#endif
|