Skip to content

Commit

Permalink
Merge branch 'release/0.5.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
abogarsukov committed Sep 9, 2019
2 parents 5570e08 + 238cc22 commit 6bf864f
Show file tree
Hide file tree
Showing 67 changed files with 2,785 additions and 655 deletions.
22 changes: 0 additions & 22 deletions Assets/Examples/Prefabs/OutlineLayers.asset

This file was deleted.

33 changes: 33 additions & 0 deletions Assets/Examples/Prefabs/TestOutlineLayers.asset
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 57d0c11168277cf4eb3b4b89706e6aa5, type: 3}
m_Name: TestOutlineLayers
m_EditorClassIdentifier:
_layers:
- _settings:
_outlineSettings: {fileID: 11400000, guid: 45705bbb29366194eb01ca517d80967c,
type: 2}
_outlineColor: {r: 1, g: 0, b: 0, a: 1}
_outlineWidth: 5
_outlineIntensity: 2
_outlineMode: 0
- _settings:
_outlineSettings: {fileID: 0}
_outlineColor: {r: 1, g: 1, b: 0, a: 1}
_outlineWidth: 15
_outlineIntensity: 2
_outlineMode: 1
- _settings:
_outlineSettings: {fileID: 0}
_outlineColor: {r: 1, g: 0, b: 1, a: 1}
_outlineWidth: 4
_outlineIntensity: 2
_outlineMode: 0
17 changes: 17 additions & 0 deletions Assets/Examples/Prefabs/TestOutlineSettings.asset
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b579424fd3338724cba3155ee4d53475, type: 3}
m_Name: TestOutlineSettings
m_EditorClassIdentifier:
_outlineColor: {r: 1, g: 0, b: 0, a: 1}
_outlineWidth: 5
_outlineIntensity: 2
_outlineMode: 0
8 changes: 8 additions & 0 deletions Assets/Examples/Prefabs/TestOutlineSettings.asset.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

26 changes: 6 additions & 20 deletions Assets/Examples/Scenes/Outline.unity
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,6 @@ GameObject:
m_Component:
- component: {fileID: 692811816}
- component: {fileID: 692811815}
- component: {fileID: 692811814}
- component: {fileID: 692811813}
- component: {fileID: 692811818}
- component: {fileID: 692811817}
m_Layer: 0
Expand All @@ -198,20 +196,6 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!81 &692811813
AudioListener:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 692811812}
m_Enabled: 1
--- !u!124 &692811814
Behaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 692811812}
m_Enabled: 1
--- !u!20 &692811815
Camera:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -503,10 +487,12 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_outlineResources: {fileID: 11400000, guid: d28e70f030b1a634db9a6a6d5478ef19, type: 2}
_outlineColor: {r: 0, g: 1, b: 0, a: 1}
_outlineWidth: 12
_outlineIntensity: 2
_outlineMode: 1
_outlineSettings:
_outlineSettings: {fileID: 0}
_outlineColor: {r: 0, g: 1, b: 0, a: 1}
_outlineWidth: 15
_outlineIntensity: 2
_outlineMode: 1
--- !u!23 &1789341923
MeshRenderer:
m_ObjectHideFlags: 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
// See the LICENSE.md file in the project root for more information.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.SceneManagement;
using UnityEngine;

namespace UnityFx.Outline
Expand All @@ -25,6 +24,22 @@ public override void OnInspectorGUI()
{
base.OnInspectorGUI();

// 1) Outline settings.
EditorGUI.BeginChangeCheck();

OutlineEditorUtility.Render(_effect, _effect);

if (EditorGUI.EndChangeCheck())
{
EditorUtility.SetDirty(_effect.gameObject);

if (!EditorApplication.isPlayingOrWillChangePlaymode)
{
EditorSceneManager.MarkSceneDirty(_effect.gameObject.scene);
}
}

// 2) Renderers (read-only).
_renderersOpened = EditorGUILayout.Foldout(_renderersOpened, "Renderers", true);

if (_renderersOpened)
Expand All @@ -44,6 +59,7 @@ public override void OnInspectorGUI()
EditorGUI.EndDisabledGroup();
}

// 3) Cameras (read-only).
_camerasOpened = EditorGUILayout.Foldout(_camerasOpened, "Cameras", true);

if (_camerasOpened)
Expand Down
166 changes: 166 additions & 0 deletions Assets/Plugins/UnityFx.Outline/Editor/Scripts/OutlineEditorUtility.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
// Copyright (C) 2019 Alexander Bogarsukov. All rights reserved.
// See the LICENSE.md file in the project root for more information.

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;

