Files
scummvm-cursorfix/engines/hpl1/engine/libraries/newton/physics/dgPointToCurveConstraint.cpp
2026-02-02 04:50:13 +01:00

150 lines
4.0 KiB
C++

/* Copyright (c) <2003-2011> <Julio Jerez, Newton Game Dynamics>
*
* This software is provided 'as-is', without any express or implied
* warranty. In no event will the authors be held liable for any damages
* arising from the use of this software.
*
* Permission is granted to anyone to use this software for any purpose,
* including commercial applications, and to alter it and redistribute it
* freely, subject to the following restrictions:
*
* 1. The origin of this software must not be misrepresented; you must not
* claim that you wrote the original software. If you use this software
* in a product, an acknowledgment in the product documentation would be
* appreciated but is not required.
*
* 2. Altered source versions must be plainly marked as such, and must not be
* misrepresented as being the original software.
*
* 3. This notice may not be removed or altered from any source distribution.
*/
#include "dgPointToCurveConstraint.h"
#include "dgBody.h"
#include "hpl1/engine/libraries/newton/core/dg.h"
/*
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
dgPointToCurveConstraint::dgPointToCurveConstraint()
{
}
dgPointToCurveConstraint::~dgPointToCurveConstraint()
{
}
dgPointToCurveConstraint* dgPointToCurveConstraint::Create(dgWorld* world)
{
dgPointToCurveConstraint* constraint;
constraint = dgPointToCurveConstraintArray::GetPool().GetElement();
constraint->Init();
constraint->m_maxDOF = 2;
constraint->m_destructor = NULL;
constraint->m_constId = dgPointToCurveConstraintId;
return constraint;
}
void dgPointToCurveConstraint::Remove(dgWorld* world)
{
dgBallConstraintArray& array = *world;
dgBilateralConstraint::Remove ();
// dgBallConstraintArray::GetPool().RemoveElement (this);
array.RemoveElement (this);
}
void dgPointToCurveConstraint::SetDestructorCallback (OnConstraintDestroy destructor)
{
m_destructor = destructor;
}
//dgUnsigned32 dgPointToCurveConstraint::CalcRestrictedDOF()
//{
// NEWTON_ASSERT (0);
// return 0;
//}
void dgPointToCurveConstraint::SetPivotPoint(
const dgVector &pivot,
OnPointToCurveCallback curve,
void *curveContext)
{
NEWTON_ASSERT (0);
// NEWTON_ASSERT (m_dynamic0);
// m_curve = curve;
// m_context = curveContext;
// m_pivot = m_dynamic0->GetBody()->GetMatrix().UntransformVector (pivot);
}
dgUnsigned32 dgPointToCurveConstraint::JacobianDerivative (dgContraintDescritor& params)
{
NEWTON_ASSERT (0);
return 0;
// dgBody* body0;
// dgFloat32 kPosit;
//
// NEWTON_ASSERT (m_dynamic0);
//
// body0 = m_dynamic0->GetBody();
// NEWTON_ASSERT (body0);
//
// NEWTON_ASSERT (body0->GetDynamic() == m_dynamic0);
//
// const dgMatrix& mat0 = body0->GetMatrix();
//
// dgVector front;
// dgVector up;
// dgVector right;
// dgVector tangent;
// dgVector pivet1;
// dgVector pivet0 (mat0.RotateVector (m_pivot));
//
// dgVector point (pivet0 + mat0.posit);
// m_curve (m_context, pivet0, pivet1, front);
// front = front.Scale (dgRsqrt (front % front));
// Create__Basis(front, up, right);
// dgVector pivetUp (pivet0 * up);
// dgVector pivetRight (pivet0 * right);
// dgJacobian* jacobian01 = params.m_jacobian_01;
// jacobian01[0].derivative[0] = up.m_x;
// jacobian01[0].derivative[1] = up.m_y;
// jacobian01[0].derivative[2] = up.m_z;
// jacobian01[0].derivative[3] = pivetUp.m_x;
// jacobian01[0].derivative[4] = pivetUp.m_y;
// jacobian01[0].derivative[5] = pivetUp.m_z;
// jacobian01[1].derivative[0] = right.m_x;
// jacobian01[1].derivative[1] = right.m_y;
// jacobian01[1].derivative[2] = right.m_z;
// jacobian01[1].derivative[3] = pivetRight.m_x;
// jacobian01[1].derivative[4] = pivetRight.m_y;
// jacobian01[1].derivative[5] = pivetRight.m_z;
// kPosit = 0.7f * params.m_invTimestep * params.m_invTimestep;
// dgVector positError (pivet1 - point);
// params.m_jointAccel[0] = (positError % up) * kPosit;
// params.m_jointAccel[1] = (positError % right) * kPosit;
}
*/