BulletSim: fix the problem with flying being disabled when crossing region boundries.
parent
079a1e704f
commit
22be36be69
|
@ -78,8 +78,8 @@ public sealed class BSCharacter : BSPhysObject
|
|||
private float _PIDHoverTao;
|
||||
|
||||
public BSCharacter(uint localID, String avName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size, bool isFlying)
|
||||
: base(parent_scene, localID, avName, "BSCharacter")
|
||||
{
|
||||
base.BaseInitialize(parent_scene, localID, avName, "BSCharacter");
|
||||
_physicsActorType = (int)ActorTypes.Agent;
|
||||
_position = pos;
|
||||
_size = size;
|
||||
|
@ -131,6 +131,10 @@ public sealed class BSCharacter : BSPhysObject
|
|||
// Set the velocity and compute the proper friction
|
||||
ForceVelocity = _velocity;
|
||||
|
||||
// This will enable or disable the flying buoyancy of the avatar.
|
||||
// Needs to be reset especially when an avatar is recreated after crossing a region boundry.
|
||||
Flying = _flying;
|
||||
|
||||
BulletSimAPI.SetRestitution2(PhysBody.ptr, PhysicsScene.Params.avatarRestitution);
|
||||
BulletSimAPI.SetMargin2(PhysShape.ptr, PhysicsScene.Params.collisionMargin);
|
||||
BulletSimAPI.SetLocalScaling2(PhysShape.ptr, Scale);
|
||||
|
@ -615,7 +619,7 @@ public sealed class BSCharacter : BSPhysObject
|
|||
newScale.Y = PhysicsScene.Params.avatarCapsuleRadius;
|
||||
|
||||
// From the total height, remove the capsule half spheres that are at each end
|
||||
newScale.Z = size.Z- (newScale.X + newScale.Y);
|
||||
newScale.Z = size.Z - (newScale.X + newScale.Y);
|
||||
Scale = newScale;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue