public static void RaiseVariableChanged(string variableName) { OnVariableChanged?.Invoke(variableName); }
/// <summary> /// グローバル変数をセットする /// </summary> /// <param name="name">グローバル変数名</param> /// <param name="value">値</param> /// <param name="zone"ゾーン名</param> /// <returns>is changed</returns> public static bool SetVariable( string name, object value, string zone = null) { var result = false; lock (ExpressionLocker) { var variable = default(TimelineVariable); if (Variables.ContainsKey(name)) { variable = Variables[name]; } else { variable = new TimelineVariable(name); Variables[name] = variable; result = true; } switch (value) { case bool b: if (!(variable.Value is bool current) || current != b) { variable.Value = b; variable.Expiration = DateTime.MaxValue; result = true; } break; case int i: if (variable.Counter != i) { variable.Counter = i; variable.Expiration = DateTime.MaxValue; result = true; } break; default: if (!ObjectComparer.Equals(value, variable.Value)) { variable.Value = value; variable.Expiration = DateTime.MaxValue; result = true; } break; } variable.Zone = zone ?? string.Empty; } if (result) { OnVariableChanged?.Invoke(new EventArgs()); } return(result); }
/// <summary> /// グローバル変数をセットする /// </summary> /// <param name="name">グローバル変数名</param> /// <param name="value">値</param> /// <param name="zone"ゾーン名</param> /// <returns>is changed</returns> public static bool SetVariable( string name, object value, string zone = null) { var result = false; var variable = default(TimelineVariable); lock (ExpressionLocker) { if (Variables.ContainsKey(name)) { variable = Variables[name]; } else { variable = new TimelineVariable(name); Variables[name] = variable; result = true; } switch (value) { case bool b: if (!(variable.Value is bool current1) || current1 != b) { variable.Value = b; variable.Expiration = DateTime.MaxValue; result = true; } break; case string s: if (s.TryParse0xString2Int(out int i2)) { if (!(variable.Value is int current2) || current2 != i2) { variable.Value = i2; variable.Expiration = DateTime.MaxValue; result = true; } } else { goto default; } break; default: if (!ObjectComparer.Equals(value, variable.Value)) { variable.Value = value; variable.Expiration = DateTime.MaxValue; result = true; } break; } variable.Zone = zone ?? string.Empty; } if (result) { OnVariableChanged?.Invoke(new EventArgs()); if (ReferedTriggerRecompileDelegates.ContainsKey(variable.Name)) { lock (variable) { ReferedTriggerRecompileDelegates[variable.Name]?.Invoke(); } } } return(result); }
public static void SetVariable(Variable var, TokenType value) { variables[var] = value; OnVariableChanged?.Invoke(null, new VariableEventArgs(var, value)); }