BulletSim: add debugging looking for doorway sculpty problems

user_profiles
Robert Adams 2013-02-03 21:48:11 -08:00
parent ad438ee59f
commit 13233da66c
3 changed files with 33 additions and 4 deletions

View File

@ -622,7 +622,6 @@ public sealed class BSShapeCollection : IDisposable
private BulletShape CreatePhysicalMesh(string objName, System.UInt64 newMeshKey, PrimitiveBaseShape pbs, OMV.Vector3 size, float lod)
{
BulletShape newShape = new BulletShape();
IMesh meshData = null;
MeshDesc meshDesc;
if (Meshes.TryGetValue(newMeshKey, out meshDesc))
@ -632,7 +631,7 @@ public sealed class BSShapeCollection : IDisposable
}
else
{
meshData = PhysicsScene.mesher.CreateMesh(objName, pbs, size, lod, true, false);
IMesh meshData = PhysicsScene.mesher.CreateMesh(objName, pbs, size, lod, true, false);
if (meshData != null)
{
@ -648,8 +647,31 @@ public sealed class BSShapeCollection : IDisposable
verticesAsFloats[vi++] = vv.Z;
}
// m_log.DebugFormat("{0}: BSShapeCollection.CreatePhysicalMesh: calling CreateMesh. lid={1}, key={2}, indices={3}, vertices={4}",
// LogHeader, prim.LocalID, newMeshKey, indices.Length, vertices.Count);
// DetailLog("{0},BSShapeCollection.CreatePhysicalMesh,key={1},lod={2},size={3},indices={4},vertices={5}",
// BSScene.DetailLogZero, newMeshKey.ToString("X"), lod, size, indices.Length, vertices.Count);
/*
// DEBUG DEBUG
for (int ii = 0; ii < indices.Length; ii += 3)
{
DetailLog("{0,3}: {1,3},{2,3},{3,3}: <{4,10},{5,10},{6,10}>, <{7,10},{8,10},{9,10}>, <{10,10},{11,10},{12,10}>",
ii / 3,
indices[ii + 0],
indices[ii + 1],
indices[ii + 2],
verticesAsFloats[indices[ii+0] + 0],
verticesAsFloats[indices[ii+0] + 1],
verticesAsFloats[indices[ii+0] + 2],
verticesAsFloats[indices[ii+1] + 0],
verticesAsFloats[indices[ii+1] + 1],
verticesAsFloats[indices[ii+1] + 2],
verticesAsFloats[indices[ii+2] + 0],
verticesAsFloats[indices[ii+2] + 1],
verticesAsFloats[indices[ii+2] + 2]
);
}
// END DEBUG DEBUG
*/
newShape = PhysicsScene.PE.CreateMeshShape(PhysicsScene.World,
indices.GetLength(0), indices, vertices.Count, verticesAsFloats);

View File

@ -217,6 +217,10 @@ public static class BulletSimData
{
// Map of collisionTypes to flags for collision groups and masks.
// An object's 'group' is the collison groups this object belongs to
// An object's 'filter' is the groups another object has to belong to in order to collide with me
// A collision happens if ((obj1.group & obj2.filter) != 0) || ((obj2.group & obj1.filter) != 0)
//
// As mentioned above, don't use the CollisionFilterGroups definitions directly in the code
// but, instead, use references to this dictionary. Finding and debugging
// collision flag problems will be made easier.

View File

@ -128,6 +128,9 @@ Physical and phantom will drop through the terrain
LINKSETS
======================================================
Child prims do not report collisions
Allow children of a linkset to be phantom:
http://opensim-dev.2196679.n2.nabble.com/Setting-a-single-child-prim-to-Phantom-tp7578513.html
Add OS_STATUS_PHANTOM_PRIM to llSetLinkPrimitaveParamsFast.
Editing a child of a linkset causes the child to go phantom
Move a child prim once when it is physical and can never move it again without it going phantom
Offset the center of the linkset to be the geometric center of all the prims