mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 17:32:42 +08:00
persist start string parameter (from rezobject)
This commit is contained in:
@@ -171,7 +171,7 @@ namespace OpenSim.Data.MySQL
|
||||
"PhysicsShapeType, Density, GravityModifier, " +
|
||||
"Friction, Restitution, Vehicle, PhysInertia, DynAttrs, " +
|
||||
"RotationAxisLocks, sopanims, sitactrange, pseudocrc, " +
|
||||
"lnkstBinData" +
|
||||
"lnkstBinData, StartStr" +
|
||||
") values (" + "?UUID, " +
|
||||
"?CreationDate, ?Name, ?Text, " +
|
||||
"?Description, ?SitName, ?TouchName, " +
|
||||
@@ -207,7 +207,7 @@ namespace OpenSim.Data.MySQL
|
||||
"?PhysicsShapeType, ?Density, ?GravityModifier, " +
|
||||
"?Friction, ?Restitution, ?Vehicle, ?PhysInertia, ?DynAttrs, " +
|
||||
"?RotationAxisLocks, ?sopanims, ?sitactrange, ?pseudocrc, " +
|
||||
"?lnkstBinData)";
|
||||
"?lnkstBinData, ?StartStr)";
|
||||
|
||||
FillPrimCommand(cmd, prim, obj.UUID, regionUUID);
|
||||
|
||||
@@ -362,6 +362,10 @@ namespace OpenSim.Data.MySQL
|
||||
byte[] data = (byte[])reader["lnkstBinData"];
|
||||
newSog.LinksetData = LinksetData.FromBin(data);
|
||||
}
|
||||
if(reader["StartStr"] is not DBNull)
|
||||
{
|
||||
newSog.RezStringParameter = (string)reader["StartStr"];
|
||||
}
|
||||
}
|
||||
else
|
||||
m_log.Warn($"[REGION DB]: duplicated SOG with root prim \"{prim.Name}\" {prim.UUID} in region {regionID}");
|
||||
|
||||
@@ -567,3 +567,8 @@ ALTER TABLE `regionsettings` ADD COLUMN `TerrainPBR2` varchar(36) NOT NULL DEFAU
|
||||
ALTER TABLE `regionsettings` ADD COLUMN `TerrainPBR3` varchar(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
|
||||
ALTER TABLE `regionsettings` ADD COLUMN `TerrainPBR4` varchar(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
|
||||
COMMIT;
|
||||
|
||||
:VERSION 67 #----- add rez start string param column
|
||||
BEGIN;
|
||||
ALTER TABLE `prims` ADD COLUMN `StartStr` text default NULL;
|
||||
COMMIT;
|
||||
|
||||
@@ -163,6 +163,10 @@ namespace OpenSim.Data.PGSQL
|
||||
byte[] data = (byte[])reader["lnkstBinData"];
|
||||
grp.LinksetData = LinksetData.FromBin(data);
|
||||
}
|
||||
if(reader["StartStr"] is not DBNull)
|
||||
{
|
||||
grp.RezStringParameter = (string)reader["StartStr"];
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -352,7 +356,7 @@ namespace OpenSim.Data.PGSQL
|
||||
""ClickAction"" = :ClickAction, ""Material"" = :Material, ""CollisionSound"" = :CollisionSound, ""CollisionSoundVolume"" = :CollisionSoundVolume, ""PassTouches"" = :PassTouches,
|
||||
""LinkNumber"" = :LinkNumber, ""MediaURL"" = :MediaURL, ""DynAttrs"" = :DynAttrs, ""Vehicle"" = :Vehicle,
|
||||
""PhysInertia"" = :PhysInertia, ""standtargetx"" =:standtargetx, ""standtargety"" =:standtargety, ""standtargetz"" =:standtargetz,
|
||||
""sitactrange"" =:sitactrange, ""pseudocrc"" = :pseudocrc, ""sopanims"" = :sopanims, ""lnkstBinData"" = :lnkstBinData
|
||||
""sitactrange"" =:sitactrange, ""pseudocrc"" = :pseudocrc, ""sopanims"" = :sopanims, ""lnkstBinData"" = :lnkstBinData, ""StartStr"" = :StartStr
|
||||
|
||||
WHERE ""UUID"" = :UUID ;
|
||||
|
||||
@@ -368,7 +372,7 @@ namespace OpenSim.Data.PGSQL
|
||||
""ForceMouselook"", ""ScriptAccessPin"", ""AllowedDrop"", ""DieAtEdge"", ""SalePrice"", ""SaleType"", ""ColorR"", ""ColorG"", ""ColorB"", ""ColorA"",
|
||||
""ParticleSystem"", ""ClickAction"", ""Material"", ""CollisionSound"", ""CollisionSoundVolume"", ""PassTouches"", ""LinkNumber"", ""MediaURL"", ""DynAttrs"",
|
||||
""PhysicsShapeType"", ""Density"", ""GravityModifier"", ""Friction"", ""Restitution"", ""PassCollisions"", ""RotationAxisLocks"", ""RezzerID"" , ""Vehicle"", ""PhysInertia"",
|
||||
""standtargetx"", ""standtargety"", ""standtargetz"", ""sitactrange"", ""pseudocrc"",""sopanims"",""lnkstBinData""
|
||||
""standtargetx"", ""standtargety"", ""standtargetz"", ""sitactrange"", ""pseudocrc"",""sopanims"",""lnkstBinData"", ""StartStr""
|
||||
) Select
|
||||
:UUID, :CreationDate, :Name, :Text, :Description, :SitName, :TouchName, :ObjectFlags, :OwnerMask, :NextOwnerMask, :GroupMask,
|
||||
:EveryoneMask, :BaseMask, :PositionX, :PositionY, :PositionZ, :GroupPositionX, :GroupPositionY, :GroupPositionZ, :VelocityX,
|
||||
@@ -380,7 +384,7 @@ namespace OpenSim.Data.PGSQL
|
||||
:ForceMouselook, :ScriptAccessPin, :AllowedDrop, :DieAtEdge, :SalePrice, :SaleType, :ColorR, :ColorG, :ColorB, :ColorA,
|
||||
:ParticleSystem, :ClickAction, :Material, :CollisionSound, :CollisionSoundVolume, :PassTouches, :LinkNumber, :MediaURL, :DynAttrs,
|
||||
:PhysicsShapeType, :Density, :GravityModifier, :Friction, :Restitution, :PassCollisions, :RotationAxisLocks, :RezzerID, :Vehicle, :PhysInertia,
|
||||
:standtargetx, :standtargety, :standtargetz,:sitactrange, :pseudocrc, :sopanims, :lnkstBinData
|
||||
:standtargetx, :standtargety, :standtargetz,:sitactrange, :pseudocrc, :sopanims, :lnkstBinData, :StartStr
|
||||
where not EXISTS (SELECT ""UUID"" FROM prims WHERE ""UUID"" = :UUID);
|
||||
";
|
||||
|
||||
@@ -1883,6 +1887,11 @@ namespace OpenSim.Data.PGSQL
|
||||
else
|
||||
parameters.Add(_Database.CreateParameterNullBytea("lnkstBinData"));
|
||||
|
||||
if(prim.IsRoot)
|
||||
parameters.Add(_Database.CreateParameter("StartStr", prim.ParentGroup.RezStringParameter));
|
||||
else
|
||||
parameters.Add(_Database.CreateParameter("StartStr", null));
|
||||
|
||||
return parameters.ToArray();
|
||||
}
|
||||
|
||||
|
||||
@@ -1304,3 +1304,8 @@ CREATE TABLE "regionextra"
|
||||
PRIMARY KEY ("RegionID", "Name")
|
||||
);
|
||||
COMMIT;
|
||||
|
||||
:VERSION 58 #----- add rez start string param column
|
||||
BEGIN;
|
||||
ALTER TABLE `prims` ADD COLUMN `StartStr` TEXT;
|
||||
COMMIT;
|
||||
|
||||
@@ -419,3 +419,8 @@ ALTER TABLE regionsettings ADD COLUMN TerrainPBR2 char(36) NOT NULL DEFAULT '000
|
||||
ALTER TABLE regionsettings ADD COLUMN TerrainPBR3 char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
|
||||
ALTER TABLE regionsettings ADD COLUMN TerrainPBR4 char(36) NOT NULL DEFAULT '00000000-0000-0000-0000-000000000000';
|
||||
COMMIT;
|
||||
|
||||
:VERSION 43 #----- add rez start string param column
|
||||
BEGIN;
|
||||
ALTER TABLE `prims` ADD COLUMN `StartStr` TEXT;
|
||||
COMMIT;
|
||||
|
||||
@@ -662,7 +662,10 @@ namespace OpenSim.Data.SQLite
|
||||
byte[] data = (byte[])primRow["lnkstBinData"];
|
||||
group.LinksetData = LinksetData.FromBin(data);
|
||||
}
|
||||
|
||||
if(primRow["StartStr"] is not DBNull)
|
||||
{
|
||||
group.RezStringParameter = (string)primRow["StartStr"];
|
||||
}
|
||||
createdObjects.Add(group.UUID, group);
|
||||
retvals.Add(group);
|
||||
LoadItems(prim);
|
||||
@@ -1251,6 +1254,7 @@ namespace OpenSim.Data.SQLite
|
||||
createCol(prims, "sopanims", typeof(byte[]));
|
||||
|
||||
createCol(prims, "lnkstBinData", typeof(byte[]));
|
||||
createCol(prims, "StartStr", typeof(string));
|
||||
|
||||
// Add in contraints
|
||||
prims.PrimaryKey = new DataColumn[] { prims.Columns["UUID"] };
|
||||
@@ -2217,6 +2221,11 @@ namespace OpenSim.Data.SQLite
|
||||
row["lnkstBinData"] = prim.ParentGroup.LinksetData.ToBin();
|
||||
else
|
||||
row["lnkstBinData"] = null;
|
||||
|
||||
if (prim.IsRoot)
|
||||
row["StartSrc"] = prim.ParentGroup.RezStringParameter;
|
||||
else
|
||||
row["StartSrc"] = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -151,6 +151,11 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
sceneObject.LinksetData = LinksetData.FromXML(innerlnkstdttxt.AsSpan());
|
||||
}
|
||||
|
||||
if (reader.Name == "StartStr" && reader.NodeType == XmlNodeType.Element)
|
||||
{
|
||||
sceneObject.RezStringParameter = reader.ReadElementContentAsString();
|
||||
}
|
||||
|
||||
// Script state may, or may not, exist. Not having any, is NOT
|
||||
// ever a problem.
|
||||
sceneObject.LoadScriptState(reader);
|
||||
@@ -260,6 +265,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
if(sceneObject.RezStringParameter is not null)
|
||||
writer.WriteElementString("StartStr", sceneObject.RezStringParameter);
|
||||
|
||||
sceneObject.LinksetData?.ToXML(writer);
|
||||
|
||||
if (doScriptStates)
|
||||
@@ -337,6 +345,10 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
if (keylinksetdata.Count > 0)
|
||||
sceneObject.LinksetData = LinksetData.FromXML(keylinksetdata[0].InnerText.AsSpan());
|
||||
|
||||
XmlNodeList StartStr = doc.GetElementsByTagName("StartStr");
|
||||
if (StartStr.Count > 0)
|
||||
sceneObject.RezStringParameter = StartStr[0].InnerText;
|
||||
|
||||
// Script state may, or may not, exist. Not having any, is NOT
|
||||
// ever a problem.
|
||||
sceneObject.LoadScriptState(doc);
|
||||
@@ -1519,6 +1531,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
|
||||
writer.WriteEndElement();
|
||||
}
|
||||
|
||||
if(sog.RezStringParameter is not null)
|
||||
writer.WriteElementString("StartStr", sog.RezStringParameter);
|
||||
|
||||
sog.LinksetData?.ToXML(writer);
|
||||
|
||||
writer.WriteEndElement();
|
||||
|
||||
Reference in New Issue
Block a user