/* /////////////////////////////////////////////////////////////////////////////////////////////////// // Description : WPMod.cpp // // Modification classes // /////////////////////////////////////////////////////////////////////////////////////////////////// // inherit from CPA_Modif // /////////////////////////////////////////////////////////////////////////////////////////////////// // Creation date: 21 jan 1997 Author: J Thénoz /////////////////////////////////////////////////////////////////////////////////////////////////// // Modification date: Author: // // // // /////////////////////////////////////////////////////////////////////////////////////////////////// */ #include "stdafx.h" #include "acp_base.h" #include "resource.h" #include "incitf.h" #include "incgam.h" #include "incai.h" #include "WpObj.hpp" //ANNECY Shaitan Nettoyage (12/05/98) { /* #include "WayObj.hpp" #include "LinkObj.hpp" */ //ENDANNECY Shaitan Nettoyage } #include "WPMod.hpp" #include "WPDia.hpp" #include "inter.hpp" ModifWayPointRadius::ModifWayPointRadius (WayPoint* poWP, GLI_tdxValue* pxR, BOOL pBlock) : CPA_Modif (TYPE_RADIUS_WP,"Change radius WayPoint",pBlock) { m_poWP = poWP; m_xOldRadius = 0.; m_xNewRadius = *pxR; m_bFirstTime=TRUE; } BOOL ModifWayPointRadius::Do (void) { m_xOldRadius = WP_fnx_WayPoint_GetRadius (m_poWP->GetStruct() ); WP_fnv_WayPoint_SetRadius (m_poWP->GetStruct(), m_xNewRadius); if (m_bFirstTime) m_bFirstTime=FALSE; WayPoint::fn_pGetDialog()->fn_vRefreshDialog(); m_poWP->fn_vNotifySave (); return TRUE; } BOOL ModifWayPointRadius::Undo (void) { WP_fnv_WayPoint_SetRadius (m_poWP->GetStruct(), m_xOldRadius); WayPoint::fn_pGetDialog()->fn_vRefreshDialog(); m_poWP->fn_vNotifySave (); return TRUE; } ModifWayPointCoordinate::ModifWayPointCoordinate (WayPoint* poWP, BOOL pBlock) : CPA_Modif (TYPE_COORDINATE_WP,"Change coordinate WayPoint",pBlock) { m_poWP = poWP; m_bFirstTime=TRUE; if (!m_poWP->fn_bGetCoordinate()) m_poWP->fn_vSetFather ( (CPA_SuperObject*)(m_poWP->GetSuperObject()->GetParent()) ); } BOOL ModifWayPointCoordinate::Do (void) { fn_vChangeSystemCoordinate (); if (m_bFirstTime) m_bFirstTime=FALSE; else WayPoint::fn_pGetDialog()->fn_vRefreshDialog(); m_poWP->fn_vNotifySave (); return TRUE; } BOOL ModifWayPointCoordinate::Undo (void) { fn_vChangeSystemCoordinate (); WayPoint::fn_pGetDialog()->fn_vRefreshDialog(); m_poWP->fn_vNotifySave (); return TRUE; } void ModifWayPointCoordinate::fn_vChangeSystemCoordinate (void) { BOOL bAbsoluteCoordinate = !m_poWP->fn_bGetCoordinate(); m_poWP->fn_vSetCoordinate (bAbsoluteCoordinate); // traitement coordonnées moteurs if (bAbsoluteCoordinate) { m_poWP->GetInterface()->GetInterface()->fn_bDeleteObjectInHierarchy (m_poWP->GetSuperObject(), FALSE, FALSE, FALSE, FALSE); m_poWP->GetSuperObject()->SetTypeSO (C_Dynamic); POS_tdstCompletePosition *pParentMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(m_poWP->fn_pGetFather()->GetStruct()); POS_tdstCompletePosition *pInstanceMatrix = HIE_fn_hGetSuperObjectMatrix(m_poWP->GetSuperObject()->GetStruct()); POS_fn_vMulMatrixMatrix(pInstanceMatrix, pParentMatrix, pInstanceMatrix); m_poWP->GetInterface()->GetInterface()->fn_bInsertObjectInHierarchy ( m_poWP->GetSuperObject(), m_poWP->GetInterface()->GetInterface()->GetSpecificInterface()->GetDynamicRoot(), FALSE, FALSE, FALSE ); HIE_fn_vSetSuperObjectDrawMask(m_poWP->GetSuperObject()->GetStruct(), GLI_C_lAllIsEnable ); HIE_fn_vSetSuperObjectDrawMask(m_poWP->GetSuperObject()->GetHead()->GetStruct(), GLI_C_lAllIsEnable ); m_poWP->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw); } else { m_poWP->GetInterface()->GetInterface()->fn_bDeleteObjectInHierarchy (m_poWP->GetSuperObject(), FALSE, FALSE, FALSE, FALSE); m_poWP->GetSuperObject()->SetTypeSO (C_Protected); POS_tdstCompletePosition *pParentMatrix = HIE_fn_hGetSuperObjectGlobalMatrix(m_poWP->fn_pGetDynamicFather()->GetStruct()); POS_tdstCompletePosition stInvertMatrix; POS_fn_vInvertMatrix(&stInvertMatrix, pParentMatrix); POS_tdstCompletePosition *pInstanceMatrix = HIE_fn_hGetSuperObjectMatrix(m_poWP->GetSuperObject()->GetStruct()); POS_fn_vMulMatrixMatrix(pInstanceMatrix, &stInvertMatrix, pInstanceMatrix); m_poWP->GetInterface()->GetInterface()->fn_bInsertObjectInHierarchy ( m_poWP->GetSuperObject(), m_poWP->fn_pGetDynamicFather(), FALSE, FALSE, FALSE ); WP_fnv_WayPoint_SetSuperObject (m_poWP->GetStruct(), m_poWP->fn_pGetFather()->GetStruct() ); m_poWP->GetInterface()->GetInterface()->fn_vUpdateAll (E_mc_JustDraw); } }