Files
2026-02-21 16:45:37 +08:00

171 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class tree_class
{
public bool foldout;
public bool interface_display;
public int prototypeindex;
public int placed;
[NonSerialized]
public tree_class placed_reference;
public string swap_text;
public bool swap_select;
public bool copy_select;
public Color color_tree;
public precolor_range_class precolor_range;
public bool scale_foldout;
public bool link_start;
public bool link_end;
public float width_start;
public float width_end;
public float height_start;
public float height_end;
public float height;
public float unlink;
public bool random_position;
public bool distance_foldout;
public Vector3 min_distance;
public distance_level_enum distance_level;
public distance_mode_enum distance_mode;
public rotation_mode_enum distance_rotation_mode;
public bool distance_include_scale;
public bool distance_include_scale_group;
public bool data_foldout;
public int mesh_length;
public int mesh_triangles;
public int mesh_combine;
public Vector3 mesh_size;
public List<distance_class> objects_placed;
public prefilter_class prefilter;
public bool raycast;
public int layerMask;
public float ray_length;
public float cast_height;
public float ray_radius;
public Vector3 ray_direction;
public raycast_mode_enum raycast_mode;
public tree_class(terraincomposer_save script, bool new_filter)
{
interface_display = true;
swap_text = "S";
color_tree = new Color(1f, 1f, 1f, 1f);
precolor_range = new precolor_range_class(1, false);
link_start = true;
link_end = true;
width_start = 1f;
width_end = 2.5f;
height_start = 1f;
height_end = 2.5f;
unlink = 0.25f;
random_position = true;
distance_include_scale = true;
distance_include_scale_group = true;
objects_placed = new List<distance_class>();
prefilter = new prefilter_class();
ray_length = 20f;
cast_height = 20f;
ray_radius = 1f;
ray_direction = new Vector3(0f, -1f, 0f);
if (new_filter)
{
script.add_filter(0, prefilter);
script.filter[script.filter.Count - 1].type = condition_type_enum.Random;
script.add_subfilter(0, script.filter[script.filter.Count - 1].presubfilter);
script.subfilter[script.subfilter.Count - 1].type = condition_type_enum.Random;
script.subfilter[script.subfilter.Count - 1].from_tree = true;
}
precolor_range.color_range[0].color_start = new Color(0.75f, 0.75f, 0.75f);
precolor_range.color_range[0].color_end = new Color(1f, 1f, 1f);
}
public virtual void count_mesh(GameObject object1)
{
if ((bool)object1)
{
MeshFilter meshFilter = (MeshFilter)object1.GetComponent(typeof(MeshFilter));
Mesh mesh = null;
Vector3[] array = null;
int[] array2 = null;
if ((bool)meshFilter)
{
mesh = meshFilter.sharedMesh;
if ((bool)mesh)
{
array = mesh.vertices;
mesh_size = mesh.bounds.size;
array2 = mesh.triangles;
if (array != null)
{
mesh_length = array.Length;
mesh_combine = Mathf.FloorToInt(64000 / mesh_length);
mesh_triangles = array2.Length;
}
else
{
Debug.Log("vertices not found, cannot display data");
}
}
else
{
Debug.Log("mesh not found, cannot display data");
}
}
else
{
Debug.Log("meshfilter not found, cannot display data");
}
}
else
{
mesh_combine = 0;
mesh_size = new Vector3(0f, 0f, 0f);
mesh_length = 0;
mesh_triangles = 0;
}
}
}