public void PushOutline(cakeslice.Outline.Colour colour) { outline.enabled = true; outline.colour = colour; outlines.Push(colour); if (outlines.Count == 1 && flashRoutine != null) { flashStart = Time.time - 2 * flashPeriod / 3; } }
private IEnumerator WaitThenOutlineChain(cakeslice.Outline.Colour colour) { if (nodes.Count == 0) { yield break; } // if calculating then we could potentially try to outline inactive or destroyed nodes while (isCalculatingAsync) { yield return(null); } foreach (int idx in trophicSolver.MaxChainIndices) { nodes[idx].PushOutline(colour); toUnoutline.Add(() => nodes[idx].PopOutline()); } }
private IEnumerator WaitThenOutlineLoop(cakeslice.Outline.Colour colour) { if (!FindLoops || loopSolver.MaxLoop == 0) { yield break; } // if calculating then we could potentially try to outline inactive or destroyed nodes while (isCalculatingAsync) { yield return(null); } for (int i = 0; i < loopSolver.MaxLoop; i++) { int src = loopSolver.MaxLoopIndices[i]; int tgt = loopSolver.MaxLoopIndices[(i + 1) % loopSolver.MaxLoop]; var loopNode = nodes[src]; var loopLink = links[src, tgt]; loopNode.PushOutline(colour); loopLink.PushOutline(colour); toUnoutline.Add(() => loopNode.PopOutline()); toUnoutline.Add(() => loopLink.PopOutline()); } }
public void PushOutline(cakeslice.Outline.Colour colour) { outline.enabled = true; outline.colour = colour; outlines.Push(colour); }
public void OutlineLoop(cakeslice.Outline.Colour colour) { Assert.IsTrue(toUnoutline.Count == 0, "previous outline not undone"); StartCoroutine(WaitThenOutlineLoop(colour)); }
public void OutlineLink(int src, int tgt, cakeslice.Outline.Colour colour) { links[src, tgt].PushOutline(colour); }
/////////////// // outlining public void OutlineNode(int idx, cakeslice.Outline.Colour colour) { nodes[idx].PushOutline(colour); }