using System; using System.Collections.Generic; using UnityEngine; [Serializable] public class tree_output_class { public bool active; public Color color_tree; public bool foldout; public float strength; public bool interface_display; public bool icon_display; public bool trees_active; public bool trees_foldout; public bool terrain_tree_assigned; public string tree_text; public float scale; public List tree; public value_class tree_value; public int placed; [NonSerialized] public tree_output_class placed_reference; public tree_output_class() { color_tree = new Color(2f, 2f, 2f, 1f); foldout = true; strength = 1f; interface_display = true; icon_display = true; trees_active = true; trees_foldout = true; tree_text = "Tree:"; scale = 1f; tree = new List(); tree_value = new value_class(); } public virtual void set_scale(tree_class tree1, int tree_number, bool all) { for (int i = 0; i < tree.Count; i++) { if (tree_value.active[i] || all) { if (i != tree_number) { tree[i].link_start = tree1.link_start; tree[i].link_end = tree1.link_end; tree[i].width_start = tree1.width_start; tree[i].width_end = tree1.width_end; tree[i].height_start = tree1.height_start; tree[i].height_end = tree1.height_end; tree[i].unlink = tree1.unlink; tree[i].random_position = tree1.random_position; tree[i].height = tree1.height; tree[i].raycast = tree1.raycast; tree[i].layerMask = tree1.layerMask; tree[i].ray_length = tree1.ray_length; tree[i].cast_height = tree1.cast_height; tree[i].ray_radius = tree1.ray_radius; tree[i].ray_direction = tree1.ray_direction; tree[i].raycast_mode = tree1.raycast_mode; } if (!(tree[i].color_tree[0] >= 1.5f)) { tree[i].color_tree = tree[i].color_tree + new Color(0.5f, 0.5f, 0.5f, 0f); } } } } public virtual void set_distance(tree_class tree1, int tree_number, bool all) { for (int i = 0; i < tree.Count; i++) { if (tree_value.active[i] || all) { if (i != tree_number) { tree[i].min_distance = tree1.min_distance; tree[i].distance_level = tree1.distance_level; tree[i].distance_mode = tree1.distance_mode; tree[i].distance_rotation_mode = tree1.distance_rotation_mode; tree[i].distance_include_scale = tree1.distance_include_scale; tree[i].distance_include_scale_group = tree1.distance_include_scale_group; } if (!(tree[i].color_tree[0] >= 1.5f)) { tree[i].color_tree = tree[i].color_tree + new Color(0.5f, 0.5f, 0.5f, 0f); } } } } public virtual void add_tree(int tree_number, terraincomposer_save script, bool new_filter) { tree.Insert(tree_number, new tree_class(script, new_filter)); tree_value.add_value(tree_number, 50f); set_tree_text(); } public virtual void erase_tree(int tree_number, terraincomposer_save script) { if (tree.Count > 0) { script.erase_filters(tree[tree_number].prefilter); tree.RemoveAt(tree_number); tree_value.erase_value(tree_number); set_tree_text(); } } public virtual void clear_tree(terraincomposer_save script) { int count = tree.Count; for (int i = 0; i < count; i++) { erase_tree(tree.Count - 1, script); } } public virtual void swap_tree(int tree_number, int tree_number2) { if (tree_number2 > -1 && tree_number2 < tree.Count) { tree_class value = tree[tree_number]; float num = tree_value.value[tree_number]; tree[tree_number] = tree[tree_number2]; tree[tree_number2] = value; if (!(tree[tree_number].color_tree[0] >= 1.5f)) { tree[tree_number].color_tree = tree[tree_number].color_tree + new Color(0.5f, 0.5f, 0.5f, 0f); } if (!(tree[tree_number2].color_tree[0] >= 1.5f)) { tree[tree_number2].color_tree = tree[tree_number2].color_tree + new Color(0.5f, 0.5f, 0.5f, 0f); } tree_value.swap_value(tree_number, tree_number2); } } public virtual void set_tree_text() { if (tree.Count > 1) { tree_text = "Trees(" + tree.Count + ")"; } else { tree_text = "Tree(" + tree.Count + ")"; } } }