aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region')
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs44
-rw-r--r--OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs10
-rw-r--r--OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs10
-rw-r--r--OpenSim/Region/Physics/Manager/PhysicsActor.cs17
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODECharacter.cs11
-rw-r--r--OpenSim/Region/Physics/OdePlugin/ODEPrim.cs11
-rw-r--r--OpenSim/Region/Physics/POSPlugin/POSPlugin.cs21
-rw-r--r--OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs20
8 files changed, 138 insertions, 6 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
index 785ebf7..10395b6 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs
@@ -207,7 +207,14 @@ namespace OpenSim.Region.Environment.Scenes
207 public bool IsSelected 207 public bool IsSelected
208 { 208 {
209 get { return m_isSelected; } 209 get { return m_isSelected; }
210 set { m_isSelected = value; } 210 set {
211 m_isSelected = value;
212 // Tell physics engine that group is selected
213 if (m_rootPart.PhysActor != null)
214 {
215 m_rootPart.PhysActor.Selected = value;
216 }
217 }
211 } 218 }
212 219
213 // The UUID for the Region this Object is in. 220 // The UUID for the Region this Object is in.
@@ -1039,20 +1046,45 @@ namespace OpenSim.Region.Environment.Scenes
1039 } 1046 }
1040 1047
1041 /// <summary> 1048 /// <summary>
1042 /// 1049 /// If object is physical, apply force to move it around
1050 /// If object is not physical, just put it at the resulting location
1043 /// </summary> 1051 /// </summary>
1044 /// <param name="offset"></param> 1052 /// <param name="offset">Always seems to be 0,0,0, so ignoring</param>
1045 /// <param name="pos"></param> 1053 /// <param name="pos">New position. We do the math here to turn it into a force</param>
1046 /// <param name="remoteClient"></param> 1054 /// <param name="remoteClient"></param>
1047 public void GrabMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) 1055 public void GrabMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
1048 { 1056 {
1057
1049 if (m_scene.EventManager.TriggerGroupMove(UUID, pos)) 1058 if (m_scene.EventManager.TriggerGroupMove(UUID, pos))
1050 { 1059 {
1051 AbsolutePosition = pos; 1060
1052 m_rootPart.SendTerseUpdateToAllClients(); 1061 if (m_rootPart.PhysActor != null)
1062 {
1063 if (m_rootPart.PhysActor.IsPhysical)
1064 {
1065 LLVector3 llmoveforce = pos - AbsolutePosition;
1066 PhysicsVector grabforce = new PhysicsVector(llmoveforce.X, llmoveforce.Y, llmoveforce.Z);
1067 grabforce = (grabforce / 10) * m_rootPart.PhysActor.Mass;
1068 m_rootPart.PhysActor.AddForce(grabforce);
1069 m_scene.PhysicsScene.AddPhysicsActorTaint(m_rootPart.PhysActor);
1070 }
1071 else
1072 {
1073 NonPhysicalGrabMovement(pos);
1074 }
1075 }
1076 else
1077 {
1078 NonPhysicalGrabMovement(pos);
1079 }
1053 } 1080 }
1054 } 1081 }
1082 public void NonPhysicalGrabMovement(LLVector3 pos)
1083 {
1084 AbsolutePosition = pos;
1085 m_rootPart.SendTerseUpdateToAllClients();
1055 1086
1087 }
1056 /// <summary> 1088 /// <summary>
1057 /// 1089 ///
1058 /// </summary> 1090 /// </summary>
diff --git a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
index 636cf1a..ff157d7 100644
--- a/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
+++ b/OpenSim/Region/Physics/BasicPhysicsPlugin/BasicPhysicsPlugin.cs
@@ -224,6 +224,16 @@ namespace OpenSim.Region.Physics.BasicPhysicsPlugin
224 set { return; } 224 set { return; }
225 } 225 }
226 226
227 public override bool Grabbed
228 {
229 set { return; }
230 }
231
232 public override bool Selected
233 {
234 set { return; }
235 }
236
227 public override bool IsPhysical 237 public override bool IsPhysical
228 { 238 {
229 get { return false; } 239 get { return false; }
diff --git a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs
index deba5f6..f42fdf6 100644
--- a/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs
+++ b/OpenSim/Region/Physics/BulletXPlugin/BulletXPlugin.cs
@@ -883,6 +883,16 @@ namespace OpenSim.Region.Physics.BulletXPlugin
883 set { return; } 883 set { return; }
884 } 884 }
885 885
886 public override bool Grabbed
887 {
888 set { return; }
889 }
890
891 public override bool Selected
892 {
893 set { return; }
894 }
895
886 public virtual void SetAcceleration(PhysicsVector accel) 896 public virtual void SetAcceleration(PhysicsVector accel)
887 { 897 {
888 lock (BulletXScene.BulletXLock) 898 lock (BulletXScene.BulletXLock)
diff --git a/OpenSim/Region/Physics/Manager/PhysicsActor.cs b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
index d393b62..f97b279 100644
--- a/OpenSim/Region/Physics/Manager/PhysicsActor.cs
+++ b/OpenSim/Region/Physics/Manager/PhysicsActor.cs
@@ -122,6 +122,10 @@ namespace OpenSim.Region.Physics.Manager
122 122
123 public abstract PrimitiveBaseShape Shape { set; } 123 public abstract PrimitiveBaseShape Shape { set; }
124 124
125 public abstract bool Grabbed { set; }
126
127 public abstract bool Selected { set; }
128
125 public virtual void RequestPhysicsterseUpdate() 129 public virtual void RequestPhysicsterseUpdate()
126 { 130 {
127 // Make a temporary copy of the event to avoid possibility of 131 // Make a temporary copy of the event to avoid possibility of
@@ -190,6 +194,8 @@ namespace OpenSim.Region.Physics.Manager
190 public abstract void AddForce(PhysicsVector force); 194 public abstract void AddForce(PhysicsVector force);
191 195
192 public abstract void SetMomentum(PhysicsVector momentum); 196 public abstract void SetMomentum(PhysicsVector momentum);
197
198
193 } 199 }
194 200
195 public class NullPhysicsActor : PhysicsActor 201 public class NullPhysicsActor : PhysicsActor
@@ -206,6 +212,17 @@ namespace OpenSim.Region.Physics.Manager
206 set { return; } 212 set { return; }
207 } 213 }
208 214
215 public override bool Grabbed
216 {
217 set { return; }
218 }
219
220 public override bool Selected
221 {
222 set { return; }
223 }
224
225
209 public override bool CollidingGround 226 public override bool CollidingGround
210 { 227 {
211 get { return false; } 228 get { return false; }
diff --git a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
index f9010e6..3f63477 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODECharacter.cs
@@ -152,6 +152,17 @@ namespace OpenSim.Region.Physics.OdePlugin
152 set { m_alwaysRun = value; } 152 set { m_alwaysRun = value; }
153 } 153 }
154 154
155 public override bool Grabbed
156 {
157 set { return; }
158 }
159
160 public override bool Selected
161 {
162 set { return; }
163 }
164
165
155 public override bool IsPhysical 166 public override bool IsPhysical
156 { 167 {
157 get { return false; } 168 get { return false; }
diff --git a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
index dcff558..d70819e 100644
--- a/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
+++ b/OpenSim/Region/Physics/OdePlugin/ODEPrim.cs
@@ -202,6 +202,17 @@ namespace OpenSim.Region.Physics.OdePlugin
202 set { return; } 202 set { return; }
203 } 203 }
204 204
205 public override bool Grabbed
206 {
207 set { return; }
208 }
209
210 public override bool Selected
211 {
212 set { return; }
213 }
214
215
205 public void enableBody() 216 public void enableBody()
206 { 217 {
207 // Sets the geom to a body 218 // Sets the geom to a body
diff --git a/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs b/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs
index 74b319a..2b07553 100644
--- a/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs
+++ b/OpenSim/Region/Physics/POSPlugin/POSPlugin.cs
@@ -354,6 +354,16 @@ namespace OpenSim.Region.Physics.POSPlugin
354 set { return; } 354 set { return; }
355 } 355 }
356 356
357 public override bool Grabbed
358 {
359 set { return; }
360 }
361
362 public override bool Selected
363 {
364 set { return; }
365 }
366
357 public override bool IsPhysical 367 public override bool IsPhysical
358 { 368 {
359 get { return false; } 369 get { return false; }
@@ -607,5 +617,16 @@ namespace OpenSim.Region.Physics.POSPlugin
607 get { return false; } 617 get { return false; }
608 set { return; } 618 set { return; }
609 } 619 }
620
621 public override bool Grabbed
622 {
623 set { return; }
624 }
625
626 public override bool Selected
627 {
628 set { return; }
629 }
630
610 } 631 }
611} \ No newline at end of file 632} \ No newline at end of file
diff --git a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs
index 20bf358..71bd94e 100644
--- a/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs
+++ b/OpenSim/Region/Physics/PhysXPlugin/PhysXPlugin.cs
@@ -224,6 +224,16 @@ namespace OpenSim.Region.Physics.PhysXPlugin
224 set { return; } 224 set { return; }
225 } 225 }
226 226
227 public override bool Grabbed
228 {
229 set { return; }
230 }
231
232 public override bool Selected
233 {
234 set { return; }
235 }
236
227 public override bool IsPhysical 237 public override bool IsPhysical
228 { 238 {
229 get { return false; } 239 get { return false; }
@@ -410,6 +420,16 @@ namespace OpenSim.Region.Physics.PhysXPlugin
410 set { return; } 420 set { return; }
411 } 421 }
412 422
423 public override bool Grabbed
424 {
425 set { return; }
426 }
427
428 public override bool Selected
429 {
430 set { return; }
431 }
432
413 public override bool ThrottleUpdates 433 public override bool ThrottleUpdates
414 { 434 {
415 get { return false; } 435 get { return false; }