reman3/Rayman_X/cpa/tempgrp/OGD/src/Point3D.cpp

238 lines
9.0 KiB
C++

//ROMTEAM WorldEditor
////////////////////////////////////////////////////////////////////////////////////////
// File : Point3D.cpp: implementation of the Point3D class.
// Author : Cristi Petrescu
// Date : 97.11
// Description :
////////////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "ACP_Base.h"
#include "ITF.h"
#include "incGAM.h"
#include "GLI.h"
#include "DPT.h"
#undef CPA_WANTS_IMPORT
#undef CPA_EXPORT
#define CPA_WANTS_EXPORT
#include "OGD.h"
#undef CPA_WANTS_EXPORT
#ifndef CPA_WANTS_IMPORT
#define CPA_WANTS_IMPORT
#endif
#include "3dinterf.hpp"
#include "DlgPnt3D.hpp"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method : Point3D::Point3D
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : constructors to create a new object
// make one for each Geometry3D one. No general constructor :-(
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
Point3D::Point3D (CPA_EditorBase *_p_oEditor, /*ACP_tdxIndex xNbPoints, ACP_tdxIndex xNbElements,*/ const CString _csName , tdeSaveStatus _eStatus )
: Shape3D (FALSE, _p_oEditor, 1, 1, _csName , _eStatus)
{
CommonPoint3D ();
}
Point3D::Point3D (CPA_EditorBase *_p_oEditor, /*ACP_tdxIndex xNbPoints, ACP_tdxIndex xNbElements,*/ CPA_BaseObject *_p_oOwnerFile, const CString _csName /*= ""*/, char *_p_cRefPath /*= NULL*/, tdeSaveStatus _eStatus /*= E_ss_Responsible*/)
: Shape3D (FALSE, _p_oEditor, 1, 1, _p_oOwnerFile, _csName, _p_cRefPath, _eStatus)
{
CommonPoint3D ();
}
/****????*****///rezolvat ?? ionut
Point3D::Point3D (CPA_EditorBase *_p_oEditor, CPA_BaseObject *_p_oOwnerFile, ACP_tdxHandleOfObject _hObject, const CString _csName /*= ""*/, char *_p_cRefPath /*= NULL*/, tdeSaveStatus _eStatus /*= E_ss_Modify*/)
: Shape3D (FALSE, _p_oEditor, _p_oOwnerFile, _hObject, _csName, _p_cRefPath, _eStatus)
{
// this seems to be used at load time.
// so do not alter the data!
// CommonPoint3D ();
}
// ----------------------------------------------------------------------------
// Description : common implementation for the constructors
// ----------------------------------------------------------------------------
void Point3D::CommonPoint3D( )
{
// initialise with dummy data
MTH3D_tdstVector stPoint = { 0 , 0 , 0 };
fn_vSetListOfPoints (1 , & stPoint);
m_hElement = fn_hCreateElementPoints (1);
fn_eSetIndexedPoint (m_hElement , 0 , 0);
fn_eSetFatnessOfElementPoint (m_hElement , (float) 8.0);
fn_vEndCreation ();
}
Point3D::~Point3D()
{
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D : GetPoint
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : return the 3D coordinates of the point
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
MTH3D_tdstVector Point3D::GetPoint ()
{
MTH3D_tdstVector stPoint;
fn_vGetPoint (0 , & stPoint);
return stPoint;
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D : SetPoint
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : set the 3D coordinates of the point
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Point3D::SetPoint (MTH3D_tdstVector * _pPoint)
{
fn_vSetPoint (0 , _pPoint);
//UpdateTestPointPosition ();
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D : SetPointX
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : set the X coordinate of the point
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Point3D::SetPointX (GLI_tdxValue _X)
{
MTH3D_tdstVector stPoint = GetPoint ();
MTH3D_M_vSetXofVector (& stPoint , _X);
SetPoint (& stPoint);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D : SetPointY
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : set the Y coordinate of the point
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Point3D::SetPointY (GLI_tdxValue _Y)
{
MTH3D_tdstVector stPoint = GetPoint ();
MTH3D_M_vSetYofVector (& stPoint , _Y);
SetPoint (& stPoint);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D : SetPointZ
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : set the Z coordinate of the point
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Point3D::SetPointZ (GLI_tdxValue _Z)
{
MTH3D_tdstVector stPoint = GetPoint ();
MTH3D_M_vSetZofVector (& stPoint , _Z);
SetPoint (& stPoint);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D - SetColorOfPoint
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : Set the color of the point : selected or not selected
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
void Point3D::SetColorOfPoint (BOOL _bSelected)
{
GMT_tdxHandleToGameMaterial hGameMaterial = GEO_xGetGameMaterialOfElementPoints
((ACP_tdxHandleOfObject) GetData () , m_hElement);
ACP_tdxHandleOfMaterial hVisualMaterial = GMT_fn_hGetVisualMaterial (hGameMaterial);
GEO_tdstColor stColor;
if (_bSelected) // selected -> pink
{
stColor . xR = 1.0;
stColor . xG = 0.5;
stColor . xB = 1.0;
}
else // not selected -> white
{
stColor . xR = 1.0;
stColor . xG = 1.0;
stColor . xB = 1.0;
}
stColor . xA = 1.0;
GLI_xSetMaterialColor (hVisualMaterial , & stColor);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Method :Point3D - _OnLButtonDblClk
// Date : 97.11
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Description : launch the modal dialog
// Author : Cristi Petrescu
//////////////////////////////////////////////////////////////////////////////////////////////////////
// Modification :
// Date :
// By :
//////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL Point3D::_OnLButtonDblClk (UINT nFlags, tdstMousePos *p_stPos, ACP_tdxIndex xIndex, HIE_tdstPickInfo *p_stPickInfo)
{
int iDlgResult;
HINSTANCE hOldInst = AfxGetResourceHandle();
AfxSetResourceHandle ( ((CPA_DLLBase*)(GetEditor()))->GetDLLIdentity()->hModule );
CDlgPoint3D dlgPoint3D(this);
iDlgResult = dlgPoint3D.DoModal();
AfxSetResourceHandle(hOldInst);
if (iDlgResult == IDOK)
return TRUE;
else
return FALSE;
}