protected virtual SpriterVarValue GetVariableValue(SpriterAnimation animation, SpriterVarDef varDef, SpriterVarline varline, float targetTime) { SpriterVarlineKey[] keys = varline.Keys; if (keys == null) { return(varDef.VariableValue); } SpriterVarlineKey keyA = keys.GetLastKey(targetTime) ?? keys[keys.Length - 1]; if (keyA == null) { return(varDef.VariableValue); } SpriterVarlineKey keyB = varline.Keys.GetNextKey(keyA, animation.Looping); if (keyB == null) { return(keyA.VariableValue); } float adjustedTime = keyA.Time == keyB.Time ? targetTime : SpriterHelper.AdjustTime(targetTime, keyA, keyB, animation.Length); float factor = SpriterHelper.GetFactor(keyA, keyB, animation.Length, adjustedTime); SpriterVarValue varVal = Pool.GetObject <SpriterVarValue>(); varVal.Interpolate(keyA.VariableValue, keyB.VariableValue, factor); return(varVal); }
public void AddObjectVar(string objectName, string varName, SpriterVarValue value) { IDictionary<string, SpriterVarValue> values; if (!ObjectVars.TryGetValue(objectName, out values)) { values = new Dictionary<string, SpriterVarValue>(); ObjectVars[objectName] = values; } values[varName] = value; }
public void AddObjectVar(string objectName, string varName, SpriterVarValue value) { if (!ObjectVars.TryGetValue(objectName, out var values)) { values = _pool.GetObject <Dictionary <string, SpriterVarValue> >(); ObjectVars[objectName] = values; } values[varName] = value; }
private static SpriterVarValue Interpolate(SpriterVarValue valA, SpriterVarValue valB, float factor) { return(new SpriterVarValue { Type = valA.Type, StringValue = valA.StringValue, FloatValue = MathHelper.Linear(valA.FloatValue, valB.FloatValue, factor), IntValue = (int)MathHelper.Linear(valA.IntValue, valB.IntValue, factor) }); }
public void AddObjectVar(string objectName, string varName, SpriterVarValue value) { IDictionary <string, SpriterVarValue> values; if (!ObjectVars.TryGetValue(objectName, out values)) { values = new Dictionary <string, SpriterVarValue>(); ObjectVars[objectName] = values; } values[varName] = value; }
private static SpriterVarValue Interpolate(SpriterVarValue valA, SpriterVarValue valB, float factor) { SpriterVarValue ret = new SpriterVarValue(); ret.Type = valA.Type; ret.StringValue = valA.StringValue; ret.FloatValue = MathHelper.Linear(valA.FloatValue, valB.FloatValue, factor); ret.IntValue = (int)MathHelper.Linear(valA.IntValue, valB.IntValue, factor); return(ret); }
private object GetValue(SpriterVarValue varValue) { object value; switch (varValue.Type) { case SpriterVarType.Float: value = varValue.FloatValue; break; case SpriterVarType.Int: value = varValue.IntValue; break; default: value = varValue.StringValue; break; } return value; }