BulletSim: Change BSCharacter to use new base Density and Friction
variables rather than own local varaibles.user_profiles
parent
1b55a9d81e
commit
222040f1ec
|
@ -45,7 +45,6 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
private bool _selected;
|
private bool _selected;
|
||||||
private OMV.Vector3 _position;
|
private OMV.Vector3 _position;
|
||||||
private float _mass;
|
private float _mass;
|
||||||
private float _avatarDensity;
|
|
||||||
private float _avatarVolume;
|
private float _avatarVolume;
|
||||||
private OMV.Vector3 _force;
|
private OMV.Vector3 _force;
|
||||||
private OMV.Vector3 _velocity;
|
private OMV.Vector3 _velocity;
|
||||||
|
@ -63,9 +62,6 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
private bool _kinematic;
|
private bool _kinematic;
|
||||||
private float _buoyancy;
|
private float _buoyancy;
|
||||||
|
|
||||||
// The friction and velocity of the avatar is modified depending on whether walking or not.
|
|
||||||
private float _currentFriction; // the friction currently being used (changed by setVelocity).
|
|
||||||
|
|
||||||
private BSVMotor _velocityMotor;
|
private BSVMotor _velocityMotor;
|
||||||
|
|
||||||
private OMV.Vector3 _PIDTarget;
|
private OMV.Vector3 _PIDTarget;
|
||||||
|
@ -86,8 +82,8 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
_orientation = OMV.Quaternion.Identity;
|
_orientation = OMV.Quaternion.Identity;
|
||||||
_velocity = OMV.Vector3.Zero;
|
_velocity = OMV.Vector3.Zero;
|
||||||
_buoyancy = ComputeBuoyancyFromFlying(isFlying);
|
_buoyancy = ComputeBuoyancyFromFlying(isFlying);
|
||||||
_currentFriction = BSParam.AvatarStandingFriction;
|
Friction = BSParam.AvatarStandingFriction;
|
||||||
_avatarDensity = BSParam.AvatarDensity;
|
Density = BSParam.AvatarDensity;
|
||||||
|
|
||||||
// Old versions of ScenePresence passed only the height. If width and/or depth are zero,
|
// Old versions of ScenePresence passed only the height. If width and/or depth are zero,
|
||||||
// replace with the default values.
|
// replace with the default values.
|
||||||
|
@ -104,7 +100,7 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
SetupMovementMotor();
|
SetupMovementMotor();
|
||||||
|
|
||||||
DetailLog("{0},BSCharacter.create,call,size={1},scale={2},density={3},volume={4},mass={5}",
|
DetailLog("{0},BSCharacter.create,call,size={1},scale={2},density={3},volume={4},mass={5}",
|
||||||
LocalID, _size, Scale, _avatarDensity, _avatarVolume, RawMass);
|
LocalID, _size, Scale, Density, _avatarVolume, RawMass);
|
||||||
|
|
||||||
// do actual creation in taint time
|
// do actual creation in taint time
|
||||||
PhysicsScene.TaintedObject("BSCharacter.create", delegate()
|
PhysicsScene.TaintedObject("BSCharacter.create", delegate()
|
||||||
|
@ -229,10 +225,10 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
}
|
}
|
||||||
|
|
||||||
// Standing has more friction on the ground
|
// Standing has more friction on the ground
|
||||||
if (_currentFriction != BSParam.AvatarStandingFriction)
|
if (Friction != BSParam.AvatarStandingFriction)
|
||||||
{
|
{
|
||||||
_currentFriction = BSParam.AvatarStandingFriction;
|
Friction = BSParam.AvatarStandingFriction;
|
||||||
PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
|
PhysicsScene.PE.SetFriction(PhysBody, Friction);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1},colliding={2}", LocalID, _velocityMotor.TargetValue, IsColliding);
|
DetailLog("{0},BSCharacter.MoveMotor,taint,stopping,target={1},colliding={2}", LocalID, _velocityMotor.TargetValue, IsColliding);
|
||||||
|
@ -241,11 +237,11 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
{
|
{
|
||||||
OMV.Vector3 stepVelocity = _velocityMotor.CurrentValue;
|
OMV.Vector3 stepVelocity = _velocityMotor.CurrentValue;
|
||||||
|
|
||||||
if (_currentFriction != BSParam.AvatarFriction)
|
if (Friction != BSParam.AvatarFriction)
|
||||||
{
|
{
|
||||||
// Probably starting up walking. Set friction to moving friction.
|
// Probably starting up walking. Set friction to moving friction.
|
||||||
_currentFriction = BSParam.AvatarFriction;
|
Friction = BSParam.AvatarFriction;
|
||||||
PhysicsScene.PE.SetFriction(PhysBody, _currentFriction);
|
PhysicsScene.PE.SetFriction(PhysBody, Friction);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If falling, we keep the world's downward vector no matter what the other axis specify.
|
// If falling, we keep the world's downward vector no matter what the other axis specify.
|
||||||
|
@ -345,7 +341,7 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
Scale = ComputeAvatarScale(_size);
|
Scale = ComputeAvatarScale(_size);
|
||||||
ComputeAvatarVolumeAndMass();
|
ComputeAvatarVolumeAndMass();
|
||||||
DetailLog("{0},BSCharacter.setSize,call,size={1},scale={2},density={3},volume={4},mass={5}",
|
DetailLog("{0},BSCharacter.setSize,call,size={1},scale={2},density={3},volume={4},mass={5}",
|
||||||
LocalID, _size, Scale, _avatarDensity, _avatarVolume, RawMass);
|
LocalID, _size, Scale, Density, _avatarVolume, RawMass);
|
||||||
|
|
||||||
PhysicsScene.TaintedObject("BSCharacter.setSize", delegate()
|
PhysicsScene.TaintedObject("BSCharacter.setSize", delegate()
|
||||||
{
|
{
|
||||||
|
@ -873,7 +869,7 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
* Math.Min(Size.X, Size.Y) / 2
|
* Math.Min(Size.X, Size.Y) / 2
|
||||||
* Size.Y / 2f // plus the volume of the capsule end caps
|
* Size.Y / 2f // plus the volume of the capsule end caps
|
||||||
);
|
);
|
||||||
_mass = _avatarDensity * _avatarVolume;
|
_mass = Density * _avatarVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
// The physics engine says that properties have updated. Update same and inform
|
// The physics engine says that properties have updated. Update same and inform
|
||||||
|
|
|
@ -424,7 +424,7 @@ public static class BSParam
|
||||||
(s) => { return AvatarFriction; },
|
(s) => { return AvatarFriction; },
|
||||||
(s,p,l,v) => { AvatarFriction = v; } ),
|
(s,p,l,v) => { AvatarFriction = v; } ),
|
||||||
new ParameterDefn("AvatarStandingFriction", "Avatar friction when standing. Changed on avatar recreation.",
|
new ParameterDefn("AvatarStandingFriction", "Avatar friction when standing. Changed on avatar recreation.",
|
||||||
10.0f,
|
0.95f,
|
||||||
(s,cf,p,v) => { AvatarStandingFriction = cf.GetFloat(p, v); },
|
(s,cf,p,v) => { AvatarStandingFriction = cf.GetFloat(p, v); },
|
||||||
(s) => { return AvatarStandingFriction; },
|
(s) => { return AvatarStandingFriction; },
|
||||||
(s,p,l,v) => { AvatarStandingFriction = v; } ),
|
(s,p,l,v) => { AvatarStandingFriction = v; } ),
|
||||||
|
|
Loading…
Reference in New Issue