Car/Assets/VolumetricLightBeam/Scripts/BeamGeometryAbstractBase.cs

57 lines
1.4 KiB
C#

using UnityEngine;
namespace VLB
{
public abstract class BeamGeometryAbstractBase : MonoBehaviour
{
public MeshRenderer meshRenderer { get; protected set; }
public MeshFilter meshFilter { get; protected set; }
public Mesh coneMesh { get; protected set; }
protected Matrix4x4 m_ColorGradientMatrix;
protected Material m_CustomMaterial = null;
protected abstract VolumetricLightBeamAbstractBase GetMaster();
void Start()
{
DestroyInvalidOwner(); // Handle copy / paste the LightBeam in Editor
}
void OnDestroy()
{
if (m_CustomMaterial)
{
DestroyImmediate(m_CustomMaterial);
m_CustomMaterial = null;
}
}
void DestroyInvalidOwner()
{
if (!GetMaster())
DestroyBeamGeometryGameObject(this);
}
public static void DestroyBeamGeometryGameObject(BeamGeometryAbstractBase beamGeom)
{
if (beamGeom)
DestroyImmediate(beamGeom.gameObject);
}
#if UNITY_EDITOR
void Update()
{
if (!Application.isPlaying)
{
DestroyInvalidOwner();
}
}
public bool _EDITOR_IsUsingCustomMaterial { get { return m_CustomMaterial != null; } }
#endif
}
}