#if UNITY_EDITOR
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Linq;
|
|
using System.Collections;
|
|
|
|
/**
|
|
* Despite the MonoBehaviour inheritance, this is an Editor-only script.
|
|
*/
|
|
[ExecuteInEditMode]
|
|
public class pg_SceneMeshRender : MonoBehaviour
|
|
{
|
|
// HideFlags.DontSaveInEditor isn't exposed for whatever reason, so do the bit math on ints
|
|
// and just cast to HideFlags.
|
|
// HideFlags.HideInHierarchy | HideFlags.DontSaveInEditor | HideFlags.NotEditable
|
|
HideFlags SceneCameraHideFlags = (HideFlags) (1 | 4 | 8);
|
|
|
|
public Mesh mesh;
|
|
public Material material;
|
|
|
|
void OnDestroy()
|
|
{
|
|
if(mesh) DestroyImmediate(mesh);
|
|
if(material) DestroyImmediate(material);
|
|
}
|
|
|
|
void OnRenderObject()
|
|
{
|
|
// instead of relying on 'SceneCamera' string comparison, check if the hideflags match.
|
|
// this could probably even just check for one bit match, since chances are that any
|
|
// game view camera isn't going to have hideflags set.
|
|
if( (Camera.current.gameObject.hideFlags & SceneCameraHideFlags) != SceneCameraHideFlags || Camera.current.name != "SceneCamera" )
|
|
return;
|
|
|
|
if(material == null || mesh == null)
|
|
{
|
|
|
|
GameObject.DestroyImmediate(this.gameObject);
|
|
// Debug.Log("NULL MESH || MATERIAL");
|
|
return;
|
|
}
|
|
|
|
material.SetPass(0);
|
|
Graphics.DrawMeshNow(mesh, Vector3.zero, Quaternion.identity, 0);
|
|
}
|
|
}
|
|
#endif
|