/////////////////////////////////////////////////////////////////////////////// // functions /////////////////////////////////////////////////////////////////////////////// // ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ void Awake() { exUIControl ctrl = GetComponent <exUIControl>(); if (ctrl) { if (scaleInfos != null) { for (int j = 0; j < scaleInfos.Count; ++j) { EffectInfo_Scale info = scaleInfos[j]; EffectState_Scale state = new EffectState_Scale(); state.info = info; state.func = info.GetCurveFunction(); AddState_Scale(ctrl, state); } } if (offsetInfos != null) { for (int j = 0; j < offsetInfos.Count; ++j) { EffectInfo_Offset info = offsetInfos[j]; EffectState_Offset state = new EffectState_Offset(); state.info = info; state.func = info.GetCurveFunction(); AddState_Offset(ctrl, state); } } if (colorInfos != null) { for (int j = 0; j < colorInfos.Count; ++j) { EffectInfo_Color info = colorInfos[j]; EffectState_Color state = new EffectState_Color(); state.info = info; state.func = info.GetCurveFunction(); AddState_Color(ctrl, state); } } } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ public void AddEffect_Scale(Transform _target, EffectEventType _type, exEase.Type _curveType, Vector3 _to, float _duration) { exUIControl ctrl = GetComponent <exUIControl>(); if (ctrl) { EffectInfo_Scale info = new EffectInfo_Scale(); info.duration = _duration; info.target = _target; info.normal = _target.localScale; info.curveType = _curveType; EffectInfo_Scale.PropInfo propInfo = new EffectInfo_Scale.PropInfo(); propInfo.type = _type; propInfo.val = _to; info.propInfos.Add(propInfo); EffectState_Scale state = new EffectState_Scale(); state.info = info; state.func = info.GetCurveFunction(); AddState_Scale(ctrl, state); } }
// ------------------------------------------------------------------ // Desc: // ------------------------------------------------------------------ protected void ScaleInfoField(List <EffectInfo_Scale> _infos) { GUILayout.BeginHorizontal(); GUILayout.Space(4f); GUILayout.BeginVertical(); // name GUILayout.Toggle(true, "Scale", "dragtab"); EditorGUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(10f)); GUILayout.BeginVertical(); // infos for (int i = 0; i < _infos.Count; ++i) { bool infoDeleted = false; EffectInfo_Scale info = _infos[i]; // target EditorGUILayout.BeginHorizontal(); // receiver EditorGUI.BeginChangeCheck(); info.target = EditorGUILayout.ObjectField(info.target, typeof(Transform), true) as Transform; 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(); float x = 0.0f; float y = 0.0f; float z = 0.0f; // normal EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); if (GUILayout.Button("Sync", GUILayout.Width(50))) { info.normal = info.target.localScale; EditorUtility.SetDirty(target); } EditorGUI.BeginChangeCheck(); GUILayout.Label("Normal"); GUILayout.Label("X", GUILayout.Width(10)); x = EditorGUILayout.FloatField("", info.normal.x, GUILayout.Width(30)); GUILayout.Label("Y", GUILayout.Width(10)); y = EditorGUILayout.FloatField("", info.normal.y, GUILayout.Width(30)); GUILayout.Label("Z", GUILayout.Width(10)); z = EditorGUILayout.FloatField("", info.normal.z, GUILayout.Width(30)); if (EditorGUI.EndChangeCheck()) { info.normal = new Vector3(x, y, z); EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // Properties for (int j = 0; j < info.propInfos.Count; ++j) { EffectInfo_Scale.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)); GUILayout.Label("X", GUILayout.Width(10)); x = EditorGUILayout.FloatField("", propInfo.val.x, GUILayout.Width(30)); GUILayout.Label("Y", GUILayout.Width(10)); y = EditorGUILayout.FloatField("", propInfo.val.y, GUILayout.Width(30)); GUILayout.Label("Z", GUILayout.Width(10)); z = EditorGUILayout.FloatField("", propInfo.val.z, GUILayout.Width(30)); if (EditorGUI.EndChangeCheck()) { propInfo.val = new Vector3(x, y, z); 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_Scale.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_Scale.PropInfo propInfo = new EffectInfo_Scale.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(); Transform receiver = EditorGUILayout.ObjectField(null, typeof(Transform), true, GUILayout.Width(150)) as Transform; if (receiver != null) { EffectInfo_Scale info = new EffectInfo_Scale(); 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: // ------------------------------------------------------------------ protected void ScaleInfoField( List<EffectInfo_Scale> _infos ) { GUILayout.BeginHorizontal(); GUILayout.Space(4f); GUILayout.BeginVertical(); // name GUILayout.Toggle( true, "Scale", "dragtab"); EditorGUILayout.BeginHorizontal("AS TextArea", GUILayout.MinHeight(10f)); GUILayout.BeginVertical(); // infos for ( int i = 0; i < _infos.Count; ++i ) { bool infoDeleted = false; EffectInfo_Scale info = _infos[i]; // target EditorGUILayout.BeginHorizontal(); // receiver EditorGUI.BeginChangeCheck(); info.target = EditorGUILayout.ObjectField( info.target, typeof(Transform), true ) as Transform; 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(); float x = 0.0f; float y = 0.0f; float z = 0.0f; // normal EditorGUILayout.BeginHorizontal(); GUILayout.Space(30); if ( GUILayout.Button("Sync", GUILayout.Width(50)) ) { info.normal = info.target.localScale; EditorUtility.SetDirty(target); } EditorGUI.BeginChangeCheck(); GUILayout.Label("Normal"); GUILayout.Label("X", GUILayout.Width(10)); x = EditorGUILayout.FloatField("",info.normal.x,GUILayout.Width(30)); GUILayout.Label("Y", GUILayout.Width(10)); y = EditorGUILayout.FloatField("",info.normal.y,GUILayout.Width(30)); GUILayout.Label("Z", GUILayout.Width(10)); z = EditorGUILayout.FloatField("",info.normal.z,GUILayout.Width(30)); if ( EditorGUI.EndChangeCheck() ) { info.normal = new Vector3( x, y, z ); EditorUtility.SetDirty(target); } EditorGUILayout.EndHorizontal(); // Properties for ( int j = 0; j < info.propInfos.Count; ++j ) { EffectInfo_Scale.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 )); GUILayout.Label("X", GUILayout.Width(10)); x = EditorGUILayout.FloatField("",propInfo.val.x,GUILayout.Width(30)); GUILayout.Label("Y", GUILayout.Width(10)); y = EditorGUILayout.FloatField("",propInfo.val.y,GUILayout.Width(30)); GUILayout.Label("Z", GUILayout.Width(10)); z = EditorGUILayout.FloatField("",propInfo.val.z,GUILayout.Width(30)); if ( EditorGUI.EndChangeCheck() ) { propInfo.val = new Vector3( x, y, z ); 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_Scale.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_Scale.PropInfo propInfo = new EffectInfo_Scale.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(); Transform receiver = EditorGUILayout.ObjectField( null, typeof(Transform), true, GUILayout.Width(150) ) as Transform; if ( receiver != null ) { EffectInfo_Scale info = new EffectInfo_Scale(); 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_Scale( Transform _target, EffectEventType _type, exEase.Type _curveType, Vector3 _to, float _duration ) { exUIControl ctrl = GetComponent<exUIControl>(); if ( ctrl ) { EffectInfo_Scale info = new EffectInfo_Scale(); info.duration = _duration; info.target = _target; info.normal = _target.localScale; info.curveType = _curveType; EffectInfo_Scale.PropInfo propInfo = new EffectInfo_Scale.PropInfo(); propInfo.type = _type; propInfo.val = _to; info.propInfos.Add(propInfo); EffectState_Scale state = new EffectState_Scale(); state.info = info; state.func = info.GetCurveFunction(); AddState_Scale( ctrl, state ); } }