public NodeGraph(ICalculationEngine calculationEngine, VertexConstructor vertexConstructor) : base() { foreach (var n in calculationEngine.Nodes) { var vertex = vertexConstructor.Invoke(n); AddVertex(vertex); if (n.Status == NodeStatus.Uninitialized) { n.Changed += (sender, e) => { if (calculationEngine.Nodes.All(node => node.Status != NodeStatus.Uninitialized)) { OnInitialized(EventArgs.Empty); } }; } } foreach (var n in calculationEngine.Nodes) { foreach (var d in n.GetDependentNodes()) { var edge = new NodeEdge(GetVertex(d.Id), GetVertex(n.Id)); AddEdge(edge); } } }
protected override unsafe TransformedColoredTextured[] GetMesh(LandTile tile, Texture tex) { TransformedColoredTextured[] transformedColoredTexturedArray = VertexConstructor.Create(4); fixed(TransformedColoredTextured *transformedColoredTexturedPtr = transformedColoredTexturedArray) { float num1 = -0.5f; float num2 = (float)((int)tile.Z * -4) - 0.5f; transformedColoredTexturedPtr->X = transformedColoredTexturedPtr[1].X = num1 + (float)tex.Width; transformedColoredTexturedPtr->Y = transformedColoredTexturedPtr[2].Y = num2 + (float)tex.Height; transformedColoredTexturedPtr[1].Y = transformedColoredTexturedPtr[3].Y = num2; transformedColoredTexturedPtr[2].X = transformedColoredTexturedPtr[3].X = num1; float maxTu = tex.MaxTU; float maxTv = tex.MaxTV; transformedColoredTexturedPtr->Tv = maxTv; transformedColoredTexturedPtr->Tu = maxTu; transformedColoredTexturedPtr[1].Tu = maxTu; transformedColoredTexturedPtr[2].Tv = maxTv; } return(transformedColoredTexturedArray); }