The-Simpsons-Hit-and-Run/tools/worldbuilder/code/gameengine/wbcamtarget.cpp

297 lines
7.8 KiB
C++

//=============================================================================
// Copyright (C) 2002 Radical Entertainment Ltd. All rights reserved.
//
// File: WBCamTarget.cpp
//
// Description: Implement WBCamTarget
//
// History: 19/07/2002 + Created -- Cary Brisebois
//
//=============================================================================
//========================================
// System Includes
//========================================
//========================================
// Project Includes
//========================================
#include "main/toolhack.h"
#include <toollib.hpp>
#include "WBCamTarget.h"
#include "utility/transformmatrix.h"
#include "main/constants.h"
#include "utility/mext.h"
//******************************************************************************
//
// Global Data, Local Data, Local Classes
//
//******************************************************************************
void GetMatrix( MObject& obj, tlMatrix& hmatrix )
{
MFnDagNode fnNode( obj );
MObject transform;
transform = fnNode.parent( 0 );
MFnTransform fnTransform( transform );
MDagPath dagPath;
if ( MExt::FindDagNodeByName( &dagPath, fnTransform.name() ) )
{
TransformMatrix tm( dagPath );
tm.GetHierarchyMatrixLHS( hmatrix );
}
else
{
MExt::DisplayError( "Target matrix is screwy!" );
}
}
//******************************************************************************
//
// Public Member Functions
//
//******************************************************************************
//==============================================================================
// WBCamTarget::WBCamTarget
//==============================================================================
// Description: Constructor.
//
// Parameters: None.
//
// Return: N/A.
//
//==============================================================================
WBCamTarget::WBCamTarget() :
mTarget( MObject::kNullObj )
{
}
//==============================================================================
// Description: Constructor.
//
// Parameters: MObject& target.
//
// Return: N/A.
//
//==============================================================================
WBCamTarget::WBCamTarget( MObject& target ) :
mTarget( target )
{
}
//==============================================================================
// WBCamTarget::~WBCamTarget
//==============================================================================
// Description: Destructor.
//
// Parameters: None.
//
// Return: N/A.
//
//==============================================================================
WBCamTarget::~WBCamTarget()
{
}
//=============================================================================
// WBCamTarget::GetPosition
//=============================================================================
// Description: Comment
//
// Parameters: ( rmt::Vector* position )
//
// Return: void
//
//=============================================================================
void WBCamTarget::GetPosition( rmt::Vector* position )
{
tlMatrix hmatrix;
GetMatrix( mTarget, hmatrix );
tlPoint point = hmatrix.GetRow( 3 );
*position = point;
*position /= WBConstants::Scale;
}
//=============================================================================
// WBCamTarget::GetHeading
//=============================================================================
// Description: Comment
//
// Parameters: ( rmt::Vector* heading )
//
// Return: void
//
//=============================================================================
void WBCamTarget::GetHeading( rmt::Vector* heading )
{
tlMatrix hmatrix;
GetMatrix( mTarget, hmatrix );
tlPoint point = hmatrix.GetRow( 2 );
*heading = point;
*heading /= WBConstants::Scale;
}
//=============================================================================
// WBCamTarget::GetVUP
//=============================================================================
// Description: Comment
//
// Parameters: ( rmt::Vector* vup )
//
// Return: void
//
//=============================================================================
void WBCamTarget::GetVUP( rmt::Vector* vup )
{
tlMatrix hmatrix;
GetMatrix( mTarget, hmatrix );
tlPoint point = hmatrix.GetRow( 1 );
*vup = point;
*vup /= WBConstants::Scale;
}
//=============================================================================
// WBCamTarget::GetVelocity
//=============================================================================
// Description: Comment
//
// Parameters: ( rmt::Vector* velocity )
//
// Return: void
//
//=============================================================================
void WBCamTarget::GetVelocity( rmt::Vector* velocity )
{
}
//=============================================================================
// WBCamTarget::GetID
//=============================================================================
// Description: Comment
//
// Parameters: ()
//
// Return: unsigned
//
//=============================================================================
unsigned int WBCamTarget::GetID()
{
return 1;
}
//=============================================================================
// WBCamTarget::IsCar
//=============================================================================
// Description: Comment
//
// Parameters: ()
//
// Return: bool
//
//=============================================================================
bool WBCamTarget::IsCar()
{
return false;
}
//=============================================================================
// WBCamTarget::IsAirborn
//=============================================================================
// Description: Comment
//
// Parameters: ()
//
// Return: bool
//
//=============================================================================
bool WBCamTarget::IsAirborn()
{
return false;
}
//=============================================================================
// WBCamTarget::IsUnstable
//=============================================================================
// Description: Comment
//
// Parameters: ()
//
// Return: bool
//
//=============================================================================
bool WBCamTarget::IsUnstable()
{
return false;
}
//=============================================================================
// WBCamTarget::IsQuickTurn
//=============================================================================
// Description: Comment
//
// Parameters: ()
//
// Return: bool
//
//=============================================================================
bool WBCamTarget::IsQuickTurn()
{
return false;
}
//=============================================================================
// WBCamTarget::GetFirstPersonPosition
//=============================================================================
// Description: Comment
//
// Parameters: ( rmt::Vector* position )
//
// Return: void
//
//=============================================================================
void WBCamTarget::GetFirstPersonPosition( rmt::Vector* position )
{
return;
}
//=============================================================================
// WBCamTarget::GetName
//=============================================================================
// Description: Comment
//
// Parameters: ()
//
// Return: const
//
//=============================================================================
const char* const WBCamTarget::GetName()
{
MFnDependencyNode fnDepNode( mTarget );
return fnDepNode.name().asChar();
}
//******************************************************************************
//
// Private Member Functions
//
//******************************************************************************