Esempio n. 1
0
        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 }));
        }
Esempio n. 3
0
        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);
        }