protected virtual GlobalClock FindParent() { GlobalClock oldParent = _parent as GlobalClock; if (oldParent != null) { oldParent.Unregister(this); } if (string.IsNullOrEmpty(parentKey)) { return(null); } if (!Timekeeper.instance.HasClock(parentKey)) { throw new ChronosException(string.Format("Missing parent clock: '{0}'.", parentKey)); } GlobalClock parent = Timekeeper.instance.Clock(parentKey); parent.Register(this); return(parent); }
protected virtual Clock FindClock() { if (mode == TimelineMode.Local) { LocalClock localClock = GetComponent <LocalClock>(); if (localClock == null) { throw new ChronosException(string.Format("Missing local clock.")); } return(localClock); } else if (mode == TimelineMode.Global) { GlobalClock oldGlobalClock = _clock as GlobalClock; if (oldGlobalClock != null) { oldGlobalClock.Unregister(this); } if (!Timekeeper.instance.HasClock(globalClockKey)) { throw new ChronosException(string.Format("Missing global clock: '{0}'.", globalClockKey)); } GlobalClock globalClock = Timekeeper.instance.Clock(globalClockKey); globalClock.Register(this); return(globalClock); } else { throw new ChronosException(string.Format("Unknown timeline mode: '{0}'.", mode)); } }