diff options
author | Robert Adams | 2012-12-09 22:10:32 -0800 |
---|---|---|
committer | Robert Adams | 2012-12-09 22:32:46 -0800 |
commit | ce5083a504a82712149f5e3dab622d42e260bba3 (patch) | |
tree | 37c54b8649e07ed227a947208ddad0f7bfa79043 /OpenSim | |
parent | HGAssetMapper: Get wasn't really working. It's true that some assets are copi... (diff) | |
download | opensim-SC-ce5083a504a82712149f5e3dab622d42e260bba3.zip opensim-SC-ce5083a504a82712149f5e3dab622d42e260bba3.tar.gz opensim-SC-ce5083a504a82712149f5e3dab622d42e260bba3.tar.bz2 opensim-SC-ce5083a504a82712149f5e3dab622d42e260bba3.tar.xz |
BulletSim: adjust friction and restitution based on material type.
Diffstat (limited to 'OpenSim')
-rwxr-xr-x | OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs | 10 | ||||
-rw-r--r-- | OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 12 |
2 files changed, 17 insertions, 5 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs index f6a890e..b05d4ee 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPhysObject.cs | |||
@@ -60,6 +60,9 @@ public abstract class BSPhysObject : PhysicsActor | |||
60 | Linkset = BSLinkset.Factory(PhysicsScene, this); | 60 | Linkset = BSLinkset.Factory(PhysicsScene, this); |
61 | LastAssetBuildFailed = false; | 61 | LastAssetBuildFailed = false; |
62 | 62 | ||
63 | // Default material type | ||
64 | Material = MaterialAttributes.Material.Wood; | ||
65 | |||
63 | CollisionCollection = new CollisionEventUpdate(); | 66 | CollisionCollection = new CollisionEventUpdate(); |
64 | SubscribedEventsMs = 0; | 67 | SubscribedEventsMs = 0; |
65 | CollidingStep = 0; | 68 | CollidingStep = 0; |
@@ -109,6 +112,13 @@ public abstract class BSPhysObject : PhysicsActor | |||
109 | public abstract bool IsSolid { get; } | 112 | public abstract bool IsSolid { get; } |
110 | public abstract bool IsStatic { get; } | 113 | public abstract bool IsStatic { get; } |
111 | 114 | ||
115 | // Materialness | ||
116 | public MaterialAttributes.Material Material { get; private set; } | ||
117 | public override void SetMaterial(int material) | ||
118 | { | ||
119 | Material = (MaterialAttributes.Material)material; | ||
120 | } | ||
121 | |||
112 | // Stop all physical motion. | 122 | // Stop all physical motion. |
113 | public abstract void ZeroMotion(bool inTaintTime); | 123 | public abstract void ZeroMotion(bool inTaintTime); |
114 | public abstract void ZeroAngularMotion(bool inTaintTime); | 124 | public abstract void ZeroAngularMotion(bool inTaintTime); |
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index 4d203ff..627393a 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | |||
@@ -683,8 +683,9 @@ public sealed class BSPrim : BSPhysObject | |||
683 | ZeroMotion(true); | 683 | ZeroMotion(true); |
684 | 684 | ||
685 | // Set various physical properties so other object interact properly | 685 | // Set various physical properties so other object interact properly |
686 | BulletSimAPI.SetFriction2(PhysBody.ptr, PhysicsScene.Params.defaultFriction); | 686 | MaterialAttributes matAttrib = BSMaterials.GetAttributes(Material, false); |
687 | BulletSimAPI.SetRestitution2(PhysBody.ptr, PhysicsScene.Params.defaultRestitution); | 687 | BulletSimAPI.SetFriction2(PhysBody.ptr, matAttrib.friction); |
688 | BulletSimAPI.SetRestitution2(PhysBody.ptr, matAttrib.restitution); | ||
688 | 689 | ||
689 | // Mass is zero which disables a bunch of physics stuff in Bullet | 690 | // Mass is zero which disables a bunch of physics stuff in Bullet |
690 | UpdatePhysicalMassProperties(0f); | 691 | UpdatePhysicalMassProperties(0f); |
@@ -711,9 +712,10 @@ public sealed class BSPrim : BSPhysObject | |||
711 | // Not a Bullet static object | 712 | // Not a Bullet static object |
712 | CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_STATIC_OBJECT); | 713 | CurrentCollisionFlags = BulletSimAPI.RemoveFromCollisionFlags2(PhysBody.ptr, CollisionFlags.CF_STATIC_OBJECT); |
713 | 714 | ||
714 | // Set various physical properties so internal dynamic properties will get computed correctly as they are set | 715 | // Set various physical properties so other object interact properly |
715 | BulletSimAPI.SetFriction2(PhysBody.ptr, PhysicsScene.Params.defaultFriction); | 716 | MaterialAttributes matAttrib = BSMaterials.GetAttributes(Material, true); |
716 | BulletSimAPI.SetRestitution2(PhysBody.ptr, PhysicsScene.Params.defaultRestitution); | 717 | BulletSimAPI.SetFriction2(PhysBody.ptr, matAttrib.friction); |
718 | BulletSimAPI.SetRestitution2(PhysBody.ptr, matAttrib.restitution); | ||
717 | 719 | ||
718 | // per http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=3382 | 720 | // per http://www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?t=3382 |
719 | // Since this can be called multiple times, only zero forces when becoming physical | 721 | // Since this can be called multiple times, only zero forces when becoming physical |