You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

47 lines
1.3 KiB

#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