protected void parseTween(object target) { bool isRelative = SafeGetVar <bool>(vars, "__relative__"); bool isSkipPlugin = SafeGetVar <bool>(vars, "skipPlugin"); foreach (string p in this.vars.Keys) { if (!(_reservedVars.ContainsKey(p))) { NTweenPlugin plugin; if (!isSkipPlugin && plugins.ContainsKey(p) && (plugin = (NTweenPlugin)Activator.CreateInstance((Type)plugins[p])).onInit(target, vars[p], isRelative, this)) { this._firstPT = new NTweenData(plugin, "setRatio", 0f, 1f, plugin.propName, true, this._firstPT); } else { var s = GetPropValue(target, p); if (null == s) { throw new Exception("Unknown property:" + p + " of " + target); } else { _firstPT = new NTweenData(target, p, s, (isRelative ? vars[p] : Subtraction(vars[p], s)), p, false, _firstPT); } } } } }
protected void addSubTween(object target, string propName, object start, object change) { if (change != null) { _firstPT = new NTweenData(target, propName, start, change, propName, false, _firstPT); } }
protected override void onUpdate(float ratio) { NTweenData pt = this._firstPT; while (pt != null) { var co = ((Color)(pt.change)); var r = co.a * ratio; SetPropValue(pt.target, pt.property, (Color)pt.start + new Color(0, 0, 0, r)); pt = pt._next; } }
public NTweenData(object target, string property, object start, object change, string name, bool isPlugin, NTweenData nextNode = null) { this.target = target; this.property = property; this.start = start; this.change = change; this.name = name; this.isPlugin = isPlugin; if (nextNode != null) { nextNode._prev = this; this._next = nextNode; } }
public void kill(params string[] varListToKill) { if (varListToKill.Length == 0) { _container.Remove(this); } else { var pt = _firstPT; while (pt != null) { var next = pt._next; foreach (var s in varListToKill) { if (s == pt.name) { if (pt._prev != null) { pt._prev._next = pt._next; } else if (pt == _firstPT) { _firstPT = pt._next; } if (pt._next != null) { pt._next._prev = pt._prev; } pt._next = pt._prev = null; } } pt = next; } if (_firstPT == null) { _container.Remove(this); } } }
private void init() { if (vars["__fromVars__"] != null) { var fromVars = (Hashtable)vars["__fromVars__"]; fromVars["overwrite"] = 0; fromVars["renderNow"] = true; to(target, 0, fromVars); } this._firstPT = null; parseTween(target); if (SafeGetVar <bool>(vars, "__from__")) { var pt = this._firstPT; while (pt != null) { pt.start = Addition(pt.start, pt.change); pt.change = Negation(pt.change); pt = pt._next; } } _initted = true; }
protected NTweenPlugin() { this._firstPT = null; }