Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- internal static BSPTree Split(int i_NumberOfIterations, RectInt i_Container)
- {
- var t_node = new BSPTree(i_Container);
- if (i_NumberOfIterations == 0) return t_node;
- var splittedContainers = SplitContainer(i_Container);
- t_node.m_left = Split(i_NumberOfIterations - 1, splittedContainers[0]);
- t_node.m_right = Split(i_NumberOfIterations - 1, splittedContainers[1]);
- return t_node;
- }
- private static RectInt[] SplitContainer(RectInt i_container)
- {
- RectInt t_c1, t_c2;
- if (UnityEngine.Random.Range(0f, 1f) > 0.5f)
- {
- // vertical
- t_c1 = new RectInt(i_container.x, i_container.y, i_container.width, (int)UnityEngine.Random.Range(i_container.height * 0.3f, i_container.height * 0.5f));
- t_c2 = new RectInt(i_container.x, i_container.y + t_c1.height, i_container.width, i_container.height - t_c1.height);
- }
- else
- {
- // horizontal
- t_c1 = new RectInt(i_container.x, i_container.y, (int)UnityEngine.Random.Range(i_container.width * 0.3f, i_container.width * 0.5f), i_container.height);
- t_c2 = new RectInt(i_container.x + t_c1.width, i_container.y, i_container.width - t_c1.width, i_container.height);
- }
- return new RectInt[] { t_c1, t_c2 };
- }
Advertisement
Add Comment
Please, Sign In to add comment