this removes use of the mapper for wearables, and I can confirm things
get saved to the database. There are still issues on wearing things after a cleared cache that I'm looking at now.0.6.0-stable
parent
0b719286a4
commit
53bcf2139e
|
@ -747,15 +747,15 @@ namespace OpenSim.Data.MSSQL
|
|||
|
||||
/// Appearance
|
||||
/// TODO: stubs for now to get us to a compiling state gently
|
||||
// override public AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
// {
|
||||
// return new AvatarAppearance();
|
||||
// }
|
||||
override public AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
{
|
||||
return new AvatarAppearance();
|
||||
}
|
||||
|
||||
// override public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
override public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
override public void AddAttachment(LLUUID user, LLUUID item)
|
||||
{
|
||||
|
|
|
@ -191,6 +191,12 @@ namespace OpenSim.Data.MySQL
|
|||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
public void ExecuteSql(string sql)
|
||||
{
|
||||
MySqlCommand cmd = new MySqlCommand(sql, dbcon);
|
||||
cmd.ExecuteNonQuery();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Given a list of tables, return the version of the tables, as seen in the database
|
||||
/// </summary>
|
||||
|
@ -532,38 +538,42 @@ namespace OpenSim.Data.MySQL
|
|||
|
||||
public AvatarAppearance readAppearanceRow(IDataReader reader)
|
||||
{
|
||||
AvatarAppearance appearance = new AvatarAppearance();
|
||||
appearance.Owner = new LLUUID((string)reader["owner"]);
|
||||
appearance.Serial = Convert.ToInt32(reader["serial"]);
|
||||
appearance.VisualParams = (byte[])reader["visual_params"];
|
||||
appearance.Texture = new LLObject.TextureEntry((byte[])reader["texture"], 0, ((byte[])reader["texture"]).Length);
|
||||
appearance.AvatarHeight = (float)Convert.ToDouble(reader["avatar_height"]);
|
||||
appearance.BodyItem = new LLUUID((string)reader["body_item"]);
|
||||
appearance.BodyAsset = new LLUUID((string)reader["body_asset"]);
|
||||
appearance.SkinItem = new LLUUID((string)reader["skin_item"]);
|
||||
appearance.SkinAsset = new LLUUID((string)reader["skin_asset"]);
|
||||
appearance.HairItem = new LLUUID((string)reader["hair_item"]);
|
||||
appearance.HairAsset = new LLUUID((string)reader["hair_asset"]);
|
||||
appearance.EyesItem = new LLUUID((string)reader["eyes_item"]);
|
||||
appearance.EyesAsset = new LLUUID((string)reader["eyes_asset"]);
|
||||
appearance.ShirtItem = new LLUUID((string)reader["shirt_item"]);
|
||||
appearance.ShirtAsset = new LLUUID((string)reader["shirt_asset"]);
|
||||
appearance.PantsItem = new LLUUID((string)reader["pants_item"]);
|
||||
appearance.PantsAsset = new LLUUID((string)reader["pants_asset"]);
|
||||
appearance.ShoesItem = new LLUUID((string)reader["shoes_item"]);
|
||||
appearance.ShoesAsset = new LLUUID((string)reader["shoes_asset"]);
|
||||
appearance.SocksItem = new LLUUID((string)reader["socks_item"]);
|
||||
appearance.SocksAsset = new LLUUID((string)reader["socks_asset"]);
|
||||
appearance.JacketItem = new LLUUID((string)reader["jacket_item"]);
|
||||
appearance.JacketAsset = new LLUUID((string)reader["jacket_asset"]);
|
||||
appearance.GlovesItem = new LLUUID((string)reader["gloves_item"]);
|
||||
appearance.GlovesAsset = new LLUUID((string)reader["gloves_asset"]);
|
||||
appearance.UnderShirtItem = new LLUUID((string)reader["undershirt_item"]);
|
||||
appearance.UnderShirtAsset = new LLUUID((string)reader["undershirt_asset"]);
|
||||
appearance.UnderPantsItem = new LLUUID((string)reader["underpants_item"]);
|
||||
appearance.UnderPantsAsset = new LLUUID((string)reader["underpants_asset"]);
|
||||
appearance.SkirtItem = new LLUUID((string)reader["skirt_item"]);
|
||||
appearance.SkirtAsset = new LLUUID((string)reader["skirt_asset"]);
|
||||
AvatarAppearance appearance = null;
|
||||
if (reader.Read())
|
||||
{
|
||||
appearance = new AvatarAppearance();
|
||||
appearance.Owner = new LLUUID((string)reader["owner"]);
|
||||
appearance.Serial = Convert.ToInt32(reader["serial"]);
|
||||
appearance.VisualParams = (byte[])reader["visual_params"];
|
||||
appearance.Texture = new LLObject.TextureEntry((byte[])reader["texture"], 0, ((byte[])reader["texture"]).Length);
|
||||
appearance.AvatarHeight = (float)Convert.ToDouble(reader["avatar_height"]);
|
||||
appearance.BodyItem = new LLUUID((string)reader["body_item"]);
|
||||
appearance.BodyAsset = new LLUUID((string)reader["body_asset"]);
|
||||
appearance.SkinItem = new LLUUID((string)reader["skin_item"]);
|
||||
appearance.SkinAsset = new LLUUID((string)reader["skin_asset"]);
|
||||
appearance.HairItem = new LLUUID((string)reader["hair_item"]);
|
||||
appearance.HairAsset = new LLUUID((string)reader["hair_asset"]);
|
||||
appearance.EyesItem = new LLUUID((string)reader["eyes_item"]);
|
||||
appearance.EyesAsset = new LLUUID((string)reader["eyes_asset"]);
|
||||
appearance.ShirtItem = new LLUUID((string)reader["shirt_item"]);
|
||||
appearance.ShirtAsset = new LLUUID((string)reader["shirt_asset"]);
|
||||
appearance.PantsItem = new LLUUID((string)reader["pants_item"]);
|
||||
appearance.PantsAsset = new LLUUID((string)reader["pants_asset"]);
|
||||
appearance.ShoesItem = new LLUUID((string)reader["shoes_item"]);
|
||||
appearance.ShoesAsset = new LLUUID((string)reader["shoes_asset"]);
|
||||
appearance.SocksItem = new LLUUID((string)reader["socks_item"]);
|
||||
appearance.SocksAsset = new LLUUID((string)reader["socks_asset"]);
|
||||
appearance.JacketItem = new LLUUID((string)reader["jacket_item"]);
|
||||
appearance.JacketAsset = new LLUUID((string)reader["jacket_asset"]);
|
||||
appearance.GlovesItem = new LLUUID((string)reader["gloves_item"]);
|
||||
appearance.GlovesAsset = new LLUUID((string)reader["gloves_asset"]);
|
||||
appearance.UnderShirtItem = new LLUUID((string)reader["undershirt_item"]);
|
||||
appearance.UnderShirtAsset = new LLUUID((string)reader["undershirt_asset"]);
|
||||
appearance.UnderPantsItem = new LLUUID((string)reader["underpants_item"]);
|
||||
appearance.UnderPantsAsset = new LLUUID((string)reader["underpants_asset"]);
|
||||
appearance.SkirtItem = new LLUUID((string)reader["skirt_item"]);
|
||||
appearance.SkirtAsset = new LLUUID((string)reader["skirt_asset"]);
|
||||
}
|
||||
return appearance;
|
||||
}
|
||||
|
||||
|
@ -1007,10 +1017,10 @@ namespace OpenSim.Data.MySQL
|
|||
MySqlCommand cmd = (MySqlCommand) dbcon.CreateCommand();
|
||||
cmd.CommandText = sql;
|
||||
cmd.Parameters.AddWithValue("?owner", appearance.Owner.ToString());
|
||||
cmd.Parameters.AddWithValue("?serial", appearance.Serial.ToString());
|
||||
cmd.Parameters.AddWithValue("?serial", appearance.Serial);
|
||||
cmd.Parameters.AddWithValue("?visual_params", appearance.VisualParams);
|
||||
cmd.Parameters.AddWithValue("?texture", appearance.Texture.ToBytes());
|
||||
cmd.Parameters.AddWithValue("?avatar_height", appearance.AvatarHeight.ToString());
|
||||
cmd.Parameters.AddWithValue("?avatar_height", appearance.AvatarHeight);
|
||||
cmd.Parameters.AddWithValue("?body_item", appearance.BodyItem.ToString());
|
||||
cmd.Parameters.AddWithValue("?body_asset", appearance.BodyAsset.ToString());
|
||||
cmd.Parameters.AddWithValue("?skin_item", appearance.SkinItem.ToString());
|
||||
|
@ -1037,12 +1047,10 @@ namespace OpenSim.Data.MySQL
|
|||
cmd.Parameters.AddWithValue("?underpants_asset", appearance.UnderPantsAsset.ToString());
|
||||
cmd.Parameters.AddWithValue("?skirt_item", appearance.SkirtItem.ToString());
|
||||
cmd.Parameters.AddWithValue("?skirt_asset", appearance.SkirtAsset.ToString());
|
||||
|
||||
int x;
|
||||
if ((x = cmd.ExecuteNonQuery()) > 0)
|
||||
{
|
||||
|
||||
if (cmd.ExecuteNonQuery() > 0)
|
||||
returnval = true;
|
||||
}
|
||||
|
||||
cmd.Dispose();
|
||||
}
|
||||
catch (Exception e)
|
||||
|
|
|
@ -34,8 +34,6 @@ using libsecondlife;
|
|||
using log4net;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Data.Base;
|
||||
using OpenSim.Data.MapperFactory;
|
||||
using OpenSim.Data.MySQLMapper;
|
||||
|
||||
namespace OpenSim.Data.MySQL
|
||||
{
|
||||
|
@ -56,8 +54,6 @@ namespace OpenSim.Data.MySQL
|
|||
private string m_userFriendsTableName;
|
||||
private string m_appearanceTableName = "avatarappearance";
|
||||
private string m_connectString;
|
||||
private BaseDatabaseConnector m_databaseMapper;
|
||||
private AppearanceTableMapper m_appearanceMapper;
|
||||
|
||||
/// <summary>
|
||||
/// Loads and initialises the MySQL storage plugin
|
||||
|
@ -107,15 +103,6 @@ namespace OpenSim.Data.MySQL
|
|||
database = new MySQLManager(m_connectString);
|
||||
}
|
||||
|
||||
string mapperTypeStr = "MySQL";
|
||||
DataMapperFactory.MAPPER_TYPE mapperType =
|
||||
(DataMapperFactory.MAPPER_TYPE)
|
||||
Enum.Parse(typeof (DataMapperFactory.MAPPER_TYPE), mapperTypeStr);
|
||||
|
||||
m_databaseMapper = DataMapperFactory.GetDataBaseMapper(mapperType, m_connectString);
|
||||
|
||||
m_appearanceMapper = new AppearanceTableMapper(m_databaseMapper, "AvatarAppearance");
|
||||
|
||||
TestTables();
|
||||
}
|
||||
|
||||
|
@ -203,6 +190,12 @@ namespace OpenSim.Data.MySQL
|
|||
{
|
||||
database.ExecuteResourceSql("CreateAvatarAppearance.sql");
|
||||
return;
|
||||
}
|
||||
else if (oldVersion.Contains("Rev.1"))
|
||||
{
|
||||
database.ExecuteSql("drop table avatarappearance");
|
||||
database.ExecuteResourceSql("CreateAvatarAppearance.sql");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -676,18 +669,35 @@ namespace OpenSim.Data.MySQL
|
|||
// override
|
||||
override public AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
{
|
||||
AvatarAppearance appearance = null;
|
||||
if (!m_appearanceMapper.TryGetValue(user.UUID, out appearance))
|
||||
{
|
||||
appearance = null;
|
||||
try {
|
||||
lock (database)
|
||||
{
|
||||
Dictionary<string, string> param = new Dictionary<string, string>();
|
||||
param["?owner"] = user.ToString();
|
||||
|
||||
IDbCommand result = database.Query("SELECT * FROM " + m_appearanceTableName + " WHERE owner = ?owner", param);
|
||||
IDataReader reader = result.ExecuteReader();
|
||||
|
||||
AvatarAppearance appearance = database.readAppearanceRow(reader);
|
||||
|
||||
reader.Close();
|
||||
result.Dispose();
|
||||
|
||||
return appearance;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
database.Reconnect();
|
||||
m_log.Error(e.ToString());
|
||||
return null;
|
||||
}
|
||||
return appearance;
|
||||
}
|
||||
|
||||
// override
|
||||
override public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
{
|
||||
m_appearanceMapper.Update(user.UUID, appearance);
|
||||
appearance.Owner = user;
|
||||
database.insertAppearanceRow(appearance);
|
||||
}
|
||||
|
||||
override public void AddAttachment(LLUUID user, LLUUID item)
|
||||
|
|
|
@ -4,36 +4,39 @@
|
|||
|
||||
DROP TABLE IF EXISTS `avatarappearance`;
|
||||
CREATE TABLE `avatarappearance` (
|
||||
`UUID` char(36) NOT NULL,
|
||||
`Serial` int(10) unsigned NOT NULL,
|
||||
`WearableItem0` char(36) NOT NULL,
|
||||
`WearableAsset0` char(36) NOT NULL,
|
||||
`WearableItem1` char(36) NOT NULL,
|
||||
`WearableAsset1` char(36) NOT NULL,
|
||||
`WearableItem2` char(36) NOT NULL,
|
||||
`WearableAsset2` char(36) NOT NULL,
|
||||
`WearableItem3` char(36) NOT NULL,
|
||||
`WearableAsset3` char(36) NOT NULL,
|
||||
`WearableItem4` char(36) NOT NULL,
|
||||
`WearableAsset4` char(36) NOT NULL,
|
||||
`WearableItem5` char(36) NOT NULL,
|
||||
`WearableAsset5` char(36) NOT NULL,
|
||||
`WearableItem6` char(36) NOT NULL,
|
||||
`WearableAsset6` char(36) NOT NULL,
|
||||
`WearableItem7` char(36) NOT NULL,
|
||||
`WearableAsset7` char(36) NOT NULL,
|
||||
`WearableItem8` char(36) NOT NULL,
|
||||
`WearableAsset8` char(36) NOT NULL,
|
||||
`WearableItem9` char(36) NOT NULL,
|
||||
`WearableAsset9` char(36) NOT NULL,
|
||||
`WearableItem10` char(36) NOT NULL,
|
||||
`WearableAsset10` char(36) NOT NULL,
|
||||
`WearableItem11` char(36) NOT NULL,
|
||||
`WearableAsset11` char(36) NOT NULL,
|
||||
`WearableItem12` char(36) NOT NULL,
|
||||
`WearableAsset12` char(36) NOT NULL,
|
||||
Owner char(36) NOT NULL,
|
||||
Serial int(10) unsigned NOT NULL,
|
||||
Visual_Params blob NOT NULL,
|
||||
Texture blob NOT NULL,
|
||||
Avatar_Height float NOT NULL,
|
||||
Body_Item char(36) NOT NULL,
|
||||
Body_Asset char(36) NOT NULL,
|
||||
Skin_Item char(36) NOT NULL,
|
||||
Skin_Asset char(36) NOT NULL,
|
||||
Hair_Item char(36) NOT NULL,
|
||||
Hair_Asset char(36) NOT NULL,
|
||||
Eyes_Item char(36) NOT NULL,
|
||||
Eyes_Asset char(36) NOT NULL,
|
||||
Shirt_Item char(36) NOT NULL,
|
||||
Shirt_Asset char(36) NOT NULL,
|
||||
Pants_Item char(36) NOT NULL,
|
||||
Pants_Asset char(36) NOT NULL,
|
||||
Shoes_Item char(36) NOT NULL,
|
||||
Shoes_Asset char(36) NOT NULL,
|
||||
Socks_Item char(36) NOT NULL,
|
||||
Socks_Asset char(36) NOT NULL,
|
||||
Jacket_Item char(36) NOT NULL,
|
||||
Jacket_Asset char(36) NOT NULL,
|
||||
Gloves_Item char(36) NOT NULL,
|
||||
Gloves_Asset char(36) NOT NULL,
|
||||
Undershirt_Item char(36) NOT NULL,
|
||||
Undershirt_Asset char(36) NOT NULL,
|
||||
Underpants_Item char(36) NOT NULL,
|
||||
Underpants_Asset char(36) NOT NULL,
|
||||
Skirt_Item char(36) NOT NULL,
|
||||
Skirt_Asset char(36) NOT NULL,
|
||||
|
||||
|
||||
PRIMARY KEY (`UUID`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Rev.1';
|
||||
PRIMARY KEY (`Owner`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Rev.2';
|
||||
|
||||
|
|
|
@ -306,7 +306,7 @@ namespace OpenSim.Data.NHibernate
|
|||
|
||||
/// Appearance
|
||||
/// TODO: stubs for now to get us to a compiling state gently
|
||||
public AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
public override AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
{
|
||||
AvatarAppearance appearance;
|
||||
// TODO: I'm sure I'll have to do something silly here
|
||||
|
@ -328,7 +328,7 @@ namespace OpenSim.Data.NHibernate
|
|||
}
|
||||
|
||||
|
||||
public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
public override void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
{
|
||||
bool exists = ExistsAppearance(user);
|
||||
using (ISession session = factory.OpenSession())
|
||||
|
|
|
@ -480,15 +480,15 @@ namespace OpenSim.Data.SQLite
|
|||
|
||||
/// Appearance
|
||||
/// TODO: stubs for now to get us to a compiling state gently
|
||||
// override public AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
// {
|
||||
// return new AvatarAppearance();
|
||||
// }
|
||||
|
||||
// override public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
override public AvatarAppearance GetUserAppearance(LLUUID user)
|
||||
{
|
||||
return new AvatarAppearance();
|
||||
}
|
||||
|
||||
override public void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
override public void AddAttachment(LLUUID user, LLUUID item)
|
||||
{
|
||||
|
|
|
@ -59,20 +59,22 @@ namespace OpenSim.Data
|
|||
public abstract string Name {get;}
|
||||
public abstract void Initialise(string connect);
|
||||
public abstract List<AvatarPickerAvatar> GeneratePickerResults(LLUUID queryID, string query);
|
||||
public virtual AvatarAppearance GetUserAppearance(LLUUID user) {
|
||||
AvatarAppearance aa = null;
|
||||
try {
|
||||
aa = aplist[user];
|
||||
m_log.Info("[APPEARANCE] Found appearance for " + user.ToString() + aa.ToString());
|
||||
} catch (System.Collections.Generic.KeyNotFoundException e) {
|
||||
m_log.Info("[APPEARANCE] No appearance found for " + user.ToString());
|
||||
}
|
||||
return aa;
|
||||
}
|
||||
public virtual void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance) {
|
||||
aplist[user] = appearance;
|
||||
m_log.Info("[APPEARANCE] Setting appearance for " + user.ToString() + appearance.ToString());
|
||||
}
|
||||
public abstract AvatarAppearance GetUserAppearance(LLUUID user);
|
||||
public abstract void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance);
|
||||
// public virtual AvatarAppearance GetUserAppearance(LLUUID user) {
|
||||
// AvatarAppearance aa = null;
|
||||
// try {
|
||||
// aa = aplist[user];
|
||||
// m_log.Info("[APPEARANCE] Found appearance for " + user.ToString() + aa.ToString());
|
||||
// } catch (System.Collections.Generic.KeyNotFoundException e) {
|
||||
// m_log.Info("[APPEARANCE] No appearance found for " + user.ToString());
|
||||
// }
|
||||
// return aa;
|
||||
// }
|
||||
// public virtual void UpdateUserAppearance(LLUUID user, AvatarAppearance appearance) {
|
||||
// aplist[user] = appearance;
|
||||
// m_log.Info("[APPEARANCE] Setting appearance for " + user.ToString() + appearance.ToString());
|
||||
// }
|
||||
public abstract void AddAttachment(LLUUID user, LLUUID item);
|
||||
public abstract void RemoveAttachment(LLUUID user, LLUUID item);
|
||||
public abstract List<LLUUID> GetAttachments(LLUUID user);
|
||||
|
|
|
@ -1456,8 +1456,7 @@ namespace OpenSim.Region.Environment.Scenes
|
|||
|
||||
SendFullUpdateToAllClients();
|
||||
SendAppearanceToAllOtherAgents();
|
||||
// This is probably egregious
|
||||
m_controllingClient.SendWearables(m_appearance.Wearables, m_appearance.Serial++);
|
||||
SendOwnAppearance();
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -61,9 +61,14 @@ namespace OpenSim.Region.Modules.AvatarFactory
|
|||
{
|
||||
appearance = m_scene.CommsManager.UserService.GetUserAppearance(avatarId);
|
||||
if (appearance != null)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_log.InfoFormat("[APPEARANCE] appearance not found for {0}", avatarId.ToString());
|
||||
return false;
|
||||
}
|
||||
|
||||
// //should only let one thread at a time do this part
|
||||
// EventWaitHandle waitHandle = null;
|
||||
|
|
Loading…
Reference in New Issue