Exemplo n.º 1
0
    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;
    }
Exemplo n.º 2
0
        /// <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 = "";
            }
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
    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;
    }
Exemplo n.º 5
0
    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);
    }
Exemplo n.º 6
0
    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;
    }