STDMETHOD_(void, AddBeziers)(const D2D1_BEZIER_SEGMENT *aSegments, UINT aCount) { AutoRestoreFP resetFloatingPoint; for (UINT i = 0; i < aCount; i++) { mSink->BezierTo(ToPoint(aSegments[i].point1), ToPoint(aSegments[i].point2), ToPoint(aSegments[i].point3)); } }
static inline_ void FillResultStruct(PintRaycastHit& hit, const hkpClosestCdPointCollector& result, float max_dist) { const hkpRootCdPoint& Hit = result.getHit(); const hkpCollidable* touched = Hit.m_rootCollidableA; hit.mObject = (hkpRigidBody*)touched->getOwner(); // ### hit.mImpact = ToPoint(Hit.m_contact.getPosition()); hit.mNormal = ToPoint(Hit.m_contact.getNormal()); hit.mDistance = Hit.m_contact.getDistance() * max_dist; hit.mTriangleIndex = INVALID_ID; }
void Voxelify::DoRecursion(BaseObject *op, BaseObject *child, GeDynamicArray<Vector> &points, Matrix ml) { BaseObject *tp; if (child){ tp = child->GetDeformCache(); ml = ml * child->GetMl(); if (tp){ DoRecursion(op,tp,points,ml); } else{ tp = child->GetCache(NULL); if (tp){ DoRecursion(op,tp,points,ml); } else{ if (!child->GetBit(BIT_CONTROLOBJECT)){ if (child->IsInstanceOf(Opoint)){ PointObject * pChild = ToPoint(child); LONG pcnt = pChild->GetPointCount(); const Vector *childVerts = pChild->GetPointR(); for(LONG i=0; i < pcnt; i++){ points.Push(childVerts[i] * ml * parentMatrix); } } } } } for (tp = child->GetDown(); tp; tp=tp->GetNext()){ DoRecursion(op,tp,points,ml); } } }
static inline_ void FillResultStruct(PintRaycastHit& hit, const hkpWorldRayCastOutput& result, const Point& origin, const Point& dir, float max_dist) { const hkpCollidable* touched = result.m_rootCollidable; hit.mObject = (hkpRigidBody*)touched->getOwner(); // ### hit.mImpact = origin + dir * result.m_hitFraction * max_dist; hit.mNormal = ToPoint(result.m_normal); // hit.mDistance = origin.Distance(hit.mImpact); hit.mDistance = result.m_hitFraction * max_dist; hit.mTriangleIndex = INVALID_ID; }
Matrix4x4 Layer::SnapTransform(const Matrix4x4& aTransform, const gfxRect& aSnapRect, Matrix* aResidualTransform) { if (aResidualTransform) { *aResidualTransform = Matrix(); } Matrix matrix2D; Matrix4x4 result; if (mManager->IsSnappingEffectiveTransforms() && aTransform.Is2D(&matrix2D) && gfx::Size(1.0, 1.0) <= ToSize(aSnapRect.Size()) && matrix2D.PreservesAxisAlignedRectangles()) { IntPoint transformedTopLeft = RoundedToInt(matrix2D * ToPoint(aSnapRect.TopLeft())); IntPoint transformedTopRight = RoundedToInt(matrix2D * ToPoint(aSnapRect.TopRight())); IntPoint transformedBottomRight = RoundedToInt(matrix2D * ToPoint(aSnapRect.BottomRight())); Matrix snappedMatrix = gfxUtils::TransformRectToRect(aSnapRect, transformedTopLeft, transformedTopRight, transformedBottomRight); result = Matrix4x4::From2D(snappedMatrix); if (aResidualTransform && !snappedMatrix.IsSingular()) { // set aResidualTransform so that aResidual * snappedMatrix == matrix2D. // (i.e., appying snappedMatrix after aResidualTransform gives the // ideal transform. Matrix snappedMatrixInverse = snappedMatrix; snappedMatrixInverse.Invert(); *aResidualTransform = matrix2D * snappedMatrixInverse; } } else { result = aTransform; } return result; }
PR PhysX3::GetWorldTransform(PintObjectHandle handle) { PxTransform Pose; PxRigidActor* RigidActor = GetActorFromHandle(handle); if(RigidActor) { Pose = RigidActor->getGlobalPose(); } else { PxShape* Shape = GetShapeFromHandle(handle); ASSERT(Shape); #ifdef SUPPORT_SHARED_SHAPES ASSERT(Shape->getActor()); Pose = PxShapeExt::getGlobalPose(*Shape, *Shape->getActor()); #else Pose = PxShapeExt::getGlobalPose(*Shape); #endif } return PR(ToPoint(Pose.p), ToQuat(Pose.q)); }
STDMETHOD_(void, AddLines)(const D2D1_POINT_2F *aLines, UINT aCount) { AutoRestoreFP resetFloatingPoint; for (UINT i = 0; i < aCount; i++) { mSink->LineTo(ToPoint(aLines[i])); } }
STDMETHOD_(void, BeginFigure)(D2D1_POINT_2F aPoint, D2D1_FIGURE_BEGIN aBegin) { AutoRestoreFP resetFloatingPoint; mSink->MoveTo(ToPoint(aPoint)); }
virtual void drawContactPoint(const btVector3& PointOnB,const btVector3& normalOnB,btScalar distance,int lifeTime,const btVector3& color) { ASSERT(mRenderer); mRenderer->DrawLine(ToPoint(PointOnB), ToPoint(PointOnB+normalOnB), ToPoint(color)); }
virtual void drawLine(const btVector3& from,const btVector3& to,const btVector3& color) { ASSERT(mRenderer); mRenderer->DrawLine(ToPoint(from), ToPoint(to), ToPoint(color)); }
STDMETHOD_(void, AddLines)(const D2D1_POINT_2F *aLines, UINT aCount) { for (UINT i = 0; i < aCount; i++) { mSink->LineTo(ToPoint(aLines[i])); } }
STDMETHOD_(void, BeginFigure)(D2D1_POINT_2F aPoint, D2D1_FIGURE_BEGIN aBegin) { mSink->MoveTo(ToPoint(aPoint)); }