From aec200be9dbb063e0ae4d4d489b8b80d0cf95845 Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Tue, 14 Mar 2023 17:23:48 +0000 Subject: [PATCH] persist sop animations in pgsql --- OpenSim/Data/PGSQL/PGSQLSimulationData.cs | 24 ++++++++++++++++--- .../PGSQL/Resources/RegionStore.migrations | 8 ++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs index 759528448f..d78d1a8736 100755 --- a/OpenSim/Data/PGSQL/PGSQLSimulationData.cs +++ b/OpenSim/Data/PGSQL/PGSQLSimulationData.cs @@ -355,7 +355,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 + ""sitactrange"" =:sitactrange, ""pseudocrc"" = :pseudocrc, ""sopanims"" = :sopanims WHERE ""UUID"" = :UUID ; @@ -371,7 +371,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"" + ""standtargetx"", ""standtargety"", ""standtargetz"", ""sitactrange"", ""pseudocrc"", ""sopanims"" ) Select :UUID, :CreationDate, :Name, :Text, :Description, :SitName, :TouchName, :ObjectFlags, :OwnerMask, :NextOwnerMask, :GroupMask, :EveryoneMask, :BaseMask, :PositionX, :PositionY, :PositionZ, :GroupPositionX, :GroupPositionY, :GroupPositionZ, :VelocityX, @@ -383,7 +383,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 + :standtargetx, :standtargety, :standtargetz,:sitactrange, :pseudocrc, :sopanims where not EXISTS (SELECT ""UUID"" FROM prims WHERE ""UUID"" = :UUID); "; @@ -1393,6 +1393,19 @@ namespace OpenSim.Data.PGSQL if(pseudocrc != 0) prim.PseudoCRC = pseudocrc; + if (!(primRow["sopanims"] is DBNull)) + { + byte[] data = (byte[])primRow["sopanims"]; + if (data.Length > 0) + prim.DeSerializeAnimations(data); + else + prim.Animations = null; + } + else + { + prim.Animations = null; + } + return prim; } @@ -1852,6 +1865,11 @@ namespace OpenSim.Data.PGSQL parameters.Add(_Database.CreateParameter("pseudocrc", prim.PseudoCRC)); + if (prim.Animations != null) + parameters.Add(_Database.CreateParameter("sopanims", prim.SerializeAnimations())); + else + parameters.Add(_Database.CreateParameter("sopanims", null)); + return parameters.ToArray(); } diff --git a/OpenSim/Data/PGSQL/Resources/RegionStore.migrations b/OpenSim/Data/PGSQL/Resources/RegionStore.migrations index e267345420..1def32ef1f 100644 --- a/OpenSim/Data/PGSQL/Resources/RegionStore.migrations +++ b/OpenSim/Data/PGSQL/Resources/RegionStore.migrations @@ -1254,4 +1254,10 @@ COMMIT; :VERSION 51 #----- parcel environment store BEGIN; ALTER TABLE `land` ADD COLUMN `environment` varchar default NULL; -COMMIT; \ No newline at end of file +COMMIT; + +:VERSION 52 ##----- sop animations and materials +BEGIN; +ALTER TABLE `prims` ADD COLUMN `sopanims` bytea NULL; +ALTER TABLE `primshapes` ADD COLUMN `MatOvrd` bytea NULL; +COMMIT;