Fiber
Fibers Lighweight Cooperative Multitasking
FiberController.cs
1 // Copyright 2018 (C) paul@marrington.net http://www.askowl.net/unity-packages
2 
3 using UnityEngine;
4 
5 namespace Askowl {
6  /// <a href=""></a>
7  /// <inheritdoc />
8  public class FiberController : MonoBehaviour {
9  private void Start() => DontDestroyOnLoad(gameObject);
10 
11  private void Update() => UpdateAllWorkers(Fiber.Queue.Update);
12 
13  private void LateUpdate() => UpdateAllWorkers(Fiber.Queue.LateUpdate);
14 
15  private void FixedUpdate() => UpdateAllWorkers(Fiber.Queue.FixedUpdate);
16 
17  private static void UpdateAllWorkers(Fiber.Queue queue) {
18  for (LinkedList<Fiber>.Node node = queue.First, next; node != null; node = next) {
19  next = node.Next; // the devil of side-effects, score one for functional programming
20  node.Item.Update(fiber: node.Item);
21  }
22  }
23  }
24 }
Definition: Emitter.cs:6
lightweight cooperative multi-tasking
Definition: Fiber.cs:10
Container for different update queues
Definition: Fiber.cs:318