diff options
Diffstat (limited to 'OpenSim/Region')
8 files changed, 61 insertions, 41 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs index ef68471..5887249 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSDynamics.cs | |||
@@ -87,7 +87,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
87 | private float m_angularMotorTimescale = 0; // motor angular velocity ramp up rate | 87 | private float m_angularMotorTimescale = 0; // motor angular velocity ramp up rate |
88 | private float m_angularMotorDecayTimescale = 0; // motor angular velocity decay rate | 88 | private float m_angularMotorDecayTimescale = 0; // motor angular velocity decay rate |
89 | private Vector3 m_angularFrictionTimescale = Vector3.Zero; // body angular velocity decay rate | 89 | private Vector3 m_angularFrictionTimescale = Vector3.Zero; // body angular velocity decay rate |
90 | private Vector3 m_lastAngularCorrection = Vector3.Zero; | 90 | private Vector3 m_lastAngularVelocity = Vector3.Zero; |
91 | private Vector3 m_lastVertAttractor = Vector3.Zero; // what VA was last applied to body | 91 | private Vector3 m_lastVertAttractor = Vector3.Zero; // what VA was last applied to body |
92 | 92 | ||
93 | //Deflection properties | 93 | //Deflection properties |
@@ -128,7 +128,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
128 | // Return 'true' if this vehicle is doing vehicle things | 128 | // Return 'true' if this vehicle is doing vehicle things |
129 | public bool IsActive | 129 | public bool IsActive |
130 | { | 130 | { |
131 | get { return Type != Vehicle.TYPE_NONE; } | 131 | get { return Type != Vehicle.TYPE_NONE && Prim.IsPhysical; } |
132 | } | 132 | } |
133 | 133 | ||
134 | internal void ProcessFloatVehicleParam(Vehicle pParam, float pValue) | 134 | internal void ProcessFloatVehicleParam(Vehicle pParam, float pValue) |
@@ -664,6 +664,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
664 | // an UpdateProperties event to send the changes up to the simulator. | 664 | // an UpdateProperties event to send the changes up to the simulator. |
665 | BulletSimAPI.PushUpdate2(Prim.PhysBody.ptr); | 665 | BulletSimAPI.PushUpdate2(Prim.PhysBody.ptr); |
666 | } | 666 | } |
667 | m_knownChanged = 0; | ||
667 | } | 668 | } |
668 | 669 | ||
669 | // Since the computation of terrain height can be a little involved, this routine | 670 | // Since the computation of terrain height can be a little involved, this routine |
@@ -993,11 +994,12 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
993 | public Vector3 ComputeLinearMotorUp(float pTimestep) | 994 | public Vector3 ComputeLinearMotorUp(float pTimestep) |
994 | { | 995 | { |
995 | Vector3 ret = Vector3.Zero; | 996 | Vector3 ret = Vector3.Zero; |
997 | float distanceAboveGround = 0f; | ||
996 | 998 | ||
997 | if ((m_flags & (VehicleFlag.LIMIT_MOTOR_UP)) != 0) | 999 | if ((m_flags & (VehicleFlag.LIMIT_MOTOR_UP)) != 0) |
998 | { | 1000 | { |
999 | float targetHeight = Type == Vehicle.TYPE_BOAT ? GetWaterLevel(VehiclePosition) : GetTerrainHeight(VehiclePosition); | 1001 | float targetHeight = Type == Vehicle.TYPE_BOAT ? GetWaterLevel(VehiclePosition) : GetTerrainHeight(VehiclePosition); |
1000 | float distanceAboveGround = VehiclePosition.Z - targetHeight; | 1002 | distanceAboveGround = VehiclePosition.Z - targetHeight; |
1001 | // Not colliding if the vehicle is off the ground | 1003 | // Not colliding if the vehicle is off the ground |
1002 | if (!Prim.IsColliding) | 1004 | if (!Prim.IsColliding) |
1003 | { | 1005 | { |
@@ -1010,9 +1012,9 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
1010 | // has a decay factor. This says this force should | 1012 | // has a decay factor. This says this force should |
1011 | // be computed with a motor. | 1013 | // be computed with a motor. |
1012 | // TODO: add interaction with banking. | 1014 | // TODO: add interaction with banking. |
1013 | VDetailLog("{0}, MoveLinear,limitMotorUp,distAbove={1},colliding={2},ret={3}", | ||
1014 | Prim.LocalID, distanceAboveGround, Prim.IsColliding, ret); | ||
1015 | } | 1015 | } |
1016 | VDetailLog("{0}, MoveLinear,limitMotorUp,distAbove={1},colliding={2},ret={3}", | ||
1017 | Prim.LocalID, distanceAboveGround, Prim.IsColliding, ret); | ||
1016 | return ret; | 1018 | return ret; |
1017 | } | 1019 | } |
1018 | 1020 | ||
@@ -1049,8 +1051,7 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
1049 | // ================================================================== | 1051 | // ================================================================== |
1050 | m_lastVertAttractor = verticalAttractionContribution; | 1052 | m_lastVertAttractor = verticalAttractionContribution; |
1051 | 1053 | ||
1052 | // Sum corrections | 1054 | m_lastAngularVelocity = angularMotorContribution |
1053 | m_lastAngularCorrection = angularMotorContribution | ||
1054 | + verticalAttractionContribution | 1055 | + verticalAttractionContribution |
1055 | + deflectionContribution | 1056 | + deflectionContribution |
1056 | + bankingContribution; | 1057 | + bankingContribution; |
@@ -1058,19 +1059,15 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
1058 | // ================================================================== | 1059 | // ================================================================== |
1059 | // Apply the correction velocity. | 1060 | // Apply the correction velocity. |
1060 | // TODO: Should this be applied as an angular force (torque)? | 1061 | // TODO: Should this be applied as an angular force (torque)? |
1061 | if (!m_lastAngularCorrection.ApproxEquals(Vector3.Zero, 0.01f)) | 1062 | if (!m_lastAngularVelocity.ApproxEquals(Vector3.Zero, 0.01f)) |
1062 | { | 1063 | { |
1063 | // DEBUG DEBUG DEBUG: optionally scale the angular velocity. Debugging SL vs ODE turning functions. | 1064 | VehicleRotationalVelocity = m_lastAngularVelocity; |
1064 | Vector3 scaledCorrection = m_lastAngularCorrection; | ||
1065 | if (PhysicsScene.VehicleScaleAngularVelocityByTimestep) | ||
1066 | scaledCorrection *= pTimestep; | ||
1067 | VehicleRotationalVelocity = scaledCorrection; | ||
1068 | 1065 | ||
1069 | VDetailLog("{0}, MoveAngular,done,nonZero,angMotorContrib={1},vertAttrContrib={2},bankContrib={3},deflectContrib={4},totalContrib={5},scaledCorr={6}", | 1066 | VDetailLog("{0}, MoveAngular,done,nonZero,angMotorContrib={1},vertAttrContrib={2},bankContrib={3},deflectContrib={4},totalContrib={5}", |
1070 | Prim.LocalID, | 1067 | Prim.LocalID, |
1071 | angularMotorContribution, verticalAttractionContribution, | 1068 | angularMotorContribution, verticalAttractionContribution, |
1072 | bankingContribution, deflectionContribution, | 1069 | bankingContribution, deflectionContribution, |
1073 | m_lastAngularCorrection, scaledCorrection | 1070 | m_lastAngularVelocity |
1074 | ); | 1071 | ); |
1075 | } | 1072 | } |
1076 | else | 1073 | else |
@@ -1124,18 +1121,18 @@ namespace OpenSim.Region.Physics.BulletSPlugin | |||
1124 | { | 1121 | { |
1125 | Vector3 ret = Vector3.Zero; | 1122 | Vector3 ret = Vector3.Zero; |
1126 | 1123 | ||
1127 | // If vertical attaction timescale is reasonable and we applied an angular force last time... | 1124 | // If vertical attaction timescale is reasonable |
1128 | if (m_verticalAttractionTimescale < m_verticalAttractionCutoff) | 1125 | if (m_verticalAttractionTimescale < m_verticalAttractionCutoff) |
1129 | { | 1126 | { |
1130 | // Take a vector pointing up and convert it from world to vehicle relative coords. | 1127 | // Take a vector pointing up and convert it from world to vehicle relative coords. |
1131 | Vector3 verticalError = Vector3.UnitZ * VehicleOrientation; | 1128 | Vector3 verticalError = Vector3.UnitZ * VehicleOrientation; |
1132 | verticalError.Normalize(); | ||
1133 | 1129 | ||
1134 | // If vertical attraction correction is needed, the vector that was pointing up (UnitZ) | 1130 | // If vertical attraction correction is needed, the vector that was pointing up (UnitZ) |
1135 | // is now leaning to one side (rotated around the X axis) and the Y value will | 1131 | // is now: |
1136 | // go from zero (nearly straight up) to one (completely to the side) or leaning | 1132 | // leaning to one side: rotated around the X axis with the Y value going |
1137 | // front-to-back (rotated around the Y axis) and the value of X will be between | 1133 | // from zero (nearly straight up) to one (completely to the side)) or |
1138 | // zero and one. | 1134 | // leaning front-to-back: rotated around the Y axis with the value of X being between |
1135 | // zero and one. | ||
1139 | // The value of Z is how far the rotation is off with 1 meaning none and 0 being 90 degrees. | 1136 | // The value of Z is how far the rotation is off with 1 meaning none and 0 being 90 degrees. |
1140 | 1137 | ||
1141 | // If verticalError.Z is negative, the vehicle is upside down. Add additional push. | 1138 | // If verticalError.Z is negative, the vehicle is upside down. Add additional push. |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs index 4d4f712..2a7b72c 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSLinksetCompound.cs | |||
@@ -94,10 +94,10 @@ public sealed class BSLinksetCompound : BSLinkset | |||
94 | } | 94 | } |
95 | 95 | ||
96 | // Schedule a refresh to happen after all the other taint processing. | 96 | // Schedule a refresh to happen after all the other taint processing. |
97 | private void ScheduleRebuild() | 97 | private void ScheduleRebuild(BSPhysObject requestor) |
98 | { | 98 | { |
99 | DetailLog("{0},BSLinksetCompound.Refresh,schedulingRefresh,rebuilding={1}", | 99 | DetailLog("{0},BSLinksetCompound.Refresh,schedulingRefresh,rebuilding={1}", |
100 | LinksetRoot.LocalID, Rebuilding); | 100 | requestor.LocalID, Rebuilding); |
101 | // When rebuilding, it is possible to set properties that would normally require a rebuild. | 101 | // When rebuilding, it is possible to set properties that would normally require a rebuild. |
102 | // If already rebuilding, don't request another rebuild. | 102 | // If already rebuilding, don't request another rebuild. |
103 | if (!Rebuilding) | 103 | if (!Rebuilding) |
@@ -124,7 +124,7 @@ public sealed class BSLinksetCompound : BSLinkset | |||
124 | { | 124 | { |
125 | // The root is going dynamic. Make sure mass is properly set. | 125 | // The root is going dynamic. Make sure mass is properly set. |
126 | m_mass = ComputeLinksetMass(); | 126 | m_mass = ComputeLinksetMass(); |
127 | ScheduleRebuild(); | 127 | ScheduleRebuild(LinksetRoot); |
128 | } | 128 | } |
129 | else | 129 | else |
130 | { | 130 | { |
@@ -153,7 +153,7 @@ public sealed class BSLinksetCompound : BSLinkset | |||
153 | DetailLog("{0},BSLinksetCompound.MakeStatic,call,IsRoot={1}", child.LocalID, IsRoot(child)); | 153 | DetailLog("{0},BSLinksetCompound.MakeStatic,call,IsRoot={1}", child.LocalID, IsRoot(child)); |
154 | if (IsRoot(child)) | 154 | if (IsRoot(child)) |
155 | { | 155 | { |
156 | ScheduleRebuild(); | 156 | ScheduleRebuild(LinksetRoot); |
157 | } | 157 | } |
158 | else | 158 | else |
159 | { | 159 | { |
@@ -182,7 +182,7 @@ public sealed class BSLinksetCompound : BSLinkset | |||
182 | && PhysicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition)) | 182 | && PhysicsScene.TerrainManager.IsWithinKnownTerrain(LinksetRoot.RawPosition)) |
183 | { | 183 | { |
184 | updated.LinksetInfo = null; | 184 | updated.LinksetInfo = null; |
185 | ScheduleRebuild(); | 185 | ScheduleRebuild(updated); |
186 | } | 186 | } |
187 | } | 187 | } |
188 | 188 | ||
@@ -266,7 +266,7 @@ public sealed class BSLinksetCompound : BSLinkset | |||
266 | DetailLog("{0},BSLinksetCompound.AddChildToLinkset,call,child={1}", LinksetRoot.LocalID, child.LocalID); | 266 | DetailLog("{0},BSLinksetCompound.AddChildToLinkset,call,child={1}", LinksetRoot.LocalID, child.LocalID); |
267 | 267 | ||
268 | // Rebuild the compound shape with the new child shape included | 268 | // Rebuild the compound shape with the new child shape included |
269 | ScheduleRebuild(); | 269 | ScheduleRebuild(child); |
270 | } | 270 | } |
271 | return; | 271 | return; |
272 | } | 272 | } |
@@ -294,7 +294,7 @@ public sealed class BSLinksetCompound : BSLinkset | |||
294 | else | 294 | else |
295 | { | 295 | { |
296 | // Rebuild the compound shape with the child removed | 296 | // Rebuild the compound shape with the child removed |
297 | ScheduleRebuild(); | 297 | ScheduleRebuild(child); |
298 | } | 298 | } |
299 | } | 299 | } |
300 | return; | 300 | return; |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs index cf0a9dc..e0faf4e 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSMotors.cs | |||
@@ -134,8 +134,6 @@ public class BSVMotor : BSMotor | |||
134 | Vector3 addAmount = (TargetValue - CurrentValue)/TimeScale * timeStep; | 134 | Vector3 addAmount = (TargetValue - CurrentValue)/TimeScale * timeStep; |
135 | CurrentValue += addAmount; | 135 | CurrentValue += addAmount; |
136 | 136 | ||
137 | returnCurrent = CurrentValue; | ||
138 | |||
139 | // The desired value reduces to zero which also reduces the difference with current. | 137 | // The desired value reduces to zero which also reduces the difference with current. |
140 | // If the decay time is infinite, don't decay at all. | 138 | // If the decay time is infinite, don't decay at all. |
141 | float decayFactor = 0f; | 139 | float decayFactor = 0f; |
@@ -156,6 +154,8 @@ public class BSVMotor : BSMotor | |||
156 | CurrentValue *= (Vector3.One - frictionFactor); | 154 | CurrentValue *= (Vector3.One - frictionFactor); |
157 | } | 155 | } |
158 | 156 | ||
157 | returnCurrent = CurrentValue; | ||
158 | |||
159 | MDetailLog("{0}, BSVMotor.Step,nonZero,{1},origCurr={2},origTarget={3},timeStep={4},timeScale={5},addAmnt={6},targetDecay={7},decayFact={8},fricTS={9},frictFact={10}", | 159 | MDetailLog("{0}, BSVMotor.Step,nonZero,{1},origCurr={2},origTarget={3},timeStep={4},timeScale={5},addAmnt={6},targetDecay={7},decayFact={8},fricTS={9},frictFact={10}", |
160 | BSScene.DetailLogZero, UseName, origCurrVal, origTarget, | 160 | BSScene.DetailLogZero, UseName, origCurrVal, origTarget, |
161 | timeStep, TimeScale, addAmount, | 161 | timeStep, TimeScale, addAmount, |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs index 7b44574..069cb0d 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | |||
@@ -189,7 +189,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters | |||
189 | // 'true' of the vehicle code is to log lots of details | 189 | // 'true' of the vehicle code is to log lots of details |
190 | public bool VehicleLoggingEnabled { get; private set; } | 190 | public bool VehicleLoggingEnabled { get; private set; } |
191 | public bool VehiclePhysicalLoggingEnabled { get; private set; } | 191 | public bool VehiclePhysicalLoggingEnabled { get; private set; } |
192 | public bool VehicleScaleAngularVelocityByTimestep { get; private set; } | ||
193 | 192 | ||
194 | #region Construction and Initialization | 193 | #region Construction and Initialization |
195 | public BSScene(string identifier) | 194 | public BSScene(string identifier) |
@@ -1239,11 +1238,6 @@ public sealed class BSScene : PhysicsScene, IPhysicsParameters | |||
1239 | (s,cf,p,v) => { s.m_params[0].vehicleAngularDamping = cf.GetFloat(p, v); }, | 1238 | (s,cf,p,v) => { s.m_params[0].vehicleAngularDamping = cf.GetFloat(p, v); }, |
1240 | (s) => { return s.m_params[0].vehicleAngularDamping; }, | 1239 | (s) => { return s.m_params[0].vehicleAngularDamping; }, |
1241 | (s,p,l,v) => { s.m_params[0].vehicleAngularDamping = v; } ), | 1240 | (s,p,l,v) => { s.m_params[0].vehicleAngularDamping = v; } ), |
1242 | new ParameterDefn("VehicleScaleAngularVelocityByTimestep", "If true, scale angular turning by timestep", | ||
1243 | ConfigurationParameters.numericFalse, | ||
1244 | (s,cf,p,v) => { s.VehicleScaleAngularVelocityByTimestep = cf.GetBoolean(p, s.BoolNumeric(v)); }, | ||
1245 | (s) => { return s.NumericBool(s.VehicleScaleAngularVelocityByTimestep); }, | ||
1246 | (s,p,l,v) => { s.VehicleScaleAngularVelocityByTimestep = s.BoolNumeric(v); } ), | ||
1247 | 1241 | ||
1248 | new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)", | 1242 | new ParameterDefn("MaxPersistantManifoldPoolSize", "Number of manifolds pooled (0 means default of 4096)", |
1249 | 0f, | 1243 | 0f, |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt index 31dd790..0d9a156 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt +++ b/OpenSim/Region/Physics/BulletSPlugin/BulletSimTODO.txt | |||
@@ -5,7 +5,7 @@ Eliminate all crashes (DONEish) | |||
5 | Border crossing of physical linkset (DONE) | 5 | Border crossing of physical linkset (DONE) |
6 | Enable vehicle border crossings (at least as poorly as ODE) | 6 | Enable vehicle border crossings (at least as poorly as ODE) |
7 | Avatar created in previous region and not new region when crossing border | 7 | Avatar created in previous region and not new region when crossing border |
8 | Vehicle recreated in new sim at small Z value (offset from root value?) | 8 | Vehicle recreated in new sim at small Z value (offset from root value?) (DONE) |
9 | Calibrate turning radius | 9 | Calibrate turning radius |
10 | limitMotorUp calibration (more down?) | 10 | limitMotorUp calibration (more down?) |
11 | study PID motors (include 'efficiency' implementation | 11 | study PID motors (include 'efficiency' implementation |
diff --git a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs index 00a99c3..2f5b526 100644 --- a/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Interfaces/IScriptInstance.cs | |||
@@ -147,7 +147,13 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | |||
147 | /// <summary> | 147 | /// <summary> |
148 | /// Stop the script instance. | 148 | /// Stop the script instance. |
149 | /// </summary> | 149 | /// </summary> |
150 | /// <remarks> | ||
151 | /// This must not be called by a thread that is in the process of handling an event for this script. Otherwise | ||
152 | /// there is a danger that it will self-abort and not complete the reset. | ||
153 | /// </remarks> | ||
150 | /// <param name="timeout"></param> | 154 | /// <param name="timeout"></param> |
155 | /// How many milliseconds we will wait for an existing script event to finish before | ||
156 | /// forcibly aborting that event. | ||
151 | /// <returns>true if the script was successfully stopped, false otherwise</returns> | 157 | /// <returns>true if the script was successfully stopped, false otherwise</returns> |
152 | bool Stop(int timeout); | 158 | bool Stop(int timeout); |
153 | 159 | ||
@@ -169,8 +175,31 @@ namespace OpenSim.Region.ScriptEngine.Interfaces | |||
169 | object EventProcessor(); | 175 | object EventProcessor(); |
170 | 176 | ||
171 | int EventTime(); | 177 | int EventTime(); |
172 | void ResetScript(); | 178 | |
179 | /// <summary> | ||
180 | /// Reset the script. | ||
181 | /// </summary> | ||
182 | /// <remarks> | ||
183 | /// This must not be called by a thread that is in the process of handling an event for this script. Otherwise | ||
184 | /// there is a danger that it will self-abort and not complete the reset. Such a thread must call | ||
185 | /// ApiResetScript() instead. | ||
186 | /// </remarks> | ||
187 | /// <param name='timeout'> | ||
188 | /// How many milliseconds we will wait for an existing script event to finish before | ||
189 | /// forcibly aborting that event prior to script reset. | ||
190 | /// </param> | ||
191 | void ResetScript(int timeout); | ||
192 | |||
193 | /// <summary> | ||
194 | /// Reset the script. | ||
195 | /// </summary> | ||
196 | /// <remarks> | ||
197 | /// This must not be called by any thread other than the one executing the scripts current event. This is | ||
198 | /// because there is no wait or abort logic if another thread is in the middle of processing a script event. | ||
199 | /// Such an external thread should use ResetScript() instead. | ||
200 | /// </remarks> | ||
173 | void ApiResetScript(); | 201 | void ApiResetScript(); |
202 | |||
174 | Dictionary<string, object> GetVars(); | 203 | Dictionary<string, object> GetVars(); |
175 | void SetVars(Dictionary<string, object> vars); | 204 | void SetVars(Dictionary<string, object> vars); |
176 | DetectParams GetDetectParams(int idx); | 205 | DetectParams GetDetectParams(int idx); |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs index 68f701c..ff4d130 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Instance/ScriptInstance.cs | |||
@@ -880,7 +880,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
880 | return (DateTime.Now - m_EventStart).Seconds; | 880 | return (DateTime.Now - m_EventStart).Seconds; |
881 | } | 881 | } |
882 | 882 | ||
883 | public void ResetScript() | 883 | public void ResetScript(int timeout) |
884 | { | 884 | { |
885 | if (m_Script == null) | 885 | if (m_Script == null) |
886 | return; | 886 | return; |
@@ -890,7 +890,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance | |||
890 | RemoveState(); | 890 | RemoveState(); |
891 | ReleaseControls(); | 891 | ReleaseControls(); |
892 | 892 | ||
893 | Stop(0); | 893 | Stop(timeout); |
894 | SceneObjectPart part = Engine.World.GetSceneObjectPart(LocalID); | 894 | SceneObjectPart part = Engine.World.GetSceneObjectPart(LocalID); |
895 | part.Inventory.GetInventoryItem(ItemID).PermsMask = 0; | 895 | part.Inventory.GetInventoryItem(ItemID).PermsMask = 0; |
896 | part.Inventory.GetInventoryItem(ItemID).PermsGranter = UUID.Zero; | 896 | part.Inventory.GetInventoryItem(ItemID).PermsGranter = UUID.Zero; |
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 494e0b6..0bd9a06 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -1783,7 +1783,7 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1783 | { | 1783 | { |
1784 | IScriptInstance instance = GetInstance(itemID); | 1784 | IScriptInstance instance = GetInstance(itemID); |
1785 | if (instance != null) | 1785 | if (instance != null) |
1786 | instance.ResetScript(); | 1786 | instance.ResetScript(m_WaitForEventCompletionOnScriptStop); |
1787 | } | 1787 | } |
1788 | 1788 | ||
1789 | public void StartScript(UUID itemID) | 1789 | public void StartScript(UUID itemID) |