persist start string parameter (from rezobject)

This commit is contained in:
UbitUmarov
2024-11-26 18:34:26 +00:00
parent cb1c8000a1
commit cd6efb7553
7 changed files with 58 additions and 6 deletions

View File

@@ -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}");

View File

@@ -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;

View File

@@ -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();
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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>

View File

@@ -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();