void ProcessSyncVar(FoundSyncVar syncVar) { // process attributes first before creating setting, otherwise it wont know about hook syncVar.SetWrapType(); syncVar.ProcessAttributes(writers, readers); FieldDefinition fd = syncVar.FieldDefinition; string originalName = fd.Name; Weaver.DebugLog(fd.DeclaringType, $"Sync Var {fd.Name} {fd.FieldType}"); MethodDefinition get = GenerateSyncVarGetter(syncVar); MethodDefinition set = syncVar.InitialOnly ? GenerateSyncVarSetterInitialOnly(syncVar) : GenerateSyncVarSetter(syncVar); //NOTE: is property even needed? Could just use a setter function? //create the property var propertyDefinition = new PropertyDefinition("Network" + originalName, PropertyAttributes.None, syncVar.OriginalType) { GetMethod = get, SetMethod = set }; propertyDefinition.DeclaringType = fd.DeclaringType; //add the methods and property to the type. fd.DeclaringType.Properties.Add(propertyDefinition); propertySiteProcessor.Setters[fd] = set; if (syncVar.IsWrapped) { propertySiteProcessor.Getters[fd] = get; } }