bool IAssetMetadataServiceInterface.TryGetValue(UUID key, out AssetMetadata metadata) { using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT * FROM assetrefs WHERE id=@id LIMIT 1", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (dbReader.Read()) { metadata = new AssetMetadata { ID = dbReader.GetUUID("id"), Type = dbReader.GetEnum <AssetType>("assetType"), Name = dbReader.GetString("name"), CreateTime = dbReader.GetDate("create_time"), AccessTime = dbReader.GetDate("access_time"), Flags = dbReader.GetEnum <AssetFlags>("asset_flags"), Temporary = dbReader.GetBool("temporary") }; return(true); } } } } metadata = null; return(false); }
public static GridUserInfo ToGridUser(this MySqlDataReader reader) => new GridUserInfo() { User = new UUI(reader.GetUUID("ID")), HomeRegionID = reader.GetUUID("HomeRegionID"), HomeLookAt = reader.GetVector3("HomeLookAt"), HomePosition = reader.GetVector3("HomePosition"), LastRegionID = reader.GetUUID("LastRegionID"), LastLookAt = reader.GetVector3("LastLookAt"), LastPosition = reader.GetVector3("LastPosition"), IsOnline = reader.GetBool("IsOnline"), LastLogin = reader.GetDate("LastLogin"), LastLogout = reader.GetDate("LastLogout") };
public static InventoryItem ToItem(this MySqlDataReader reader) { var item = new InventoryItem(reader.GetUUID("ID")) { ParentFolderID = reader.GetUUID("ParentFolderID"), Name = reader.GetString("Name"), Description = reader.GetString("Description"), InventoryType = reader.GetEnum <InventoryType>("InventoryType"), Flags = reader.GetEnum <InventoryFlags>("Flags"), CreationDate = reader.GetDate("CreationDate"), IsGroupOwned = reader.GetBool("IsGroupOwned"), AssetID = reader.GetUUID("AssetID"), AssetType = reader.GetEnum <AssetType>("AssetType"), Owner = reader.GetUGUI("OwnerID"), LastOwner = reader.GetUGUI("LastOwnerID"), Creator = reader.GetUGUI("CreatorID"), Group = new UGI(reader.GetUUID("GroupID")) }; item.Permissions.Base = reader.GetEnum <InventoryPermissionsMask>("BasePermissionsMask"); item.Permissions.Current = reader.GetEnum <InventoryPermissionsMask>("CurrentPermissionsMask"); item.Permissions.EveryOne = reader.GetEnum <InventoryPermissionsMask>("EveryOnePermissionsMask"); item.Permissions.NextOwner = reader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissionsMask"); item.Permissions.Group = reader.GetEnum <InventoryPermissionsMask>("GroupPermissionsMask"); item.SaleInfo.Price = reader.GetInt32("SalePrice"); item.SaleInfo.Type = reader.GetEnum <InventoryItem.SaleInfoData.SaleType>("SaleType"); item.SaleInfo.PermMask = reader.GetEnum <InventoryPermissionsMask>("SalePermissionsMask"); return(item); }
public override bool TryGetValue(UUID scopeid, GridVector location, int zoomlevel, out MaptileData data) { data = default(MaptileData); using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM maptiles WHERE LocX = @locx AND LocY = @locy AND ZoomLevel = @zoomlevel", connection)) { cmd.Parameters.AddParameter("@locx", location.X); cmd.Parameters.AddParameter("@locy", location.Y); cmd.Parameters.AddParameter("@zoomlevel", zoomlevel); using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { data = new MaptileData(); data.Location.X = reader.GetUInt32("LocX"); data.Location.Y = reader.GetUInt32("LocY"); data.ScopeID = reader.GetUUID("ScopeID"); data.LastUpdate = reader.GetDate("LastUpdate"); data.ContentType = reader.GetString("ContentType"); data.ZoomLevel = reader.GetInt32("ZoomLevel"); data.Data = reader.GetBytes("Data"); return(true); } } } } return(false); }
public override bool Exists(UUID key) { using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); bool needsUpdateAccessTime = false; using (var cmd = new MySqlCommand("SELECT id, access_time FROM assetrefs WHERE id = @id LIMIT 1", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { return(false); } needsUpdateAccessTime = DateTime.UtcNow - dbReader.GetDate("access_time") > TimeSpan.FromHours(1); } } if (needsUpdateAccessTime) { /* update access_time */ using (var cmd = new MySqlCommand("UPDATE assetrefs SET access_time = @access WHERE id = @id", conn)) { cmd.Parameters.AddWithValue("@access", Date.GetUnixTime()); cmd.Parameters.AddWithValue("@id", key); cmd.ExecuteNonQuery(); } } return(true); } }
public override List <MaptileInfo> GetUpdateTimes(UUID scopeid, GridVector minloc, GridVector maxloc, int zoomlevel) { var infos = new List <MaptileInfo>(); using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT LocX, LocY, LastUpdate FROM maptiles WHERE ScopeID = @scopeid AND ZoomLevel = @zoomlevel AND locX >= @locxlow AND locY >= @locylow AND locX <= @locxhigh AND locY <= @locyhigh", connection)) { cmd.Parameters.AddParameter("@scopeid", scopeid); cmd.Parameters.AddParameter("@zoomlevel", zoomlevel); cmd.Parameters.AddParameter("@locxlow", minloc.X); cmd.Parameters.AddParameter("@locylow", minloc.Y); cmd.Parameters.AddParameter("@locxhigh", maxloc.X); cmd.Parameters.AddParameter("@locyhigh", maxloc.Y); using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { var info = new MaptileInfo() { Location = new GridVector { X = reader.GetUInt32("LocX"), Y = reader.GetUInt32("LocY") }, LastUpdate = reader.GetDate("LastUpdate"), ScopeID = scopeid, ZoomLevel = zoomlevel }; infos.Add(info); } } } } return(infos); }
public static GroupInvite ToGroupInvite(this MySqlDataReader reader) => new GroupInvite() { ID = reader.GetUUID("InviteID"), Group = new UGI(reader.GetUUID("GroupID")), RoleID = reader.GetUUID("RoleID"), Principal = new UUI(reader.GetUUID("PrincipalID")), Timestamp = reader.GetDate("Timestamp") };
public static TravelingDataInfo ToTravelingData(this MySqlDataReader reader) => new TravelingDataInfo() { SessionID = reader.GetUUID("SessionID"), UserID = reader.GetUUID("UserID"), GridExternalName = reader.GetString("GridExternalName"), ServiceToken = reader.GetString("ServiceToken"), ClientIPAddress = reader.GetString("ClientIPAddress"), Timestamp = reader.GetDate("Timestamp") };
public override bool TryGetValue(UUID key, out AssetMetadata metadata, out int length) { metadata = null; length = 0; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT id, LENGTH(data) AS dataLength, assetrefs.assetType, name, create_time, access_time, asset_flags, temporary FROM assetrefs INNER JOIN assetdata ON assetrefs.hash = assetdata.hash AND assetrefs.assetType = assetdata.assetType WHERE id = @id LIMIT 1", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { return(false); } metadata = new AssetMetadata { ID = dbReader.GetUUID("id"), Type = dbReader.GetEnum <AssetType>("assetType"), Name = dbReader.GetString("name"), CreateTime = dbReader.GetDate("create_time"), AccessTime = dbReader.GetDate("access_time"), Flags = dbReader.GetEnum <AssetFlags>("asset_flags"), Temporary = dbReader.GetBool("temporary") }; length = dbReader.GetInt32("dataLength"); } } if (DateTime.UtcNow - metadata.AccessTime > TimeSpan.FromHours(1)) { /* update access_time */ using (var cmd = new MySqlCommand("UPDATE assetrefs SET access_time = @access WHERE id = @id", conn)) { cmd.Parameters.AddWithValue("@access", Date.GetUnixTime()); cmd.Parameters.AddWithValue("@id", key); cmd.ExecuteNonQuery(); } } return(true); } }
public override bool TryGetValue(UUID key, out AssetData asset) { asset = null; using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT * FROM assetrefs INNER JOIN assetdata ON assetrefs.hash = assetdata.hash AND assetrefs.assetType = assetdata.assetType WHERE id = @id", conn)) { cmd.Parameters.AddParameter("@id", key); using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { return(false); } asset = new AssetData() { ID = dbReader.GetUUID("id"), Data = dbReader.GetBytes("data"), Type = dbReader.GetEnum <AssetType>("assetType"), Name = dbReader.GetString("name"), CreateTime = dbReader.GetDate("create_time"), AccessTime = dbReader.GetDate("access_time"), Flags = dbReader.GetEnum <AssetFlags>("asset_flags"), Temporary = dbReader.GetBool("temporary") }; } } if (DateTime.UtcNow - asset.AccessTime > TimeSpan.FromHours(1)) { /* update access_time */ using (var cmd = new MySqlCommand("UPDATE assetrefs SET access_time = @access WHERE id = @id", conn)) { cmd.Parameters.AddWithValue("@access", Date.GetUnixTime()); cmd.Parameters.AddWithValue("@id", key); cmd.ExecuteNonQuery(); } } return(true); } }
public static UserAccount ToUserAccount(this MySqlDataReader reader, Uri homeURI) { var info = new UserAccount(); string gkUri; UserRegionData regData; info.Principal.ID = reader.GetUUID("ID"); info.Principal.FirstName = reader.GetString("FirstName"); info.Principal.LastName = reader.GetString("LastName"); info.Principal.HomeURI = homeURI; info.Principal.IsAuthoritative = true; info.Email = reader.GetString("Email"); info.Created = reader.GetDate("Created"); info.UserLevel = reader.GetInt32("UserLevel"); info.UserFlags = reader.GetEnum <UserFlags>("UserFlags"); info.UserTitle = reader.GetString("UserTitle"); info.IsLocalToGrid = true; info.IsEverLoggedIn = reader.GetBool("IsEverLoggedIn"); gkUri = reader.GetString("LastGatekeeperURI"); regData = new UserRegionData { RegionID = reader.GetUUID("LastRegionID"), Position = reader.GetVector3("LastPosition"), LookAt = reader.GetVector3("LastLookAt"), }; if (!string.IsNullOrEmpty(gkUri)) { regData.GatekeeperURI = new URI(gkUri); } if (regData.RegionID != UUID.Zero) { info.LastRegion = regData; } gkUri = reader.GetString("HomeGatekeeperURI"); regData = new UserRegionData { RegionID = reader.GetUUID("HomeRegionID"), Position = reader.GetVector3("HomePosition"), LookAt = reader.GetVector3("HomeLookAt"), }; if (!string.IsNullOrEmpty(gkUri)) { regData.GatekeeperURI = new URI(gkUri); } if (regData.RegionID != UUID.Zero) { info.HomeRegion = regData; } return(info); }
public override Dictionary <UUID, bool> Exists(List <UUID> assets) { var res = new Dictionary <UUID, bool>(); if (assets.Count == 0) { return(res); } foreach (UUID id in assets) { res[id] = false; } string ids = "'" + string.Join("','", assets) + "'"; string sql = $"SELECT id, access_time FROM assetrefs WHERE id IN ({ids})"; var updaterequired = new List <UUID>(); using (var dbcon = new MySqlConnection(m_ConnectionString)) { dbcon.Open(); using (var cmd = new MySqlCommand(sql, dbcon)) { using (MySqlDataReader dbReader = cmd.ExecuteReader()) { while (dbReader.Read()) { UUID id = dbReader.GetUUID("id"); res[id] = true; if (DateTime.UtcNow - dbReader.GetDate("access_time") > TimeSpan.FromHours(1)) { updaterequired.Add(id); } } } } /* update access_time */ if (updaterequired.Count != 0) { ids = "'" + string.Join("','", updaterequired) + "'"; sql = $"UPDATE assetrefs SET access_time = @access WHERE id IN ({ids})"; using (var cmd = new MySqlCommand(sql, dbcon)) { cmd.Parameters.AddWithValue("@access", Date.GetUnixTime()); cmd.ExecuteNonQuery(); } } } return(res); }
private ObjectPartInventoryItem ObjectPartInventoryItemFromDbReader(MySqlDataReader dbReader) { var item = new ObjectPartInventoryItem(dbReader.GetUUID("InventoryID")) { AssetID = dbReader.GetUUID("AssetID"), AssetType = dbReader.GetEnum <AssetType>("AssetType"), CreationDate = dbReader.GetDate("CreationDate"), Creator = dbReader.GetUGUI("Creator"), Description = dbReader.GetString("Description"), Flags = dbReader.GetEnum <InventoryFlags>("Flags"), Group = dbReader.GetUGI("Group"), IsGroupOwned = dbReader.GetBool("GroupOwned"), InventoryType = dbReader.GetEnum <InventoryType>("InventoryType"), LastOwner = dbReader.GetUGUI("LastOwner"), Name = dbReader.GetString("Name"), Owner = dbReader.GetUGUI("Owner"), ParentFolderID = dbReader.GetUUID("PrimID"), NextOwnerAssetID = dbReader.GetUUID("NextOwnerAssetID"), ExperienceID = dbReader.GetUEI("ExperienceID"), CollisionFilter = new ObjectPartInventoryItem.CollisionFilterParam { DbSerialization = dbReader.GetBytes("CollisionFilterData") } }; item.Permissions.Base = dbReader.GetEnum <InventoryPermissionsMask>("BasePermissions"); item.Permissions.Current = dbReader.GetEnum <InventoryPermissionsMask>("CurrentPermissions"); item.Permissions.EveryOne = dbReader.GetEnum <InventoryPermissionsMask>("EveryOnePermissions"); item.Permissions.Group = dbReader.GetEnum <InventoryPermissionsMask>("GroupPermissions"); item.Permissions.NextOwner = dbReader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissions"); item.SaleInfo.Type = dbReader.GetEnum <InventoryItem.SaleInfoData.SaleType>("SaleType"); item.SaleInfo.Price = dbReader.GetInt32("SalePrice"); item.SaleInfo.PermMask = dbReader.GetEnum <InventoryPermissionsMask>("SalePermMask"); var grantinfo = new ObjectPartInventoryItem.PermsGranterInfo(); if (((string)dbReader["PermsGranter"]).Length != 0) { try { grantinfo.PermsGranter = dbReader.GetUGUI("PermsGranter"); } catch { /* no action required */ } } grantinfo.PermsMask = dbReader.GetEnum <ScriptPermissions>("PermsMask"); grantinfo.DebitPermissionKey = dbReader.GetUUID("DebitPermissionKey"); item.PermsGranter = grantinfo; return(item); }
bool IClassifiedsInterface.TryGetValue(UGUI user, UUID id, out ProfileClassified classified) { using (var conn = new MySqlConnection(m_ConnectionString)) { conn.Open(); using (var cmd = new MySqlCommand("SELECT * FROM classifieds WHERE classifieduuid = @uuid LIMIT 1", conn)) { cmd.Parameters.AddParameter("@uuid", id); using (MySqlDataReader reader = cmd.ExecuteReader()) { if (reader.Read()) { classified = new ProfileClassified { ClassifiedID = reader.GetUUID("classifieduuid"), Category = reader.GetInt32("category"), CreationDate = reader.GetDate("creationdate"), Creator = reader.GetUGUI("creatoruuid"), Description = reader.GetString("description"), ExpirationDate = reader.GetDate("expirationdate"), Flags = reader.GetByte("classifiedflags"), GlobalPos = reader.GetVector3("posglobal"), Name = reader.GetString("name"), ParcelID = reader.GetParcelID("parceluuid"), ParcelName = reader.GetString("parcelname"), ParentEstate = reader.GetInt32("parentestate"), Price = reader.GetInt32("priceforlisting"), SimName = reader.GetString("simname"), SnapshotID = reader.GetUUID("snapshotuuid") }; return(true); } } } } classified = default(ProfileClassified); return(false); }
public static GroupNotice ToGroupNotice(this MySqlDataReader reader) => new GroupNotice() { Group = new UGI(reader.GetUUID("GroupID")), ID = reader.GetUUID("NoticeID"), Timestamp = reader.GetDate("Timestamp"), FromName = reader.GetString("FromName"), Subject = reader.GetString("Subject"), Message = reader.GetString("Message"), HasAttachment = reader.GetBool("HasAttachment"), AttachmentType = reader.GetEnum <AssetType>("AttachmentType"), AttachmentName = reader.GetString("AttachmentName"), AttachmentItemID = reader.GetUUID("AttachmentItemID"), AttachmentOwner = new UUI(reader.GetUUID("AttachmentOwnerID")) };
public static EstateInfo ToEstateInfo(this MySqlDataReader reader) => new EstateInfo { ID = reader.GetUInt32("ID"), Name = reader.GetString("Name"), Owner = reader.GetUGUI("Owner"), Flags = reader.GetEnum <RegionOptionFlags>("Flags"), PricePerMeter = reader.GetInt32("PricePerMeter"), BillableFactor = reader.GetDouble("BillableFactor"), SunPosition = reader.GetDouble("SunPosition"), AbuseEmail = reader.GetString("AbuseEmail"), CovenantID = reader.GetUUID("CovenantID"), CovenantTimestamp = reader.GetDate("CovenantTimestamp"), UseGlobalTime = reader.GetBool("UseGlobalTime"), ParentEstateID = reader.GetUInt32("ParentEstateID") };
public static UserAccount ToUserAccount(this MySqlDataReader reader, Uri homeURI) { var info = new UserAccount(); info.Principal.ID = reader.GetUUID("ID"); info.Principal.FirstName = reader.GetString("FirstName"); info.Principal.LastName = reader.GetString("LastName"); info.Principal.HomeURI = homeURI; info.Principal.IsAuthoritative = true; info.ScopeID = reader.GetUUID("ScopeID"); info.Email = reader.GetString("Email"); info.Created = reader.GetDate("Created"); info.UserLevel = reader.GetInt32("UserLevel"); info.UserFlags = reader.GetUInt32("UserFlags"); info.UserTitle = reader.GetString("UserTitle"); info.IsLocalToGrid = true; info.IsEverLoggedIn = reader.GetBool("IsEverLoggedIn"); return(info); }
public override List <GridInstantMessage> GetOfflineIMs(UUID principalID) { var ims = new List <GridInstantMessage>(); using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM offlineim WHERE ToAgentID = @id", connection)) { cmd.Parameters.AddParameter("@id", principalID); using (MySqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { var im = new GridInstantMessage() { ID = reader.GetUInt64("ID"), FromAgent = reader.GetUUI("FromAgent"), FromGroup = reader.GetUGI("FromGroup"), ToAgent = new UUI(reader.GetUUID("ToAgentID")), Dialog = reader.GetEnum <GridInstantMessageDialog>("Dialog"), IsFromGroup = reader.GetBool("IsFromGroup"), Message = reader.GetString("Message"), IMSessionID = reader.GetUUID("IMSessionID"), Position = reader.GetVector3("Position"), BinaryBucket = reader.GetBytes("BinaryBucket"), ParentEstateID = reader.GetUInt32("ParentEstateID"), RegionID = reader.GetUUID("RegionID"), Timestamp = reader.GetDate("Timestamp"), IsOffline = true }; ims.Add(im); } } } } return(ims); }
ParcelInfo ISimulationDataParcelStorageInterface.this[UUID regionID, UUID parcelID] { get { using (var connection = new MySqlConnection(m_ConnectionString)) { connection.Open(); using (var cmd = new MySqlCommand("SELECT * FROM parcels WHERE RegionID = '" + regionID.ToString() + "' AND ParcelID = '" + parcelID.ToString() + "' LIMIT 1", connection)) { using (MySqlDataReader dbReader = cmd.ExecuteReader()) { if (!dbReader.Read()) { throw new KeyNotFoundException(); } var pi = new ParcelInfo((int)dbReader["BitmapWidth"], (int)dbReader["BitmapHeight"]) { Area = dbReader.GetInt32("Area"), AuctionID = dbReader.GetUInt32("AuctionID"), AuthBuyer = dbReader.GetUGUI("AuthBuyer"), Category = dbReader.GetEnum <ParcelCategory>("Category"), ClaimDate = dbReader.GetDate("ClaimDate"), ClaimPrice = dbReader.GetInt32("ClaimPrice"), ID = dbReader.GetUUID("ParcelID"), Group = dbReader.GetUGI("Group"), GroupOwned = dbReader.GetBool("IsGroupOwned"), Description = dbReader.GetString("Description"), Flags = dbReader.GetEnum <ParcelFlags>("Flags"), LandingType = dbReader.GetEnum <TeleportLandingType>("LandingType"), LandingPosition = dbReader.GetVector3("LandingPosition"), LandingLookAt = dbReader.GetVector3("LandingLookAt"), Name = dbReader.GetString("Name"), LocalID = dbReader.GetInt32("LocalID"), MediaID = dbReader.GetUUID("MediaID"), Owner = dbReader.GetUGUI("Owner"), SnapshotID = dbReader.GetUUID("SnapshotID"), SalePrice = dbReader.GetInt32("SalePrice"), OtherCleanTime = dbReader.GetInt32("OtherCleanTime"), MediaAutoScale = dbReader.GetBool("MediaAutoScale"), MediaType = dbReader.GetString("MediaType"), MediaWidth = dbReader.GetInt32("MediaWidth"), MediaHeight = dbReader.GetInt32("MediaHeight"), MediaLoop = dbReader.GetBool("MediaLoop"), ObscureMedia = dbReader.GetBool("ObscureMedia"), ObscureMusic = dbReader.GetBool("ObscureMusic"), MediaDescription = dbReader.GetString("MediaDescription"), RentPrice = dbReader.GetInt32("RentPrice"), AABBMin = dbReader.GetVector3("AABBMin"), AABBMax = dbReader.GetVector3("AABBMax"), ParcelPrimBonus = dbReader.GetDouble("ParcelPrimBonus"), PassPrice = dbReader.GetInt32("PassPrice"), PassHours = dbReader.GetDouble("PassHours"), ActualArea = dbReader.GetInt32("ActualArea"), BillableArea = dbReader.GetInt32("BillAbleArea"), Status = dbReader.GetEnum <ParcelStatus>("Status"), SeeAvatars = dbReader.GetBool("SeeAvatars"), AnyAvatarSounds = dbReader.GetBool("AnyAvatarSounds"), GroupAvatarSounds = dbReader.GetBool("GroupAvatarSounds"), IsPrivate = dbReader.GetBool("IsPrivate") }; pi.LandBitmap.DataNoAABBUpdate = dbReader.GetBytes("Bitmap"); var uri = (string)dbReader["MusicURI"]; if (!string.IsNullOrEmpty(uri)) { pi.MusicURI = new URI(uri); } uri = (string)dbReader["MediaURI"]; if (!string.IsNullOrEmpty(uri)) { pi.MediaURI = new URI(uri); } return(pi); } } } } }
private ObjectPart ObjectPartFromDbReader(MySqlDataReader dbReader) { var objpart = new ObjectPart(dbReader.GetUUID("ID")) { LoadedLinkNumber = dbReader.GetInt32("LinkNumber"), Position = dbReader.GetVector3("Position"), Rotation = dbReader.GetQuaternion("Rotation"), SitText = dbReader.GetString("SitText"), TouchText = dbReader.GetString("TouchText"), Name = dbReader.GetString("Name"), Description = dbReader.GetString("Description"), SitTargetOffset = dbReader.GetVector3("SitTargetOffset"), SitTargetOrientation = dbReader.GetQuaternion("SitTargetOrientation"), Creator = dbReader.GetUUI("Creator"), CreationDate = dbReader.GetDate("CreationDate"), RezDate = dbReader.GetDate("RezDate"), Flags = dbReader.GetEnum <PrimitiveFlags>("Flags"), CameraAtOffset = dbReader.GetVector3("CameraAtOffset"), CameraEyeOffset = dbReader.GetVector3("CameraEyeOffset"), PhysicsShapeType = dbReader.GetEnum <PrimitivePhysicsShapeType>("PhysicsShapeType"), PathfindingType = dbReader.GetEnum <PathfindingType>("PathfindingType"), WalkableCoefficientAvatar = dbReader.GetDouble("WalkableCoefficientAvatar"), WalkableCoefficientA = dbReader.GetDouble("WalkableCoefficientA"), WalkableCoefficientB = dbReader.GetDouble("WalkableCoefficientB"), WalkableCoefficientC = dbReader.GetDouble("WalkableCoefficientC"), WalkableCoefficientD = dbReader.GetDouble("WalkableCoefficientD"), Material = dbReader.GetEnum <PrimitiveMaterial>("Material"), Size = dbReader.GetVector3("Size"), Slice = dbReader.GetVector3("Slice"), MediaURL = dbReader.GetString("MediaURL"), AngularVelocity = dbReader.GetVector3("AngularVelocity"), PointLight = new ObjectPart.PointLightParam { DbSerialization = dbReader.GetBytes("LightData") }, Projection = new ObjectPart.ProjectionParam { DbSerialization = dbReader.GetBytes("ProjectionData") }, Text = new ObjectPart.TextParam { Serialization = dbReader.GetBytes("HoverTextData") }, Flexible = new ObjectPart.FlexibleParam { DbSerialization = dbReader.GetBytes("FlexibleData") }, Sound = new ObjectPart.SoundParam { Serialization = dbReader.GetBytes("LoopedSoundData") }, CollisionSound = new ObjectPart.CollisionSoundParam { Serialization = dbReader.GetBytes("ImpactSoundData") }, Shape = new ObjectPart.PrimitiveShape { Serialization = dbReader.GetBytes("PrimitiveShapeData") }, ParticleSystemBytes = dbReader.GetBytes("ParticleSystem"), TextureEntryBytes = dbReader.GetBytes("TextureEntryBytes"), TextureAnimationBytes = dbReader.GetBytes("TextureAnimationBytes"), ScriptAccessPin = dbReader.GetInt32("ScriptAccessPin"), ForceMouselook = dbReader.GetBoolean("ForceMouselook"), BaseMask = dbReader.GetEnum <InventoryPermissionsMask>("BasePermissions"), OwnerMask = dbReader.GetEnum <InventoryPermissionsMask>("CurrentPermissions"), EveryoneMask = dbReader.GetEnum <InventoryPermissionsMask>("EveryOnePermissions"), GroupMask = dbReader.GetEnum <InventoryPermissionsMask>("GroupPermissions"), NextOwnerMask = dbReader.GetEnum <InventoryPermissionsMask>("NextOwnerPermissions"), ClickAction = dbReader.GetEnum <ClickActionType>("ClickAction"), PassCollisionMode = dbReader.GetEnum <PassEventMode>("PassCollisionMode"), PassTouchMode = dbReader.GetEnum <PassEventMode>("PassTouchMode"), Velocity = dbReader.GetVector3("Velocity"), IsSoundQueueing = dbReader.GetBool("IsSoundQueueing"), IsAllowedDrop = dbReader.GetBool("IsAllowedDrop"), PhysicsDensity = dbReader.GetDouble("PhysicsDensity"), PhysicsFriction = dbReader.GetDouble("PhysicsFriction"), PhysicsRestitution = dbReader.GetDouble("PhysicsRestitution"), PhysicsGravityMultiplier = dbReader.GetDouble("PhysicsGravityMultiplier"), IsVolumeDetect = dbReader.GetBool("IsVolumeDetect"), IsPhantom = dbReader.GetBool("IsPhantom"), IsPhysics = dbReader.GetBool("IsPhysics"), IsRotateXEnabled = dbReader.GetBool("IsRotateXEnabled"), IsRotateYEnabled = dbReader.GetBool("IsRotateYEnabled"), IsRotateZEnabled = dbReader.GetBool("IsRotateZEnabled"), IsBlockGrab = dbReader.GetBool("IsBlockGrab"), IsSandbox = dbReader.GetBool("IsSandbox"), IsDieAtEdge = dbReader.GetBool("IsDieAtEdge"), IsReturnAtEdge = dbReader.GetBool("IsReturnAtEdge"), IsBlockGrabObject = dbReader.GetBool("IsBlockGrabObject"), SandboxOrigin = dbReader.GetVector3("SandboxOrigin"), ExtendedMesh = new ObjectPart.ExtendedMeshParams { DbSerialization = dbReader.GetBytes("ExtendedMeshData") } }; using (var ms = new MemoryStream(dbReader.GetBytes("DynAttrs"))) { foreach (KeyValuePair <string, IValue> kvp in (Map)LlsdBinary.Deserialize(ms)) { objpart.DynAttrs.Add(kvp.Key, kvp.Value); } } return(objpart); }