diff options
author | chai <chaifix@163.com> | 2020-10-22 23:30:02 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-10-22 23:30:02 +0800 |
commit | 917e9e0b320775634dc2e710f7deac74fd0822f0 (patch) | |
tree | 637f3cccc80e7738c8a077fa3ff59218b8b18ee8 /Assets/MaterializeFX/Scripts/MfxControllerEditor.cs | |
parent | 8268e4e308bd110dfea4ad849a7ff74e66951349 (diff) |
* amplify shader editor
Diffstat (limited to 'Assets/MaterializeFX/Scripts/MfxControllerEditor.cs')
-rw-r--r-- | Assets/MaterializeFX/Scripts/MfxControllerEditor.cs | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/Assets/MaterializeFX/Scripts/MfxControllerEditor.cs b/Assets/MaterializeFX/Scripts/MfxControllerEditor.cs new file mode 100644 index 00000000..50ad9e50 --- /dev/null +++ b/Assets/MaterializeFX/Scripts/MfxControllerEditor.cs @@ -0,0 +1,139 @@ +using System.Globalization;
+using UnityEditor;
+using UnityEngine;
+
+namespace Assets.MaterializeFX.Scripts
+{
+ [CustomEditor(typeof(MfxController))]
+ internal sealed class MfxControllerEditor : Editor
+ {
+ private GameObject _targetObject;
+ private bool _modifyChildren;
+
+ private AnimationCurve _maskOffsetCurve;
+ private string _scaleTimeFactor;
+ private string _scalePositionFactor;
+
+ private bool _byDistance;
+ private GameObject _distanceBasedObject;
+
+ private bool _replaceMaterial;
+ private bool _replaceMaterialMode;
+ private Material _mfxMaterial;
+
+ public override void OnInspectorGUI()
+ {
+ var mfxController = (MfxController)target;
+
+ _targetObject = mfxController.TargetObject;
+ _modifyChildren = mfxController.ModifyChildren;
+
+ _maskOffsetCurve = mfxController.MaskOffsetCurve;
+ _scaleTimeFactor = mfxController.ScaleTimeFactor.ToString(CultureInfo.InvariantCulture);
+ _scalePositionFactor = mfxController.ScaleOffsetFactor.ToString(CultureInfo.InvariantCulture);
+
+ _byDistance = mfxController.ByDistance;
+ _distanceBasedObject = mfxController.DistanceBasedObject;
+
+ _replaceMaterial = mfxController.ReplaceMaterial;
+ _replaceMaterialMode = mfxController.ReplaceMaterialMode;
+ _mfxMaterial = mfxController.MfxMaterial;
+
+ EditorGUILayout.Separator();
+
+ // Modify children
+ EditorGUILayout.Separator();
+ _modifyChildren = EditorGUILayout.Toggle(MfxEditorLocalization.ModifyChildrenLabel, _modifyChildren);
+ mfxController.ModifyChildren = _modifyChildren;
+
+ // Target object
+ _targetObject = (GameObject)EditorGUILayout.ObjectField(MfxEditorLocalization.TargetObjectLabel, _targetObject, typeof(GameObject), true);
+ mfxController.TargetObject = _targetObject;
+
+ EditorGUILayout.Separator();
+ EditorGUILayout.LabelField(MfxEditorLocalization.DistanceParamsLabel, EditorStyles.boldLabel);
+
+ // ReplaceMaterials depending on the distance
+ _byDistance = EditorGUILayout.Toggle(MfxEditorLocalization.ByDistanceLabel, _byDistance);
+ mfxController.ByDistance = _byDistance;
+
+ // Object To Calculate Distance
+ if (_byDistance)
+ {
+ _distanceBasedObject = (GameObject)EditorGUILayout.ObjectField(MfxEditorLocalization.DistanceBasedObjectLabel, _distanceBasedObject, typeof(GameObject), true);
+ mfxController.DistanceBasedObject = _distanceBasedObject;
+ }
+
+ if (!_byDistance)
+ {
+ // Direction type
+ EditorGUILayout.Separator();
+ EditorGUILayout.LabelField(MfxEditorLocalization.MfxParamsLabel, EditorStyles.boldLabel);
+
+ _maskOffsetCurve = EditorGUILayout.CurveField(MfxEditorLocalization.MaskOffsetCurve, _maskOffsetCurve);
+ mfxController.MaskOffsetCurve = _maskOffsetCurve;
+
+ _scaleTimeFactor = EditorGUILayout.TextField(MfxEditorLocalization.ScaleTimeLabel, _scaleTimeFactor);
+ _scalePositionFactor = EditorGUILayout.TextField(MfxEditorLocalization.ScalePositionLabel, _scalePositionFactor);
+ mfxController.ScaleTimeFactor = float.Parse(_scaleTimeFactor);
+ mfxController.ScaleOffsetFactor = float.Parse(_scalePositionFactor);
+ }
+
+ EditorGUILayout.Separator();
+ EditorGUILayout.LabelField(MfxEditorLocalization.ReplaceMaterialParamsLabel, EditorStyles.boldLabel);
+
+ _replaceMaterial = EditorGUILayout.Toggle(MfxEditorLocalization.ReplaceMaterialLabel, _replaceMaterial);
+
+ mfxController.ReplaceMaterial = _replaceMaterial;
+
+ if (_replaceMaterial)
+ {
+ _mfxMaterial = (Material)EditorGUILayout.ObjectField(MfxEditorLocalization.MaterialLabel, _mfxMaterial, typeof(Material), true);
+ mfxController.MfxMaterial = _mfxMaterial;
+ }
+
+ if (_replaceMaterial)
+ {
+ _replaceMaterialMode = EditorGUILayout.Toggle(MfxEditorLocalization.ReplaceMaterialInEditorLabel, _replaceMaterialMode);
+ mfxController.ReplaceMaterialMode = _replaceMaterialMode;
+
+ if (_replaceMaterial && _replaceMaterialMode)
+ {
+ if (GUILayout.Button(MfxEditorLocalization.ReplaceMaterialButton))
+ {
+ if (_mfxMaterial == null)
+ Debug.LogWarning("template mfx materials is not selected");
+ else
+ {
+ var targetObject = mfxController.Target;
+
+ MfxMaterialUtil.ReplaceRenderersMaterials(_mfxMaterial, targetObject, true);
+ }
+ }
+ }
+ }
+
+ EditorUtility.SetDirty(target);
+ }
+
+ private static class MfxEditorLocalization
+ {
+ public const string TargetObjectLabel = "Target Object";
+ public const string ModifyChildrenLabel = "Modify Children";
+ public const string DistanceParamsLabel = "Distance Params";
+ public const string ByDistanceLabel = "Depending on the distance";
+ public const string DistanceBasedObjectLabel = "Object to calcualte distance";
+
+ public const string MfxParamsLabel = "Mfx Params";
+ public const string MaskOffsetCurve = "Mask Offset Curve";
+ public const string ScaleTimeLabel = "Scale Time Factor";
+ public const string ScalePositionLabel = "Scale Offset Factor";
+
+ public const string ReplaceMaterialParamsLabel = "Replace Material Params";
+ public const string ReplaceMaterialLabel = "Replace Material";
+ public const string ReplaceMaterialInEditorLabel = "Replace in Editor";
+ public const string ReplaceMaterialButton = "Copy & Replace";
+ public const string MaterialLabel = "Mfx Material Template";
+ }
+ }
+}
\ No newline at end of file |