diff options
author | Melanie Thielker | 2008-08-24 05:25:26 +0000 |
---|---|---|
committer | Melanie Thielker | 2008-08-24 05:25:26 +0000 |
commit | c9b5641c499d23ff6674cafa1026b88ade1debec (patch) | |
tree | d9a274c8a60f94cc4246beb7816d6b453e8d6436 | |
parent | Add the fields for the eye candy and sale featires to the prims table. (diff) | |
download | opensim-SC-c9b5641c499d23ff6674cafa1026b88ade1debec.zip opensim-SC-c9b5641c499d23ff6674cafa1026b88ade1debec.tar.gz opensim-SC-c9b5641c499d23ff6674cafa1026b88ade1debec.tar.bz2 opensim-SC-c9b5641c499d23ff6674cafa1026b88ade1debec.tar.xz |
Plumb the data path for all those eye candy values. Saves texture
animation, target omega, looped sound, script access pin, allowed
drop state and sale data. Loads it, too. Not all tested.
Code: No Nuts. Data: Cannot Guarantee Nut Free.
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Data/MySQL/MySQLRegionData.cs | 194 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 3 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | 7 |
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 |