/// ProFlares - v1.08 - Copyright 2014-2015 All rights reserved - ProFlares.com
///
/// FlareEditorHelper.cs
/// Helper class that contains a number of functions that other Editor Scripts use.
///
using UnityEngine;
using UnityEditor;
using System.Collections;
public class FlareEditorHelper : MonoBehaviour {
const int menuPos = 10000;
//public static bool ProFlaresDebugMessages = false;
[MenuItem ("Window/ProFlares/Create Setup",false,menuPos+0)]
static void CreateSetup () {
GameObject rootGO = new GameObject("ProFlareSetup");
rootGO.layer = 8;
GameObject cameraGO = new GameObject("ProFlareCamera");
cameraGO.layer = 8;
Camera camera = cameraGO.AddComponent();
cameraGO.transform.parent = rootGO.transform;
camera.clearFlags = CameraClearFlags.Depth;
camera.orthographic = true;
camera.orthographicSize = 1;
camera.farClipPlane = 2;
camera.nearClipPlane = -2;
camera.depth++;
camera.cullingMask = 1 << 8;
GameObject batchGO = new GameObject("ProFlareBatch");
batchGO.layer = 8;
batchGO.transform.parent = cameraGO.transform;
ProFlareBatch batch = batchGO.AddComponent();
batch.FlareCamera = camera;
GameObject MainCameraGo = GameObject.FindWithTag("MainCamera");
if(MainCameraGo){
#if UNITY_5
batch.GameCamera = MainCameraGo.GetComponent();
batch.GameCameraTrans = MainCameraGo.transform;
#else
batch.GameCamera = MainCameraGo.GetComponent();
batch.GameCameraTrans = MainCameraGo.transform;
#endif
}
Selection.activeGameObject = batchGO;
}
[MenuItem ("Window/ProFlares/Create Setup On Selected Camera",false,menuPos+0)]
static void CreateSetupOnExisting () {
GameObject cameraGO = null;
Camera camera = null;
if(Selection.activeGameObject){
camera = Selection.activeGameObject.GetComponent();
if(camera == null){
Debug.LogError("ProFlares - No Camera Selected");
return;
}else{
cameraGO = Selection.activeGameObject;
}
}else{
Debug.LogError("ProFlares - Nothing Selected");
return;
}
Vector3 worldScale = cameraGO.transform.localScale;
Transform parent = cameraGO.transform.parent;
while (parent != null)
{
worldScale = Vector3.Scale(worldScale,parent.localScale);
parent = parent.parent;
}
// Debug.LogError(worldScale.x + " " + worldScale.y + " " + worldScale.z);
// Debug.LogError(1f/worldScale.x + " " + 1f/worldScale.y + " " + 1f/worldScale.z);
int layerNumber = cameraGO.layer;
GameObject batchGO = new GameObject("ProFlareBatch");
batchGO.layer = layerNumber;
batchGO.transform.parent = cameraGO.transform;
batchGO.transform.localPosition = Vector3.zero;
batchGO.transform.localScale = new Vector3(1f/worldScale.x,1f/worldScale.y,1f/worldScale.z);
ProFlareBatch batch = batchGO.AddComponent();
batch.FlareCamera = camera;
batch.FlareCameraTrans = camera.transform;
GameObject MainCameraGo = GameObject.FindWithTag("MainCamera");
if(MainCameraGo){
#if UNITY_5
batch.GameCamera = MainCameraGo.GetComponent();
batch.GameCameraTrans = MainCameraGo.transform;
#else
batch.GameCamera = MainCameraGo.GetComponent();
batch.GameCameraTrans = MainCameraGo.transform;
#endif
}
Selection.activeGameObject = batchGO;
}
[MenuItem ("Window/ProFlares/Create Single Camera Setup On Selected Main Camera",false,menuPos+1)]
static void CreateSetupOnExistingGameCamera () {
GameObject cameraGO = null;
Camera camera = null;
if(Selection.activeGameObject){
camera = Selection.activeGameObject.GetComponent();
if(camera == null){
Debug.LogError("ProFlares - No Camera Selected");
return;
}else{
cameraGO = Selection.activeGameObject;
}
}else{
Debug.LogError("ProFlares - Nothing Selected");
return;
}
// Vector3 worldScale = cameraGO.transform.localScale;
// Transform parent = cameraGO.transform.parent;
int layerNumber = cameraGO.layer;
GameObject batchGO = new GameObject("ProFlareBatch");
batchGO.layer = layerNumber;
batchGO.transform.parent = cameraGO.transform;
batchGO.transform.localPosition = Vector3.zero;
batchGO.transform.localRotation = Quaternion.identity;
batchGO.transform.localScale = Vector3.one;
ProFlareBatch batch = batchGO.AddComponent();
batch.FlareCamera = camera;
batch.GameCamera = camera;
batch.FlareCameraTrans = camera.transform;
batch.mode = ProFlareBatch.Mode.SingleCamera;
batch.SingleCamera_Mode = true;
batch.zPos = 1;
/*
GameObject MainCameraGo = GameObject.FindWithTag("MainCamera");
if(MainCameraGo){
batch.GameCamera = MainCameraGo.camera;
batch.GameCameraTrans = MainCameraGo.transform;
}*/
Selection.activeGameObject = batchGO;
}
[MenuItem ("Window/ProFlares/Create Flare",false,menuPos+12)]
static void CreateFlare () {
GameObject flareGO = new GameObject("Flare");
flareGO.layer = 8;
flareGO.AddComponent();
Selection.activeGameObject = flareGO;
}
[MenuItem ("Window/ProFlares/Help",false,menuPos+71)]
static void ProFlareHelp () {
Application.OpenURL("http://www.proflares.com/help");
}
public static void DrawGuiInBoxDivider(){
GUILayout.Space(8f);
if (Event.current.type == EventType.Repaint)
{
int extra = 0;
#if UNITY_4_3
extra = 10;
#endif
Texture2D tex = EditorGUIUtility.whiteTexture;
Rect rect = GUILayoutUtility.GetLastRect();
GUI.color = new Color(0.5f, 0.5f, 0.5f, 0.25f);
GUI.DrawTexture(new Rect(5f+extra, rect.yMin + 5f, Screen.width-11, 1f), tex);
GUI.color = Color.white;
}
}
public static void DrawGuiDivider(){
GUILayout.Space(12f);
if (Event.current.type == EventType.Repaint)
{
Texture2D tex = EditorGUIUtility.whiteTexture;
Rect rect = GUILayoutUtility.GetLastRect();
GUI.color = new Color(0f, 0f, 0f, 0.25f);
GUI.DrawTexture(new Rect(0f, rect.yMin + 6f, Screen.width, 4f), tex);
GUI.DrawTexture(new Rect(0f, rect.yMin + 6f, Screen.width, 1f), tex);
GUI.DrawTexture(new Rect(0f, rect.yMin + 9f, Screen.width, 1f), tex);
GUI.color = Color.white;
}
}
public static GUIStyle TitleStyle(){
GUIStyle title = new GUIStyle(EditorStyles.largeLabel);
title.fontSize = 16;
title.clipping = TextClipping.Overflow;
return title;
}
public static GUIStyle ThinButtonStyle(){
GUIStyle thinButton = new GUIStyle(EditorStyles.toolbarButton);
thinButton.fontStyle = FontStyle.Bold;
thinButton.fixedHeight = 24f;
return thinButton;
}
public static GUIStyle ThinButtonRedStyle(){
GUIStyle thinButtonRed = new GUIStyle(EditorStyles.toolbarButton);
thinButtonRed.fontStyle = FontStyle.Bold;
thinButtonRed.fixedHeight = 24f;
thinButtonRed.normal.textColor = Color.red;
return thinButtonRed;
}
public static GUIStyle ThinButtonPressedStyle(){
GUIStyle thinButtonPressed = new GUIStyle(EditorStyles.toolbarButton);
thinButtonPressed.fontStyle = FontStyle.Bold;
thinButtonPressed.fixedHeight = 24f;
return thinButtonPressed;
}
public static GUIStyle DropDownButtonStyle(){
GUIStyle dropDownButton = new GUIStyle(EditorStyles.toolbarDropDown);
dropDownButton.fontStyle = FontStyle.Bold;
dropDownButton.fixedHeight = 20f;
return dropDownButton;
}
public static GUIStyle EnumStyleButton(){
GUIStyle enumStyleButton = new GUIStyle(EditorStyles.toolbarDropDown);
enumStyleButton.onActive.background = ThinButtonStyle().onActive.background;
enumStyleButton.fixedHeight = 24f;
return enumStyleButton;
}
public static GUIStyle FoldOutButtonStyle(){
GUIStyle foldOutButton = new GUIStyle(EditorStyles.foldout);
foldOutButton.fontStyle = FontStyle.Bold;
return foldOutButton;
}
}