public void RegisterNewObject(VM vm, VMEntity obj, VMAsyncPersistIDCallback callback) { //todo: sandbox servers should give things an "id" vm.SendCommand(new VMNetUpdatePersistStateCmd() { ObjectID = obj.ObjectID, PersistID = NextPersist++ }); }
public void RegisterNewObject(VM vm, VMEntity obj, VMAsyncPersistIDCallback callback) { if (obj is VMAvatar) { return; //??? } var objid = obj.ObjectID; uint guid = obj.Object.OBJ.GUID; if (obj.MasterDefinition != null) { guid = obj.MasterDefinition.GUID; } var state = ((VMTSOObjectState)obj.TSOState); uint?owner = state.OwnerID; if (owner == 0) { owner = null; } DbObject dbo = new DbObject() { owner_id = owner, lot_id = Context.DbId, shard_id = Context.ShardId, dyn_obj_name = "", budget = 0, graphic = (ushort)obj.GetValue(VMStackObjectVariable.Graphic), type = guid, value = (uint)obj.MultitileGroup.Price, upgrade_level = state.UpgradeLevel }; Host.InBackground(() => { try { using (var db = DAFactory.Get()) { var id = db.Objects.Create(dbo); if (callback != null) { callback(objid, id); } } } catch (Exception) { callback(objid, 0); } }); }