void start_split(SplitBox node) { root_node = node; batch_stack.Clear(); leaf_list.Clear(); leaf_list.Add(node); now_count = 1; firstSplit = true; print("start_separate"); state = ManagerState.split; }
/// <summary> /// 分割字符 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SplitComboBox_SelectedIndexChanged(object sender, EventArgs e) { var select = SplitComboBox.SelectedValue; if (select.GetType().Name == "Int32" && (int)select == 2) { SplitBox.Show(); } else { SplitBox.Hide(); SplitBox.Text = ""; } }
private void Form1_Load(object sender, EventArgs e) { //this.WindowState = FormWindowState.Maximized; //最大化窗体 SplitBox.Hide(); var selectDic = new Dictionary <int, string>(); selectDic.Add(0, "换行符"); selectDic.Add(1, "空格"); selectDic.Add(2, "输入字符"); BindingSource bindingSource = new BindingSource(); bindingSource.DataSource = selectDic; SplitComboBox.DataSource = bindingSource; SplitComboBox.ValueMember = "Key"; SplitComboBox.DisplayMember = "Value"; BeforeTextBox.Hide(); BackTextBox.Hide(); DeleteTextBox.Hide(); RegexTextBox.Hide(); }
public void do_split(List<SplitBox> leaf_list) { //direction = Dir.Z; direction = (Dir)Mathf.Floor(Random.value * 3.0f); //split_factor = 0.2f; split_factor = 0.1f*(Mathf.Floor(Random.value * 9.0f)+1.0f); float remaining = 1.0f - split_factor; //print("split_factor=" + split_factor); Vector3 position_left =Vector3.zero; Vector3 position_right = Vector3.zero; if (direction == Dir.X) { float len = transform.localScale.x; float h_len = 0.5f * len; position_left = transform.position + (-h_len + h_len * split_factor)* transform.right; position_right = transform.position + (h_len - h_len * remaining) *transform.right; } else if (direction == Dir.Y) { float len = transform.localScale.y; float h_len = 0.5f * len; position_left = transform.position + (-h_len + h_len * split_factor) * transform.up; position_right = transform.position + (h_len - h_len * remaining) * transform.up; } else if (direction == Dir.Z) { float len = transform.localScale.z; float h_len = 0.5f * len; position_left = transform.position + (-h_len + h_len * split_factor) * transform.forward; position_right = transform.position + (h_len - h_len * remaining) * transform.forward; } left = (SplitBox)Instantiate(this, position_left, transform.rotation); right = (SplitBox)Instantiate(this, position_right, transform.rotation); left.parent = this; right.parent = this; left.origin = position_left; right.origin = position_right; left.can_click = false; right.can_click = false; float split_distance = Random.value * 5.0f; if (direction == Dir.X) { left.target = position_left- split_distance* transform.right; right.target = position_right + split_distance * transform.right; } else if (direction == Dir.Y) { left.target = position_left - split_distance * transform.up; right.target = position_right + split_distance * transform.up; } else if (direction == Dir.Z) { left.target = position_left - split_distance * transform.forward; right.target = position_right + split_distance * transform.forward; } leaf_list.Add(left); leaf_list.Add(right); if (direction == Dir.X) { float len = transform.localScale.x; left.transform.localScale = new Vector3(len * split_factor, transform.localScale.y, transform.localScale.z); right.transform.localScale = new Vector3(len * remaining, transform.localScale.y, transform.localScale.z); } else if (direction == Dir.Y) { float len = transform.localScale.y; left.transform.localScale = new Vector3(transform.localScale.x, len * split_factor , transform.localScale.z); right.transform.localScale = new Vector3(transform.localScale.x, len * remaining, transform.localScale.z); } else if(direction == Dir.Z) { float len = transform.localScale.z; left.transform.localScale = new Vector3( transform.localScale.x, transform.localScale.y, len * split_factor); right.transform.localScale = new Vector3(transform.localScale.x, transform.localScale.y, len * remaining); } this.render.enabled = false; }
void start_separate(SplitBox node) { root_node = node; batch_stack.Clear(); leaf_list.Clear(); leaf_list.Add(node); now_count = 1; print("start_separate"); do_separate(true); }
public void do_split(List <SplitBox> leaf_list) { int dir = Random.Range(0, 3); direction = (Dir)dir; split_factor = Mathf.Max(0.1f, Random.value); float remaining = 1.0f - split_factor; Vector3 position_left = Vector3.zero; Vector3 position_right = Vector3.zero; //when split_factor=0.2 //__|________ if (direction == Dir.X) { float len = transform.localScale.x; float h_len = 0.5f * len; position_left = transform.position + (-h_len + h_len * split_factor) * transform.right; position_right = transform.position + (h_len - h_len * remaining) * transform.right; } else if (direction == Dir.Y) { float len = transform.localScale.y; float h_len = 0.5f * len; position_left = transform.position + (-h_len + h_len * split_factor) * transform.up; position_right = transform.position + (h_len - h_len * remaining) * transform.up; } else if (direction == Dir.Z) { float len = transform.localScale.z; float h_len = 0.5f * len; position_left = transform.position + (-h_len + h_len * split_factor) * transform.forward; position_right = transform.position + (h_len - h_len * remaining) * transform.forward; } left = (SplitBox)Instantiate(this, position_left, transform.rotation); right = (SplitBox)Instantiate(this, position_right, transform.rotation); left.parent = this; right.parent = this; left.origin = position_left; right.origin = position_right; left.can_click = false; right.can_click = false; float split_distance = Random.value * 5.0f; if (direction == Dir.X) { left.target = position_left - split_distance * transform.right; right.target = position_right + split_distance * transform.right; } else if (direction == Dir.Y) { left.target = position_left - split_distance * transform.up; right.target = position_right + split_distance * transform.up; } else if (direction == Dir.Z) { left.target = position_left - split_distance * transform.forward; right.target = position_right + split_distance * transform.forward; } leaf_list.Add(left); leaf_list.Add(right); if (direction == Dir.X) { float len = transform.localScale.x; left.transform.localScale = new Vector3(len * split_factor, transform.localScale.y, transform.localScale.z); right.transform.localScale = new Vector3(len * remaining, transform.localScale.y, transform.localScale.z); } else if (direction == Dir.Y) { float len = transform.localScale.y; left.transform.localScale = new Vector3(transform.localScale.x, len * split_factor, transform.localScale.z); right.transform.localScale = new Vector3(transform.localScale.x, len * remaining, transform.localScale.z); } else if (direction == Dir.Z) { float len = transform.localScale.z; left.transform.localScale = new Vector3(transform.localScale.x, transform.localScale.y, len * split_factor); right.transform.localScale = new Vector3(transform.localScale.x, transform.localScale.y, len * remaining); } this.render.enabled = false; }