aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorRobert Adams2012-03-21 07:07:44 -0700
committerRobert Adams2012-03-23 13:15:18 -0700
commit1a738caecab74c5b9f6b6bac69a3ea9ccdc80b24 (patch)
treea8c4f41ae006784d6944047d62eaf82442116db8
parentBulletSim: Add AvatarRestitution parameter. Centralize computation of buoyanc... (diff)
downloadopensim-SC_OLD-1a738caecab74c5b9f6b6bac69a3ea9ccdc80b24.zip
opensim-SC_OLD-1a738caecab74c5b9f6b6bac69a3ea9ccdc80b24.tar.gz
opensim-SC_OLD-1a738caecab74c5b9f6b6bac69a3ea9ccdc80b24.tar.bz2
opensim-SC_OLD-1a738caecab74c5b9f6b6bac69a3ea9ccdc80b24.tar.xz
BulletSim: update TODO list. Rearrange code for readability. Add per object friction and restitution runtime settable parameters.
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs4
-rw-r--r--OpenSim/Region/Physics/BulletSPlugin/BSScene.cs30
2 files changed, 17 insertions, 17 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
index 1a61431..20708d9 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSCharacter.cs
@@ -261,7 +261,7 @@ public class BSCharacter : PhysicsActor
261 set { 261 set {
262 _flying = value; 262 _flying = value;
263 // simulate flying by changing the effect of gravity 263 // simulate flying by changing the effect of gravity
264 this.Buoyancy(ComputeBuoyancyFromFlying(_flying)); 264 this.Buoyancy = ComputeBuoyancyFromFlying(_flying);
265 } 265 }
266 } 266 }
267 private float ComputeBuoyancyFromFlying(bool ifFlying) { 267 private float ComputeBuoyancyFromFlying(bool ifFlying) {
@@ -356,7 +356,7 @@ public class BSCharacter : PhysicsActor
356 } 356 }
357 else 357 else
358 { 358 {
359 m_log.WarnFormat("{0}: Got a NaN force applied to a Character", LogHeader); 359 m_log.ErrorFormat("{0}: Got a NaN force applied to a Character", LogHeader);
360 } 360 }
361 //m_lastUpdateSent = false; 361 //m_lastUpdateSent = false;
362 } 362 }
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
index 9b12b4f..142103b 100644
--- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
+++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs
@@ -37,14 +37,18 @@ using OpenMetaverse;
37using OpenSim.Region.Framework; 37using OpenSim.Region.Framework;
38 38
39// TODOs for BulletSim (for BSScene, BSPrim, BSCharacter and BulletSim) 39// TODOs for BulletSim (for BSScene, BSPrim, BSCharacter and BulletSim)
40// Debug linkset
41// Test with multiple regions in one simulator
40// Adjust character capsule size when height is adjusted (ScenePresence.SetHeight) 42// Adjust character capsule size when height is adjusted (ScenePresence.SetHeight)
41// Test sculpties 43// Test sculpties
42// Compute physics FPS reasonably 44// Compute physics FPS reasonably
43// Based on material, set density and friction 45// Based on material, set density and friction
44// More efficient memory usage in passing hull information from BSPrim to BulletSim 46// More efficient memory usage when passing hull information from BSPrim to BulletSim
45// Four states of prim: Physical, regular, phantom and selected. Are we modeling these correctly? 47// Four states of prim: Physical, regular, phantom and selected. Are we modeling these correctly?
46// In SL one can set both physical and phantom (gravity, does not effect others, makes collisions with ground) 48// In SL one can set both physical and phantom (gravity, does not effect others, makes collisions with ground)
47// At the moment, physical and phantom causes object to drop through the terrain 49// At the moment, physical and phantom causes object to drop through the terrain
50// Physical phantom objects and related typing (collision options )
51// Check out llVolumeDetect. Must do something for that.
48// Should prim.link() and prim.delink() membership checking happen at taint time? 52// Should prim.link() and prim.delink() membership checking happen at taint time?
49// Mesh sharing. Use meshHash to tell if we already have a hull of that shape and only create once 53// Mesh sharing. Use meshHash to tell if we already have a hull of that shape and only create once
50// Do attachments need to be handled separately? Need collision events. Do not collide with VolumeDetect 54// Do attachments need to be handled separately? Need collision events. Do not collide with VolumeDetect
@@ -53,17 +57,14 @@ using OpenSim.Region.Framework;
53// Decide if clearing forces is the right thing to do when setting position (BulletSim::SetObjectTranslation) 57// Decide if clearing forces is the right thing to do when setting position (BulletSim::SetObjectTranslation)
54// Does NeedsMeshing() really need to exclude all the different shapes? 58// Does NeedsMeshing() really need to exclude all the different shapes?
55// Remove mesh and Hull stuff. Use mesh passed to bullet and use convexdecom from bullet. 59// Remove mesh and Hull stuff. Use mesh passed to bullet and use convexdecom from bullet.
56// Add PID movement operations 60// Add PID movement operations. What does ScenePresence.MoveToTarget do?
57// Debug linkset
58// Ccd threshold to defaults (0.0)
59// Command line get and set is broken
60// Check terrain size. 128 or 127? 61// Check terrain size. 128 or 127?
61// Test with multiple regions in one simulator
62// Multiple contact points on collision? 62// Multiple contact points on collision?
63// See code in ode::near... calls to collision_accounting_events() 63// See code in ode::near... calls to collision_accounting_events()
64// (This might not be a problem. ODE collects all the collisions with one object in one tick.)
64// Use collision masks for collision with terrain and phantom objects 65// Use collision masks for collision with terrain and phantom objects
65// Check out llVolumeDetect. Must do something for that. 66// Figure out how to not allocate a new Dictionary and List for every collision
66// Physical phantom objects and related typing (collision options ) 67// in BSPrim.Collide() and BSCharacter.Collide(). Can the same ones be reused?
67// Raycast 68// Raycast
68// 69//
69namespace OpenSim.Region.Physics.BulletSPlugin 70namespace OpenSim.Region.Physics.BulletSPlugin
@@ -282,7 +283,6 @@ public class BSScene : PhysicsScene, IPhysicsParameters
282 parms.avatarFriction = pConfig.GetFloat("AvatarFriction", parms.avatarFriction); 283 parms.avatarFriction = pConfig.GetFloat("AvatarFriction", parms.avatarFriction);
283 parms.avatarRestitution = pConfig.GetFloat("AvatarRestitution", parms.avatarRestitution); 284 parms.avatarRestitution = pConfig.GetFloat("AvatarRestitution", parms.avatarRestitution);
284 parms.avatarDensity = pConfig.GetFloat("AvatarDensity", parms.avatarDensity); 285 parms.avatarDensity = pConfig.GetFloat("AvatarDensity", parms.avatarDensity);
285 parms.avatarRestitution = pConfig.GetFloat("AvatarRestitution", parms.avatarRestitution);
286 parms.avatarCapsuleRadius = pConfig.GetFloat("AvatarCapsuleRadius", parms.avatarCapsuleRadius); 286 parms.avatarCapsuleRadius = pConfig.GetFloat("AvatarCapsuleRadius", parms.avatarCapsuleRadius);
287 parms.avatarCapsuleHeight = pConfig.GetFloat("AvatarCapsuleHeight", parms.avatarCapsuleHeight); 287 parms.avatarCapsuleHeight = pConfig.GetFloat("AvatarCapsuleHeight", parms.avatarCapsuleHeight);
288 } 288 }
@@ -408,16 +408,16 @@ public class BSScene : PhysicsScene, IPhysicsParameters
408 { 408 {
409 EntityProperties entprop = m_updateArray[ii]; 409 EntityProperties entprop = m_updateArray[ii];
410 // m_log.DebugFormat("{0}: entprop[{1}]: id={2}, pos={3}", LogHeader, ii, entprop.ID, entprop.Position); 410 // m_log.DebugFormat("{0}: entprop[{1}]: id={2}, pos={3}", LogHeader, ii, entprop.ID, entprop.Position);
411 BSCharacter actor;
412 if (m_avatars.TryGetValue(entprop.ID, out actor))
413 {
414 actor.UpdateProperties(entprop);
415 continue;
416 }
417 BSPrim prim; 411 BSPrim prim;
418 if (m_prims.TryGetValue(entprop.ID, out prim)) 412 if (m_prims.TryGetValue(entprop.ID, out prim))
419 { 413 {
420 prim.UpdateProperties(entprop); 414 prim.UpdateProperties(entprop);
415 continue;
416 }
417 BSCharacter actor;
418 if (m_avatars.TryGetValue(entprop.ID, out actor))
419 {
420 actor.UpdateProperties(entprop);
421 } 421 }
422 } 422 }
423 } 423 }