ID

Uploaded

Status

Description

Work Items

Action

12771
by RedToasty
Aug 26, 2012
11:38 PM

Being evaluated

The below causes issues with springs bottoming out and cars not getting any grip. Fixed in this change.

Download

12770
by RedToasty
Aug 26, 2012
11:08 PM

Being evaluated

Negative gravity causes cars to crash in a nasty mash of NaNs. Negative gravity lead to negative spring, which was squared rooted to give the damping and we had NaNs. These end up in the Velocities and Positions before it crashes.

Download

8405
by n5s
Feb 17, 2011
4:17 PM

Being evaluated

Performance patch. Removes Constraint::Apply from profiler hot path.

Download

7587
by plasmarifle
Nov 30, 2010
9:51 AM

Being evaluated

Same as patch 7577 uploaded by SpiderWolf, but all warnings during compile are fixed (which required dropping Checker.bmp from JigLibGameContent. It still resides in the folder though). Also changed:

this.graphics.GraphicsDevice.BlendState = BlendState.Opaque;
to
this.graphics.GraphicsDevice.BlendState = BlendState.AlphaBlend;

in SetRenderStates(). This makes the the black lines during DebugDraw() go away.



Download

7537
by WillZD
Nov 25, 2010
10:54 PM

Being evaluated

This patch to the TriangleMeshObject will enable the library to run on the XNA 4.0 framework. It has simple modifications to the ExtractData function, where the new framework had removed data types from the model class.

Download

4715
by khayman218
Dec 22, 2009
9:29 PM

Being evaluated

Box.cs updated to return the correct normal if that normal is orthogonal to the xy-plane (e.g. 0, 0, 1)

Change starts on line 537:

if (t1 > min)
{
min = t1;
dirMin = 2;
}
if (t2 < max)
{
max = t2;
dirMax = 2;
}

Download

7577
by SpiderWolf
Nov 29, 2010
7:19 PM

Applied

Ported over to Xna 4.0.

The main changes where restructuring the solution, RenderStates in JiggleGame, the EffectPass Loop in DebugDrawer and
TriangleMeshObject.Extract which i used the patch from WillZD(#7537).


Applied Dec 1, 2010: "A reason must be supplied for applying the patch."

Download

7588
by plasmarifle
Nov 30, 2010
10:29 AM

Applied

Here is my version of the TriangleMeshObject.cs. Basically the changes are due to the additions in XNA 4.0. The VertexBuffer knows its VertexDeclaration, and thus its VertexStride. The only real changes that I made are to where the data is coming from. Instead of from the ModelMesh, now the ModelMeshPart knows its information. This makes for a slightly easier to read GetData() call. Here is the code change along with the original lines (I assume they will be removed if this is accepted)

//mm.VertexBuffer.GetData<Vector3>(mmp.StreamOffset + mmp.BaseVertex * mmp.VertexStride, a, 0, mmp.NumVertices, mmp.VertexStride); //XNA 4.0 change
mmp.VertexBuffer.GetData( mmp.VertexOffset * stride, a, 0, mmp.NumVertices, stride );

//if (mm.IndexBuffer.IndexElementSize != IndexElementSize.SixteenBits) //XNA 4.0 change
if (mmp.IndexBuffer.IndexElementSize != IndexElementSize.SixteenBits)

//mm.IndexBuffer.GetData<short>(mmp.StartIndex * 2, s, 0, mmp.PrimitiveCount * 3); //XNA 4.0 change
mmp.IndexBuffer.GetData( mmp.StartIndex * 2, s, 0, mmp.PrimitiveCount * 3 );


Applied Dec 1, 2010: "A reason must be supplied for applying the patch."

Download

3620
by TheBubbleBoy
Aug 18, 2009
10:58 AM

Applied

All 8 corners of the bounding box in TriangleMesh.cs need to be rotated:

public unsafe int GetTrianglesIntersectingtAABox(int* triangles, int maxTriangles, ref BoundingBox bb)
{
// rotated aabb
BoundingBox rotBB = bb;

Vector3 bbCorner;
Vector3 bbCornerT;

for (int a = 0; a < 2; a++)
{
for (int b = 0; b < 2; b++)
{
for (int c = 0; c < 2; c++)
{
bbCorner.X = ((a == 0) ? bb.Min.X : bb.Max.X);
bbCorner.Y = ((b == 0) ? bb.Min.Y : bb.Max.Y);
bbCorner.Z = ((c == 0) ? bb.Min.Z : bb.Max.Z);
bbCornerT = Vector3.Transform(bbCorner, invTransform);

BoundingBoxHelper.AddPoint(ref bbCornerT, ref rotBB);
}
}
}
return octree.GetTrianglesIntersectingtAABox(triangles, maxTriangles, ref rotBB);
}

instead of just the current Min and Max corner points.

// move segment into octree space
Vector3 aabbMin = Vector3.Transform(bb.Min, invTransform);
Vector3 aabbMax = Vector3.Transform(bb.Max, invTransform);

// rotated aabb
BoundingBox rotBB = bb;
BoundingBoxHelper.AddPoint(ref aabbMin, ref rotBB);
BoundingBoxHelper.AddPoint(ref aabbMax, ref rotBB);
return octree.GetTrianglesIntersectingtAABox(triangles, maxTriangles, ref rotBB);


Applied Nov 10, 2009: applied.

Download

3826
by Glass_Echidna
Sep 11, 2009
12:44 PM

Applied

Fixed Geometry.Intersection.SegmentSphereIntersection(), now returns the correct ts (ie. Fractional position).

Also fixed Collision.CollisionSystemSAP.SegmentIntersect() so that segment collisions are now direction. By this I mean a segment will always intersect with the closest CollisionSkin in its path, ie. The intersection point closest to seg.Origin. Previously the segment would incorrectly intersect at the point with the highest Y coordinate.
Note: Vector3.DistanceSquared(segmentBeginning, pos) is used instead of comparing the fractional position. This is because using the fractional position would require you to flip the sign of the inequality depending on whether the seg.Origin or (seg.Origin + seg.Delta) contains the maximum Y value, this test would fail when both Y values are the same.


Applied Nov 10, 2009: applied.

Download

View All