本文整理汇总了C#中JigLibX.Collision.CollisionSkin类的典型用法代码示例。如果您正苦于以下问题:C# CollisionSkin类的具体用法?C# CollisionSkin怎么用?C# CollisionSkin使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CollisionSkin类属于JigLibX.Collision命名空间,在下文中一共展示了CollisionSkin类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CollDetectInfo
public CollDetectInfo(CollisionSkin skin0, CollisionSkin skin1, int indexPrim0, int indexPrim1)
{
this.IndexPrim0 = indexPrim0;
this.IndexPrim1 = indexPrim1;
this.Skin0 = skin0;
this.Skin1 = skin1;
}
示例2: CollisionTransform
public CollisionTransform(CollisionSkin collision, Scene scene)
{
this.scene = scene;
this.collision = collision;
this.collisionTransform = new JigLibX.Math.Transform(position, worldMatrix);
this.oldTransform = collisionTransform;
}
示例3: SetSkinAndBody
public override void SetSkinAndBody()
{
Body = new Body();
Skin = new CollisionSkin(null);
Skin.AddPrimitive(new JigLibX.Geometry.Plane(Vector3.Up, 0f), new MaterialProperties(0.2f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(Skin);
}
示例4: TriangleMeshActor
public TriangleMeshActor(Game game, Vector3 position, float scale,
Texture2D heightMap,
float[,] heightData)
: base(game)
{
this.position = position;
this.scale = new Vector3(1,1,1);
_body = new Body();
_body.MoveTo(position, Matrix.Identity);
Array2D field = new Array2D(heightData.GetUpperBound(0), heightData.GetUpperBound(1));
int upperZ = heightData.GetUpperBound(1);
for (int x = 0; x < heightData.GetUpperBound(0); x++)
{
for (int z = 0; z < upperZ; z++)
{
field.SetAt(x, z, heightData[x, upperZ - 1 - z]);
}
}
_skin = new CollisionSkin(null);
float X = heightMap.Width / 2 * scale;
float Z = heightMap.Height / 2 * scale;
_skin.AddPrimitive(new Heightmap(field, X, -Z, scale, scale), new MaterialProperties(0.7f, 0.7f, 0.6f));
_skin.ExternalData = this;
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(_skin);
}
示例5: BowlingPin
public BowlingPin(Game game, Model model, Matrix orientation, Vector3 position)
: base(game, model)
{
body = new Body();
collision = new CollisionSkin(body);
// add a capsule for the main corpus
Primitive capsule = new Capsule(Vector3.Zero, Matrix.Identity, 0.1f, 1.3f);
// add a small box at the buttom
Primitive box = new Box(new Vector3(-0.1f,-0.1f,-0.1f), Matrix.Identity, Vector3.One * 0.2f);
// add a sphere in the middle
Primitive sphere = new Sphere(new Vector3(0.0f, 0.0f, 0.3f), 0.3f);
collision.AddPrimitive(capsule, new MaterialProperties(0.1f, 0.5f, 0.5f));
collision.AddPrimitive(box, new MaterialProperties(0.1f, 0.5f, 0.5f));
collision.AddPrimitive(sphere, new MaterialProperties(0.1f, 0.5f, 0.5f));
body.CollisionSkin = this.collision;
Vector3 com = SetMass(0.5f);
body.MoveTo(position, orientation);
collision.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
body.EnableBody();
this.scale = Vector3.One * 10.0f;
}
示例6: HeightmapObject
public HeightmapObject(Game game, Model model,Vector2 shift)
: base(game, model)
{
body = new Body(); // just a dummy. The PhysicObject uses its position to get the draw pos
collision = new CollisionSkin(null);
HeightMapInfo heightMapInfo = model.Tag as HeightMapInfo;
Array2D field = new Array2D(heightMapInfo.heights.GetUpperBound(0), heightMapInfo.heights.GetUpperBound(1));
for (int x = 0; x < heightMapInfo.heights.GetUpperBound(0); x++)
{
for (int z = 0; z < heightMapInfo.heights.GetUpperBound(1); z++)
{
field.SetAt(x,z,heightMapInfo.heights[x,z]);
}
}
// move the body. The body (because its not connected to the collision
// skin) is just a dummy. But the base class shoudl know where to
// draw the model.
body.MoveTo(new Vector3(shift.X,0,shift.Y), Matrix.Identity);
collision.AddPrimitive(new Heightmap(field, shift.X, shift.Y, 1, 1), new MaterialProperties(0.7f,0.7f,0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(collision);
}
示例7: Initialise
public override void Initialise()
{
base.Initialise();
// Create new bodey and collision skin
m_Body = new Body();
m_Skin = new CollisionSkin(m_Body);
if (m_Body != null)
{
// Set skin to the body
m_Body.CollisionSkin = m_Skin;
// Check the skin was successfully created and add this
// custom dice as a primitive to the collision skin
if (m_Skin != null)
{
Box box = new Box(Vector3.Zero, Matrix.Identity, transform.Scale);
m_Skin.AddPrimitive(box, (int)MaterialTable.MaterialID.BouncyNormal);
// Set mass
m_Mass = SetMass(1.0f);
// Move the body to correct position initially
m_Body.MoveTo(transform.Position, Matrix.Identity);
// Apply transform to skin
m_Skin.ApplyLocalTransform(new JigLibX.Math.Transform(-m_Mass, Matrix.Identity));
// Enable body
EnableBody();
}
}
}
示例8: Gobject
/// <summary>
/// Default Constructor
/// Initalizes the Body and a CollisionSkin
/// No Primatives are added to the Body
/// </summary>
/// <param name="position">Initial Body Position</param>
/// <param name="scale">Scale</param>
public Gobject()
{
Body = new Body();
Skin = new CollisionSkin(Body);
Body.CollisionSkin = Skin;
Body.ExternalData = this;
}
示例9: Setup
void Setup(HeightMapInfo heightMapInfo, Vector2 shift)
{
// A dummy. The physics object uses its position to get draw pos
Body = new Body();
CollisionSkin = new CollisionSkin(null);
info = heightMapInfo;
Array2D field = new Array2D(heightMapInfo.Heights.GetUpperBound(0), heightMapInfo.Heights.GetUpperBound(1));
for (int x = 0; x < heightMapInfo.Heights.GetUpperBound(0); ++x)
{
for (int z = 0; z < heightMapInfo.Heights.GetUpperBound(1); ++z)
{
field.SetAt(x, z, heightMapInfo.Heights[x, z]);
}
}
// Move dummy body. The body isn't connected to the collision skin.
// But the base class should know where to draw the model.
Body.MoveTo(new Vector3(shift.X, 0, shift.Y), Matrix.Identity);
CollisionSkin.AddPrimitive(new Heightmap(field, shift.X, shift.Y, 1, 1), new MaterialProperties(0.7f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(CollisionSkin);
}
示例10: HeightmapObject
public HeightmapObject(Model model,Vector2 shift, Vector3 position)
: base()
{
Body = new Body(); // just a dummy. The PhysicObject uses its position to get the draw pos
Skin = new CollisionSkin(null);
HeightMapInfo heightMapInfo = model.Tag as HeightMapInfo;
Array2D field = new Array2D(heightMapInfo.heights.GetLength(0), heightMapInfo.heights.GetLength(1));
for (int x = 0; x < heightMapInfo.heights.GetLength(0); x++)
{
for (int z = 0; z < heightMapInfo.heights.GetLength(1); z++)
{
field.SetAt(x,z,heightMapInfo.heights[x,z]);
}
}
// move the body. The body (because its not connected to the collision
// skin) is just a dummy. But the base class shoudl know where to
// draw the model.
Body.MoveTo(new Vector3(shift.X,0,shift.Y), Matrix.Identity);
Skin.AddPrimitive(new Heightmap(field, shift.X, shift.Y, heightMapInfo.terrainScale, heightMapInfo.terrainScale), new MaterialProperties(0.7f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(Skin);
CommonInit(position, new Vector3(1,1,1), model, false, 0);
}
示例11: OnAdd
public override void OnAdd(Scene scene)
{
this.scene = scene;
this.interactTrigger.OnAdd(scene);
if (useCollisionTransform)
{
Transform oldTransform = Transformation;
if (mesh.GetCollisionMesh() != null)
{
collision = new CollisionSkin(null);
collision.AddPrimitive(mesh.GetCollisionMesh(), (int)MaterialTable.MaterialID.NotBouncyRough);
scene.GetPhysicsEngine().CollisionSystem.AddCollisionSkin(collision);
}
Transformation = new CollisionTransform(this.collision, scene);
Transformation.SetPosition(oldTransform.GetPosition());
Transformation.SetRotation(oldTransform.GetRotation());
Transformation.SetScale(oldTransform.GetScale());
oldTransform = null;
}
else
base.OnAdd(scene);
}
示例12: UpdateCollision
public void UpdateCollision()
{
if (geometry.CanRender)
{
Body[] bodies = PhysicsHelper.PhysicsBodiesVolume(boundsWorldSpaceCollision);
if(CollisionMesh == null && bodies.Length > 0)
{
GenerateCollisionMesh();
CollisionDeleteTime = CollisionDeleteTimeS;
}
else if (CollisionMesh != null)
{
if (bodies.Length < 1)
{
CollisionDeleteTime -= Time.GameTime.ElapsedTime;
if (CollisionDeleteTime <= 0)
{
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.RemoveCollisionSkin(Collision);
Collision = null;
CollisionMesh = null;
}
}
else
{
CollisionDeleteTime = CollisionDeleteTimeS;
}
}
}
}
示例13: HeightMapModel
// TODO: Need to add png parameter
public HeightMapModel(Game game, Model m, Boolean t, Vector3 pos, float scale)
: base(game, m, t, pos, scale, true)
{
Body = new Body(); // just a dummy. The PhysicObject uses its position to get the draw pos
Skin = new CollisionSkin(null);
HeightMapInfo heightMapInfo = this.model.Tag as HeightMapInfo;
Array2D field = new Array2D(heightMapInfo.heights.GetUpperBound(0), heightMapInfo.heights.GetUpperBound(1));
for (int x = 0; x < heightMapInfo.heights.GetUpperBound(0); x++)
{
for (int z = 0; z < heightMapInfo.heights.GetUpperBound(1); z++)
{
field.SetAt(x, z, heightMapInfo.heights[x, z]);
}
}
// move the body. The body (because its not connected to the collision
// skin) is just a dummy. But the base class shoudl know where to
// draw the model.
Body.MoveTo(this.Position, Matrix.Identity);
Skin.AddPrimitive(new Heightmap(field, 0f, 0f, 1, 1), new MaterialProperties(0.7f, 0.7f, 0.6f));
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(this.Skin);
}
示例14: HeightMapModel2
public HeightMapModel2(Game game, HeightMap info, Boolean t, Vector3 pos, float scale)
: base(game , null, t, pos, scale)
{
// Game game, Model m, Boolean t, Vector3 pos, float scale, Boolean solid
//Game game, HeightMap m, Boolean t, Vector3 pos, float scale
this.Visible = false;
Body = new Body();
Skin = new CollisionSkin(null);
//Skin.CollisionType = (int)CollisionTypes.Terrain;
Array2D field = new Array2D(info.heights.GetUpperBound(0), info.heights.GetUpperBound(1));
for (int x = 0; x < info.heights.GetUpperBound(0); x++)
{
for (int z = 0; z < info.heights.GetUpperBound(1); z++)
{
field.SetAt(x, z, info.heights[x, z]);
}
}
Body.MoveTo(new Vector3(info.heightmapPosition.X, info.heightmapPosition.Y, info.heightmapPosition.Y), Matrix.Identity);
Skin.AddPrimitive(new Heightmap(field, info.heightmapPosition.X, info.heightmapPosition.Y, scale, scale), (int)MaterialTable.MaterialID.NotBouncyRough);
Body.Immovable = true;
PhysicsSystem.CurrentPhysicsSystem.CollisionSystem.AddCollisionSkin(Skin);
}
示例15: Missile
public Missile(ParentGame game, Model modelObj, Texture2D[] modelTextures, DrawingClass drawClass, GameplayScreen Screen)
: base(game, modelObj, modelTextures)
{
this.drawClass = drawClass;
this.Screen = Screen;
_body = new Body();
_skin = new CollisionSkin(_body);
_body.CollisionSkin = _skin;
Box box = new Box(Vector3.Zero, Matrix.Identity, new Vector3(1f,1f,4f));
_skin.AddPrimitive(box, new MaterialProperties(0.8f, 0.8f, 0.7f));
Vector3 com = SetMass(2.0f);
_body.MoveTo(position, Matrix.Identity);
_skin.ApplyLocalTransform(new Transform(-com, Matrix.Identity));
_body.EnableBody();
Body.ExternalData = this;
Vector3 pos = position;
Vector3 forwardVec = Body.Orientation.Forward;
forwardVec.Normalize();
pos -= forwardVec * 10;
// Use the particle emitter helper to output our trail particles.
trailEmitter = new ParticleEmitter(drawClass.projectileTrailParticles,
trailParticlesPerSecond, position);
rgob = new RagdollObject(parentGame, null, null, null, RagdollObject.RagdollType.Simple, 1.0f, 3);
rgob.Position = position;
//rgob.PutToSleep();
//rgob.limbs[0].PhysicsBody.AngularVelocity = (new Vector3(1, 1, 0) * 2000);
RagdollTransforms = new List<Matrix>();
RagdollTransforms = rgob.GetWorldMatrix();
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
DisableCollisions(lim.PhysicsBody, Body);
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
foreach (BuildingPiece pic in Screen.PieceList)
DisableCollisions(lim.PhysicsBody, pic.Body);
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
foreach (Building bld in Screen.Buildings)
DisableCollisions(lim.PhysicsBody, bld.Body);
foreach (JigLibX.Objects.PhysicObject lim in rgob.limbs)
DisableCollisions(lim.PhysicsBody, Screen.terrainActor.Body);
foreach (JigLibX.Objects.PhysicObject limb0 in rgob.limbs)
foreach (Missile mis in Screen.BulletList)
foreach (JigLibX.Objects.PhysicObject limb1 in mis.rgob.limbs)
DisableCollisions(limb1.PhysicsBody, limb0.PhysicsBody);
}