private DisposableList <HLODBuildInfo> CreateBuildInfo() { List <GameObject> hlodTargets = ObjectUtils.HLODTargets(m_hlodComponent.gameObject); ISpaceSplitter spliter = new QuadTreeSpaceSplitter(0.0f); SpaceNode rootNode = spliter.CreateSpaceTree(m_hlodComponent.GetBounds(), 10.0f, m_hlodComponent.transform.position, hlodTargets, null); return((DisposableList <HLODBuildInfo>)m_buildInfoFunc.Invoke(null, new object[] { rootNode, 0.0f })); }
private DisposableList <HLODBuildInfo> CreateBuildInfo(HLOD hlod) { MethodInfo buildInfoFunc = typeof(HLODCreator).GetMethod("CreateBuildInfo", BindingFlags.Static | BindingFlags.NonPublic); List <GameObject> hlodTargets = ObjectUtils.HLODTargets(hlod.gameObject); ISpaceSplitter spliter = new QuadTreeSpaceSplitter(0.0f); SpaceNode rootNode = spliter.CreateSpaceTree(hlod.GetBounds(), 5.0f, hlod.transform.position, hlodTargets, null); return((DisposableList <HLODBuildInfo>)buildInfoFunc.Invoke(null, new object[] { rootNode, 0.0f })); }
public void BoundsTest() { const float EPSILON = 0.001f; // error should less than 0.1%. var bounds1 = m_hlodComponent.GetBounds(); Assert.LessOrEqual((bounds1.center - new Vector3(0.0f, 5.0f, 0.0f)).magnitude, EPSILON); Assert.LessOrEqual((bounds1.min - new Vector3(-10.5f, -5.5f, -10.5f)).magnitude, EPSILON); Assert.LessOrEqual((bounds1.max - new Vector3(10.5f, 15.5f, 10.5f)).magnitude, EPSILON); //add new object to outside of area var addObj1 = GameObject.Instantiate(m_prefab); addObj1.transform.SetParent(m_hlodRootGameObject.transform); addObj1.transform.position = new Vector3(20.0f, 0.0f, 0.0f); var bounds2 = m_hlodComponent.GetBounds(); Assert.LessOrEqual((bounds2.center - new Vector3(5.0f, 5.0f, 0.0f)).magnitude, EPSILON); Assert.LessOrEqual((bounds2.min - new Vector3(-10.5f, -10.5f, -15.5f)).magnitude, EPSILON); Assert.LessOrEqual((bounds2.max - new Vector3(20.5f, 20.5f, 15.5f)).magnitude, EPSILON); //add new object to inside of area var addObj3 = GameObject.Instantiate(m_prefab); addObj3.transform.SetParent(m_hlodRootGameObject.transform); addObj3.transform.position = new Vector3(5.0f, 0.0f, 5.0f); var bounds3 = m_hlodComponent.GetBounds(); Assert.LessOrEqual((bounds3.center - new Vector3(5.0f, 5.0f, 0.0f)).magnitude, EPSILON); Assert.LessOrEqual((bounds3.min - new Vector3(-10.5f, -10.5f, -15.5f)).magnitude, EPSILON); Assert.LessOrEqual((bounds3.max - new Vector3(20.5f, 20.5f, 15.5f)).magnitude, EPSILON); //add new empty object to ouside of area. //the bounds must not changed. var addObj4 = new GameObject(); addObj4.transform.SetParent(m_hlodRootGameObject.transform); addObj4.transform.position = new Vector3(5.0f, 0.0f, 5.0f); var bounds4 = m_hlodComponent.GetBounds(); Assert.LessOrEqual((bounds4.center - new Vector3(5.0f, 5.0f, 0.0f)).magnitude, EPSILON); Assert.LessOrEqual((bounds4.min - new Vector3(-10.5f, -10.5f, -15.5f)).magnitude, EPSILON); Assert.LessOrEqual((bounds4.max - new Vector3(20.5f, 20.5f, 15.5f)).magnitude, EPSILON); }