namespace Sandbox { /// /// This will invoke a method when the property changes. It can be used with any property but is especially useful /// when combined with [Sync] or [ConVar]. ///

/// If no name is provided, we will try to call On[PropertyName]Changed. The callback should have 2 arguments - oldValue and newValue, both of the same type as the property itself. ///
[AttributeUsage( AttributeTargets.Property )] [CodeGenerator( CodeGeneratorFlags.Instance | CodeGeneratorFlags.Static | CodeGeneratorFlags.WrapPropertySet, "Sandbox.ConsoleSystem.OnChangePropertySet", 10 )] public class ChangeAttribute : Attribute { /// /// Name of the method to call on change. If no name is provided, we will try to call On[PropertyName]Changed. /// public string Name { get; set; } public ChangeAttribute( string name = null ) { Name = name; } } }