reman3/Rayman_X/cpa/tempgrp/OZO/Inc/_zModif.hpp

170 lines
5.7 KiB
C++

//*****************************************************************************
//* _zModif.hpp *
//*****************************************************************************
//* *
//* This file contains the definitions of the modif classes *
//* *
//*****************************************************************************
//* Author : Alexis Vaisse *
//*****************************************************************************
#ifndef __ZMODIF_H
#define __ZMODIF_H
#pragma once
// Actor dll "include"
class EdtList;
// Physical Object dll "include"
class EditorPO;
// personal "include"
class ZDx_Interface;
class ZDx_Object;
#include "_zObject.hpp"
typedef struct stBackupDataForSphere_
{
MTH3D_tdstVector stCenter;
GLI_tdxValue Radius;
} tdstBackupDataForSphere;
typedef struct stBackupDataForBox_
{
MTH3D_tdstVector stMinPoint;
MTH3D_tdstVector stMaxPoint;
} tdstBackupDataForBox;
typedef struct stBackupDataForPoint_
{
MTH3D_tdstVector stPoint;
} tdstBackupDataForPoint;
typedef struct stBackupDataForCone_
{
MTH3D_tdstVector stTopPoint;
MTH3D_tdstVector stBasePoint;
GLI_tdxValue Radius;
} tdstBackupDataForCone;
//-----------------------------------------------------------------------------
// class ZDx_Modif
//
// This class deals with all the modifications of a ZDx Object
//-----------------------------------------------------------------------------
class ZDx_Modif : public CPA_Modif
{
private:
ZDx_Object * m_pZDxObject; // the ZDx object to modify
BOOL m_bFirstTime;
// backup data
char * m_BackupName;
void * m_pBackupData; // Point to a tdstBackupDataFor... structure, depends on the ZDx type
BOOL m_bIsDoingUndo; // Is TRUE when doing an Undo
void BackupSphereData ();
void BackupBoxData ();
void BackupPointData ();
void BackupConeData ();
void ExchangeBackupSphereData ();
void ExchangeBackupBoxData ();
void ExchangeBackupPointData ();
void ExchangeBackupConeData ();
public:
ZDx_Modif (ZDx_Object * , char * ); // constructor with the ZDx object which will be modified
// and the name of the modif ("Modification ZDx" for instance)
~ZDx_Modif (); // destructor
void SetZDxObject (ZDx_Object *); // set the ZDx object which will be modified
BOOL Do ();
BOOL Undo (); // Standard Undo : it refreshes the window by default
BOOL Undo (BOOL _bRefreshWindow); // personal Undo : if we don't want the window to be refreshed
};
//-----------------------------------------------------------------------------
// class ZDx_Modif_Exchange
//
// This class deals with the exchange of two ZDx object within two objects lists
//-----------------------------------------------------------------------------
class ZDx_Modif_Exchange : public CPA_Modif
{
private:
ZDx_Interface * m_pZDxInterface;
ZDx_Object * m_pZDxObject1 , * m_pZDxObject2;
long m_lIndexInList1 , m_lIndexInList2;
EdtList * m_pZDxList1 , * m_pZDxList2;
tdeZDxType m_eTypeOfList1 , m_eTypeOfList2;
CPA_BaseObject * m_pActor1 , * m_pActor2;
CPA_SuperObject * m_pActorSuperObject1 , * m_pActorSuperObject2;
public:
// Constructor
ZDx_Modif_Exchange (ZDx_Object * , long lIndexInList1 , EdtList * , CPA_SuperObject * _pActorSuperObject1 ,
ZDx_Object * , long lIndexInList2 , EdtList * , CPA_SuperObject * _pActorSuperObject2 ,
ZDx_Interface *);
BOOL Do ();
BOOL Undo ();
};
//-----------------------------------------------------------------------------
// class ZDx_Modif_Delete
//
// This class deals with the deletion of a ZDx object from a list
//-----------------------------------------------------------------------------
class ZDx_Modif_Delete : public CPA_Modif
{
private:
ZDx_Interface * m_pZDxInterface;
CPA_SuperObject * m_pZDxSuperObject;
ZDx_Object * m_pZDxObject;
long m_lIndexInList;
EdtList * m_pZDxList;
CPA_SuperObject * m_pModuleSuperObject;
EditorPO * m_pModule;
CPA_SuperObject * m_pActorSuperObject;
CPA_BaseObject * m_pActor;
public:
// Constructor
ZDx_Modif_Delete (CPA_SuperObject * _pZDxSuperObject , long lIndexInList , EdtList * ,
CPA_SuperObject * _pModuleSuperObject , CPA_SuperObject * _pActorSuperObject ,
ZDx_Interface *);
~ZDx_Modif_Delete (); // Destructor
BOOL Do ();
BOOL Undo ();
};
//-----------------------------------------------------------------------------
// class ZDx_Modif_Change_ZDx_List
//
// This class deals with the change of a list of ZDx for an actor
//-----------------------------------------------------------------------------
class ZDx_Modif_Change_ZDx_List : public CPA_Modif
{
private:
ZDx_Interface * m_pZDxInterface;
CPA_SuperObject * m_pActorSuperObject;
CPA_BaseObject * m_pActor;
tdeZDxType m_eTypeOfList;
EdtList * m_pZDxList;
public:
// Constructor
ZDx_Modif_Change_ZDx_List (ZDx_Interface * , CPA_SuperObject * _pActorSuperObject , tdeZDxType , EdtList *);
BOOL Do ();
BOOL Undo ();
};
#endif // __ZMODIF_H