// 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. }
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(); }
public void Reset() { ReferenceNode = null; DecalNodes.Clear(); Lights.Clear(); LensFlareNodes.Clear(); SkyNodes.Clear(); FogNodes.Clear(); RenderableNodes.Clear(); }