aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim')
-rw-r--r--OpenSim/Data/MySQL/MySQLRegionData.cs194
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs3
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectPart.cs7
3 files changed, 148 insertions, 56 deletions
diff --git a/OpenSim/Data/MySQL/MySQLRegionData.cs b/OpenSim/Data/MySQL/MySQLRegionData.cs
index 85af5df..c0ebbc6 100644
--- a/OpenSim/Data/MySQL/MySQLRegionData.cs
+++ b/OpenSim/Data/MySQL/MySQLRegionData.cs
@@ -979,6 +979,38 @@ namespace OpenSim.Data.MySQL
979 createCol(prims, "SitTargetOrientY", typeof (Double)); 979 createCol(prims, "SitTargetOrientY", typeof (Double));
980 createCol(prims, "SitTargetOrientZ", typeof (Double)); 980 createCol(prims, "SitTargetOrientZ", typeof (Double));
981 981
982 createCol(prims, "PayPrice", typeof(Int32));
983 createCol(prims, "PayButton1", typeof(Int32));
984 createCol(prims, "PayButton2", typeof(Int32));
985 createCol(prims, "PayButton3", typeof(Int32));
986 createCol(prims, "PayButton4", typeof(Int32));
987
988 createCol(prims, "LoopedSound", typeof(String));
989 createCol(prims, "LoopedSoundGain", typeof(Double));
990 createCol(prims, "TextureAnimation", typeof(Byte[]));
991
992 createCol(prims, "OmegaX", typeof (Double));
993 createCol(prims, "OmegaY", typeof (Double));
994 createCol(prims, "OmegaZ", typeof (Double));
995
996 createCol(prims, "CameraEyeOffsetX", typeof (Double));
997 createCol(prims, "CameraEyeOffsetY", typeof (Double));
998 createCol(prims, "CameraEyeOffsetZ", typeof (Double));
999
1000 createCol(prims, "CameraAtOffsetX", typeof (Double));
1001 createCol(prims, "CameraAtOffsetY", typeof (Double));
1002 createCol(prims, "CameraAtOffsetZ", typeof (Double));
1003
1004 createCol(prims, "ForceMouselook", typeof (Int16));
1005
1006 createCol(prims, "ScriptAccessPin", typeof(Int32));
1007
1008 createCol(prims, "AllowedDrop", typeof (Int16));
1009 createCol(prims, "DieAtEdge", typeof (Int16));
1010
1011 createCol(prims, "SalePrice", typeof(Int32));
1012 createCol(prims, "SaleType", typeof (Int16));
1013
982 1014
983 // Add in contraints 1015 // Add in contraints
984 prims.PrimaryKey = new DataColumn[] {prims.Columns["UUID"]}; 1016 prims.PrimaryKey = new DataColumn[] {prims.Columns["UUID"]};
@@ -1200,38 +1232,66 @@ namespace OpenSim.Data.MySQL
1200 Convert.ToSingle(row["RotationZ"]), 1232 Convert.ToSingle(row["RotationZ"]),
1201 Convert.ToSingle(row["RotationW"]) 1233 Convert.ToSingle(row["RotationW"])
1202 ); 1234 );
1203 try 1235 prim.SitTargetPositionLL = new LLVector3(
1204 { 1236 Convert.ToSingle(row["SitTargetOffsetX"]),
1205 prim.SitTargetPositionLL = new LLVector3( 1237 Convert.ToSingle(row["SitTargetOffsetY"]),
1206 Convert.ToSingle(row["SitTargetOffsetX"]), 1238 Convert.ToSingle(row["SitTargetOffsetZ"])
1207 Convert.ToSingle(row["SitTargetOffsetY"]), 1239 );
1208 Convert.ToSingle(row["SitTargetOffsetZ"])); 1240 prim.SitTargetOrientationLL = new LLQuaternion(
1209 prim.SitTargetOrientationLL = new LLQuaternion( 1241 Convert.ToSingle(row["SitTargetOrientX"]),
1210 Convert.ToSingle( 1242 Convert.ToSingle(row["SitTargetOrientY"]),
1211 row["SitTargetOrientX"]), 1243 Convert.ToSingle(row["SitTargetOrientZ"]),
1212 Convert.ToSingle( 1244 Convert.ToSingle(row["SitTargetOrientW"])
1213 row["SitTargetOrientY"]), 1245 );
1214 Convert.ToSingle( 1246
1215 row["SitTargetOrientZ"]), 1247 prim.PayPrice[0] = Convert.ToInt32(row["PayPrice"]);
1216 Convert.ToSingle( 1248 prim.PayPrice[1] = Convert.ToInt32(row["PayButton1"]);
1217 row["SitTargetOrientW"])); 1249 prim.PayPrice[2] = Convert.ToInt32(row["PayButton2"]);
1218 } 1250 prim.PayPrice[3] = Convert.ToInt32(row["PayButton3"]);
1219 catch (InvalidCastException) 1251 prim.PayPrice[4] = Convert.ToInt32(row["PayButton4"]);
1220 { 1252
1221 // Database table was created before we got here and needs to be created! :P 1253 prim.Sound = new LLUUID(row["LoopedSound"].ToString());
1254 prim.SoundGain = Convert.ToSingle(row["LoopedSoundGain"]);
1255 prim.SoundFlags = 1; // If it's persisted at all, it's looped
1256
1257 if (!row.IsNull("TextureAnimation"))
1258 prim.TextureAnimation = (Byte[])row["TextureAnimation"];
1259
1260 prim.RotationalVelocity = new LLVector3(
1261 Convert.ToSingle(row["OmegaX"]),
1262 Convert.ToSingle(row["OmegaY"]),
1263 Convert.ToSingle(row["OmegaZ"])
1264 );
1265
1266 // TODO: Rotation
1267 // OmegaX, OmegaY, OmegaZ
1268
1269 prim.SetCameraEyeOffset(new LLVector3(
1270 Convert.ToSingle(row["CameraEyeOffsetX"]),
1271 Convert.ToSingle(row["CameraEyeOffsetY"]),
1272 Convert.ToSingle(row["CameraEyeOffsetZ"])
1273 ));
1274
1275 prim.SetCameraAtOffset(new LLVector3(
1276 Convert.ToSingle(row["CameraAtOffsetX"]),
1277 Convert.ToSingle(row["CameraAtOffsetY"]),
1278 Convert.ToSingle(row["CameraAtOffsetZ"])
1279 ));
1280
1281 if (Convert.ToInt16(row["ForceMouselook"]) != 0)
1282 prim.SetForceMouselook(true);
1283
1284 prim.ScriptAccessPin = Convert.ToInt32(row["ScriptAccessPin"]);
1285
1286 if (Convert.ToInt16(row["AllowedDrop"]) != 0)
1287 prim.AllowedDrop = true;
1288
1289 if (Convert.ToInt16(row["DieAtEdge"]) != 0)
1290 prim.DIE_AT_EDGE = true;
1291
1292 prim.SalePrice = Convert.ToInt32(row["SalePrice"]);
1293 prim.ObjectSaleType = Convert.ToByte(row["SaleType"]);
1222 1294
1223 lock (m_dataSet)
1224 {
1225 using (
1226 MySqlCommand cmd =
1227 new MySqlCommand(
1228 "ALTER TABLE `prims` ADD COLUMN `SitTargetOffsetX` float NOT NULL default 0, ADD COLUMN `SitTargetOffsetY` float NOT NULL default 0, ADD COLUMN `SitTargetOffsetZ` float NOT NULL default 0, ADD COLUMN `SitTargetOrientW` float NOT NULL default 0, ADD COLUMN `SitTargetOrientX` float NOT NULL default 0, ADD COLUMN `SitTargetOrientY` float NOT NULL default 0, ADD COLUMN `SitTargetOrientZ` float NOT NULL default 0;",
1229 m_connection))
1230 {
1231 cmd.ExecuteNonQuery();
1232 }
1233 }
1234 }
1235 return prim; 1295 return prim;
1236 } 1296 }
1237 1297
@@ -1471,33 +1531,57 @@ namespace OpenSim.Data.MySQL
1471 row["RotationZ"] = prim.RotationOffset.Z; 1531 row["RotationZ"] = prim.RotationOffset.Z;
1472 row["RotationW"] = prim.RotationOffset.W; 1532 row["RotationW"] = prim.RotationOffset.W;
1473 1533
1474 try 1534 // Sit target
1535 LLVector3 sitTargetPos = prim.SitTargetPositionLL;
1536 row["SitTargetOffsetX"] = sitTargetPos.X;
1537 row["SitTargetOffsetY"] = sitTargetPos.Y;
1538 row["SitTargetOffsetZ"] = sitTargetPos.Z;
1539
1540 LLQuaternion sitTargetOrient = prim.SitTargetOrientationLL;
1541 row["SitTargetOrientW"] = sitTargetOrient.W;
1542 row["SitTargetOrientX"] = sitTargetOrient.X;
1543 row["SitTargetOrientY"] = sitTargetOrient.Y;
1544 row["SitTargetOrientZ"] = sitTargetOrient.Z;
1545
1546 row["PayPrice"] = prim.PayPrice[0];
1547 row["PayButton1"] = prim.PayPrice[1];
1548 row["PayButton2"] = prim.PayPrice[2];
1549 row["PayButton3"] = prim.PayPrice[3];
1550 row["PayButton4"] = prim.PayPrice[4];
1551
1552 if ((prim.SoundFlags & 1) != 0) // Looped
1475 { 1553 {
1476 // Sit target 1554 row["LoopedSound"] = prim.Sound.ToString();
1477 LLVector3 sitTargetPos = prim.SitTargetPositionLL; 1555 row["LoopedSoundGain"] = prim.SoundGain;
1478 row["SitTargetOffsetX"] = sitTargetPos.X;
1479 row["SitTargetOffsetY"] = sitTargetPos.Y;
1480 row["SitTargetOffsetZ"] = sitTargetPos.Z;
1481
1482 LLQuaternion sitTargetOrient = prim.SitTargetOrientationLL;
1483 row["SitTargetOrientW"] = sitTargetOrient.W;
1484 row["SitTargetOrientX"] = sitTargetOrient.X;
1485 row["SitTargetOrientY"] = sitTargetOrient.Y;
1486 row["SitTargetOrientZ"] = sitTargetOrient.Z;
1487 } 1556 }
1488 catch (MySqlException)
1489 {
1490 // Database table was created before we got here and needs to be created! :P
1491 1557
1492 using ( 1558 row["TextureAnimation"] = prim.TextureAnimation;
1493 MySqlCommand cmd = 1559
1494 new MySqlCommand( 1560 row["OmegaX"] = prim.RotationalVelocity.X;
1495 "ALTER TABLE `prims` ADD COLUMN `SitTargetOffsetX` float NOT NULL default 0, ADD COLUMN `SitTargetOffsetY` float NOT NULL default 0, ADD COLUMN `SitTargetOffsetZ` float NOT NULL default 0, ADD COLUMN `SitTargetOrientW` float NOT NULL default 0, ADD COLUMN `SitTargetOrientX` float NOT NULL default 0, ADD COLUMN `SitTargetOrientY` float NOT NULL default 0, ADD COLUMN `SitTargetOrientZ` float NOT NULL default 0;", 1561 row["OmegaY"] = prim.RotationalVelocity.Y;
1496 m_connection)) 1562 row["OmegaZ"] = prim.RotationalVelocity.Z;
1497 { 1563
1498 cmd.ExecuteNonQuery(); 1564 row["CameraEyeOffsetX"] = prim.GetCameraEyeOffset().X;
1499 } 1565 row["CameraEyeOffsetX"] = prim.GetCameraEyeOffset().Y;
1500 } 1566 row["CameraEyeOffsetZ"] = prim.GetCameraEyeOffset().Z;
1567
1568 row["CameraAtOffsetX"] = prim.GetCameraAtOffset().X;
1569 row["CameraAtOffsetX"] = prim.GetCameraAtOffset().Y;
1570 row["CameraAtOffsetZ"] = prim.GetCameraAtOffset().Z;
1571
1572 if (prim.GetForceMouselook())
1573 row["ForceMouselook"] = 1;
1574
1575 row["ScriptAccessPin"] = prim.ScriptAccessPin;
1576
1577 if (prim.AllowedDrop)
1578 row["AllowedDrop"] = 1;
1579 if (prim.DIE_AT_EDGE)
1580 row["DieAtEdge"] = 1;
1581
1582 row["SalePrice"] = prim.SalePrice;
1583 row["SaleType"] = Convert.ToInt16(prim.ObjectSaleType);
1584
1501 } 1585 }
1502 1586
1503 /// <summary> 1587 /// <summary>
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index c44a714..36471e9 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -3940,7 +3940,8 @@ namespace OpenSim.Region.Environment.Scenes
3940 part.ObjectSaleType = saleType; 3940 part.ObjectSaleType = saleType;
3941 part.SalePrice = salePrice; 3941 part.SalePrice = salePrice;
3942 3942
3943 m_log.DebugFormat("[SCENE] Set sale data of object {0} to {1} ${2}", part.UUID, saleType, salePrice); 3943 part.ParentGroup.HasGroupChanged = true;
3944
3944 part.GetProperties(client); 3945 part.GetProperties(client);
3945 } 3946 }
3946 3947
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
index 927791f..5861298 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs
@@ -428,6 +428,13 @@ namespace OpenSim.Region.Environment.Scenes
428 set { m_scriptAccessPin = (int)value; } 428 set { m_scriptAccessPin = (int)value; }
429 } 429 }
430 430
431 [XmlIgnore]
432 public Byte[] TextureAnimation
433 {
434 get { return m_TextureAnimation; }
435 set { m_TextureAnimation = value; }
436 }
437
431 public LLVector3 GroupPosition 438 public LLVector3 GroupPosition
432 { 439 {
433 get 440 get