예제 #1
0
        // Sorts scene node into correct list.
        protected void AddNode(SceneNode node)
        {
            if (node is DecalNode)
            {
                DecalNodes.Add(node);
            }
            else if (node is LightNode)
            {
                Lights.Add(node);
            }
            else if (node is LensFlareNode)
            {
                LensFlareNodes.Add(node);
            }
            else if (node is SkyNode)
            {
                SkyNodes.Add(node);
            }
            else if (node is FogNode)
            {
                FogNodes.Add(node);
            }
            else if (node.IsRenderable)
            {
                RenderableNodes.Add(node);
            }

            // Unsupported types are simply ignored.
        }
예제 #2
0
파일: Form2.cs 프로젝트: togoetha/so-swirly
        private void btnSolveDist_Click(object sender, EventArgs e)
        {
            var start       = DateTime.Now;
            var fogClusters = FogNodes.ToDictionary(fn => fn, fn => new Cluster()
            {
                FogNode = fn
            });

            foreach (var edgeNode in EdgeNodes)
            {
                var  minDist = 10000d;
                Node closest = null;
                foreach (var fc in fogClusters)
                {
                    var dist = Math.Sqrt(Math.Pow(fc.Key.X - edgeNode.X, 2) + Math.Pow(fc.Key.Y - edgeNode.Y, 2));
                    if (dist < minDist)
                    {
                        closest = fc.Key;
                        minDist = dist;
                    }
                }
                fogClusters[closest].Nodes.Add(edgeNode);
            }
            Clusters = fogClusters.Values.ToList();
            var time = (int)(DateTime.Now - start).TotalMilliseconds;

            UpdatePingStats(time);
            UpdateDraw();
        }
예제 #3
0
        public void Reset()
        {
            ReferenceNode = null;

            DecalNodes.Clear();
            Lights.Clear();
            LensFlareNodes.Clear();
            SkyNodes.Clear();
            FogNodes.Clear();
            RenderableNodes.Clear();
        }