本文整理汇总了C#中BulletSharp.RigidBodyConstructionInfo类的典型用法代码示例。如果您正苦于以下问题:C# RigidBodyConstructionInfo类的具体用法?C# RigidBodyConstructionInfo怎么用?C# RigidBodyConstructionInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
RigidBodyConstructionInfo类属于BulletSharp命名空间,在下文中一共展示了RigidBodyConstructionInfo类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: AddVertexGraph
private void AddVertexGraph(VertexGraph graph)
{
Individual = graph.Vertices.Select(vertex =>
{
var mass = 10000;
var motionState = new DefaultMotionState();
var collisionShape = new BoxShape(1);
var info = new RigidBodyConstructionInfo(mass, motionState, collisionShape);
var rigidBody = new VertexBoundRigidBody(vertex, info);
return rigidBody;
}).ToList();
foreach (var body in Individual)
{
// Select the 3 nearest vertices, excluding this one
var nearest = Individual.OrderBy(a => a.Binding.DistanceTo(body.Binding))
.Where(a => a != body)
.Take(3);
foreach (var other in nearest)
{
// TODO: What are these matrices supposed to be?
var frameInA = body.MotionState.WorldTransform;
var frameInB = other.MotionState.WorldTransform;
// TODO: How do you specify the spring's springiness?
var constraint = new Generic6DofSpringConstraint(body, other, frameInA, frameInB, true);
// TODO: Now how do I apply this to the bodies?
body.AddConstraintRef(constraint);
other.AddConstraintRef(constraint);
}
}
}
开发者ID:kylc,项目名称:seve,代码行数:35,代码来源:DefaultRigidBodyWorld.cs
示例2: Physics
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);
}
}
}
}
开发者ID:jdoyle1983,项目名称:BulletSharp,代码行数:60,代码来源:Physics.cs
示例3: SetUpBulletPhysicsBody
public void SetUpBulletPhysicsBody(float mass, BulletSharp.MotionState motionState, BulletSharp.CollisionShape collisionShape, Vector3 localInertia)
{
BulletSharpPhysics.RigidBodyConstructionInfo rbInfo =
new BulletSharpPhysics.RigidBodyConstructionInfo(mass, motionState, collisionShape, localInertia);
RigidBody = new BulletSharpPhysics.RigidBody(rbInfo);
bulletPhysics.World.AddRigidBody(RigidBody,GetCollisionFlags(),GetCollisionMask());
}
开发者ID:JohnLouderback,项目名称:illuminati-engine-xna,代码行数:9,代码来源:BulletSharpObject.cs
示例4: ApplyMaterial
/// <summary>
/// Applies friction, bounciness, angular damping, and linear damping
/// </summary>
public void ApplyMaterial(RigidBodyConstructionInfo info, string material)
{
PhysicsMaterial mat = GetMaterial(material);
info.Friction = mat.Friction;
info.Restitution = mat.Bounciness;
info.AngularDamping = mat.AngularDamping;
info.LinearDamping = mat.LinearDamping;
}
开发者ID:CisciarpMaster,项目名称:PonyKart,代码行数:12,代码来源:PhysicsMaterialFactory.cs
示例5: CreateBody
RigidBody CreateBody(float mass, CollisionShape shape, Vector3 offset)
{
using (var info = new RigidBodyConstructionInfo(mass, new DefaultMotionState(), shape, Vector3.Zero))
{
if (mass != 0.0f)
{
info.LocalInertia = info.CollisionShape.CalculateLocalInertia(mass);
}
var collisionObject = new RigidBody(info);
collisionObject.Translate(offset);
world.AddRigidBody(collisionObject);
return collisionObject;
}
}
开发者ID:ruisebastiao,项目名称:BulletSharp,代码行数:14,代码来源:TriangleMeshTest.cs
示例6: AlignmentTest
public void AlignmentTest()
{
const float mass = 1.0f;
for (int i = 0; i < 100; i++)
{
// RigidBodyConstructionInfo without the optional localInertia parameter will
// cause the default value to be passed, which is not aligned to 16 bytes in C++/CLI.
// If BulletSharp doesn't explicitly pass an aligned value and SSE is used,
// an AccessViolationException occurs.
var info = new RigidBodyConstructionInfo(mass, new DefaultMotionState(), boxShape); // , Vector3.Zero
info.Dispose();
}
}
开发者ID:rhynodegreat,项目名称:BulletSharp,代码行数:14,代码来源:MathTests.cs
示例7: LocalCreateRigidBody
protected RigidBody LocalCreateRigidBody(float mass, Matrix startTransform, CollisionShape shape)
{
bool isDynamic = (mass != 0.0f);
Vector3 localInertia = Vector3.Zero;
if (isDynamic)
shape.CalculateLocalInertia(mass, out localInertia);
DefaultMotionState myMotionState = new DefaultMotionState(startTransform);
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, shape, localInertia);
body = new RigidBody(rbInfo);
return body;
}
开发者ID:brunoduartec,项目名称:port-ploobsengine,代码行数:15,代码来源:BulletPhysicObject.cs
示例8: CreateBody
static RigidBody CreateBody(float mass, CollisionShape shape, Vector3 offset)
{
var constInfo = new RigidBodyConstructionInfo(mass, new DefaultMotionState(), shape, Vector3.Zero);
if (mass != 0.0f)
{
constInfo.LocalInertia = constInfo.CollisionShape.CalculateLocalInertia(mass);
}
var collisionObject = new RigidBody(constInfo);
collisionObject.Translate(offset);
world.AddRigidBody(collisionObject);
AddToDisposeQueue(constInfo);
AddToDisposeQueue(constInfo.MotionState);
AddToDisposeQueue(collisionObject);
AddToDisposeQueue(shape);
return collisionObject;
}
开发者ID:sinkingsugar,项目名称:BulletSharpPInvoke,代码行数:18,代码来源:Program.cs
示例9: createRigidBody
BulletSharp.RigidBody createRigidBody (BulletSharp.CollisionShape shape, UnityEngine.Transform transform, float mass)
{
Matrix4x4 unityMatrix = Matrix4x4.TRS (transform.position, transform.rotation, UnityEngine.Vector3.one);
BulletSharp.Matrix bulletMatrix = new BulletSharp.Matrix (
unityMatrix.m00, unityMatrix.m10, unityMatrix.m20, unityMatrix.m30,
unityMatrix.m01, unityMatrix.m11, unityMatrix.m21, unityMatrix.m31,
unityMatrix.m02, unityMatrix.m12, unityMatrix.m22, unityMatrix.m32,
unityMatrix.m03, unityMatrix.m13, unityMatrix.m23, unityMatrix.m33);
BulletSharp.MotionState motionState = new BulletSharp.DefaultMotionState (bulletMatrix);
BulletSharp.Vector3 inertia = new BulletSharp.Vector3 (0f, 0f, 0f);
if (!Mathf.Approximately (mass, 0f)) {
shape.CalculateLocalInertia (mass, out inertia);
}
BulletSharp.RigidBodyConstructionInfo myRigidBodyCI = new BulletSharp.RigidBodyConstructionInfo (mass, motionState, shape, inertia);
BulletSharp.RigidBody myRigidBody = new BulletSharp.RigidBody (myRigidBodyCI);
myRigidBodyCI.Dispose ();
return myRigidBody;
}
开发者ID:franckmolto,项目名称:unity-bullet,代码行数:19,代码来源:BtRigidBody.cs
示例10: LocalCreateRigidBody
public override RigidBody LocalCreateRigidBody(float mass, Matrix startTransform, CollisionShape shape)
{
//rigidbody is dynamic if and only if mass is non zero, otherwise static
bool isDynamic = (mass != 0.0f);
Vector3 localInertia = Vector3.Zero;
if (isDynamic)
shape.CalculateLocalInertia(mass, out localInertia);
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
RigidBodyConstructionInfo rbInfo = new RigidBodyConstructionInfo(mass, null, shape, localInertia);
RigidBody body = new RigidBody(rbInfo);
rbInfo.Dispose();
body.ContactProcessingThreshold = defaultContactProcessingThreshold;
body.WorldTransform = startTransform;
World.AddRigidBody(body);
return body;
}
开发者ID:RainsSoft,项目名称:BulletSharpPInvoke,代码行数:21,代码来源:BenchmarkDemo.cs
示例11: LocalCreateRigidBody
public RigidBody LocalCreateRigidBody(float mass, Matrix startTransform, CollisionShape shape)
{
//rigidbody is dynamic if and only if mass is non zero, otherwise static
bool isDynamic = (mass != 0.0f);
Vector3 localInertia = Vector3.Zero;
if (isDynamic)
shape.CalculateLocalInertia(mass, out localInertia);
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
DefaultMotionState myMotionState = new DefaultMotionState(startTransform);
RigidBody body;
using (var rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, shape, localInertia))
{
body = new RigidBody(rbInfo);
}
ownerWorld.AddRigidBody(body);
return body;
}
开发者ID:rhynodegreat,项目名称:BulletSharp,代码行数:21,代码来源:MotorDemo.cs
示例12: OnInitializePhysics
protected override void OnInitializePhysics()
{
// collision configuration contains default setup for memory, collision setup
CollisionConf = new DefaultCollisionConfiguration();
// Use the default collision dispatcher. For parallel processing you can use a diffent dispatcher.
Dispatcher = new CollisionDispatcher(CollisionConf);
VoronoiSimplexSolver simplex = new VoronoiSimplexSolver();
MinkowskiPenetrationDepthSolver pdSolver = new MinkowskiPenetrationDepthSolver();
Convex2DConvex2DAlgorithm.CreateFunc convexAlgo2d = new Convex2DConvex2DAlgorithm.CreateFunc(simplex, pdSolver);
Dispatcher.RegisterCollisionCreateFunc(BroadphaseNativeType.Convex2DShape, BroadphaseNativeType.Convex2DShape, convexAlgo2d);
Dispatcher.RegisterCollisionCreateFunc(BroadphaseNativeType.Box2DShape, BroadphaseNativeType.Convex2DShape, convexAlgo2d);
Dispatcher.RegisterCollisionCreateFunc(BroadphaseNativeType.Convex2DShape, BroadphaseNativeType.Box2DShape, convexAlgo2d);
Dispatcher.RegisterCollisionCreateFunc(BroadphaseNativeType.Box2DShape, BroadphaseNativeType.Box2DShape, new Box2DBox2DCollisionAlgorithm.CreateFunc());
Broadphase = new DbvtBroadphase();
// the default constraint solver.
Solver = new SequentialImpulseConstraintSolver();
World = new DiscreteDynamicsWorld(Dispatcher, Broadphase, Solver, CollisionConf);
World.Gravity = new Vector3(0, -10, 0);
// create a few basic rigid bodies
CollisionShape groundShape = new BoxShape(150, 7, 150);
CollisionShapes.Add(groundShape);
RigidBody ground = LocalCreateRigidBody(0, Matrix.Identity, groundShape);
ground.UserObject = "Ground";
// create a few dynamic rigidbodies
// Re-using the same collision is better for memory usage and performance
float u = 0.96f;
Vector3[] points = { new Vector3(0, u, 0), new Vector3(-u, -u, 0), new Vector3(u, -u, 0) };
ConvexShape childShape0 = new BoxShape(1, 1, Depth);
ConvexShape colShape = new Convex2DShape(childShape0);
ConvexShape childShape1 = new ConvexHullShape(points);
ConvexShape colShape2 = new Convex2DShape(childShape1);
ConvexShape childShape2 = new CylinderShapeZ(1, 1, Depth);
ConvexShape colShape3 = new Convex2DShape(childShape2);
CollisionShapes.Add(colShape);
CollisionShapes.Add(colShape2);
CollisionShapes.Add(colShape3);
CollisionShapes.Add(childShape0);
CollisionShapes.Add(childShape1);
CollisionShapes.Add(childShape2);
colShape.Margin = 0.03f;
float mass = 1.0f;
Vector3 localInertia = colShape.CalculateLocalInertia(mass);
Matrix startTransform;
Vector3 x = new Vector3(-ArraySizeX, 8, -20);
Vector3 y = Vector3.Zero;
Vector3 deltaX = new Vector3(1, 2, 0);
Vector3 deltaY = new Vector3(2, 0, 0);
int i, j;
for (i = 0; i < ArraySizeY; i++)
{
y = x;
for (j = 0; j < ArraySizeX; j++)
{
startTransform = Matrix.Translation(y - new Vector3(-10, 0, 0));
//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
DefaultMotionState myMotionState = new DefaultMotionState(startTransform);
RigidBodyConstructionInfo rbInfo;
switch (j % 3)
{
case 0:
rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, colShape, localInertia);
break;
case 1:
rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, colShape3, localInertia);
break;
default:
rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, colShape2, localInertia);
break;
}
RigidBody body = new RigidBody(rbInfo);
rbInfo.Dispose();
//body.ActivationState = ActivationState.IslandSleeping;
body.LinearFactor = new Vector3(1, 1, 0);
body.AngularFactor = new Vector3(0, 0, 1);
World.AddRigidBody(body);
y += deltaY;
}
x += deltaX;
}
}
开发者ID:RainsSoft,项目名称:BulletSharpPInvoke,代码行数:100,代码来源:Box2DDemo.cs
示例13: OnInitializePhysics
protected override void OnInitializePhysics()
{
// 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);
GImpactCollisionAlgorithm.RegisterAlgorithm(Dispatcher);
string bulletFile;
string[] args = Environment.GetCommandLineArgs();
if (args.Length == 1)
{
bulletFile = "testFile.bullet";
}
else
{
bulletFile = args[1];
}
fileLoader = new CustomBulletWorldImporter(World);
if (!fileLoader.LoadFile(bulletFile))
{
CollisionShape groundShape = new BoxShape(50);
CollisionShapes.Add(groundShape);
RigidBody ground = LocalCreateRigidBody(0, Matrix.Translation(0, -50, 0), groundShape);
ground.UserObject = "Ground";
// create a few dynamic rigidbodies
float mass = 1.0f;
Vector3[] positions = new Vector3[2] { new Vector3(0.1f, 0.2f, 0.3f), new Vector3(0.4f, 0.5f, 0.6f) };
float[] radi = new float[2] { 0.3f, 0.4f };
CollisionShape colShape = new MultiSphereShape(positions, radi);
//CollisionShape colShape = new CapsuleShapeZ(1, 1);
//CollisionShape colShape = new CylinderShapeZ(1, 1, 1);
//CollisionShape colShape = new BoxShape(1);
//CollisionShape colShape = new SphereShape(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.Translation(
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);
rbInfo.Dispose();
// make it drop from a height
body.Translate(new Vector3(0, 20, 0));
World.AddRigidBody(body);
}
}
}
DefaultSerializer serializer = new DefaultSerializer();
serializer.RegisterNameForObject(ground, "GroundName");
for (i = 0; i < CollisionShapes.Count; i++)
serializer.RegisterNameForObject(CollisionShapes[i], "name" + i.ToString());
Point2PointConstraint p2p = new Point2PointConstraint((RigidBody)World.CollisionObjectArray[2], new Vector3(0, 1, 0));
World.AddConstraint(p2p);
serializer.RegisterNameForObject(p2p, "constraintje");
World.Serialize(serializer);
BulletSharp.DataStream data = serializer.LockBuffer();
byte[] dataBytes = new byte[data.Length];
data.Read(dataBytes, 0, dataBytes.Length);
FileStream file = new FileStream("testFile.bullet", FileMode.Create);
//.........这里部分代码省略.........
开发者ID:rhynodegreat,项目名称:BulletSharp,代码行数:101,代码来源:SerializeDemo.cs
示例14: OnInitializePhysics
protected override void OnInitializePhysics()
{
// 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);
// create the ground
CollisionShape groundShape = new BoxShape(20, 50, 10);
CollisionShapes.Add(groundShape);
CollisionObject ground = LocalCreateRigidBody(0,
Matrix.RotationAxis(new Vector3(0, 0, 1), (float)Math.PI * 0.03f) * Matrix.Translation(0, -50, 0),
groundShape);
ground.Friction = 1;
ground.RollingFriction = 1;
ground.UserObject = "Ground";
groundShape = new BoxShape(100, 50, 100);
CollisionShapes.Add(groundShape);
ground = LocalCreateRigidBody(0, Matrix.Translation(0, -54, 0), groundShape);
ground.Friction = 1;
ground.RollingFriction = 1;
ground.UserObject = "Ground";
// create a few dynamic rigidbodies
CollisionShape[] colShapes = {
new SphereShape(1),
new CapsuleShape(0.5f,1),
new CapsuleShapeX(0.5f,1),
new CapsuleShapeZ(0.5f,1),
new ConeShape(0.5f,1),
new ConeShapeX(0.5f,1),
new ConeShapeZ(0.5f,1),
new CylinderShape(new Vector3(0.5f,1,0.5f)),
new CylinderShapeX(new Vector3(1,0.5f,0.5f)),
new CylinderShapeZ(new Vector3(0.5f,0.5f,1)),
};
foreach (var collisionShape in colShapes)
{
CollisionShapes.Add(collisionShape);
}
const float mass = 1.0f;
CollisionShape colShape = new BoxShape(1);
CollisionShapes.Add(colShape);
Vector3 localInertia = colShape.CalculateLocalInertia(mass);
var rbInfo = new RigidBodyConstructionInfo(mass, null, null, localInertia);
const float startX = StartPosX - ArraySizeX / 2;
const float startY = StartPosY;
const float startZ = StartPosZ - ArraySizeZ / 2;
int shapeIndex = 0;
for (int k = 0; k < ArraySizeY; k++)
{
for (int i = 0; i < ArraySizeX; i++)
{
for (int j = 0; j < ArraySizeZ; j++)
{
Matrix startTransform = Matrix.Translation(
2 * i + startX,
2 * k + startY + 20,
2 * j + startZ
);
shapeIndex++;
// using motionstate is recommended, it provides interpolation capabilities
// and only synchronizes 'active' objects
rbInfo.MotionState = new DefaultMotionState(startTransform);
rbInfo.CollisionShape = colShapes[shapeIndex % colShapes.Length];
RigidBody body = new RigidBody(rbInfo);
body.Friction = 1;
body.RollingFriction = 0.3f;
body.SetAnisotropicFriction(colShape.AnisotropicRollingFrictionDirection, AnisotropicFrictionFlags.RollingFriction);
World.AddRigidBody(body);
}
}
}
rbInfo.Dispose();
}
开发者ID:Cyberbanan,项目名称:BulletSharpUnity3d,代码行数:89,代码来源:RollingFrictionDemo.cs
示例15: OnInitializePhysics
protected override void OnInitializePhysics()
{
// 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);
// create the ground
BoxShape groundShape = new BoxShape(50, 1, 50);
//groundShape.InitializePolyhedralFeatures();
//CollisionShape groundShape = new StaticPlaneShape(new Vector3(0,1,0), 50);
CollisionShapes.Add(groundShape);
CollisionObject ground = LocalCreateRigidBody(0, Matrix.Identity, groundShape);
ground.UserObject = "Ground";
// create a few dynamic rigidbodies
const float mass = 1.0f;
BoxShape colShape = new BoxShape(1);
CollisionShapes.Add(colShape);
Vector3 localInertia = colShape.CalculateLocalInertia(mass);
const float startX = StartPosX - ArraySizeX / 2;
const float startY = StartPosY;
const float startZ = StartPosZ - ArraySizeZ / 2;
RigidBodyConstructionInfo rbInfo =
new RigidBodyConstructionInfo(mass, null, colShape, localInertia);
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.Translation(
2 * i + startX,
2 * k + startY,
2 * j + startZ
);
// using motionstate is recommended, it provides interpolation capabilities
// and only synchronizes 'active' objects
rbInfo.MotionState = new DefaultMotionState(startTransform);
RigidBody body = new RigidBody(rbInfo);
// make it drop from a height
body.Translate(new Vector3(0, 20, 0));
World.AddRigidBody(body);
}
}
}
rbInfo.Dispose();
}
开发者ID:RainsSoft,项目名称:BulletSharpPInvoke,代码行数:61,代码来源:BasicDemo.cs
示例16: RaycastVehicle
static RaycastVehicle()
{
using (var ci = new RigidBodyConstructionInfo(0, null, null))
{
fixedBody = new RigidBody(ci);
fixedBody.SetMassProps(0, Vector3.Zero);
}
}
开发者ID:PowerOfCode,项目名称:BulletSharpPInvoke,代码行数:8,代码来源:RaycastVehicle.cs
示例17: AddRigidBody
//.........这里部分代码省略.........
case "Fusee.Engine.BoxShapeImp":
var box = (BoxShapeImp) colShape;
var btBoxHalfExtents = Translater.Float3ToBtVector3(box.HalfExtents);
btColShape = new BoxShape(btBoxHalfExtents);
break;
case "Fusee.Engine.CapsuleShapeImp":
var capsule = (CapsuleShapeImp) colShape;
btColShape = new CapsuleShape(capsule.Radius, capsule.HalfHeight);
break;
case "Fusee.Engine.ConeShapeImp":
var cone = (ConeShapeImp) colShape;
btColShape = new ConeShape(cone.Radius, cone.Height);
break;
case "Fusee.Engine.CylinderShapeImp":
var cylinider = (CylinderShapeImp) colShape;
var btCylinderHalfExtents = Translater.Float3ToBtVector3(cylinider.HalfExtents);
btColShape = new CylinderShape(btCylinderHalfExtents);
break;
case "Fusee.Engine.MultiSphereShapeImp":
var multiSphere = (MultiSphereShapeImp) colShape;
var btPositions = new Vector3[multiSphere.SphereCount];
var btRadi = new float[multiSphere.SphereCount];
for (int i = 0; i < multiSphere.SphereCount; i++)
{
var pos = Translater.Float3ToBtVector3(multiSphere.GetSpherePosition(i));
btPositions[i] = pos;
btRadi[i] = multiSphere.GetSphereRadius(i);
}
btColShape = new MultiSphereShape(btPositions, btRadi);
break;
case "Fusee.Engine.SphereShapeImp":
var sphere = (SphereShapeImp) colShape;
var btRadius = sphere.Radius;
btColShape = new SphereShape(btRadius);
break;
//Misc
case "Fusee.Engine.CompoundShapeImp":
var compShape = (CompoundShapeImp) colShape;
btColShape = new CompoundShape(true);
btColShape = compShape.BtCompoundShape;
break;
case "Fusee.Engine.EmptyShapeImp":
btColShape = new EmptyShape();
break;
//Meshes
case "Fusee.Engine.ConvexHullShapeImp":
var convHull = (ConvexHullShapeImp) colShape;
var btPoints= new Vector3[convHull.GetNumPoints()];
for (int i = 0; i < convHull.GetNumPoints(); i++)
{
var point = convHull.GetScaledPoint(i);
btPoints[i] = Translater.Float3ToBtVector3(point);
}
btColShape = new ConvexHullShape(btPoints);
//btColShape.LocalScaling = new Vector3(3,3,3);
break;
case "Fusee.Engine.StaticPlaneShapeImp":
var staticPlane = (StaticPlaneShapeImp) colShape;
Debug.WriteLine("staticplane: " + staticPlane.Margin);
var btNormal = Translater.Float3ToBtVector3(staticPlane.PlaneNormal);
btColShape = new StaticPlaneShape(btNormal, staticPlane.PlaneConstant);
isStatic = true;
//btColShape.Margin = 0.04f;
//Debug.WriteLine("btColshape" + btColShape.Margin);
break;
case "Fusee.Engine.GImpactMeshShapeImp":
var gImpMesh = (GImpactMeshShapeImp)colShape;
gImpMesh.BtGImpactMeshShape.UpdateBound();
var btGimp = new GImpactMeshShape(gImpMesh.BtGImpactMeshShape.MeshInterface);
btGimp.UpdateBound();
btColShape = btGimp;
break;
//Default
default:
Debug.WriteLine("defaultImp");
btColShape = new EmptyShape();
break;
}
var btLocalInertia = btColShape.CalculateLocalInertia(mass);
// btLocalInertia *= (10.0f*10);
RigidBodyConstructionInfo btRbcInfo = new RigidBodyConstructionInfo(mass, btMotionState, btColShape,
btLocalInertia);
var btRigidBody = new RigidBody(btRbcInfo);
btRigidBody.Restitution = 0.2f;
btRigidBody.Friction = 0.2f;
btRigidBody.CollisionFlags = CollisionFlags.CustomMaterialCallback;
BtWorld.AddRigidBody(btRigidBody);
btRbcInfo.Dispose();
var retval = new RigidBodyImp();
retval._rbi = btRigidBody;
btRigidBody.UserObject = retval;
return retval;
}
开发者ID:GameProduction,项目名称:ScharfschiessenGame,代码行数:101,代码来源:DynamicWorldImp.cs
示例18: GetFixedBody
public static RigidBody GetFixedBody()
{
if (_fixedBody == null)
{
using (var cinfo = new RigidBodyConstructionInfo(0, null, null))
{
_fixedBody = new RigidBody(cinfo);
_fixedBody.SetMassProps(0, Vector3.Zero);
}
}
return _fixedBody;
}
开发者ID:RainsSoft,项目名称:BulletSharpPInvoke,代码行数:12,代码来源:TypedConstraint.cs
示例19: CreateRigidBody
/// <inheritdoc/>
public override BulletSharp.RigidBody CreateRigidBody(float mass)
{
var ppm = DD.Physics.PhysicsSimulator.PPM;
var mstate = new DefaultMotionState ();
var shape = new BulletSharp.CapsuleShape (radius/ppm, halfHeight/ppm);
var info = new BulletSharp.RigidBodyConstructionInfo (mass, mstate, shape);
return new BulletSharp.RigidBody (info);
}
开发者ID:weimingtom,项目名称:erica,代码行数:11,代码来源:CapsuleShape.cs
示例20: AddBoxes
void AddBoxes()
{
// create a few dynamic rigidbodies
const float mass = 1.0f;
BoxShape colShape = new BoxShape(1);
CollisionShapes.Add(colShape);
Vector3 localInertia = colShape.CalculateLocalInertia(mass);
const float startX = StartPosX - ArraySizeX / 2;
const float startY = StartPosY;
const float startZ = 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.Translation(
3 * i + startX,
3 * k + startY,
3 * j + startZ
);
// using motionstate is recommended, it provides interpolation capabilities
// and only synchronizes 'active' objects
DefaultMotionState myMotionState = new DefaultMotionState(startTransform);
using (var rbInfo = new RigidBodyConstructionInfo(mass, myMotionState, colShape, localInertia))
{
var body = new RigidBody(rbInfo);
World.AddRigidBody(body);
}
}
}
}
}
开发者ID:rhynodegreat,项目名称:BulletSharp,代码行数:38,代码来源:FeatherStoneDemo.cs
注:本文中的BulletSharp.RigidBodyConstructionInfo类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论