Beispiel #1
0
        private void updateCurrentVoxels()
        {
            currentVoxels.Clear();
            //var fakes = FakeChunkData.Stairs(vGenConfig.ChunkSize);
            //int offset = (int)(Time.time / 3f) % 5 + 1;

            //for(int i=0; i<fakes.Length; ++i)
            //{
            //    if(i % offset == 0)
            //    {
            //        currentVoxels.Add(fakes[i]);
            //    }
            //}

            foreach (Ray ray in CamGeometry.NearClipRays(Camera.main, 5))
            {
                uint leaf;

                if (tree.GetFirstRayhit(ray, out leaf, out debugTraversal, out rayStepsDebug))
                {
                    currentVoxels.Add(leaf);
                }
            }
        }
Beispiel #2
0
        private void showTraversals()
        {
            showPoints.Clear();
            int counter = 0;

            foreach (var ray in GetSomeRays()) // TestEnterExitVectors.SomeRandomRays(1, 22))
            {
                List <VoxelOctree <Vector3> .DBUGColorBounds> traversal;
                List <Ray3f> raySteps;
                Vector3      leaf;
                string       info = string.Empty;
                Vertex       a, b;
                if (tree.GetFirstRayhit(ray, out leaf, out traversal, out raySteps))
                {
                    Debug.Log("got a hit");
                    a = new Vertex()
                    {
                        pos = (Vector3)ray.origin - Vector3.up, color = Color.red
                    };
                    b = new Vertex()
                    {
                        pos = (Vector3)(ray.origin + ray.direction * ray.direction.Dot((Vector3f)leaf - ray.origin)) - Vector3.up, color = Color.red
                    };

                    marker.transform.SetParent(transform);
                    marker.transform.localPosition = leaf;
                }
                else
                {
                    Debug.Log("no hit");
                    a = new Vertex()
                    {
                        pos = (Vector3)ray.origin, color = Color.cyan
                    };
                    b = new Vertex()
                    {
                        pos = (Vector3)ray.positionAt(30f), color = Color.cyan
                    };
                }
                showPoints.Add(a); showPoints.Add(b);
                showPoints.Add(new Vertex()
                {
                    pos = a.pos, color = Color.clear
                });


                StringBuilder sb    = new StringBuilder();
                int           index = 0;
                foreach (var bou in traversal)
                {
                    if (bou.validVertex)
                    {
                        if (index++ == 0)
                        {
                            showPoints.Add(new Vertex()
                            {
                                pos = bou.vertex.pos, color = Color.clear
                            });
                        }
                        showPoints.Add(bou.vertex);
                    }
                    sb.Append(string.Format("{0} | {1} ", bou.text, Environment.NewLine));
                }

                lsr.Apply(showPoints.ToArray());
                dText.text = sb.ToString();



                //Gizmos.DrawSphere(ray.origin, .3f);
                counter++;
            }
            //foreach (var node in tree.GetAllNonNullNodes())
            //{
            //    if (node.isLeaf)
            //    {
            //        Gizmos.color = Color.white;
            //        Gizmos.DrawWireCube(node.data, tree.LeafSize() * .9f);
            //    }
            //}
        }