57 lines
1.4 KiB
C#
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
|
|
}
|
|
}
|