public void Tick() { Dialog dialog = node.Content as Dialog; if (!launched) { wasLooking = CameraManager.Target; fragments = new Queue <Dialog.Fragment>(dialog.getFragments()); launched = true; next = true; chosen = -1; } if (next) { if (fragments.Count > 0) { if (fragments.Peek().Entity != null) { CameraManager.smoothLookTo(fragments.Peek().Entity.gameObject); } DialogGUI gui = ScriptableObject.CreateInstance <DialogGUI>(); gui.init(this, fragments.Dequeue()); GUIManager.addGUI(gui); } else { if (dialog.getOptions() != null && dialog.getOptions().Length > 1) { DialogGUI gui = ScriptableObject.CreateInstance <DialogGUI>(); gui.init(this, dialog.getOptions()); GUIManager.addGUI(gui); } else { chosen = 0; } } next = false; } if (chosen != -1) { finished = true; CameraManager.lookTo(wasLooking); if (node.Childs.Length > chosen) { nextNode = node.Childs[chosen]; } chosen = -1; } }