| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372 |
- using UnityEditor;
- using UnityEngine;
- namespace HighlightPlus {
- [CustomEditor(typeof(HighlightProfile))]
- [CanEditMultipleObjects]
- public class HighlightProfileEditor : Editor {
- SerializedProperty effectGroup, effectGroupLayer, effectNameFilter, combineMeshes, alphaCutOff, cullBackFaces;
- SerializedProperty overlay, overlayMode, overlayColor, overlayAnimationSpeed, overlayMinIntensity, overlayTexture, overlayTextureScale, overlayTextureUVSpace, overlayBlending, overlayVisibility;
- SerializedProperty fadeInDuration, fadeOutDuration, constantWidth, normalsOption;
- SerializedProperty outline, outlineColor, outlineColorStyle, outlineGradient, outlineGradientInLocalSpace, outlineWidth, outlineBlurPasses, outlineQuality, outlineEdgeMode, outlineEdgeThreshold, outlineDownsampling, outlineVisibility, outlineIndependent, outlineContourStyle;
- SerializedProperty glow, glowWidth, glowQuality, glowBlurMethod, glowDownsampling, glowHQColor, glowDithering, glowMagicNumber1, glowMagicNumber2, glowAnimationSpeed;
- SerializedProperty glowBlendPasses, glowVisibility, glowBlendMode, glowPasses, glowIgnoreMask;
- SerializedProperty innerGlow, innerGlowWidth, innerGlowColor, innerGlowBlendMode, innerGlowVisibility;
- SerializedProperty targetFX, targetFXTexture, targetFXColor, targetFXRotationSpeed, targetFXInitialScale, targetFXEndScale, targetFXScaleToRenderBounds;
- SerializedProperty targetFXAlignToGround, targetFXFadePower, targetFXGroundMaxDistance, targetFXGroundLayerMask, targetFXTransitionDuration, targetFXStayDuration, targetFXVisibility;
- SerializedProperty seeThrough, seeThroughOccluderMask, seeThroughOccluderMaskAccurate, seeThroughOccluderThreshold, seeThroughOccluderCheckInterval, seeThroughOccluderCheckIndividualObjects, seeThroughDepthOffset, seeThroughMaxDepth;
- SerializedProperty seeThroughIntensity, seeThroughTintAlpha, seeThroughTintColor, seeThroughNoise, seeThroughBorder, seeThroughBorderWidth, seeThroughBorderColor, seeThroughOrdered, seeThroughBorderOnly, seeThroughTexture, seeThroughTextureUVSpace, seeThroughTextureScale, seeThroughChildrenSortingMode;
- SerializedProperty hitFxInitialIntensity, hitFxMode, hitFxFadeOutDuration, hitFxColor, hitFxRadius;
- SerializedProperty cameraDistanceFade, cameraDistanceFadeNear, cameraDistanceFadeFar;
- void OnEnable() {
- effectGroup = serializedObject.FindProperty("effectGroup");
- effectGroupLayer = serializedObject.FindProperty("effectGroupLayer");
- effectNameFilter = serializedObject.FindProperty("effectNameFilter");
- combineMeshes = serializedObject.FindProperty("combineMeshes");
- alphaCutOff = serializedObject.FindProperty("alphaCutOff");
- cullBackFaces = serializedObject.FindProperty("cullBackFaces");
- normalsOption = serializedObject.FindProperty("normalsOption");
- fadeInDuration = serializedObject.FindProperty("fadeInDuration");
- fadeOutDuration = serializedObject.FindProperty("fadeOutDuration");
- constantWidth = serializedObject.FindProperty("constantWidth");
- overlay = serializedObject.FindProperty("overlay");
- overlayMode = serializedObject.FindProperty("overlayMode");
- overlayColor = serializedObject.FindProperty("overlayColor");
- overlayAnimationSpeed = serializedObject.FindProperty("overlayAnimationSpeed");
- overlayMinIntensity = serializedObject.FindProperty("overlayMinIntensity");
- overlayBlending = serializedObject.FindProperty("overlayBlending");
- overlayVisibility = serializedObject.FindProperty("overlayVisibility");
- overlayTexture = serializedObject.FindProperty("overlayTexture");
- overlayTextureUVSpace = serializedObject.FindProperty("overlayTextureUVSpace");
- overlayTextureScale = serializedObject.FindProperty("overlayTextureScale");
- outline = serializedObject.FindProperty("outline");
- outlineColor = serializedObject.FindProperty("outlineColor");
- outlineColorStyle = serializedObject.FindProperty("outlineColorStyle");
- outlineGradient = serializedObject.FindProperty("outlineGradient");
- outlineGradientInLocalSpace = serializedObject.FindProperty("outlineGradientInLocalSpace");
- outlineWidth = serializedObject.FindProperty("outlineWidth");
- outlineBlurPasses = serializedObject.FindProperty("outlineBlurPasses");
- outlineQuality = serializedObject.FindProperty("outlineQuality");
- outlineEdgeMode = serializedObject.FindProperty("outlineEdgeMode");
- outlineEdgeThreshold = serializedObject.FindProperty("outlineEdgeThreshold");
- outlineDownsampling = serializedObject.FindProperty("outlineDownsampling");
- outlineVisibility = serializedObject.FindProperty("outlineVisibility");
- outlineIndependent = serializedObject.FindProperty("outlineIndependent");
- outlineContourStyle = serializedObject.FindProperty("outlineContourStyle");
- glow = serializedObject.FindProperty("glow");
- glowWidth = serializedObject.FindProperty("glowWidth");
- glowQuality = serializedObject.FindProperty("glowQuality");
- glowBlurMethod = serializedObject.FindProperty("glowBlurMethod");
- glowDownsampling = serializedObject.FindProperty("glowDownsampling");
- glowHQColor = serializedObject.FindProperty("glowHQColor");
- glowAnimationSpeed = serializedObject.FindProperty("glowAnimationSpeed");
- glowDithering = serializedObject.FindProperty("glowDithering");
- glowMagicNumber1 = serializedObject.FindProperty("glowMagicNumber1");
- glowMagicNumber2 = serializedObject.FindProperty("glowMagicNumber2");
- glowAnimationSpeed = serializedObject.FindProperty("glowAnimationSpeed");
- glowBlendPasses = serializedObject.FindProperty("glowBlendPasses");
- glowVisibility = serializedObject.FindProperty("glowVisibility");
- glowBlendMode = serializedObject.FindProperty("glowBlendMode");
- glowPasses = serializedObject.FindProperty("glowPasses");
- glowIgnoreMask = serializedObject.FindProperty("glowIgnoreMask");
- innerGlow = serializedObject.FindProperty("innerGlow");
- innerGlowColor = serializedObject.FindProperty("innerGlowColor");
- innerGlowWidth = serializedObject.FindProperty("innerGlowWidth");
- innerGlowBlendMode = serializedObject.FindProperty("innerGlowBlendMode");
- innerGlowVisibility = serializedObject.FindProperty("innerGlowVisibility");
- targetFX = serializedObject.FindProperty("targetFX");
- targetFXTexture = serializedObject.FindProperty("targetFXTexture");
- targetFXRotationSpeed = serializedObject.FindProperty("targetFXRotationSpeed");
- targetFXInitialScale = serializedObject.FindProperty("targetFXInitialScale");
- targetFXEndScale = serializedObject.FindProperty("targetFXEndScale");
- targetFXScaleToRenderBounds = serializedObject.FindProperty("targetFXScaleToRenderBounds");
- targetFXAlignToGround = serializedObject.FindProperty("targetFXAlignToGround");
- targetFXGroundMaxDistance = serializedObject.FindProperty("targetFXGroundMaxDistance");
- targetFXGroundLayerMask = serializedObject.FindProperty("targetFXGroundLayerMask");
- targetFXFadePower = serializedObject.FindProperty("targetFXFadePower");
- targetFXColor = serializedObject.FindProperty("targetFXColor");
- targetFXTransitionDuration = serializedObject.FindProperty("targetFXTransitionDuration");
- targetFXStayDuration = serializedObject.FindProperty("targetFXStayDuration");
- targetFXVisibility = serializedObject.FindProperty("targetFXVisibility");
- seeThrough = serializedObject.FindProperty("seeThrough");
- seeThroughOccluderMask = serializedObject.FindProperty("seeThroughOccluderMask");
- seeThroughOccluderMaskAccurate = serializedObject.FindProperty("seeThroughOccluderMaskAccurate");
- seeThroughOccluderThreshold = serializedObject.FindProperty("seeThroughOccluderThreshold");
- seeThroughOccluderCheckInterval = serializedObject.FindProperty("seeThroughOccluderCheckInterval");
- seeThroughOccluderCheckIndividualObjects = serializedObject.FindProperty("seeThroughOccluderCheckIndividualObjects");
- seeThroughDepthOffset = serializedObject.FindProperty("seeThroughDepthOffset");
- seeThroughMaxDepth = serializedObject.FindProperty("seeThroughMaxDepth");
- seeThroughIntensity = serializedObject.FindProperty("seeThroughIntensity");
- seeThroughTintAlpha = serializedObject.FindProperty("seeThroughTintAlpha");
- seeThroughTintColor = serializedObject.FindProperty("seeThroughTintColor");
- seeThroughNoise = serializedObject.FindProperty("seeThroughNoise");
- seeThroughBorder = serializedObject.FindProperty("seeThroughBorder");
- seeThroughBorderWidth = serializedObject.FindProperty("seeThroughBorderWidth");
- seeThroughBorderColor = serializedObject.FindProperty("seeThroughBorderColor");
- seeThroughBorderOnly = serializedObject.FindProperty("seeThroughBorderOnly");
- seeThroughOrdered = serializedObject.FindProperty("seeThroughOrdered");
- seeThroughTexture = serializedObject.FindProperty("seeThroughTexture");
- seeThroughTextureScale = serializedObject.FindProperty("seeThroughTextureScale");
- seeThroughTextureUVSpace = serializedObject.FindProperty("seeThroughTextureUVSpace");
- seeThroughChildrenSortingMode = serializedObject.FindProperty("seeThroughChildrenSortingMode");
- hitFxInitialIntensity = serializedObject.FindProperty("hitFxInitialIntensity");
- hitFxMode = serializedObject.FindProperty("hitFxMode");
- hitFxFadeOutDuration = serializedObject.FindProperty("hitFxFadeOutDuration");
- hitFxColor = serializedObject.FindProperty("hitFxColor");
- hitFxRadius = serializedObject.FindProperty("hitFxRadius");
- cameraDistanceFade = serializedObject.FindProperty("cameraDistanceFade");
- cameraDistanceFadeNear = serializedObject.FindProperty("cameraDistanceFadeNear");
- cameraDistanceFadeFar = serializedObject.FindProperty("cameraDistanceFadeFar");
- }
- public override void OnInspectorGUI() {
- serializedObject.Update();
- EditorGUILayout.Separator();
- EditorGUILayout.LabelField("Highlight Options", EditorStyles.boldLabel);
- EditorGUILayout.PropertyField(effectGroup, new GUIContent("Include"));
- if (effectGroup.intValue == (int)TargetOptions.LayerInScene || effectGroup.intValue == (int)TargetOptions.LayerInChildren) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(effectGroupLayer, new GUIContent("Layer"));
- EditorGUI.indentLevel--;
- }
- if (effectGroup.intValue != (int)TargetOptions.OnlyThisObject && effectGroup.intValue != (int)TargetOptions.Scripting) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(effectNameFilter, new GUIContent("Object Name Filter"));
- EditorGUILayout.PropertyField(combineMeshes);
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(alphaCutOff);
- EditorGUILayout.PropertyField(cullBackFaces);
- EditorGUILayout.PropertyField(normalsOption);
- EditorGUILayout.PropertyField(fadeInDuration);
- EditorGUILayout.PropertyField(fadeOutDuration);
- EditorGUILayout.PropertyField(cameraDistanceFade);
- if (cameraDistanceFade.boolValue) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(cameraDistanceFadeNear, new GUIContent("Near Distance"));
- EditorGUILayout.PropertyField(cameraDistanceFadeFar, new GUIContent("Far Distance"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(constantWidth);
- EditorGUILayout.PropertyField(outlineIndependent, new GUIContent("Independent", "Do not combine outline with other highlighted objects."));
- EditorGUILayout.Separator();
- EditorGUILayout.LabelField("Effects", EditorStyles.boldLabel);
- EditorGUILayout.BeginVertical(GUI.skin.box);
- DrawSectionField(outline, "Outline", outline.floatValue > 0);
- if (outline.floatValue > 0) {
- EditorGUI.indentLevel++;
- HighlightEffectEditor.QualityPropertyField(outlineQuality);
- if (outlineQuality.intValue == (int)QualityLevel.Highest) {
- EditorGUILayout.PropertyField(outlineEdgeMode, new GUIContent("Edges"));
- if (outlineEdgeMode.intValue == (int)OutlineEdgeMode.Any) {
- EditorGUILayout.PropertyField(outlineEdgeThreshold, new GUIContent("Edge Detection Threshold"));
- }
- EditorGUILayout.PropertyField(outlineContourStyle, new GUIContent("Contour Style"));
- EditorGUILayout.PropertyField(outlineWidth, new GUIContent("Width"));
- EditorGUILayout.PropertyField(outlineColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(outlineBlurPasses, new GUIContent("Blur Passes"));
- } else {
- EditorGUILayout.PropertyField(outlineWidth, new GUIContent("Width"));
- EditorGUILayout.PropertyField(outlineColorStyle, new GUIContent("Color Style"));
- switch ((ColorStyle)outlineColorStyle.intValue) {
- case ColorStyle.SingleColor:
- EditorGUILayout.PropertyField(outlineColor, new GUIContent("Color"));
- break;
- case ColorStyle.Gradient:
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(outlineGradient, new GUIContent("Gradient"));
- EditorGUILayout.PropertyField(outlineGradientInLocalSpace, new GUIContent("In Local Space"));
- EditorGUI.indentLevel--;
- break;
- }
- }
- if (outlineQuality.intValue == (int)QualityLevel.Highest && outlineEdgeMode.intValue != (int)OutlineEdgeMode.Any) {
- EditorGUILayout.PropertyField(outlineDownsampling, new GUIContent("Downsampling"));
- }
- if (outlineQuality.intValue == (int)QualityLevel.Highest && glowQuality.intValue == (int)QualityLevel.Highest) {
- EditorGUILayout.PropertyField(glowVisibility, new GUIContent("Visibility"));
- } else {
- EditorGUILayout.PropertyField(outlineVisibility, new GUIContent("Visibility"));
- }
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.BeginVertical(GUI.skin.box);
- DrawSectionField(glow, "Outer Glow", glow.floatValue > 0);
- if (glow.floatValue > 0) {
- EditorGUI.indentLevel++;
- HighlightEffectEditor.QualityPropertyField(glowQuality);
- if (glowQuality.intValue == (int)QualityLevel.Highest) {
- EditorGUILayout.PropertyField(outlineContourStyle, new GUIContent("Contour Style"));
- EditorGUILayout.PropertyField(glowWidth, new GUIContent("Width"));
- EditorGUILayout.PropertyField(glowHQColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(glowBlurMethod, new GUIContent("Blur Method", "Gaussian: better quality. Kawase: faster."));
- EditorGUILayout.PropertyField(glowDownsampling, new GUIContent("Downsampling"));
- } else {
- EditorGUILayout.PropertyField(glowWidth, new GUIContent("Width"));
- }
- EditorGUILayout.PropertyField(glowAnimationSpeed, new GUIContent("Animation Speed"));
- EditorGUILayout.PropertyField(glowVisibility, new GUIContent("Visibility"));
- EditorGUILayout.PropertyField(glowBlendMode, new GUIContent("Blend Mode"));
- if (glowQuality.intValue != (int)QualityLevel.Highest) {
- EditorGUILayout.PropertyField(glowDithering, new GUIContent("Dithering"));
- if (glowDithering.boolValue) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(glowMagicNumber1, new GUIContent("Magic Number 1"));
- EditorGUILayout.PropertyField(glowMagicNumber2, new GUIContent("Magic Number 2"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(glowBlendPasses, new GUIContent("Blend Passes"));
- EditorGUILayout.PropertyField(glowPasses, true);
- EditorGUILayout.PropertyField(glowIgnoreMask, new GUIContent("Ignore Mask"));
- }
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.BeginVertical(GUI.skin.box);
- DrawSectionField(innerGlow, "Inner Glow", innerGlow.floatValue > 0);
- if (innerGlow.floatValue > 0) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(innerGlowColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(innerGlowWidth, new GUIContent("Width"));
- EditorGUILayout.PropertyField(innerGlowBlendMode, new GUIContent("Blend Mode"));
- EditorGUILayout.PropertyField(innerGlowVisibility, new GUIContent("Visibility"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.BeginVertical(GUI.skin.box);
- DrawSectionField(overlay, "Overlay", overlay.floatValue > 0);
- if (overlay.floatValue > 0) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(overlayMode, new GUIContent("Mode"));
- EditorGUILayout.PropertyField(overlayColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(overlayTexture, new GUIContent("Texture"));
- if (overlayTexture.objectReferenceValue != null) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(overlayTextureUVSpace, new GUIContent("UV Space"));
- EditorGUILayout.PropertyField(overlayTextureScale, new GUIContent("Texture Scale"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(overlayBlending, new GUIContent("Blending"));
- EditorGUILayout.PropertyField(overlayMinIntensity, new GUIContent("Min Intensity"));
- EditorGUILayout.PropertyField(overlayAnimationSpeed, new GUIContent("Animation Speed"));
- EditorGUILayout.PropertyField(overlayVisibility, new GUIContent("Visibility"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.BeginVertical(GUI.skin.box);
- DrawSectionField(targetFX, "Target", targetFX.boolValue);
- if (targetFX.boolValue) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(targetFXTexture, new GUIContent("Texture"));
- EditorGUILayout.PropertyField(targetFXColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(targetFXRotationSpeed, new GUIContent("Rotation Speed"));
- EditorGUILayout.PropertyField(targetFXInitialScale, new GUIContent("Initial Scale"));
- EditorGUILayout.PropertyField(targetFXEndScale, new GUIContent("End Scale"));
- EditorGUILayout.PropertyField(targetFXScaleToRenderBounds, new GUIContent("Scale To Object Bounds"));
- EditorGUILayout.PropertyField(targetFXAlignToGround, new GUIContent("Align To Ground"));
- if (targetFXAlignToGround.boolValue) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(targetFXGroundMaxDistance, new GUIContent("Ground Max Distance"));
- EditorGUILayout.PropertyField(targetFXGroundLayerMask, new GUIContent("Ground Layer Mask"));
- EditorGUILayout.PropertyField(targetFXFadePower, new GUIContent("Fade Power"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(targetFXTransitionDuration, new GUIContent("Transition Duration"));
- EditorGUILayout.PropertyField(targetFXStayDuration, new GUIContent("Stay Duration"));
- EditorGUILayout.PropertyField(targetFXVisibility, new GUIContent("Visibility"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.BeginVertical(GUI.skin.box);
- EditorGUILayout.PropertyField(seeThrough);
- if (seeThrough.intValue != (int)SeeThroughMode.Never) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(seeThroughOccluderMask, new GUIContent("Occluder Layer"));
- if (seeThroughOccluderMask.intValue > 0) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(seeThroughOccluderMaskAccurate, new GUIContent("Accurate"));
- EditorGUILayout.PropertyField(seeThroughOccluderThreshold, new GUIContent("Radius Threshold", "Multiplier to the object bounds. Making the bounds smaller prevents false occlusion tests."));
- EditorGUILayout.PropertyField(seeThroughOccluderCheckInterval, new GUIContent("Check Interval", "Interval in seconds between occlusion tests."));
- EditorGUILayout.PropertyField(seeThroughOccluderCheckIndividualObjects, new GUIContent("Check Individual Objects", "Interval in seconds between occlusion tests."));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(seeThroughDepthOffset, new GUIContent("Depth Offset" + ((seeThroughDepthOffset.floatValue > 0) ? " •" : "")));
- EditorGUILayout.PropertyField(seeThroughMaxDepth, new GUIContent("Max Depth" + ((seeThroughMaxDepth.floatValue > 0) ? " •" : "")));
- EditorGUILayout.PropertyField(seeThroughIntensity, new GUIContent("Intensity"));
- EditorGUILayout.PropertyField(seeThroughTintColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(seeThroughTintAlpha, new GUIContent("Color Blend"));
- EditorGUILayout.PropertyField(seeThroughNoise, new GUIContent("Noise"));
- EditorGUILayout.PropertyField(seeThroughTexture, new GUIContent("Texture"));
- if (seeThroughTexture.objectReferenceValue != null) {
- EditorGUILayout.PropertyField(seeThroughTextureUVSpace, new GUIContent("UV Space"));
- EditorGUILayout.PropertyField(seeThroughTextureScale, new GUIContent("Texture Scale"));
- }
- EditorGUILayout.PropertyField(seeThroughBorder, new GUIContent("Border When Hidden"));
- if (seeThroughBorder.floatValue > 0) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(seeThroughBorderWidth, new GUIContent("Width"));
- EditorGUILayout.PropertyField(seeThroughBorderColor, new GUIContent("Color"));
- EditorGUILayout.PropertyField(seeThroughBorderOnly, new GUIContent("Border Only"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.PropertyField(seeThroughChildrenSortingMode, new GUIContent("Children Sorting Mode"));
- EditorGUILayout.PropertyField(seeThroughOrdered, new GUIContent("Ordered"));
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- EditorGUILayout.BeginVertical(GUI.skin.box);
- DrawSectionField(hitFxInitialIntensity, "Hit FX", hitFxInitialIntensity.floatValue > 0);
- if (hitFxInitialIntensity.floatValue > 0) {
- EditorGUI.indentLevel++;
- EditorGUILayout.PropertyField(hitFxInitialIntensity, new GUIContent("Initial Intensity"));
- EditorGUILayout.PropertyField(hitFxMode, new GUIContent("Mode"));
- EditorGUILayout.PropertyField(hitFxFadeOutDuration, new GUIContent("Fade Out Duration"));
- EditorGUILayout.PropertyField(hitFxColor, new GUIContent("Color"));
- if ((HitFxMode)hitFxMode.intValue == HitFxMode.LocalHit) {
- EditorGUILayout.PropertyField(hitFxRadius, new GUIContent("Radius"));
- }
- EditorGUI.indentLevel--;
- }
- EditorGUILayout.EndVertical();
- if (serializedObject.ApplyModifiedProperties() || (Event.current.type == EventType.ValidateCommand &&
- Event.current.commandName == "UndoRedoPerformed")) {
- // Triggers profile reload on all Highlight Effect scripts
- HighlightEffect[] effects = FindObjectsOfType<HighlightEffect>();
- for (int t = 0; t < targets.Length; t++) {
- HighlightProfile profile = (HighlightProfile)targets[t];
- for (int k = 0; k < effects.Length; k++) {
- if (effects[k] != null && effects[k].profile == profile && effects[k].profileSync) {
- profile.Load(effects[k]);
- effects[k].Refresh();
- }
- }
- }
- EditorUtility.SetDirty(target);
- }
- }
- void DrawSectionField(SerializedProperty property, string label, bool active) {
- EditorGUILayout.PropertyField(property, new GUIContent(active ? label + " •" : label));
- }
- }
- }
|