diff options
author | Robert Adams | 2016-11-13 11:19:54 -0800 |
---|---|---|
committer | Robert Adams | 2016-11-13 11:19:54 -0800 |
commit | e13ff5a39233fd871e69f9ace23b4559cdfdcb7f (patch) | |
tree | a5e56577bb153a7dd481ee13571fabeb3e716b35 /OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs | |
parent | mantis 8055: fix default value of npc options (diff) | |
download | opensim-SC-e13ff5a39233fd871e69f9ace23b4559cdfdcb7f.zip opensim-SC-e13ff5a39233fd871e69f9ace23b4559cdfdcb7f.tar.gz opensim-SC-e13ff5a39233fd871e69f9ace23b4559cdfdcb7f.tar.bz2 opensim-SC-e13ff5a39233fd871e69f9ace23b4559cdfdcb7f.tar.xz |
BulletSim: update avatar velocity setting to the new TargetVelocity pattern.
Now PhysicsActor.Velocity.set and PhysicsActor.SetMomentum do the same thing
of setting the instantanious avatar velocity. PhysicsActor.TargetVelocity
sets a velocity target and the movement motor is used to accelerate the'
avatar to that velocity.
Diffstat (limited to 'OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs')
-rwxr-xr-x | OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs b/OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs index 3682455..a846869 100755 --- a/OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSPhysObject.cs | |||
@@ -230,15 +230,22 @@ public abstract class BSPhysObject : PhysicsActor | |||
230 | // Update the physical location and motion of the object. Called with data from Bullet. | 230 | // Update the physical location and motion of the object. Called with data from Bullet. |
231 | public abstract void UpdateProperties(EntityProperties entprop); | 231 | public abstract void UpdateProperties(EntityProperties entprop); |
232 | 232 | ||
233 | // The position value as known by BulletSim. Does not effect the physics engine. | ||
233 | public virtual OMV.Vector3 RawPosition { get; set; } | 234 | public virtual OMV.Vector3 RawPosition { get; set; } |
235 | // Set position in BulletSim and the physics engined to a value immediately. Must be called at taint time. | ||
234 | public abstract OMV.Vector3 ForcePosition { get; set; } | 236 | public abstract OMV.Vector3 ForcePosition { get; set; } |
235 | 237 | ||
238 | // The orientation value as known by BulletSim. Does not effect the physics engine. | ||
236 | public virtual OMV.Quaternion RawOrientation { get; set; } | 239 | public virtual OMV.Quaternion RawOrientation { get; set; } |
240 | // Set orientation in BulletSim and the physics engine to a value immediately. Must be called at taint time. | ||
237 | public abstract OMV.Quaternion ForceOrientation { get; set; } | 241 | public abstract OMV.Quaternion ForceOrientation { get; set; } |
238 | 242 | ||
243 | // The velocity value as known by BulletSim. Does not effect the physics engine. | ||
239 | public virtual OMV.Vector3 RawVelocity { get; set; } | 244 | public virtual OMV.Vector3 RawVelocity { get; set; } |
245 | // Set velocity in BulletSim and the physics engined to a value immediately. Must be called at taint time. | ||
240 | public abstract OMV.Vector3 ForceVelocity { get; set; } | 246 | public abstract OMV.Vector3 ForceVelocity { get; set; } |
241 | 247 | ||
248 | // The rotational velocity value as known by BulletSim. Does not effect the physics engine. | ||
242 | public OMV.Vector3 RawRotationalVelocity { get; set; } | 249 | public OMV.Vector3 RawRotationalVelocity { get; set; } |
243 | 250 | ||
244 | // RawForce is a constant force applied to object (see Force { set; } ) | 251 | // RawForce is a constant force applied to object (see Force { set; } ) |
@@ -252,17 +259,28 @@ public abstract class BSPhysObject : PhysicsActor | |||
252 | public abstract void AddAngularForce(bool inTaintTime, OMV.Vector3 force); | 259 | public abstract void AddAngularForce(bool inTaintTime, OMV.Vector3 force); |
253 | public abstract void AddForce(bool inTaintTime, OMV.Vector3 force); | 260 | public abstract void AddForce(bool inTaintTime, OMV.Vector3 force); |
254 | 261 | ||
262 | // PhysicsActor.Velocity | ||
263 | public override OMV.Vector3 Velocity | ||
264 | { | ||
265 | get { return RawVelocity; } | ||
266 | set | ||
267 | { | ||
268 | // This sets the velocity now. BSCharacter will override to clear target velocity | ||
269 | // before calling this. | ||
270 | RawVelocity = value; | ||
271 | PhysScene.TaintedObject(LocalID, TypeName + ".SetVelocity", delegate () { | ||
272 | // DetailLog("{0},BSPhysObject.Velocity.set,vel={1}", LocalID, RawVelocity); | ||
273 | ForceVelocity = RawVelocity; | ||
274 | }); | ||
275 | } | ||
276 | } | ||
277 | |||
255 | // PhysicsActor.SetMomentum | 278 | // PhysicsActor.SetMomentum |
256 | // All the physics engined use this as a way of forcing the velocity to something. | 279 | // All the physics engines use this as a way of forcing the velocity to something. |
280 | // BSCharacter overrides this so it can set the target velocity to zero before calling this. | ||
257 | public override void SetMomentum(OMV.Vector3 momentum) | 281 | public override void SetMomentum(OMV.Vector3 momentum) |
258 | { | 282 | { |
259 | // This doesn't just set Velocity=momentum because velocity is ramped up to (see MoveActor) | 283 | this.Velocity = momentum; |
260 | RawVelocity = momentum; | ||
261 | PhysScene.TaintedObject(LocalID, TypeName + ".SetMomentum", delegate() | ||
262 | { | ||
263 | // DetailLog("{0},BSPrim.SetMomentum,taint,vel={1}", LocalID, RawVelocity); | ||
264 | ForceVelocity = RawVelocity; | ||
265 | }); | ||
266 | } | 284 | } |
267 | 285 | ||
268 | public override OMV.Vector3 RotationalVelocity { | 286 | public override OMV.Vector3 RotationalVelocity { |