// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ public void AddEffect_Color(exSpriteBase _target, EffectEventType _type, exEase.Type _curveType, Color _to, float _duration) { exUIControl ctrl = GetComponent <exUIControl>(); if (ctrl) { EffectInfo_Color info = new EffectInfo_Color(); info.duration = _duration; info.target = _target; info.normal = _target.color; info.curveType = _curveType; EffectInfo_Color.PropInfo propInfo = new EffectInfo_Color.PropInfo(); propInfo.type = _type; propInfo.val = _to; info.propInfos.Add(propInfo); EffectState_Color state = new EffectState_Color(); state.info = info; state.func = info.GetCurveFunction(); AddState_Color(ctrl, state); } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ColorInfoField(List <EffectInfo_Color> _infos) { GUILayout.BeginHorizontal(); GUILayout.Space(4f); GUILayout.BeginVertical(); // name GUILayout.Toggle(true, "Color", "dragtab"); EditorGUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(10f)); GUILayout.BeginVertical(); // infos for (int i = 0; i < _infos.Count; ++i) { bool infoDeleted = false; EffectInfo_Color info = _infos[i]; // target EditorGUILayout.BeginHorizontal(); // receiver EditorGUI.BeginChangeCheck(); info.target = EditorGUILayout.ObjectField(info.target, typeof(exSpriteBase), true) as exSpriteBase; if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(target); } // if (info.target != null) { } else { infoDeleted = true; } // Delete if (GUILayout.Button(styles.iconToolbarMinus, "InvisibleButton", GUILayout.Width(20f))) { infoDeleted = true; } GUILayout.Space(3f); EditorGUILayout.EndHorizontal(); // curve, duration EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); EditorGUI.BeginChangeCheck(); GUILayout.Label("Custom Curve"); info.customCurve = EditorGUILayout.Toggle(info.customCurve, GUILayout.Width(15)); if (info.customCurve) { info.curve = EditorGUILayout.CurveField(info.curve); } else { info.curveType = (exEase.Type)EditorGUILayout.EnumPopup(info.curveType); } info.duration = EditorGUILayout.FloatField(info.duration); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // normal EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); if (GUILayout.Button("Sync", GUILayout.Width(50))) { info.normal = info.target.color; EditorUtility.SetDirty(target); } EditorGUI.BeginChangeCheck(); GUILayout.Label("Normal"); info.normal = EditorGUILayout.ColorField("", info.normal, GUILayout.Width(80)); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // Properties for (int j = 0; j < info.propInfos.Count; ++j) { EffectInfo_Color.PropInfo propInfo = info.propInfos[j]; EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); // propInfoDeleted bool propInfoDeleted = false; if (GUILayout.Button(styles.iconToolbarMinus, "InvisibleButton", GUILayout.Width(styles.iconToolbarMinus.width), GUILayout.Height(styles.iconToolbarMinus.height))) { propInfoDeleted = true; } EditorGUI.BeginChangeCheck(); GUILayout.Label(System.Enum.GetName(typeof(EffectEventType), propInfo.type)); Color newColor = EditorGUILayout.ColorField("", propInfo.val, GUILayout.Width(80)); if (EditorGUI.EndChangeCheck()) { propInfo.val = newColor; EditorUtility.SetDirty(target); } if (propInfoDeleted) { info.propInfos.RemoveAt(j); --j; EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); } // Add Property EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); List <string> eventNameList = new List <string>(); eventNameList.Add("Add Property"); eventNameList.AddRange(System.Enum.GetNames(typeof(EffectEventType))); foreach (EffectInfo_Color.PropInfo propInfo in info.propInfos) { int idx = eventNameList.IndexOf(System.Enum.GetName(typeof(EffectEventType), propInfo.type)); if (idx != -1) { eventNameList.RemoveAt(idx); } } int choice = EditorGUILayout.Popup(0, eventNameList.ToArray(), GUILayout.Width(100)); if (choice != 0) { EffectInfo_Color.PropInfo propInfo = new EffectInfo_Color.PropInfo(); propInfo.type = (EffectEventType)System.Enum.Parse(typeof(EffectEventType), eventNameList[choice]); propInfo.val = info.normal; info.propInfos.Add(propInfo); EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // if (infoDeleted) { _infos.RemoveAt(i); --i; EditorUtility.SetDirty(target); } } // new slot EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); exSpriteBase receiver = EditorGUILayout.ObjectField(null, typeof(exSpriteBase), true, GUILayout.Width(150)) as exSpriteBase; if (receiver != null) { EffectInfo_Color info = new EffectInfo_Color(); info.target = receiver; _infos.Add(info); EditorUtility.SetDirty(target); } GUILayout.Label(styles.iconToolbarPlus, GUILayout.Width(20)); EditorGUILayout.EndHorizontal(); GUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.Space(4f); GUILayout.EndHorizontal(); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void AddState_Color(exUIControl _ctrl, EffectState_Color _state) { for (int i = 0; i < _state.info.propInfos.Count; ++i) { EffectInfo_Color.PropInfo propInfo = _state.info.propInfos[i]; switch (propInfo.type) { case EffectEventType.Deactive: _ctrl.AddEventListener("onDeactive", delegate(exUIEvent _event) { enabled = true; _state.Begin(propInfo.val); }); _ctrl.AddEventListener("onActive", delegate(exUIEvent _event) { enabled = true; _state.Begin(_state.info.normal); }); break; case EffectEventType.Press: _ctrl.AddEventListener("onPressDown", delegate(exUIEvent _event) { enabled = true; _state.Begin(propInfo.val); }); _ctrl.AddEventListener("onPressUp", delegate(exUIEvent _event) { enabled = true; _state.Begin(_state.info.GetValue(EffectEventType.Hover)); }); break; case EffectEventType.Hover: _ctrl.AddEventListener("onHoverIn", delegate(exUIEvent _event) { enabled = true; _state.Begin(propInfo.val); }); _ctrl.AddEventListener("onHoverOut", delegate(exUIEvent _event) { enabled = true; _state.Begin(_state.info.normal); }); break; case EffectEventType.Unchecked: exUIToggle toggle = _ctrl as exUIToggle; if (toggle != null) { _ctrl.AddEventListener("onUnchecked", delegate(exUIEvent _event) { enabled = true; _state.Begin(propInfo.val); }); _ctrl.AddEventListener("onChecked", delegate(exUIEvent _event) { enabled = true; _state.Begin(_state.info.GetValue(EffectEventType.Hover)); }); } break; } } states.Add(_state); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ColorInfoField( List<EffectInfo_Color> _infos ) { GUILayout.BeginHorizontal(); GUILayout.Space(4f); GUILayout.BeginVertical(); // name GUILayout.Toggle( true, "Color", "dragtab"); EditorGUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(10f)); GUILayout.BeginVertical(); // infos for ( int i = 0; i < _infos.Count; ++i ) { bool infoDeleted = false; EffectInfo_Color info = _infos[i]; // target EditorGUILayout.BeginHorizontal(); // receiver EditorGUI.BeginChangeCheck(); info.target = EditorGUILayout.ObjectField( info.target, typeof(exSpriteBase), true ) as exSpriteBase; if ( EditorGUI.EndChangeCheck() ) { EditorUtility.SetDirty(target); } // if ( info.target != null ) { } else { infoDeleted = true; } // Delete if ( GUILayout.Button( styles.iconToolbarMinus, "InvisibleButton", GUILayout.Width(20f) ) ) { infoDeleted = true; } GUILayout.Space(3f); EditorGUILayout.EndHorizontal(); // curve, duration EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); EditorGUI.BeginChangeCheck(); GUILayout.Label("Custom Curve"); info.customCurve = EditorGUILayout.Toggle(info.customCurve,GUILayout.Width(15)); if ( info.customCurve ) { info.curve = EditorGUILayout.CurveField(info.curve); } else { info.curveType = (exEase.Type)EditorGUILayout.EnumPopup(info.curveType); } info.duration = EditorGUILayout.FloatField(info.duration); if ( EditorGUI.EndChangeCheck() ) { EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // normal EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); if ( GUILayout.Button("Sync", GUILayout.Width(50)) ) { info.normal = info.target.color; EditorUtility.SetDirty(target); } EditorGUI.BeginChangeCheck(); GUILayout.Label("Normal"); info.normal = EditorGUILayout.ColorField("",info.normal,GUILayout.Width(80)); if ( EditorGUI.EndChangeCheck() ) { EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // Properties for ( int j = 0; j < info.propInfos.Count; ++j ) { EffectInfo_Color.PropInfo propInfo = info.propInfos[j]; EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); // propInfoDeleted bool propInfoDeleted = false; if ( GUILayout.Button( styles.iconToolbarMinus, "InvisibleButton", GUILayout.Width(styles.iconToolbarMinus.width), GUILayout.Height(styles.iconToolbarMinus.height) ) ) { propInfoDeleted = true; } EditorGUI.BeginChangeCheck(); GUILayout.Label(System.Enum.GetName( typeof(EffectEventType), propInfo.type )); Color newColor = EditorGUILayout.ColorField("",propInfo.val,GUILayout.Width(80)); if ( EditorGUI.EndChangeCheck() ) { propInfo.val = newColor; EditorUtility.SetDirty(target); } if ( propInfoDeleted ) { info.propInfos.RemoveAt(j); --j; EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); } // Add Property EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); List<string> eventNameList = new List<string>(); eventNameList.Add( "Add Property" ); eventNameList.AddRange( System.Enum.GetNames(typeof(EffectEventType)) ); foreach ( EffectInfo_Color.PropInfo propInfo in info.propInfos ) { int idx = eventNameList.IndexOf( System.Enum.GetName( typeof(EffectEventType), propInfo.type ) ); if ( idx != -1 ) { eventNameList.RemoveAt(idx); } } int choice = EditorGUILayout.Popup ( 0, eventNameList.ToArray(), GUILayout.Width(100) ); if ( choice != 0 ) { EffectInfo_Color.PropInfo propInfo = new EffectInfo_Color.PropInfo(); propInfo.type = (EffectEventType)System.Enum.Parse(typeof(EffectEventType), eventNameList[choice]); propInfo.val = info.normal; info.propInfos.Add(propInfo); EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // if ( infoDeleted ) { _infos.RemoveAt(i); --i; EditorUtility.SetDirty(target); } } // new slot EditorGUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); exSpriteBase receiver = EditorGUILayout.ObjectField( null, typeof(exSpriteBase), true, GUILayout.Width(150) ) as exSpriteBase; if ( receiver != null ) { EffectInfo_Color info = new EffectInfo_Color(); info.target = receiver; _infos.Add(info); EditorUtility.SetDirty(target); } GUILayout.Label( styles.iconToolbarPlus, GUILayout.Width(20) ); EditorGUILayout.EndHorizontal(); GUILayout.EndVertical(); EditorGUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.Space(4f); GUILayout.EndHorizontal(); }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ public void AddEffect_Color( exSpriteBase _target, EffectEventType _type, exEase.Type _curveType, Color _to, float _duration ) { exUIControl ctrl = GetComponent<exUIControl>(); if ( ctrl ) { EffectInfo_Color info = new EffectInfo_Color(); info.duration = _duration; info.target = _target; info.normal = _target.color; info.curveType = _curveType; EffectInfo_Color.PropInfo propInfo = new EffectInfo_Color.PropInfo(); propInfo.type = _type; propInfo.val = _to; info.propInfos.Add(propInfo); EffectState_Color state = new EffectState_Color(); state.info = info; state.func = info.GetCurveFunction(); AddState_Color( ctrl, state ); } }