Ejemplo n.º 1
0
void CPhysicsObject::GetPosition(Vector *worldPosition, QAngle *angles) const {
	if (!worldPosition && !angles) return;

	btTransform transform = m_pObject->getWorldTransform() * ((btMassCenterMotionState *)m_pObject->getMotionState())->m_centerOfMassOffset.inverse();
	if (worldPosition) ConvertPosToHL(transform.getOrigin(), *worldPosition);
	if (angles) ConvertRotationToHL(transform.getBasis(), *angles);
}
// Basically get the last inputs to IPhysicsShadowController::Update(), returns last input to timeOffset in Update()
float CShadowController::GetTargetPosition(Vector *pPositionOut, QAngle *pAnglesOut) {
	if (pPositionOut)
		ConvertPosToHL(m_shadow.targetPosition, *pPositionOut);

	if (pAnglesOut)
		ConvertRotationToHL(m_shadow.targetRotation, *pAnglesOut);

	return m_timeOffset;
}
int CPlayerController::GetShadowPosition(Vector *position, QAngle *angles) {
	btRigidBody *pObject = m_pObject->GetObject();
	btTransform transform;
	((btMassCenterMotionState *)pObject->getMotionState())->getGraphicTransform(transform);
	if (position) ConvertPosToHL(transform.getOrigin(), *position);
	if (angles) ConvertRotationToHL(transform.getBasis(), *angles);

	// Yep. We're returning a variable totally unrelated to the shadow's position.
	return m_ticksSinceUpdate;
}
Ejemplo n.º 4
0
int CPhysicsObject::GetShadowPosition(Vector* position, QAngle* angles) const {
	btTransform transform;
	((btMassCenterMotionState*)m_pObject->getMotionState())->getGraphicTransform(transform);
	if (position) {
		ConvertPosToHL(transform.getOrigin(), *position);
	}
	if (angles) {
		ConvertRotationToHL(transform.getBasis(), *angles);
	}
	return 0;
}
void ConvertShadowControllerToHL( const shadowcontrol_params_t &in, hlshadowcontrol_params_t &out )
{
	ConvertPositionToHL( in.targetPosition, out.targetPosition );
	ConvertRotationToHL( in.targetRotation, out.targetRotation );
	out.teleportDistance = ConvertDistanceToHL( in.teleportDistance );

	ConvertForceImpulseToHL( in.maxSpeed, out.maxSpeed);
	VectorAbs( out.maxSpeed, out.maxSpeed );
	ConvertAngularImpulseToHL( in.maxAngular, out.maxAngular );
	VectorAbs( out.maxAngular, out.maxAngular );
	out.dampFactor = in.dampFactor;
}
void CPhysicsObject::GetPosition( Vector *worldPosition, QAngle *angles )
{
	IVP_U_Matrix matrix;
	m_pObject->get_m_world_f_object_AT( &matrix );
	if ( worldPosition )
	{
		ConvertPositionToHL( matrix.vv, *worldPosition );
	}
	
	if ( angles )
	{
		ConvertRotationToHL( matrix, *angles );
	}
}
Ejemplo n.º 7
0
int CPhysicsObject::GetShadowPosition(Vector *position, QAngle *angles) const {
	// Valve vphysics just interpolates current position to next PSI
	if (!position && !angles) return m_pEnv->GetNumSubSteps();

	btTransform transform;
	((btMassCenterMotionState *)m_pObject->getMotionState())->getGraphicTransform(transform);

	float deltaTime = m_pEnv->GetSubStepTime();
	btTransformUtil::integrateTransform(transform, m_pObject->getLinearVelocity(), m_pObject->getAngularVelocity(), deltaTime, transform);

	if (position)
		ConvertPosToHL(transform.getOrigin(), *position);

	if (angles)
		ConvertRotationToHL(transform.getBasis(), *angles);

	// Simulated PSIs
	return m_pEnv->GetNumSubSteps();
}
int CPhysicsObject::GetShadowPosition( Vector *position, QAngle *angles )
{
	IVP_U_Matrix matrix;
	
	IVP_Environment *pEnv = m_pObject->get_environment();
	CPhysicsEnvironment *pVEnv = (CPhysicsEnvironment *)pEnv->client_data;

	double psi = pEnv->get_next_PSI_time().get_seconds();
	m_pObject->calc_at_matrix( psi, &matrix );
	if ( angles )
	{
		ConvertRotationToHL( matrix, *angles );
	}
	if ( position )
	{
		ConvertPositionToHL( matrix.vv, *position );
	}

	return pVEnv->GetSimulatedPSIs();
}
Ejemplo n.º 9
0
void CPhysicsObject::GetPosition(Vector* worldPosition, QAngle* angles) const {
	btTransform transform;
	((btMassCenterMotionState*)m_pObject->getMotionState())->getGraphicTransform(transform);
	if (worldPosition) ConvertPosToHL(transform.getOrigin(), *worldPosition);
	if (angles) ConvertRotationToHL(transform.getBasis(), *angles);
}