public static OpenSim.Region.Physics.Manager.Pose MatrixToPose(PhysX.Math.Matrix matrix) { OpenSim.Region.Physics.Manager.Pose pose; pose.Position = DecomposeToPosition(matrix); pose.Rotation = DecomposeToRotation(matrix); return(pose); }
public static Matrix AsXNA(this PhysX.Math.Matrix m) { return(new Matrix ( m.M11, m.M12, m.M13, m.M14, m.M21, m.M22, m.M23, m.M24, m.M31, m.M32, m.M33, m.M34, m.M41, m.M42, m.M43, m.M44 )); }
private List <PhysX.Shape> AssignHullsToActor(PhysX.RigidActor actor, PhysX.Material material, PhysX.Math.Matrix localPose, bool physical) { List <PhysX.Shape> hulls = new List <PhysX.Shape>(); foreach (PhysX.ConvexMeshGeometry geom in _convexHulls) { PhysX.Shape shape = actor.CreateShape(geom, material, localPose); shape.RestOffset = REST_OFFSET; if (physical && Settings.Instance.UseCCD) { //enable CCD shape.Flags |= PhysX.ShapeFlag.UseSweptBounds; } hulls.Add(shape); } return(hulls); }
private PhysX.Shape CreatePrimitiveShape(PhysX.RigidActor actor, PhysX.Material material, ref PhysX.Math.Matrix localPose, bool physical) { PhysX.Shape shape = actor.CreateShape(_primitiveGeom, material, localPose); shape.RestOffset = REST_OFFSET; if (physical && Settings.Instance.UseCCD) { //enable CCD shape.Flags |= PhysX.ShapeFlag.UseSweptBounds; } return(shape); }
private PhysX.Shape CreateTrimeshShape(PhysX.RigidActor actor, PhysX.Material material, ref PhysX.Math.Matrix localPose) { PhysX.Shape shape = actor.CreateShape(_triMesh, material, localPose); shape.RestOffset = REST_OFFSET; return(shape); }
internal List <PhysX.Shape> AssignToActor(PhysX.RigidActor actor, PhysX.Material material, PhysX.Math.Matrix localPose, bool physical) { switch (_shapeType) { case ShapeType.PrimitiveBox: case ShapeType.PrimitiveSphere: return(new List <PhysX.Shape> { CreatePrimitiveShape(actor, material, ref localPose, physical) }); case ShapeType.TriMesh: return(new List <PhysX.Shape> { CreateTrimeshShape(actor, material, ref localPose) }); case ShapeType.DecomposedConvexHulls: case ShapeType.SingleConvex: return(this.AssignHullsToActor(actor, material, localPose, physical)); case ShapeType.Null: return(new List <PhysX.Shape>(0)); default: throw new InvalidOperationException("Can not assign shape to actor: shapeType is missing or invalid"); } }
public static OpenMetaverse.Quaternion DecomposeToRotation(PhysX.Math.Matrix matrix) { PhysX.Math.Quaternion physxRot = PhysX.Math.Quaternion.RotationMatrix(matrix); return(new OpenMetaverse.Quaternion(physxRot.X, physxRot.Y, physxRot.Z, physxRot.W)); }
public static OpenMetaverse.Vector3 DecomposeToPosition(PhysX.Math.Matrix matrix) { return(new OpenMetaverse.Vector3(matrix.M41, matrix.M42, matrix.M43)); }
public static PhysX.Math.Vector3 DecomposeToPosition(PhysX.Math.Matrix matrix) { return(new PhysX.Math.Vector3(matrix.M41, matrix.M42, matrix.M43)); }