namespace UnityFx.Outline
{
internal static class OutlineEditorUtility
{
public static void RenderDivider(Color color, int thickness = 1, int padding = 5)
{
var r = EditorGUILayout.GetControlRect(GUILayout.Height(padding + thickness));

r.height = thickness;
r.y += padding / 2;
r.x -= 2;
r.width += 6;

EditorGUI.DrawRect(r, color);
}

public static void Render(IOutlineSettingsEx settings, UnityEngine.Object undoContext)
{
var obj = (OutlineSettings)EditorGUILayout.ObjectField("Outline Settings", settings.OutlineSettings, typeof(OutlineSettings), true);

if (settings.OutlineSettings != obj)
{
Undo.RecordObject(undoContext, "Settings");
settings.OutlineSettings = obj;
}

if (obj)
{
EditorGUI.BeginDisabledGroup(true);
EditorGUI.indentLevel += 1;

Render((IOutlineSettings)settings, undoContext);

EditorGUILayout.HelpBox(string.Format("Outline settings are overriden with values from {0}.", obj.name), MessageType.Info, true);
EditorGUI.indentLevel -= 1;
EditorGUI.EndDisabledGroup();
}
else
{
EditorGUI.indentLevel += 1;

Render((IOutlineSettings)settings, undoContext);

EditorGUI.indentLevel -= 1;
}
}

public static void Render(IOutlineSettings settings, UnityEngine.Object undoContext)
{
var color = EditorGUILayout.ColorField("Color", settings.OutlineColor);

if (settings.OutlineColor != color)
{
Undo.RecordObject(undoContext, "Color");
settings.OutlineColor = color;
}

var width = EditorGUILayout.IntSlider("Width", settings.OutlineWidth, OutlineRenderer.MinWidth, OutlineRenderer.MaxWidth);

if (settings.OutlineWidth != width)
{
Undo.RecordObject(undoContext, "Width");
settings.OutlineWidth = width;
}

var blurred = EditorGUILayout.Toggle("Blurred", settings.OutlineMode == OutlineMode.Blurred);

if (blurred)
{
EditorGUI.indentLevel += 1;

var i = EditorGUILayout.Slider("Blur Intensity", settings.OutlineIntensity, OutlineRenderer.MinIntensity, OutlineRenderer.MaxIntensity);

if (!Mathf.Approximately(settings.OutlineIntensity, i))
{
Undo.RecordObject(undoContext, "Blur Intensity");
settings.OutlineIntensity = i;
}

EditorGUI.indentLevel -= 1;
}

if (blurred != (settings.OutlineMode == OutlineMode.Blurred))
{
Undo.RecordObject(undoContext, "Blur");
settings.OutlineMode = blurred ? OutlineMode.Blurred : OutlineMode.Solid;
}
}

public static void RenderPreview(OutlineLayer layer, int layerIndex, bool showObjects)
{
if (layer != null)
{
var goIndex = 1;

EditorGUILayout.BeginHorizontal();
EditorGUI.indentLevel += 1;
EditorGUILayout.PrefixLabel("Layer #" + layerIndex.ToString());
EditorGUI.indentLevel -= 1;
EditorGUILayout.IntField(layer.OutlineWidth, GUILayout.MaxWidth(100));
EditorGUILayout.ColorField(layer.OutlineColor, GUILayout.MinWidth(100));
EditorGUILayout.EndHorizontal();

if (showObjects)
{
if (layer.Count > 0)
{
foreach (var go in layer)
{
EditorGUI.indentLevel += 2;
EditorGUILayout.ObjectField("#" + goIndex.ToString(), go, typeof(GameObject), true);
EditorGUI.indentLevel -= 2;

goIndex++;
}
}
else
{
EditorGUI.indentLevel += 2;
EditorGUILayout.LabelField("No objects.");
EditorGUI.indentLevel -= 2;
}
}
}
else
{
EditorGUILayout.BeginHorizontal();
EditorGUI.indentLevel += 1;
EditorGUILayout.PrefixLabel("Layer #" + layerIndex.ToString());
EditorGUI.indentLevel -= 1;
EditorGUILayout.LabelField("Null");
EditorGUILayout.EndHorizontal();
}
}

public static void RenderPreview(IList<OutlineLayer> layers, bool showObjects)
{
EditorGUI.BeginDisabledGroup(true);

if (layers.Count > 0)
{
for (var i = 0; i < layers.Count; ++i)
{
RenderPreview(layers[i], i, showObjects);
}
}
else
{
EditorGUI.indentLevel += 1;
EditorGUILayout.LabelField("No layers.");
EditorGUI.indentLevel -= 1;
}

EditorGUI.EndDisabledGroup();
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 6bf864f

Please sign in to comment.