Beispiel #1
0
 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));
   }
 }
Beispiel #2
0
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;
}
Beispiel #3
0
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;
}
Beispiel #5
0
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;
}
Beispiel #6
0
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));
}
Beispiel #7
0
 STDMETHOD_(void, AddLines)(const D2D1_POINT_2F *aLines, UINT aCount)
 {
   AutoRestoreFP resetFloatingPoint;
   for (UINT i = 0; i < aCount; i++) { mSink->LineTo(ToPoint(aLines[i])); }
 }
Beispiel #8
0
 STDMETHOD_(void, BeginFigure)(D2D1_POINT_2F aPoint, D2D1_FIGURE_BEGIN aBegin)
 {
   AutoRestoreFP resetFloatingPoint;
   mSink->MoveTo(ToPoint(aPoint));
 }
Beispiel #9
0
	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));
	}
Beispiel #10
0
	virtual void	drawLine(const btVector3& from,const btVector3& to,const btVector3& color)
	{
		ASSERT(mRenderer);
		mRenderer->DrawLine(ToPoint(from), ToPoint(to), ToPoint(color));
	}
Beispiel #11
0
 STDMETHOD_(void, AddLines)(const D2D1_POINT_2F *aLines, UINT aCount)
 { for (UINT i = 0; i < aCount; i++) { mSink->LineTo(ToPoint(aLines[i])); } }
Beispiel #12
0
 STDMETHOD_(void, BeginFigure)(D2D1_POINT_2F aPoint, D2D1_FIGURE_BEGIN aBegin)
 { mSink->MoveTo(ToPoint(aPoint)); }