private static void DrawEnvironmentSurfaceSettings(ICECreatureControl _control) { ICEEditorLayout.BeginHorizontal(); _control.Creature.Environment.SurfaceHandler.Enabled = ICEEditorLayout.ToggleLeft("Surfaces", "", _control.Creature.Environment.SurfaceHandler.Enabled, true); if (GUILayout.Button(new GUIContent("ADD", "add a new surface rule"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Environment.SurfaceHandler.Surfaces.Add(new SurfaceDataObject()); } if (GUILayout.Button(new GUIContent("RESET", "removes all surface rules"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Environment.SurfaceHandler.Surfaces.Clear(); } ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE); if (_control.Creature.Environment.SurfaceHandler.Surfaces.Count == 0) { _control.Creature.Environment.SurfaceHandler.Enabled = false; } EditorGUI.BeginDisabledGroup(_control.Creature.Environment.SurfaceHandler.Enabled == false); EditorGUI.indentLevel++; for (int i = 0; i < _control.Creature.Environment.SurfaceHandler.Surfaces.Count; ++i) { // HEADER BEGIN SurfaceDataObject _surface = _control.Creature.Environment.SurfaceHandler.Surfaces[i]; if (_surface.Name == "") { _surface.Name = "Surface Rule #" + (i + 1); } ICEEditorLayout.BeginHorizontal(); _surface.Foldout = ICEEditorLayout.Foldout(_surface.Foldout, _surface.Name); _surface.Enabled = ICEEditorLayout.ButtonCheck("ACTIVE", "activates/deactivates the rule", _surface.Enabled, ICEEditorStyle.ButtonMiddle); if (GUILayout.Button(new GUIContent("REMOVE", "removes the selected surface rule"), ICEEditorStyle.ButtonMiddle)) { _control.Creature.Environment.SurfaceHandler.Surfaces.RemoveAt(i); --i; } ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE_RULE); // HEADER END // CONTENT if (_surface.Foldout) { EditorGUI.BeginDisabledGroup(_surface.Enabled == false); ICEEditorLayout.BeginHorizontal(); _surface.Name = ICEEditorLayout.Text("Name", "", _surface.Name); if (GUILayout.Button(new GUIContent("CLR", ""), ICEEditorStyle.CMDButtonDouble)) { _surface.Name = ""; } ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE_RULE_NAME); _surface.Interval = ICEEditorLayout.DefaultSlider("Interval", "", _surface.Interval, 0.25f, 0, 30, 1, Info.ENVIROMENT_SURFACE_RULE_INTERVAL); //ICEEditorStyle.SplitterByIndent( EditorGUI.indentLevel + 1 ); DrawEnvironmentTextures(_surface); ICEEditorLayout.Label("Procedures", true, Info.ENVIROMENT_SURFACE_RULE_PROCEDURES); EditorGUI.indentLevel++; EditorGUI.BeginDisabledGroup(_surface.Textures.Count == 0); _surface.Audio = EditorSharedTools.DrawSharedAudio(_surface.Audio, Info.ENVIROMENT_SURFACE_AUDIO); _surface.Effect = EditorSharedTools.DrawSharedEffect(_surface.Effect, Info.ENVIROMENT_SURFACE_EFFECT); _surface.Influences = EditorSharedTools.DrawSharedInfluences(_surface.Influences, Info.ENVIROMENT_SURFACE_INFLUENCES); EditorGUI.EndDisabledGroup(); EditorGUI.indentLevel--; EditorGUILayout.Separator(); EditorGUI.EndDisabledGroup(); ICEEditorStyle.SplitterByIndent(EditorGUI.indentLevel + 1); } } EditorGUI.indentLevel--; EditorGUI.EndDisabledGroup(); }
private static void DrawEnvironmentSurfaceSettings(ICECreatureControl _control) { ICEEditorLayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup(_control.Creature.Environment.SurfaceHandler.Enabled == false); WorldObjectEditor.DrawObjectHeaderLine(ref _control.Creature.Environment.SurfaceHandler.Enabled, ref _control.Creature.Environment.SurfaceHandler.Foldout, EditorHeaderType.FOLDOUT_BOLD, "Surfaces", ""); EditorGUI.EndDisabledGroup(); if (ICEEditorLayout.AddButton("Adds a new surface rule")) { _control.Creature.Environment.SurfaceHandler.Surfaces.Add(new SurfaceDataObject()); _control.Creature.Environment.SurfaceHandler.Enabled = true; } if (ICEEditorLayout.SaveButton("Saves surface data to file")) { CreatureEditorIO.SaveEnvironmentSurfaceToFile(_control.Creature.Environment.SurfaceHandler, _control.gameObject.name); } if (ICEEditorLayout.LoadButton("Loads surface data to file")) { _control.Creature.Environment.SurfaceHandler = CreatureEditorIO.LoadEnvironmentSurfaceFromFile(_control.Creature.Environment.SurfaceHandler); } if (ICEEditorLayout.ResetButton("Resets the surface data")) { _control.Creature.Environment.SurfaceHandler.Reset(); } _control.Creature.Environment.SurfaceHandler.Enabled = ICEEditorLayout.EnableButton(_control.Creature.Environment.SurfaceHandler.Enabled); ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE); if (_control.Creature.Environment.SurfaceHandler.Enabled == true && _control.Creature.Environment.SurfaceHandler.Surfaces.Count == 0) { _control.Creature.Environment.SurfaceHandler.Surfaces.Add(new SurfaceDataObject()); _control.Creature.Environment.SurfaceHandler.Foldout = true; } // CONTENT BEGIN if (WorldObjectEditor.BeginObjectContentOrReturn(EditorHeaderType.FOLDOUT_BOLD, _control.Creature.Environment.SurfaceHandler)) { return; } _control.Creature.Environment.SurfaceHandler.GroundScanInterval = ICEEditorLayout.MaxDefaultSlider("Ground Scan Interval (secs.)", "Defines the interval for the ground check", _control.Creature.Environment.SurfaceHandler.GroundScanInterval, 0.25f, 0, ref _control.Creature.Environment.SurfaceHandler.GroundScanIntervalMaximum, 1, Info.ENVIROMENT_SURFACE_SCAN_INTERVAL); for (int i = 0; i < _control.Creature.Environment.SurfaceHandler.Surfaces.Count; ++i) { // HEADER BEGIN SurfaceDataObject _surface = _control.Creature.Environment.SurfaceHandler.Surfaces[i]; if (_surface.Name == "") { _surface.Name = "Surface Rule #" + (i + 1); } ICEEditorLayout.BeginHorizontal(); EditorGUI.BeginDisabledGroup(_surface.Enabled == false); _surface.Foldout = ICEEditorLayout.Foldout(_surface.Foldout, _surface.Name); EditorGUI.EndDisabledGroup(); if (ICEEditorLayout.ListDeleteButton <SurfaceDataObject>(_control.Creature.Environment.SurfaceHandler.Surfaces, _surface, "Removes the selected surface rule")) { if (_control.Creature.Environment.SurfaceHandler.Surfaces.Count == 0) { _control.Creature.Environment.SurfaceHandler.Enabled = false; } return; } GUILayout.Space(5); if (ICEEditorLayout.ListUpDownButtons <SurfaceDataObject>(_control.Creature.Environment.SurfaceHandler.Surfaces, i)) { return; } _surface.Enabled = ICEEditorLayout.EnableButton("Activates/deactivates the the selected surfaces rule", _surface.Enabled); ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE_RULE); // HEADER END if (_surface.Foldout) { EditorGUI.BeginDisabledGroup(_surface.Enabled == false); ICEEditorLayout.BeginHorizontal(); _surface.Name = ICEEditorLayout.Text("Name", "", _surface.Name); if (ICEEditorLayout.ResetButtonSmall()) { _surface.Name = ""; } ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE_RULE_NAME); //_surface.Interval = ICEEditorLayout.DefaultSlider( "Interval", "", _surface.Interval, 0.005f, 0, 30, 1, Info.ENVIROMENT_SURFACE_RULE_INTERVAL ); //ICEEditorStyle.SplitterByIndent( EditorGUI.indentLevel + 1 ); DrawEnvironmentTextures(_surface); ICEEditorLayout.Label("Procedures", true, Info.ENVIROMENT_SURFACE_RULE_PROCEDURES); EditorGUI.indentLevel++; EditorGUI.BeginDisabledGroup(_surface.Textures.Count == 0); _surface.UseBehaviourModeKey = ICEEditorLayout.Toggle("Behaviour", "", _surface.UseBehaviourModeKey, Info.ENVIROMENT_SURFACE_BEHAVIOUR); if (_surface.UseBehaviourModeKey) { EditorGUI.indentLevel++; _surface.BehaviourModeKey = BehaviourEditor.BehaviourSelect(_control, "Behaviour", "Reaction to this impact", _surface.BehaviourModeKey, "SURFACE_" + _surface.Name.ToUpper(), Info.ENVIROMENT_SURFACE_BEHAVIOUR); EditorGUI.indentLevel--; } EditorHeaderType _header = EditorHeaderType.TOGGLE; CreatureObjectEditor.DrawInfluenceObject(_surface.Influences, _header, _control.Creature.Status.UseAdvanced, _control.Creature.Status.InitialDurabilityMax, Info.ENVIROMENT_SURFACE_INFLUENCES); CreatureObjectEditor.DrawFootstepAudioObject(_surface.Footsteps, _header, Info.ENVIROMENT_SURFACE_AUDIO); CreatureObjectEditor.DrawAudioObject(_surface.Audio, _header, Info.ENVIROMENT_SURFACE_AUDIO); CreatureObjectEditor.DrawEffectObject(_control, _surface.Effect, _header, Info.ENVIROMENT_SURFACE_EFFECT); EditorGUI.EndDisabledGroup(); EditorGUI.indentLevel--; EditorGUILayout.Separator(); EditorGUI.EndDisabledGroup(); ICEEditorStyle.SplitterByIndent(EditorGUI.indentLevel + 1); } } ICEEditorLayout.DrawListAddLine <SurfaceDataObject>(_control.Creature.Environment.SurfaceHandler.Surfaces, new SurfaceDataObject(), false, "Add Surface Rule"); WorldObjectEditor.EndObjectContent(); // CONTENT END }
private static void DrawEnvironmentTextures(SurfaceDataObject _environment) { if (_environment == null) { return; } ICEEditorLayout.BeginHorizontal(); ICEEditorLayout.Label("Trigger Textures", true); if (GUILayout.Button(new GUIContent("ADD", "Add a texture"), ICEEditorStyle.ButtonMiddle)) { _environment.Textures.Add(new Texture()); } ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE_RULE_TEXTURES); if (_environment.Textures != null && _environment.Textures.Count > 0) { int _width = 90; int _tolerance_space = 50 + (EditorGUI.indentLevel * 15) + _width; int _inspector_width = Screen.width - _tolerance_space; int _textures_width = 0; int _max_count = 0; int _counter = 0; if (_inspector_width < 120) { _max_count = 3; } for (int i = 0; i < _environment.Textures.Count; i++) { if (_counter == 0) { ICEEditorLayout.BeginHorizontal(); GUILayout.Space(EditorGUI.indentLevel * 15); } int _indent = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; GUILayout.BeginVertical("box", GUILayout.MinWidth(_width), GUILayout.MaxWidth(_width), GUILayout.MinHeight(90)); _environment.Textures[i] = (Texture)EditorGUILayout.ObjectField(_environment.Textures[i], typeof(Texture), false, GUILayout.Height(75)); if (GUILayout.Button("DELETE")) { _environment.Textures.RemoveAt(i); --i; } GUILayout.EndVertical(); EditorGUI.indentLevel = _indent; _counter++; _textures_width = _counter * _width; if (_textures_width > _inspector_width || _counter == _max_count || i == _environment.Textures.Count - 1) { ICEEditorLayout.EndHorizontal(); EditorGUILayout.Separator(); _counter = 0; } } } if (_environment.Textures.Count == 0) { EditorGUILayout.HelpBox("No textures assigned. Press ADD to assign a texture!", MessageType.Info); } EditorGUILayout.Separator(); }
private static void DrawEnvironmentTextures(SurfaceDataObject _environment) { if (_environment == null) { return; } ICEEditorLayout.BeginHorizontal(); ICEEditorLayout.Label("Trigger Textures", true); if (ICEEditorLayout.AddButton("Add a texture")) { _environment.Textures.Add(new TextureDataObject()); } ICEEditorLayout.EndHorizontal(Info.ENVIROMENT_SURFACE_RULE_TEXTURES); if (_environment.Textures.Count > 0) { int _width = 90; int _tolerance_space = 50 + (EditorGUI.indentLevel * 15) + _width; int _inspector_width = Screen.width - _tolerance_space; int _textures_width = 0; int _max_count = 0; int _counter = 0; if (_inspector_width < 120) { _max_count = 3; } int _i = 0; //for( int i = 0; i < _environment.Textures.Count; i++ ) foreach (TextureDataObject _data in _environment.Textures) { //TextureDataObject _data = _environment.Textures[i]; if (_data == null) { continue; } /* * if( _data.Image == null && ! string.IsNullOrEmpty( _data.FilePath ) ) * _data.Image = (Texture)AssetDatabase.LoadAssetAtPath<Texture>( _data.FilePath ); */ if (_counter == 0) { ICEEditorLayout.BeginHorizontal(); GUILayout.Space(EditorGUI.indentLevel * 15); } int _indent = EditorGUI.indentLevel; EditorGUI.indentLevel = 0; GUILayout.BeginVertical("BOX", GUILayout.MinWidth(_width), GUILayout.MaxWidth(_width), GUILayout.MinHeight(90)); _data.Image = (Texture)EditorGUILayout.ObjectField(_data.Image, typeof(Texture), false, GUILayout.Height(75)); /* * if( _data.Image != null ) * _data.FilePath = AssetDatabase.GetAssetPath( _data.Image ); */ if (GUILayout.Button("DELETE")) { _environment.Textures.RemoveAt(_i); return; } GUILayout.EndVertical(); EditorGUI.indentLevel = _indent; _counter++; _textures_width = _counter * _width; if (_textures_width > _inspector_width || _counter == _max_count || _i == _environment.Textures.Count - 1) { ICEEditorLayout.EndHorizontal(); EditorGUILayout.Separator(); _counter = 0; } _i++; } } if (_environment.Textures.Count == 0) { EditorGUILayout.HelpBox("No textures assigned. Press ADD to assign a texture!", MessageType.Info); } EditorGUILayout.Separator(); }