Merge branch 'master' into careminster
commit
9f2d232c71
|
@ -78,8 +78,8 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
private float _PIDHoverTao;
|
private float _PIDHoverTao;
|
||||||
|
|
||||||
public BSCharacter(uint localID, String avName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size, bool isFlying)
|
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;
|
_physicsActorType = (int)ActorTypes.Agent;
|
||||||
_position = pos;
|
_position = pos;
|
||||||
_size = size;
|
_size = size;
|
||||||
|
@ -131,6 +131,10 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
// Set the velocity and compute the proper friction
|
// Set the velocity and compute the proper friction
|
||||||
ForceVelocity = _velocity;
|
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.SetRestitution2(PhysBody.ptr, PhysicsScene.Params.avatarRestitution);
|
||||||
BulletSimAPI.SetMargin2(PhysShape.ptr, PhysicsScene.Params.collisionMargin);
|
BulletSimAPI.SetMargin2(PhysShape.ptr, PhysicsScene.Params.collisionMargin);
|
||||||
BulletSimAPI.SetLocalScaling2(PhysShape.ptr, Scale);
|
BulletSimAPI.SetLocalScaling2(PhysShape.ptr, Scale);
|
||||||
|
@ -615,7 +619,7 @@ public sealed class BSCharacter : BSPhysObject
|
||||||
newScale.Y = PhysicsScene.Params.avatarCapsuleRadius;
|
newScale.Y = PhysicsScene.Params.avatarCapsuleRadius;
|
||||||
|
|
||||||
// From the total height, remove the capsule half spheres that are at each end
|
// 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;
|
Scale = newScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,10 @@ namespace OpenSim.Region.Physics.BulletSPlugin
|
||||||
*/
|
*/
|
||||||
public abstract class BSPhysObject : PhysicsActor
|
public abstract class BSPhysObject : PhysicsActor
|
||||||
{
|
{
|
||||||
protected void BaseInitialize(BSScene parentScene, uint localID, string name, string typeName)
|
protected BSPhysObject()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
protected BSPhysObject(BSScene parentScene, uint localID, string name, string typeName)
|
||||||
{
|
{
|
||||||
PhysicsScene = parentScene;
|
PhysicsScene = parentScene;
|
||||||
LocalID = localID;
|
LocalID = localID;
|
||||||
|
|
|
@ -88,9 +88,9 @@ public sealed class BSPrim : BSPhysObject
|
||||||
|
|
||||||
public BSPrim(uint localID, String primName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size,
|
public BSPrim(uint localID, String primName, BSScene parent_scene, OMV.Vector3 pos, OMV.Vector3 size,
|
||||||
OMV.Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical)
|
OMV.Quaternion rotation, PrimitiveBaseShape pbs, bool pisPhysical)
|
||||||
|
: base(parent_scene, localID, primName, "BSPrim")
|
||||||
{
|
{
|
||||||
// m_log.DebugFormat("{0}: BSPrim creation of {1}, id={2}", LogHeader, primName, localID);
|
// m_log.DebugFormat("{0}: BSPrim creation of {1}, id={2}", LogHeader, primName, localID);
|
||||||
base.BaseInitialize(parent_scene, localID, primName, "BSPrim");
|
|
||||||
_physicsActorType = (int)ActorTypes.Prim;
|
_physicsActorType = (int)ActorTypes.Prim;
|
||||||
_position = pos;
|
_position = pos;
|
||||||
_size = size;
|
_size = size;
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
*
|
*
|
||||||
|
@ -40,7 +40,7 @@ public abstract class BSShape
|
||||||
public int referenceCount { get; set; }
|
public int referenceCount { get; set; }
|
||||||
public DateTime lastReferenced { get; set; }
|
public DateTime lastReferenced { get; set; }
|
||||||
|
|
||||||
protected void Initialize()
|
public BSShape()
|
||||||
{
|
{
|
||||||
ptr = IntPtr.Zero;
|
ptr = IntPtr.Zero;
|
||||||
type = ShapeData.PhysicsShapeType.SHAPE_UNKNOWN;
|
type = ShapeData.PhysicsShapeType.SHAPE_UNKNOWN;
|
||||||
|
@ -109,9 +109,8 @@ public abstract class BSShape
|
||||||
|
|
||||||
public class BSShapeNull : BSShape
|
public class BSShapeNull : BSShape
|
||||||
{
|
{
|
||||||
public BSShapeNull()
|
public BSShapeNull() : base()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
|
||||||
}
|
}
|
||||||
public static BSShape GetReference() { return new BSShapeNull(); }
|
public static BSShape GetReference() { return new BSShapeNull(); }
|
||||||
public override void Dereference(BSScene physicsScene) { /* The magic of garbage collection will make this go away */ }
|
public override void Dereference(BSScene physicsScene) { /* The magic of garbage collection will make this go away */ }
|
||||||
|
@ -120,9 +119,8 @@ public class BSShapeNull : BSShape
|
||||||
public class BSShapeNative : BSShape
|
public class BSShapeNative : BSShape
|
||||||
{
|
{
|
||||||
private static string LogHeader = "[BULLETSIM SHAPE NATIVE]";
|
private static string LogHeader = "[BULLETSIM SHAPE NATIVE]";
|
||||||
public BSShapeNative()
|
public BSShapeNative() : base()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
|
||||||
}
|
}
|
||||||
public static BSShape GetReference(BSScene physicsScene, BSPhysObject prim,
|
public static BSShape GetReference(BSScene physicsScene, BSPhysObject prim,
|
||||||
ShapeData.PhysicsShapeType shapeType, ShapeData.FixedShapeKey shapeKey)
|
ShapeData.PhysicsShapeType shapeType, ShapeData.FixedShapeKey shapeKey)
|
||||||
|
@ -176,9 +174,8 @@ public class BSShapeMesh : BSShape
|
||||||
private static string LogHeader = "[BULLETSIM SHAPE MESH]";
|
private static string LogHeader = "[BULLETSIM SHAPE MESH]";
|
||||||
private static Dictionary<System.UInt64, BSShapeMesh> Meshes = new Dictionary<System.UInt64, BSShapeMesh>();
|
private static Dictionary<System.UInt64, BSShapeMesh> Meshes = new Dictionary<System.UInt64, BSShapeMesh>();
|
||||||
|
|
||||||
public BSShapeMesh()
|
public BSShapeMesh() : base()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
|
||||||
}
|
}
|
||||||
public static BSShape GetReference() { return new BSShapeNull(); }
|
public static BSShape GetReference() { return new BSShapeNull(); }
|
||||||
public override void Dereference(BSScene physicsScene) { }
|
public override void Dereference(BSScene physicsScene) { }
|
||||||
|
@ -189,9 +186,8 @@ public class BSShapeHull : BSShape
|
||||||
private static string LogHeader = "[BULLETSIM SHAPE HULL]";
|
private static string LogHeader = "[BULLETSIM SHAPE HULL]";
|
||||||
private static Dictionary<System.UInt64, BSShapeHull> Hulls = new Dictionary<System.UInt64, BSShapeHull>();
|
private static Dictionary<System.UInt64, BSShapeHull> Hulls = new Dictionary<System.UInt64, BSShapeHull>();
|
||||||
|
|
||||||
public BSShapeHull()
|
public BSShapeHull() : base()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
|
||||||
}
|
}
|
||||||
public static BSShape GetReference() { return new BSShapeNull(); }
|
public static BSShape GetReference() { return new BSShapeNull(); }
|
||||||
public override void Dereference(BSScene physicsScene) { }
|
public override void Dereference(BSScene physicsScene) { }
|
||||||
|
@ -200,9 +196,8 @@ public class BSShapeHull : BSShape
|
||||||
public class BSShapeCompound : BSShape
|
public class BSShapeCompound : BSShape
|
||||||
{
|
{
|
||||||
private static string LogHeader = "[BULLETSIM SHAPE COMPOUND]";
|
private static string LogHeader = "[BULLETSIM SHAPE COMPOUND]";
|
||||||
public BSShapeCompound()
|
public BSShapeCompound() : base()
|
||||||
{
|
{
|
||||||
base.Initialize();
|
|
||||||
}
|
}
|
||||||
public static BSShape GetReference(BSPhysObject prim)
|
public static BSShape GetReference(BSPhysObject prim)
|
||||||
{
|
{
|
||||||
|
|
|
@ -429,140 +429,6 @@ static class BulletSimAPI {
|
||||||
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||||
public delegate void DebugLogCallback([MarshalAs(UnmanagedType.LPStr)]string msg);
|
public delegate void DebugLogCallback([MarshalAs(UnmanagedType.LPStr)]string msg);
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
[return: MarshalAs(UnmanagedType.LPStr)]
|
|
||||||
public static extern string GetVersion();
|
|
||||||
|
|
||||||
/* Remove the linkage to the old api methods
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern uint Initialize(Vector3 maxPosition, IntPtr parms,
|
|
||||||
int maxCollisions, IntPtr collisionArray,
|
|
||||||
int maxUpdates, IntPtr updateArray,
|
|
||||||
DebugLogCallback logRoutine);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern void CreateInitialGroundPlaneAndTerrain(uint worldID);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern void SetHeightmap(uint worldID, [MarshalAs(UnmanagedType.LPArray)] float[] heightMap);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern void Shutdown(uint worldID);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool UpdateParameter(uint worldID, uint localID,
|
|
||||||
[MarshalAs(UnmanagedType.LPStr)]string paramCode, float value);
|
|
||||||
|
|
||||||
// ===============================================================================
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern int PhysicsStep(uint worldID, float timeStep, int maxSubSteps, float fixedTimeStep,
|
|
||||||
out int updatedEntityCount,
|
|
||||||
out IntPtr updatedEntitiesPtr,
|
|
||||||
out int collidersCount,
|
|
||||||
out IntPtr collidersPtr);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool CreateHull(uint worldID, System.UInt64 meshKey,
|
|
||||||
int hullCount, [MarshalAs(UnmanagedType.LPArray)] float[] hulls
|
|
||||||
);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool CreateMesh(uint worldID, System.UInt64 meshKey,
|
|
||||||
int indexCount, [MarshalAs(UnmanagedType.LPArray)] int[] indices,
|
|
||||||
int verticesCount, [MarshalAs(UnmanagedType.LPArray)] float[] vertices
|
|
||||||
);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool DestroyHull(uint worldID, System.UInt64 meshKey);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool DestroyMesh(uint worldID, System.UInt64 meshKey);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool CreateObject(uint worldID, ShapeData shapeData);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern Vector3 GetObjectPosition(uint WorldID, uint id);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern Quaternion GetObjectOrientation(uint WorldID, uint id);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectTranslation(uint worldID, uint id, Vector3 position, Quaternion rotation);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectVelocity(uint worldID, uint id, Vector3 velocity);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectAngularVelocity(uint worldID, uint id, Vector3 angularVelocity);
|
|
||||||
|
|
||||||
// Set the current force acting on the object
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectForce(uint worldID, uint id, Vector3 force);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectScaleMass(uint worldID, uint id, Vector3 scale, float mass, bool isDynamic);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectCollidable(uint worldID, uint id, bool phantom);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectDynamic(uint worldID, uint id, bool isDynamic, float mass);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectGhost(uint worldID, uint id, bool ghostly);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectProperties(uint worldID, uint id, bool isStatic, bool isSolid, bool genCollisions, float mass);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool SetObjectBuoyancy(uint worldID, uint id, float buoyancy);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool HasObject(uint worldID, uint id);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern bool DestroyObject(uint worldID, uint id);
|
|
||||||
|
|
||||||
// ===============================================================================
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern SweepHit ConvexSweepTest(uint worldID, uint id, Vector3 to, float extraMargin);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern RaycastHit RayTest(uint worldID, uint id, Vector3 from, Vector3 to);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern Vector3 RecoverFromPenetration(uint worldID, uint id);
|
|
||||||
|
|
||||||
// ===============================================================================
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern void DumpBulletStatistics();
|
|
||||||
*/
|
|
||||||
// Log a debug message
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern void SetDebugLogCallback(DebugLogCallback callback);
|
|
||||||
|
|
||||||
// ===============================================================================
|
|
||||||
// ===============================================================================
|
|
||||||
// ===============================================================================
|
|
||||||
// A new version of the API that enables moving all the logic out of the C++ code and into
|
|
||||||
// the C# code. This will make modifications easier for the next person.
|
|
||||||
// This interface passes the actual pointers to the objects in the unmanaged
|
|
||||||
// address space. All the management (calls for creation/destruction/lookup)
|
|
||||||
// is done in the C# code.
|
|
||||||
// The names have a "2" tacked on. This will be removed as the C# code gets rebuilt
|
|
||||||
// and the old code is removed.
|
|
||||||
|
|
||||||
// Functions use while converting from API1 to API2. Can be removed when totally converted.
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern IntPtr GetSimHandle2(uint worldID);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern IntPtr GetBodyHandleWorldID2(uint worldID, uint id);
|
|
||||||
|
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
|
||||||
public static extern IntPtr GetBodyHandle2(IntPtr world, uint id);
|
|
||||||
|
|
||||||
// ===============================================================================
|
// ===============================================================================
|
||||||
// Initialization and simulation
|
// Initialization and simulation
|
||||||
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
[DllImport("BulletSim", CallingConvention = CallingConvention.Cdecl), SuppressUnmanagedCodeSecurity]
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue