Part 1 of Darok's BulletX patches.
parent
710856e3d3
commit
725ef022c6
|
@ -23,12 +23,12 @@
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
#region References
|
#region References
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using OpenSim.Physics.Manager;
|
using OpenSim.Region.Physics.Manager;
|
||||||
using Axiom.Math;
|
using Axiom.Math;
|
||||||
//Specific References for BulletXPlugin
|
//Specific References for BulletXPlugin
|
||||||
using MonoXnaCompactMaths;
|
using MonoXnaCompactMaths;
|
||||||
|
@ -163,7 +163,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size)
|
public override PhysicsActor AddPrim(PhysicsVector position, PhysicsVector size, Axiom.Math.Quaternion rotation)
|
||||||
{
|
{
|
||||||
PhysicsVector pos = new PhysicsVector();
|
PhysicsVector pos = new PhysicsVector();
|
||||||
pos.X = position.X;
|
pos.X = position.X;
|
||||||
|
@ -176,6 +176,10 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
return new BulletXPrim();
|
return new BulletXPrim();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void RemovePrim(PhysicsActor prim)
|
||||||
|
{
|
||||||
|
throw new Exception("The method or operation is not implemented.");
|
||||||
|
}
|
||||||
public override void Simulate(float timeStep)
|
public override void Simulate(float timeStep)
|
||||||
{
|
{
|
||||||
foreach (BulletXCharacter actor in _characters)
|
foreach (BulletXCharacter actor in _characters)
|
||||||
|
@ -187,7 +191,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
foreach (BulletXCharacter actor in _characters)
|
foreach (BulletXCharacter actor in _characters)
|
||||||
{
|
{
|
||||||
actor.ValidateHeight(this._heightmap[
|
actor.ValidateHeight(this._heightmap[
|
||||||
(int)Math.Round(actor.RigidBodyHorizontalPosition.x) * 256
|
(int)Math.Round(actor.RigidBodyHorizontalPosition.x) * 256
|
||||||
+ (int)Math.Round(actor.RigidBodyHorizontalPosition.y)]);
|
+ (int)Math.Round(actor.RigidBodyHorizontalPosition.y)]);
|
||||||
}
|
}
|
||||||
foreach (BulletXCharacter actor in _characters)
|
foreach (BulletXCharacter actor in _characters)
|
||||||
|
@ -257,7 +261,8 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
CollisionShape _collisionShape = new BoxShape(new MonoXnaCompactMaths.Vector3(0.5f, 0.5f, 1.60f));
|
CollisionShape _collisionShape = new BoxShape(new MonoXnaCompactMaths.Vector3(0.5f, 0.5f, 1.60f));
|
||||||
DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset);
|
DefaultMotionState _motionState = new DefaultMotionState(_startTransform, _centerOfMassOffset);
|
||||||
MonoXnaCompactMaths.Vector3 _localInertia = new MonoXnaCompactMaths.Vector3();
|
MonoXnaCompactMaths.Vector3 _localInertia = new MonoXnaCompactMaths.Vector3();
|
||||||
_collisionShape.CalculateLocalInertia(_mass, out _localInertia); //Always when mass > 0
|
_collisionShape.CalculateLocalInertia(_mass, out _localInertia);
|
||||||
|
//Always when mass > 0
|
||||||
|
|
||||||
//The next values might change
|
//The next values might change
|
||||||
float _linearDamping = 0.0f;
|
float _linearDamping = 0.0f;
|
||||||
|
@ -283,6 +288,18 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override PhysicsVector Size
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
throw new Exception("The method or operation is not implemented.");
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
throw new Exception("The method or operation is not implemented.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override PhysicsVector Position
|
public override PhysicsVector Position
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -359,7 +376,7 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
MonoXnaCompactMaths.Vector3 vec = new MonoXnaCompactMaths.Vector3();
|
MonoXnaCompactMaths.Vector3 vec = new MonoXnaCompactMaths.Vector3();
|
||||||
//if (this._velocity.X == 0.0f)
|
//if (this._velocity.X == 0.0f)
|
||||||
// vec.X = this.rigidBody.LinearVelocity.X; //current velocity
|
// vec.X = this.rigidBody.LinearVelocity.X; //current velocity
|
||||||
//else
|
//else
|
||||||
vec.X = this._velocity.X; //overrides current velocity
|
vec.X = this._velocity.X; //overrides current velocity
|
||||||
|
|
||||||
//if (this._velocity.Y == 0.0f)
|
//if (this._velocity.Y == 0.0f)
|
||||||
|
@ -376,18 +393,18 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
if (flying)
|
if (flying)
|
||||||
{
|
{
|
||||||
//Antigravity with movement
|
//Antigravity with movement
|
||||||
if (this._position.Z <= BulletXScene.HeightLevel0)
|
if (this._position.Z <= BulletXScene.HeightLevel0)
|
||||||
{
|
{
|
||||||
vec.Z = nextZVelocity + BulletXScene.Gravity * timeStep;
|
vec.Z = nextZVelocity + BulletXScene.Gravity * timeStep;
|
||||||
}
|
}
|
||||||
//Lowgravity with movement
|
//Lowgravity with movement
|
||||||
else if((this._position.Z > BulletXScene.HeightLevel0)
|
else if((this._position.Z > BulletXScene.HeightLevel0)
|
||||||
&& (this._position.Z <= BulletXScene.HeightLevel1))
|
&& (this._position.Z <= BulletXScene.HeightLevel1))
|
||||||
{
|
{
|
||||||
vec.Z = nextZVelocity + BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor);
|
vec.Z = nextZVelocity + BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor);
|
||||||
}
|
}
|
||||||
//Lowgravity with...
|
//Lowgravity with...
|
||||||
else if (this._position.Z > BulletXScene.HeightLevel1)
|
else if (this._position.Z > BulletXScene.HeightLevel1)
|
||||||
{
|
{
|
||||||
if(nextZVelocity > 0) //no movement
|
if(nextZVelocity > 0) //no movement
|
||||||
vec.Z = BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor);
|
vec.Z = BulletXScene.Gravity * timeStep * (1.0f - BulletXScene.LowGravityFactor);
|
||||||
|
@ -447,6 +464,17 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public override PhysicsVector Size
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
throw new Exception("The method or operation is not implemented.");
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
throw new Exception("The method or operation is not implemented.");
|
||||||
|
}
|
||||||
|
}
|
||||||
public override PhysicsVector Position
|
public override PhysicsVector Position
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -469,7 +497,6 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
this._prim.Position = pos;*/
|
this._prim.Position = pos;*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override PhysicsVector Velocity
|
public override PhysicsVector Velocity
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -481,7 +508,6 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
_velocity = value;
|
_velocity = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override bool Kinematic
|
public override bool Kinematic
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -494,7 +520,6 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
//this._prim.Kinematic = value;
|
//this._prim.Kinematic = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Axiom.Math.Quaternion Orientation
|
public override Axiom.Math.Quaternion Orientation
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -507,7 +532,6 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public override PhysicsVector Acceleration
|
public override PhysicsVector Acceleration
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -520,15 +544,14 @@ namespace OpenSim.Region.Physics.BulletXPlugin
|
||||||
{
|
{
|
||||||
this._acceleration = accel;
|
this._acceleration = accel;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void AddForce(PhysicsVector force)
|
public override void AddForce(PhysicsVector force)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void SetMomentum(PhysicsVector momentum)
|
public override void SetMomentum(PhysicsVector momentum)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue