// Sometimes you may want to listen to member changes within a callback
PrintToServer("CALLBACK TESTING MESSAGES");
someobj.HookChanges(OnDynamicMemberChanged);
someobj.SetInt("someint", 256);
someobj.SetFloat("somefloat", -12.04);
someobj.SetBool("somebool", false);
someobj.SetString("somestring", "ye sure moite");
someobj.SetVector("somevec", view_as<float>({2.0, 3.0, 4.0}));
public void OnDynamicMemberChanged(Dynamic obj, int offset, const char[] member, Dynamic_MemberType type)
{
switch (type)
{
case DynamicType_Int:
{
PrintToServer("[%d] <int>obj.%s = %d", offset, member, obj.GetIntByOffset(offset));
}
case DynamicType_Float:
{
PrintToServer("[%d] <float>obj.%s = %f", offset, member, obj.GetFloatByOffset(offset));
}
case DynamicType_Bool:
{
PrintToServer("[%d] <bool>obj.%s = %d", offset, member, obj.GetBoolByOffset(offset));
}
case DynamicType_String:
{
char somestring[64];
obj.GetStringByOffset(offset, somestring, sizeof(somestring));
PrintToServer("[%d] <string>obj.%s = '%s'", offset, member, somestring);
}
case DynamicType_Vector:
{
char somestring[64];
obj.GetStringByOffset(offset, somestring, sizeof(somestring));
PrintToServer("[%d] <Vector>obj.%s = %s", offset, member, somestring);
}
}
}