protected override void OnInitializePhysics() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Vector3 worldAabbMin = new Vector3(-10000, -10000, -10000); Vector3 worldAabbMax = new Vector3(10000, 10000, 10000); Broadphase = new AxisSweep3(worldAabbMin, worldAabbMax); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = new Vector3(0, -10, 0); World.SetInternalTickCallback(MotorPreTickCallback, this, true); // create the ground CollisionShape groundShape = new BoxShape(200, 10, 200); CollisionShapes.Add(groundShape); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Translation(0, -10, 0), groundShape); ground.UserObject = "Ground"; fCyclePeriod = 2000.0f; fMuscleStrength = 0.5f; m_Time = 0; SpawnTestRig(new Vector3(1, 0.5f, 0), false); SpawnTestRig(new Vector3(-2, 0.5f, 0), true); }
public void SetUp() { conf = new DefaultCollisionConfiguration(); dispatcher = new CollisionDispatcher(conf); broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)); world = new DiscreteDynamicsWorld(dispatcher, broadphase, null, conf); // Initialize TriangleIndexVertexArray with float array indexVertexArray = new TriangleIndexVertexArray(TorusMesh.Indices, TorusMesh.Vertices); gImpactMeshShape = new GImpactMeshShape(indexVertexArray); gImpactMeshShape.CalculateLocalInertia(1.0f); gImpactMesh = CreateBody(1.0f, gImpactMeshShape, Vector3.Zero); // Initialize TriangleIndexVertexArray with Vector3 array Vector3[] torusVertices = new Vector3[TorusMesh.Vertices.Length / 3]; for (int i = 0; i < torusVertices.Length; i++) { torusVertices[i] = new Vector3( TorusMesh.Vertices[i * 3], TorusMesh.Vertices[i * 3 + 1], TorusMesh.Vertices[i * 3 + 2]); } indexVertexArray2 = new TriangleIndexVertexArray(TorusMesh.Indices, torusVertices); triangleMeshShape = new BvhTriangleMeshShape(indexVertexArray2, true); // CalculateLocalInertia must fail for static shapes (shapes based on TriangleMeshShape) //triangleMeshShape.CalculateLocalInertia(1.0f); triangleMesh = CreateBody(0.0f, triangleMeshShape, Vector3.Zero); }
internal DynamicWorldImp() { //Debug.WriteLine("DynamicWorldImp"); //Default // collision configuration contains default setup for memory, collision setup BtCollisionConf = new DefaultCollisionConfiguration(); BtDispatcher = new CollisionDispatcher(BtCollisionConf); BtBroadphase = new DbvtBroadphase(); BtSolver = new SequentialImpulseConstraintSolver(); // BtCollisionShapes = new AlignedCollisionShapeArray(); BtWorld = new DiscreteDynamicsWorld(BtDispatcher, BtBroadphase, BtSolver, BtCollisionConf) { Gravity = new Vector3(0, -9.81f, 0) }; BtWorld.SolverInfo.NumIterations = 5; BtWorld.PerformDiscreteCollisionDetection(); //GImpactCollisionAlgorithm.RegisterAlgorithm(BtDispatcher); // BtWorld.SetInternalTickCallback(MyTickCallBack); //BtWorld.SetInternalTickCallback(TickTack); //ManifoldPoint.ContactAdded += OnContactAdded; //PersistentManifold.ContactDestroyed += OnContactDestroyed; //PersistentManifold.ContactProcessed += OnContactProcessed; }
protected override void OnInitializePhysics() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = Freelook.Up * -10.0f; BspLoader bspLoader = new BspLoader(); string[] args = Environment.GetCommandLineArgs(); if (args.Length == 1) { bspLoader.LoadBspFile("data/BspDemo.bsp"); } else { bspLoader.LoadBspFile(args[1]); } BspConverter bsp2Bullet = new BspToBulletConverter(this); bsp2Bullet.ConvertBsp(bspLoader, 0.1f); }
protected override void OnInitializePhysics() { BoxShape boxA = new BoxShape(new Vector3(1, 1, 1)); boxA.Margin = 0; BoxShape boxB = new BoxShape(new Vector3(0.5f, 0.5f, 0.5f)); boxB.Margin = 0; objects[0] = new CollisionObject(); objects[1] = new CollisionObject(); objects[0].CollisionShape = boxA; objects[1].CollisionShape = boxB; // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf); World.Gravity = new Vector3(0, -10, 0); IsDebugDrawEnabled = true; //World.AddCollisionObject(objects[0]); World.AddCollisionObject(objects[1]); Quaternion rotA = new Quaternion(0.739f, -0.204f, 0.587f, 0.257f); rotA.Normalize(); objects[0].WorldTransform = Matrix.RotationQuaternion(rotA) * Matrix.Translation(0, 3, 0); objects[1].WorldTransform = Matrix.Translation(0, 4.248f, 0); }
public Physics() { // collision configuration contains default setup for memory, collision setup collisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(collisionConf); Broadphase = new DbvtBroadphase(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, collisionConf); World.Gravity = new Vector3(0, -10, 0); CollisionShapes = new List<CollisionShape>(); // create the ground CollisionShape groundShape = new BoxShape(50, 1, 50); CollisionShapes.Add(groundShape); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Identity, groundShape); ground.UserObject = "Ground"; // create a few dynamic rigidbodies float mass = 1.0f; CollisionShape colShape = new BoxShape(1); CollisionShapes.Add(colShape); Vector3 localInertia = colShape.CalculateLocalInertia(mass); float start_x = StartPosX - ArraySizeX / 2; float start_y = StartPosY; float start_z = StartPosZ - ArraySizeZ / 2; int k, i, j; for (k = 0; k < ArraySizeY; k++) { for (i = 0; i < ArraySizeX; i++) { for (j = 0; j < ArraySizeZ; j++) { Matrix startTransform = Matrix.CreateTranslation( new Vector3( 2*i + start_x, 2*k + start_y, 2*j + start_z ) ); // using motionstate is recommended, it provides interpolation capabilities // and only synchronizes 'active' objects DefaultMotionState myMotionState = new DefaultMotionState(startTransform); RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, colShape, localInertia); RigidBody body = new RigidBody(rbInfo); // make it drop from a height body.Translate(new Vector3(0, 20, 0)); World.AddRigidBody(body); } } } }
/* void MyContactCallback(object sender, ContactAddedEventArgs e) { if (e.CollisionObject0Wrapper.CollisionObject.CollisionShape.ShapeType == BroadphaseNativeType.CompoundShape) { CompoundShape compound = e.CollisionObject0Wrapper.CollisionObject.CollisionShape as CompoundShape; CollisionShape childShape = compound.GetChildShape(e.Index0); } if (e.CollisionObject1Wrapper.CollisionObject.CollisionShape.ShapeType == BroadphaseNativeType.CompoundShape) { CompoundShape compound = e.CollisionObject1Wrapper.CollisionObject.CollisionShape as CompoundShape; CollisionShape childShape = compound.GetChildShape(e.Index1); } e.IsContactModified = true; } */ public void SetupEmptyDynamicsWorld() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); CompoundCollisionAlgorithm.CompoundChildShapePairCallback = MyCompoundChildShapeCallback; convexDecompositionObjectOffset = new Vector3(10, 0, 0); Broadphase = new AxisSweep3(new Vector3(-10000, -10000, -10000), new Vector3(10000, 10000, 10000)); //Broadphase = new SimpleBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); // create the ground CollisionShape groundShape = new BoxShape(30, 2, 30); CollisionShapes.Add(groundShape); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Translation(0, -4.5f, 0), groundShape); ground.UserObject = "Ground"; // create a few dynamic rigidbodies float mass = 1.0f; CollisionShape colShape = new BoxShape(1); CollisionShapes.Add(colShape); Vector3 localInertia = colShape.CalculateLocalInertia(mass); }
void DispatcherNearCallback(BroadphasePair collisionPair, CollisionDispatcher dispatcher, DispatcherInfo dispatchInfo) { //AddToDisposeQueue(dispatchInfo.DebugDraw); TestManifoldPoints(); //Console.WriteLine("DispatcherNearCallback"); }
protected override void OnInitializePhysics() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = Freelook.Up * -10.0f; BspLoader bspLoader = new BspLoader(); //string[] args = Environment.GetCommandLineArgs(); //if (args.Length == 1) //{ UnityEngine.TextAsset bytes = (UnityEngine.TextAsset)UnityEngine.Resources.Load("BspDemo"); System.IO.Stream byteStream = new System.IO.MemoryStream(bytes.bytes); bspLoader.LoadBspFile(byteStream); //} //else //{ // bspLoader.LoadBspFile(args[1]); //} BspConverter bsp2Bullet = new BspToBulletConverter(this); bsp2Bullet.ConvertBsp(bspLoader, 0.1f); }
protected override void OnInitializePhysics() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new AxisSweep3(new Vector3(-10000, -10000, -10000), new Vector3(10000, 10000, 10000)); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = new Vector3(0, -10, 0); //World.DispatchInfo.UseConvexConservativeDistanceUtil = true; //World.DispatchInfo.ConvexConservativeDistanceThreshold = 0.01f; // Setup a big ground box CollisionShape groundShape = new BoxShape(100, 10, 100); CollisionShapes.Add(groundShape); Matrix groundTransform = Matrix.Translation(0, -10, 0); RigidBody ground = LocalCreateRigidBody(0, groundTransform, groundShape); ground.UserObject = "Ground"; // Spawn one ragdoll SpawnRagdoll(new Vector3(1, 0.5f, 0)); SpawnRagdoll(new Vector3(-1, 0.5f, 0)); }
protected override void OnInitializePhysics() { CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf); World.Gravity = new Vector3(0, -10, 0); // ground CollisionShape groundShape = new BoxShape(50, 1, 50); CollisionShapes.Add(groundShape); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Identity, groundShape); ground.UserObject = "Ground"; // Objects //colShape = new BoxShape(1); Vector3[] points0 = { new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1) }; Vector3[] points1 = { new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(0, 0, 1), new Vector3(0,0,-1), new Vector3(-1,-1,0) }; colShape0 = new ConvexHullShape(points0); colShape1 = new ConvexHullShape(points1); CollisionShapes.Add(colShape0); CollisionShapes.Add(colShape1); /*body2 =*/ LocalCreateRigidBody(0, body2Position, colShape1); rotBody = LocalCreateRigidBody(0, rotBodyPosition, colShape0); rotBody.CollisionFlags |= CollisionFlags.KinematicObject; rotBody.ActivationState = ActivationState.DisableDeactivation; }
void SetupEmptyDynamicsWorld() { CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = new Vector3(0, -10, 0); }
public BulletSharpPhysicsComponent(Game game, BulletSharpPhysics.CollisionConfiguration collisionConf, BulletSharpPhysics.ConstraintSolver solver, Vector3 gravity) : base(game) { BulletSharpPhysics.CollisionDispatcher Dispatcher = new BulletSharpPhysics.CollisionDispatcher(collisionConf); World = new BulletSharpPhysics.DiscreteDynamicsWorld(Dispatcher, new BulletSharpPhysics.DbvtBroadphase(), solver, collisionConf); //World = new BulletSharpPhysics.DiscreteDynamicsWorld(Dispatcher, new BulletSharpPhysics.AxisSweep3(new Vector3(-1000),new Vector3(1000),16384), solver, collisionConf); World.Gravity = gravity; }
public void Setup(Vector3Df gravity) { bulletCollisionConfiguration = new DefaultCollisionConfiguration(); bulletCollisionDispatcher = new CollisionDispatcher(bulletCollisionConfiguration); bulletBroadphase = new DbvtBroadphase(); bulletWorld = new DiscreteDynamicsWorld(bulletCollisionDispatcher, bulletBroadphase, null, bulletCollisionConfiguration); bulletWorld.Gravity = new Vector3(gravity.X, gravity.Y, gravity.Z); }
public Physics() { CollisionConfiguration config = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(config); World = new DiscreteDynamicsWorld(Dispatcher, new DbvtBroadphase(), null, config); World.Gravity = new Vector3(0.0f, -9.81f, 0.0f); Props = new List<Prop>(); }
public Physics() { CLStuff.InitCL(); cloths = new Cloth[numFlags]; for (int flagIndex = 0; flagIndex < numFlags; ++flagIndex) { cloths[flagIndex] = new Cloth(); cloths[flagIndex].CreateBuffers(clothWidth, clothHeight); } gSolver = new OpenCLSoftBodySolver(CLStuff.commandQueue, CLStuff.cxMainContext); softBodyOutput = new SoftBodySolverOutputCLToCpu(); // collision configuration contains default setup for memory, collision setup CollisionConf = new SoftBodyRigidBodyCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new SoftRigidDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf, gSolver); World.Gravity = new Vector3(0, -10, 0); // create the ground CollisionShape groundShape = new BoxShape(50, 50, 50); CollisionShapes.Add(groundShape); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Translation(0, -60, 0), groundShape); ground.UserObject = "Ground"; SoftWorld.WorldInfo.AirDensity = 1.2f; SoftWorld.WorldInfo.WaterDensity = 0; SoftWorld.WorldInfo.WaterOffset = 0; SoftWorld.WorldInfo.WaterNormal = Vector3.Zero; SoftWorld.WorldInfo.Gravity = new Vector3(0, -10, 0); CreateFlag(clothWidth, clothHeight, out flags); // Create output buffer descriptions for ecah flag // These describe where the simulation should send output data to for (int flagIndex = 0; flagIndex < flags.Count; ++flagIndex) { // flags[flagIndex].WindVelocity = new Vector3(0, 0, 15.0f); // In this case we have a DX11 output buffer with a vertex at index 0, 8, 16 and so on as well as a normal at 3, 11, 19 etc. // Copies will be performed GPU-side directly into the output buffer CpuVertexBufferDescriptor vertexBufferDescriptor = new CpuVertexBufferDescriptor(cloths[flagIndex].CpuBuffer, 0, 8, 3, 8); cloths[flagIndex].VertexBufferDescriptor = vertexBufferDescriptor; } gSolver.Optimize(SoftWorld.SoftBodyArray); World.StepSimulation(1.0f / 60.0f, 0); }
public override void LoadContent() { base.LoadContent(); _collisionConfiguration = new DefaultCollisionConfiguration(); _collisionDispatcher = new CollisionDispatcher(_collisionConfiguration); _broadphaseInterface = new DbvtBroadphase(); World = new DiscreteDynamicsWorld(_collisionDispatcher, _broadphaseInterface, null, _collisionConfiguration); World.Gravity = new Vector3(0, 9.8f, 0); _worldSyncEvent = new AutoResetEvent(false); _worldUpdateTask = new Task(UpdateWorld); }
public override void Run() { var conf = new DefaultCollisionConfiguration(); var dispatcher = new CollisionDispatcher(conf); var broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)); world = new DiscreteDynamicsWorld(dispatcher, broadphase, null, conf); var indexVertexArray = new TriangleIndexVertexArray(TorusMesh.Indices, TorusMesh.Vertices); foreach (var indexedMesh in indexVertexArray.IndexedMeshArray) { indexedMesh.ToString(); } AddToDisposeQueue(indexVertexArray); var gImpactMesh = new GImpactMeshShape(indexVertexArray); Vector3 aabbMin, aabbMax; gImpactMesh.GetAabb(Matrix.Identity, out aabbMin, out aabbMax); CreateBody(1.0f, gImpactMesh, Vector3.Zero); AddToDisposeQueue(gImpactMesh); gImpactMesh = null; var triangleMesh = new BvhTriangleMeshShape(indexVertexArray, true); triangleMesh.CalculateLocalInertia(1.0f); triangleMesh.GetAabb(Matrix.Identity, out aabbMin, out aabbMax); CreateBody(1.0f, triangleMesh, Vector3.Zero); AddToDisposeQueue(triangleMesh); triangleMesh = null; indexVertexArray = null; AddToDisposeQueue(conf); AddToDisposeQueue(dispatcher); AddToDisposeQueue(broadphase); AddToDisposeQueue(world); //conf.Dispose(); conf = null; //dispatcher.Dispose(); dispatcher = null; //broadphase.Dispose(); broadphase = null; for (int i = 0; i < 600; i++) { world.StepSimulation(1.0f / 60.0f); } world.Dispose(); world = null; ForceGC(); TestWeakRefs(); ClearRefs(); }
public BulletPhysicWorld(Vector3 gravity) { collisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(collisionConf); Broadphase = new DbvtBroadphase(); constraintSolver = new SequentialImpulseConstraintSolver(); objs = new List<IPhysicObject>(); ctns = new List<IPhysicConstraint>(); world = new DiscreteDynamicsWorld(Dispatcher, Broadphase ,constraintSolver, collisionConf); world.Gravity = gravity; }
public Physics() { ActiveBodies = new List<PhysicalBody>(); collisionConf = new DefaultCollisionConfiguration(); dispatcher = new CollisionDispatcher(collisionConf); broadphase = new DbvtBroadphase(); var w = new MultiBodyDynamicsWorld(dispatcher, broadphase, new MultiBodyConstraintSolver(), collisionConf); w.SolverInfo.SolverMode = SolverModes.CacheFriendly; w.SolverInfo.Restitution = 0; w.Gravity = new Vector3(0, -9.81f, 0); World = w; }
/// <summary> /// コンストラクター /// </summary> public CollisionAnalyzer() { var cc = new DefaultCollisionConfiguration (); dispatcher = new CollisionDispatcher (cc); broadphase = new DbvtBroadphase (); broadphase.OverlappingPairCache.SetInternalGhostPairCallback (new GhostPairCallback ()); // solver = new SequentialImpulseConstraintSolver (); this.wld = new DiscreteDynamicsWorld (dispatcher, broadphase, null, cc); this.prevContacts = new List<OverlappingPair> (); this.currContacts = new List<OverlappingPair> (); }
public void SetUp() { conf = new SoftBodyRigidBodyCollisionConfiguration(); dispatcher = new CollisionDispatcher(conf); broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)); solver = new DefaultSoftBodySolver(); world = new SoftRigidDynamicsWorld(dispatcher, broadphase, null, conf, solver); softBodyWorldInfo = new SoftBodyWorldInfo(); softBody = new SoftBody(softBodyWorldInfo); world.AddSoftBody(softBody); }
public void SetUp() { conf = new DefaultCollisionConfiguration(); dispatcher = new CollisionDispatcher(conf); broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)); world = new DiscreteDynamicsWorld(dispatcher, broadphase, null, conf); action = new Action(); world.AddAction(action); world.AddAction(action); world.RemoveAction(action); world.RemoveAction(action); world.AddAction(action); }
/* void MyContactCallback(object sender, ContactAddedEventArgs e) { if (e.CollisionObject0Wrapper.CollisionObject.CollisionShape.ShapeType == BroadphaseNativeType.CompoundShape) { CompoundShape compound = e.CollisionObject0Wrapper.CollisionObject.CollisionShape as CompoundShape; CollisionShape childShape = compound.GetChildShape(e.Index0); } if (e.CollisionObject1Wrapper.CollisionObject.CollisionShape.ShapeType == BroadphaseNativeType.CompoundShape) { CompoundShape compound = e.CollisionObject1Wrapper.CollisionObject.CollisionShape as CompoundShape; CollisionShape childShape = compound.GetChildShape(e.Index1); } e.IsContactModified = true; } */ public void SetupEmptyDynamicsWorld() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new AxisSweep3(new Vector3(-10000, -10000, -10000), new Vector3(10000, 10000, 10000)); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); // create the ground CollisionShape groundShape = new BoxShape(30, 2, 30); CollisionShapes.Add(groundShape); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Translation(0, -4.5f, 0), groundShape); ground.UserObject = "Ground"; }
public World() { Children = new List<IRenderable>(); LinesPool = new Line2dPool(); CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); PhysicalWorld = new DiscreteDynamicsWorld(Dispatcher, Broadphase, null, CollisionConf); PhysicalWorld.Gravity = new Vector3(0, -10, 0); PhysicalWorld.SolverInfo.SolverMode = SolverModes.InterleaveContactAndFrictionConstraints; PhysicalWorld.SolverInfo.Restitution = 0; CollisionObjects = new Dictionary<IRenderable, CollisionObject>(); UI = new UIRenderer(); if(Root == null) Root = this; }
static void Main(string[] args) { var config = new BulletSharp.DefaultCollisionConfiguration(); var dispatcher = new BulletSharp.CollisionDispatcher(config); var pair = new BulletSharp.DbvtBroadphase(); var world = new BulletSharp.CollisionWorld(dispatcher, pair, config); var players = new Dictionary <Guid, RigidBody>(); var ci = new RigidBodyConstructionInfo(1, new DefaultMotionState(), new SphereShape(.513037f)); var rb = new RigidBody(ci); rb.Gravity = Vector3.Zero; rb.Translate(new Vector3(0f, 1.5f, 0f)); world.AddCollisionObject(rb); }
public Physics() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = new Vector3(0, 0, -10); BspLoader bspLoader = new BspLoader(); bspLoader.LoadBspFile("BspDemo.bsp"); BspConverter bsp2Bullet = new BspToBulletConverter(this); bsp2Bullet.ConvertBsp(bspLoader, 0.1f); }
public Physics() { CollisionConfiguration collisionConf = new DefaultCollisionConfiguration(); CollisionDispatcher dispatcher = new CollisionDispatcher(collisionConf); World = new DiscreteDynamicsWorld(dispatcher, new DbvtBroadphase(), null, collisionConf); World.Gravity = new Vector3(0, -10, 0); // create the ground CollisionShape groundShape = new BoxShape(50, 1, 50); CollisionObject ground = LocalCreateRigidBody(0, Matrix.Identity, groundShape); ground.UserObject = "Ground"; // create a box CollisionShape boxShape = new BoxShape(1); LocalCreateRigidBody(1.0f, Matrix.Translation(0, 20, 0), boxShape); }
public void SetUp() { conf = new DefaultCollisionConfiguration(); dispatcher = new CollisionDispatcher(conf); broadphase = new AxisSweep3(new Vector3(-1000, -1000, -1000), new Vector3(1000, 1000, 1000)); world = new DiscreteDynamicsWorld(dispatcher, broadphase, null, conf); indexVertexArray = new TriangleIndexVertexArray(TorusMesh.Indices, TorusMesh.Vertices); gImpactMeshShape = new GImpactMeshShape(indexVertexArray); triangleMeshShape = new BvhTriangleMeshShape(indexVertexArray, true); triangleMeshShape.CalculateLocalInertia(1.0f); gImpactMesh = CreateBody(1.0f, gImpactMeshShape, Vector3.Zero); triangleMesh = CreateBody(1.0f, triangleMeshShape, Vector3.Zero); }
protected override void OnInitializePhysics() { // collision configuration contains default setup for memory, collision setup CollisionConf = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConf); Broadphase = new DbvtBroadphase(); Solver = new SequentialImpulseConstraintSolver(); World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf); World.Gravity = new Vector3(0, -10, 0); importer = new BulletXmlWorldImporter(World); if (!importer.LoadFile("data\\bullet_basic.xml")) { //throw new FileNotFoundException(); } }
static DefaultRigidBodyWorld() { // Broadphase algorithms are responsible for calculating bounding // boxes. We should probably use an AABB Tree (DbvtBroadphase) // because they are generally good for worlds with lots of motion. // Sweep and Prune Broadphases are best when most of the world is // static. Broadphase = new DbvtBroadphase(); CollisionConfiguration = new DefaultCollisionConfiguration(); Dispatcher = new CollisionDispatcher(CollisionConfiguration); Solver = new SequentialImpulseConstraintSolver(); DynamicsWorld = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConfiguration); DynamicsWorld.Gravity = new Vector3(0F, 0F, -9.81F); Ground = PhysicsHelpers.MakePlane(new Vector3(0, 0, 1), 0); DynamicsWorld.AddRigidBody(Ground); }
public static void RegisterAlgorithm(CollisionDispatcher dispatcher) { btGImpactCollisionAlgorithm_registerAlgorithm(dispatcher.Native); }
public static void DefaultNearCallback(BroadphasePair collisionPair, CollisionDispatcher dispatcher, DispatcherInfo dispatchInfo) { btCollisionDispatcher_defaultNearCallback(collisionPair.Native, dispatcher.Native, dispatchInfo.Native); }