// events for incoming changes from object controllers void controller_ObjectModified(object source, ObjectModifiedArgs e) { LogFile.WriteLine("netreplicationcontroller controller_ObjectModified " + e.TargetObject.GetType()); if (this.rpc.IsServer) { //LogFile.WriteLine("controller_ObjectCreated() " + e.TargetObject); //NetworkInterfaces.ObjectReplicationServerToClient_ClientProxy objectreplicationproxy = new OSMP.NetworkInterfaces.ObjectReplicationServerToClient_ClientProxy( rpc, // handled by something like DirtyCacheController dirtyobjectcontroller.MarkDirty(e.TargetObject, e.modificationtypeattributes); } else { int bitmap = new ReplicateAttributeHelper().TypeArrayToBitmap(e.modificationtypeattributes); byte[] entitydata = new byte[4096]; int nextposition = 0; new BinaryPacker().PackObjectUsingSpecifiedAttributes(entitydata, ref nextposition, e.TargetObject, e.modificationtypeattributes); byte[] entitydatatotransmit = new byte[nextposition]; Buffer.BlockCopy(entitydata, 0, entitydatatotransmit, 0, nextposition); //LogFile.WriteLine(Encoding.UTF8.GetString(entitydatatotransmit)); NetworkInterfaces.ObjectReplicationClientToServer_ClientProxy objectreplicationproxy = new OSMP.NetworkInterfaces.ObjectReplicationClientToServer_ClientProxy(rpc, null); objectreplicationproxy.ObjectModified(e.TargetObject.Reference, e.TargetObject.GetType().ToString(), bitmap, entitydatatotransmit); } }
// incoming event from NetReplicationController: void IReplicatedObjectController.ReplicatedObjectModified(object notifier, ObjectModifiedArgs e) { LogFile.WriteLine("WorldModel ReplicatedObjectModified " + e.TargetObject); }
// events for incoming changes from object controllers void controller_ObjectModified(object source, ObjectModifiedArgs e) { LogFile.WriteLine("netreplicationcontroller controller_ObjectModified " + e.TargetObject.GetType()); if (this.rpc.IsServer) { //LogFile.WriteLine("controller_ObjectCreated() " + e.TargetObject); //NetworkInterfaces.ObjectReplicationServerToClient_ClientProxy objectreplicationproxy = new OSMP.NetworkInterfaces.ObjectReplicationServerToClient_ClientProxy( rpc, // handled by something like DirtyCacheController dirtyobjectcontroller.MarkDirty(e.TargetObject, e.modificationtypeattributes ); } else { int bitmap = new ReplicateAttributeHelper().TypeArrayToBitmap(e.modificationtypeattributes); byte[] entitydata = new byte[4096]; int nextposition = 0; new BinaryPacker().PackObjectUsingSpecifiedAttributes(entitydata, ref nextposition, e.TargetObject, e.modificationtypeattributes); byte[] entitydatatotransmit = new byte[nextposition]; Buffer.BlockCopy(entitydata, 0, entitydatatotransmit, 0, nextposition); //LogFile.WriteLine(Encoding.UTF8.GetString(entitydatatotransmit)); NetworkInterfaces.ObjectReplicationClientToServer_ClientProxy objectreplicationproxy = new OSMP.NetworkInterfaces.ObjectReplicationClientToServer_ClientProxy(rpc, null); objectreplicationproxy.ObjectModified(e.TargetObject.Reference, e.TargetObject.GetType().ToString(), bitmap, entitydatatotransmit); } }