123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749 |
- /* Copyright (c) 2002-2012 Croteam Ltd.
- This program is free software; you can redistribute it and/or modify
- it under the terms of version 2 of the GNU General Public License as published by
- the Free Software Foundation
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License along
- with this program; if not, write to the Free Software Foundation, Inc.,
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
- // WorldEditor.h : main header file for the WORLDEDITOR application
- //
- #ifndef WORLDEDITOR_H
- #define WORLDEDITOR_H 1
- #ifndef __AFXWIN_H__
- #error include 'stdafx.h' before including this file for PCH
- #endif
- #include "resource.h" // main symbols
- #include "Viewers.h"
- #define CHILD_CONFIGURATION_VER "V012"
- #define VIEW_PREFERENCES_VER "V012"
- #define VIEW_PREFERENCES_CT 10
- #define CHILD_CONFIGURATIONS_CT 10
- extern FLOAT _fLastMipBrushingOptionUsed;
- extern INDEX wed_iMaxFPSActive;
- extern struct GameGUI_interface *_pGameGUI;
- extern UINT _uiMessengerMsg;
- extern UINT _uiMessengerForcePopup;
- extern FLOAT _fFlyModeSpeedMultiplier;
- class CWorldEditorDoc;
- class CWorldEditorView;
- class CVirtualTreeNode;
- extern CEntity *GetTerrainEntity(void);
- extern CTerrain *GetTerrain(void);
- extern CTerrainLayer *GetLayer(void);
- extern void SelectLayer(INDEX iLayer);
- extern INDEX GetLayerIndex(void);
- extern CTerrainLayer *GetLayer(INDEX iLayer);
- #define ALLOW_TERRAINS 1
- /////////////////////////////////////////////////////////////////////////////
- // CWorldEditorApp:
- // See WorldEditor.cpp for the implementation of this class
- //
- enum PrimitiveType {
- PT_NONE =0,
- PT_CONUS,
- PT_TORUS,
- PT_STAIRCASES,
- PT_SPHERE,
- PT_TERRAIN,
- };
- enum TriangularisationType {
- TT_NONE=0,
- TT_CENTER_VERTEX,
- TT_FROM_VTX00,
- TT_FROM_VTX01,
- TT_FROM_VTX02,
- TT_FROM_VTX03,
- TT_FROM_VTX04,
- TT_FROM_VTX05,
- TT_FROM_VTX06,
- TT_FROM_VTX07,
- TT_FROM_VTX08,
- TT_FROM_VTX09,
- TT_FROM_VTX10,
- TT_FROM_VTX11,
- TT_FROM_VTX12,
- TT_FROM_VTX13,
- TT_FROM_VTX14,
- TT_FROM_VTX15,
- };
- #define VALUES_FOR_PRIMITIVE_VERSION2 "VFP2"
- #define VALUES_FOR_PRIMITIVE_VERSION3 "VFP3"
- // values for primitive
- class CValuesForPrimitive
- {
- public:
- enum CSGType vfp_csgtCSGOperation;
- // global parameters
- enum PrimitiveType vfp_ptPrimitiveType;
- CStaticArray<DOUBLE3D> vfp_avVerticesOnBaseOfPrimitive;
- CObject3D vfp_o3dPrimitive;
- CPlacement3D vfp_plPrimitive;
- enum TriangularisationType vfp_ttTriangularisationType;
- BOOL vfp_bClosed;
- BOOL vfp_bDummy;
- BOOL vfp_bAutoCreateMipBrushes;
- COLOR vfp_colSectorsColor;
- COLOR vfp_colPolygonsColor;
- // parameters for *Conus* primitives
- FLOAT vfp_fXMin;
- FLOAT vfp_fXMax;
- FLOAT vfp_fYMin;
- FLOAT vfp_fYMax;
- FLOAT vfp_fZMin;
- FLOAT vfp_fZMax;
- FLOAT vfp_fShearX;
- FLOAT vfp_fShearZ;
- FLOAT vfp_fStretchX;
- FLOAT vfp_fStretchY;
- BOOL vfp_bLinearStaircases;
- BOOL vfp_bOuter;
- INDEX vfp_iSlicesIn360;
- INDEX vfp_iNoOfSlices;
- FLOAT vfp_fRadius;
- INDEX vfp_iMeridians;
- INDEX vfp_iParalels;
- INDEX vfp_iSlicesPerWidth;
- INDEX vfp_iSlicesPerHeight;
-
- INDEX vfp_iTopShape;
- INDEX vfp_iBottomShape;
-
- FLOAT vfp_fAmplitude;
- FLOAT vfp_fMipStart;
- FLOAT vfp_fMipStep;
- CTFileName vfp_fnDisplacement;
- CValuesForPrimitive();
- inline CValuesForPrimitive (CValuesForPrimitive &vfpToCopy)
- {
- vfp_avVerticesOnBaseOfPrimitive = vfpToCopy.vfp_avVerticesOnBaseOfPrimitive;
- vfp_ptPrimitiveType = vfpToCopy.vfp_ptPrimitiveType;
- vfp_o3dPrimitive = vfpToCopy.vfp_o3dPrimitive;
- vfp_plPrimitive = vfpToCopy.vfp_plPrimitive;
- vfp_ttTriangularisationType = vfpToCopy.vfp_ttTriangularisationType;
- vfp_bDummy = vfpToCopy.vfp_bDummy;
- vfp_ptPrimitiveType = vfpToCopy.vfp_ptPrimitiveType;
- vfp_bAutoCreateMipBrushes = vfpToCopy.vfp_bAutoCreateMipBrushes;
- vfp_colSectorsColor = vfpToCopy.vfp_colSectorsColor;
- vfp_colPolygonsColor = vfpToCopy.vfp_colPolygonsColor;
- vfp_fXMin = vfpToCopy.vfp_fXMin;
- vfp_fXMax = vfpToCopy.vfp_fXMax;
- vfp_fYMin = vfpToCopy.vfp_fYMin;
- vfp_fYMax = vfpToCopy.vfp_fYMax;
- vfp_fZMin = vfpToCopy.vfp_fZMin;
- vfp_fZMax = vfpToCopy.vfp_fZMax;
- vfp_fShearX = vfpToCopy.vfp_fShearX;
- vfp_fShearZ = vfpToCopy.vfp_fShearZ;
- vfp_fStretchX = vfpToCopy.vfp_fStretchX;
- vfp_fStretchY = vfpToCopy.vfp_fStretchY;
- vfp_bClosed = vfpToCopy.vfp_bClosed;
- vfp_bLinearStaircases = vfpToCopy.vfp_bLinearStaircases;
- vfp_bOuter = vfpToCopy.vfp_bOuter;
- vfp_iSlicesIn360 = vfpToCopy.vfp_iSlicesIn360;
- vfp_iNoOfSlices = vfpToCopy.vfp_iNoOfSlices;
- vfp_fRadius = vfpToCopy.vfp_fRadius;
- vfp_iMeridians = vfpToCopy.vfp_iMeridians;
- vfp_iParalels = vfpToCopy.vfp_iParalels;
- vfp_iSlicesPerWidth = vfpToCopy.vfp_iSlicesPerWidth;
- vfp_iSlicesPerHeight = vfpToCopy.vfp_iSlicesPerHeight;
-
- vfp_iTopShape = vfpToCopy.vfp_iTopShape;
- vfp_iBottomShape = vfpToCopy.vfp_iBottomShape;
- vfp_fAmplitude = vfpToCopy.vfp_fAmplitude;
- vfp_fnDisplacement = vfpToCopy.vfp_fnDisplacement;
- vfp_fMipStart = vfpToCopy.vfp_fMipStart;
- vfp_fMipStep = vfpToCopy.vfp_fMipStep;
- };
- inline BOOL operator==(const CValuesForPrimitive &vfpToCompare);
- inline CValuesForPrimitive operator+(const CValuesForPrimitive &vfpToAdd);
- inline CValuesForPrimitive &operator+=(const CValuesForPrimitive &vfpToAdd);
- inline CValuesForPrimitive operator-(const CValuesForPrimitive &vfpToSub);
- inline CValuesForPrimitive &operator-=(const CValuesForPrimitive &vfpToSub);
- void CalculatePrimitiveBase(void);
- inline void CorrectInvalidValues(void);
- void ReadFromIniFile(CTString strPrimitiveType);
- void WriteToIniFile(CTString strPrimitiveType);
- void Read_t(CTStream &strmFile);
- void Write_t(CTStream &strmFile);
- };
- // for linking of primitive into primitive history list
- class CPrimitiveInHistoryBuffer {
- public:
- CListNode pihb_lnNode;
- CValuesForPrimitive pihb_vfpPrimitive;
- };
- // Class used for holding global modeler's preferences
- class CAppPrefs
- {
- public:
- ~CAppPrefs();
- BOOL ap_CopyExistingWindowPrefs;
- BOOL ap_AutoMaximizeWindow;
- BOOL ap_SetDefaultColors;
- BOOL ap_AutomaticInfo;
- BOOL ap_BinaryGrid;
- BOOL ap_UpdateAllways;
- BOOL ap_bSaveUndoForDelete;
- BOOL ap_bAutoColorize;
- BOOL ap_bShowAllOnOpen;
- BOOL ap_bHideShadowsOnOpen;
- BOOL ap_bAutoUpdateDisplaceMap;
-
- INDEX ap_iUndoLevels;
- INDEX ap_iStartupWindowSetup;
- COLOR ap_DefaultInkColor;
- COLOR ap_DefaultPaperColor;
- COLOR ap_DefaultSelectionColor;
- COLOR ap_DefaultGridColor;
- CTString ap_strSourceSafeProject;
- FLOAT ap_fDefaultFlyModeSpeed;
- INDEX ap_iTerrainSelectionVisible;
- INDEX ap_iTerrainSelectionHidden;
- INDEX ap_iMemoryForTerrainUndo;
- BOOL ap_bAutoUpdateTerrainDistribution;
- void ReadFromIniFile();
- void WriteToIniFile();
- };
- // Class for holding view preferences
- class CViewPrefs
- {
- public:
- // default constructor
- CViewPrefs(void);
- // set default values
- void SetDefaultValues(void);
- void ClearInvalidConfigPointers(void);
- // world's rendering preferences
- CWorldRenderPrefs m_wrpWorldRenderPrefs;
- // model's rendering preferences
- CModelRenderPrefs m_mrpModelRenderPrefs;
- // automatic rendering range
- BOOL m_bAutoRenderingRange;
- // rendering range if not automatic
- FLOAT m_fRenderingRange;
- // color for background paper (if not picture)
- COLOR m_PaperColor;
- // selection color
- COLOR m_SelectionColor;
- // if this view contains measurement tape
- BOOL m_bMeasurementTape;
- // grid color
- COLOR m_GridColor;
- // reserved for background texture
- char m_achrBcgPicture[256];
- };
- // Class for holding view configurations
- class CChildConfiguration
- {
- public:
- // set default values
- void SetDefaultValues(void);
- void ClearInvalidConfigPointers(void);
- // numbers of horizontal splitters
- INDEX m_iHorizontalSplitters;
- // numbers of vertical splitters
- INDEX m_iVerticalSplitters;
- // percentage of left splitter window
- FLOAT m_fPercentageLeft;
- // percentage of top splitter window
- FLOAT m_fPercentageTop;
- // grid on/off flag
- BOOL m_bGridOn;
- // view prefs
- CViewPrefs m_vpViewPrefs[4];
- // type of projection
- enum CSlaveViewer::ProjectionType m_ptProjectionType[ 4];
- };
- enum CopyType {
- CT_NONE = 0,
- CT_POLYGON_PROPERTIES,
- CT_POLYGON_PROPERTIES_ALTERNATIVE,
- CT_ENTITY,
- CT_SECTOR,
- CT_WORLD,
- };
- typedef void TTCFunction_type(void *pView, char *pToolTipText);
- class CCustomToolTip {
- public:
- HWND cct_hwndCaller;
- TTCFunction_type *cct_pCallback;
- void *cct_pThis;
- void ManualUpdate(void);
- void ManualOn( PIX pixManualX, PIX pixManualY,
- TTCFunction_type *pCallBack, void *pThis);
- void ManualOff( void);
- void MouseMoveNotify( HWND hwndCaller, ULONG ulTime, TTCFunction_type *pCallBack, void *pThis);
- };
- class CWorldEditorApp : public CWinApp
- {
- private:
- CWorldEditorDoc *m_pLastActivatedDocument;
- public:
- // Atributes
- FLOAT3D m_vLastTerrainHit;
- CEntity *m_penLastTerrainHit;
- FLOAT m_fCurrentTerrainBrush;
- FLOAT m_fTerrainBrushPressure;
- FLOAT m_iTerrainEditMode;
- FLOAT m_iTerrainBrushMode;
- FLOAT m_fTerrainBrushPressureEnum;
- CTFileName m_fnDistributionNoiseTexture;
- CTFileName m_fnContinousNoiseTexture;
- INDEX m_iFBMOctaves;
- FLOAT m_fFBMHighFrequencyStep;
- FLOAT m_fFBMStepFactor;
- FLOAT m_fFBMMaxAmplitude;
- FLOAT m_fFBMfAmplitudeDecreaser;
- BOOL m_bFBMAddNegativeValues;
- BOOL m_bFBMRandomOffset;
- UWORD m_uwEditAltitude;
- FLOAT m_fPaintPower;
- FLOAT m_fSmoothPower;
- INDEX m_iFilter;
- FLOAT m_fFilterPower;
- FLOAT m_fPosterizeStep;
- FLOAT m_fNoiseAltitude;
- INDEX m_iRNDSubdivideAndDisplaceItterations;
- INDEX m_iTerrainGenerationMethod;
- INDEX m_iApi;
- CCustomToolTip m_cttToolTips;
- int m_iLastClassSortAplied;
- BOOL m_bInvertClassSort;
- FLOAT m_tmStartStatusLineInfo;
- CPlacement3D m_plClipboard1;
- CPlacement3D m_plClipboard2;
-
- CBrushPolygon *m_pbpoClipboardPolygon;
- CBrushPolygon *m_pbpoPolygonWithDeafultValues;
- CTFileName m_fnClassForDropMarker;
- // flag is set while changing display mode
- BOOL m_bChangeDisplayModeInProgress;
- // flag is set while adding/removing property pages
- BOOL m_bDisableDataExchange;
- // curently opened virtual directory path
- CTString m_strOpenedVTDirectory;
- // sector ambient color is stored here on copy paste ambient
- COLOR m_colSectorAmbientClipboard;
- CMappingDefinition m_mdMapping;
- CMappingDefinition m_mdMapping1;
- CMappingDefinition m_mdMapping2;
- CMappingDefinition m_mdMapping3;
- FLOATplane3D m_plMapping;
- FLOATplane3D m_plMapping1;
- FLOATplane3D m_plMapping2;
- FLOATplane3D m_plMapping3;
- FLOAT m_fTerrainSwitchStart;
- FLOAT m_fTerrainSwitchStep;
- // last copy operation type
- enum CopyType m_ctLastCopyType;
- CTString m_strCSGAndShadowStatistics;
- // if should display status info
- BOOL m_bShowStatusInfo;
- // visivility for texture layers
- BOOL m_bTexture1;
- BOOL m_bTexture2;
- BOOL m_bTexture3;
- // if CSG report is enabled
- BOOL m_bCSGReportEnabled;
- // false if undo remembering is disabled
- BOOL m_bRememberUndo;
- // if we are currently in measure mode
- BOOL m_bMeasureModeOn;
- // if we are currently in cut mode
- BOOL m_bCutModeOn;
- // if WED started for the fitst time
- BOOL m_bFirstTimeStarted;
- // show tip of the day on startup
- BOOL m_bShowTipOfTheDay;
- INDEX m_iCurrentTipOfTheDay;
- // rendering preferences for single view
- CViewPrefs m_vpViewPrefs[ VIEW_PREFERENCES_CT+1];
- // child-view configurations remembered
- // pre-last buffer is for full screen
- // last buffer is for maximizing view
- CChildConfiguration m_ccChildConfigurations[ CHILD_CONFIGURATIONS_CT+2];
- // object to hold our document template
- CMultiDocTemplate* m_pDocTemplate;
- // Only instance of CAppPrefs holding preferences
- class CAppPrefs m_Preferences;
- // List head for holding available modes/resolutions
- CListHead m_AvailableModes;
- // error texture
- CTextureData *m_ptdError;
- CTextureObject *m_ptoError;
- // icons tray texture
- CTextureData *m_ptdIconsTray;
- // default texture for primitives
- CTextureData *m_ptdActiveTexture;
- // view icons texture
- CTextureData *m_pViewIconsTD;
- // window background texture
- CTFileName m_fnWinBcgTexture;
- // application font
- CFontData *m_pfntSystem;
- // application's windows font
- CFont m_Font;
- CFont m_FixedFont;
- // for holding entity selection marker model
- CTextureData *m_ptdEntityMarkerTexture;
- CModelData *m_pEntityMarkerModelData;
- CModelObject *m_pEntityMarkerModelObject;
- // for holding portal selection marker model
- CTextureData *m_ptdPortalMarkerTexture;
- CModelData *m_pPortalMarkerModelData;
- CModelObject *m_pPortalMarkerModelObject;
- // for holding empty brush model
- CTextureData *m_ptdEmptyBrushTexture;
- CModelData *m_pEmptyBrushModelData;
- CModelObject *m_pEmptyBrushModelObject;
- // for holding range sphere model
- CTextureData *m_ptdRangeSphereTexture;
- CModelData *m_pRangeSphereModelData;
- CModelObject *m_pRangeSphereModelObject;
- // for holding angle3D model
- CTextureData *m_ptdAngle3DTexture;
- CModelData *m_pAngle3DModelData;
- CModelObject *m_pAngle3DModelObject;
- // for holding bounding box model
- CTextureData *m_ptdBoundingBoxTexture;
- CModelData *m_pBoundingBoxModelData;
- CModelObject *m_pBoundingBoxModelObject;
- // variables for full screen display mode
- CDisplayMode m_dmFullScreen;
- GfxAPIType m_gatFullScreen;
- // index of color last used for auto primitive colorization
- INDEX m_iLastAutoColorizeColor;
- // flag telling function GetActiveDocument() to return NULL (during document chg situation)
- BOOL m_bDocumentChangeOn;
- // flag telling which type of grid is curently on
- BOOL m_bDecadicGrid;
- // current values for primitive
- CValuesForPrimitive m_vfpCurrent;
- // and values for last primitive (for wizard)
- CValuesForPrimitive m_vfpLast;
- // and values for pre last primitive (for wizard)
- CValuesForPrimitive m_vfpPreLast;
- // and delta values for last primitive (for wizard)
- CValuesForPrimitive m_vfpDelta;
- // default values for conus primitives
- CValuesForPrimitive m_vfpConus;
- // default values for torus primitives
- CValuesForPrimitive m_vfpTorus;
- // default values for staircase primitives
- CValuesForPrimitive m_vfpStaircases;
- // default values for sphere primitives
- CValuesForPrimitive m_vfpSphere;
- // default values for terrain primitives
- CValuesForPrimitive m_vfpTerrain;
- // for linking primitives
- CListHead m_lhPrimitiveHistory;
- // obtain currently active view
- CWorldEditorDoc *GetActiveDocument(void);
- // obtain currently active view
- CWorldEditorView *GetActiveView(void);
- CChangeableRT m_ctTerrainPage;
- CChangeableRT m_ctTerrainPageCanvas;
- // Operations
- CWorldEditorApp();
- ~CWorldEditorApp();
- void MyParseCommandLine(void);
- BOOL SubInitInstance(void);
- void OnFileNew();
- CEntity *CreateWorldBaseEntity(CWorld &woWorld, BOOL bZoning, CPlacement3D pl=CPlacement3D(FLOAT3D(0,0,0),ANGLE3D(0,0,0)));
- BOOL Add3DObject(CWorldEditorDoc *pDoc, CEntity *penwb, CTFileName fnFile, BOOL bAdd);
- INDEX Insert3DObjects(CWorldEditorDoc *pDoc);
- CDisplayMode *GetStartModePtr( CTString strStartMode);
- CWorldEditorDoc *GetLastActivatedDocument(void);
- void ActivateDocument(CWorldEditorDoc *pDocToActivate);
- void RefreshAllDocuments( void);
- // load world and model rendering preferences
- BOOL LoadRenderingPreferences(void);
- // save world and model rendering preferences
- void SaveRenderingPreferences(void);
- // load child configurations
- BOOL LoadChildConfigurations(void);
- // save child configurations
- void SaveChildConfigurations(void);
- // clear possibly invalid pointers in view configurations
- void ClearInvalidConfigPointers(void);
- // reads ini data that can be loaded many times
- void ReadFromIniFile(void);
- // writes ini data that can be saved many times
- void WriteToIniFile(void);
- // store/restore application ini variables
- void WriteToIniFileOnEnd(void);
- void ReadFromIniFileOnInit(void);
- // store/restore default polygon properties
- void WriteDefaultPolygonValues(void);
- void ReadDefaultPolygonValues(void);
- // sets new active texture for primitive's default material
- void SetNewActiveTexture( CTFileName fnFullTexName);
- // tries to find given item in browser
- void FindItemInBrowser( CTFileName fnItemFileName);
- // texturize selection
- void TexturizeSelection(void);
- // gets curently active document ptr
- CWorldEditorDoc *GetDocument();
- // gets name for given virtual tree node
- CTString GetNameForVirtualTreeNode( CVirtualTreeNode *pvtnNode);
- void DisplayHelp(const CTFileName &fnHlk, UINT uCommand, DWORD dwData);
- void ApplyTerrainEditing(CCastRay &crRayHit);
-
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CWorldEditorApp)
- public:
- virtual BOOL InitInstance();
- virtual BOOL SaveAllModified();
- virtual int ExitInstance();
- virtual BOOL OnIdle(LONG lCount);
- virtual int Run();
- virtual BOOL PreTranslateMessage(MSG* pMsg);
- virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
- //}}AFX_VIRTUAL
- // Implementation
- //{{AFX_MSG(CWorldEditorApp)
- afx_msg void OnAppAbout();
- afx_msg void OnFilePreferences();
- afx_msg void OnFileOpen();
- afx_msg void OnImport3DObject();
- afx_msg void OnDecadicGrid();
- afx_msg void OnUpdateDecadicGrid(CCmdUI* pCmdUI);
- afx_msg void OnConvertWorlds();
- afx_msg void OnSetAsDefault();
- afx_msg void OnHelpShowTipOfTheDay();
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- /////////////////////////////////////////////////////////////////////////////
- // Inline functions
- inline BOOL CValuesForPrimitive::operator==(const CValuesForPrimitive &vfpToCompare)
- {
- return (
- (vfp_avVerticesOnBaseOfPrimitive.Count() == vfpToCompare.vfp_avVerticesOnBaseOfPrimitive.Count() ) &&
- (vfp_ptPrimitiveType == vfpToCompare.vfp_ptPrimitiveType) &&
- (vfp_plPrimitive == vfpToCompare.vfp_plPrimitive) &&
- (vfp_ttTriangularisationType == vfpToCompare.vfp_ttTriangularisationType) &&
- (vfp_bDummy == vfpToCompare.vfp_bDummy) &&
- (vfp_bAutoCreateMipBrushes == vfpToCompare.vfp_bAutoCreateMipBrushes) &&
- (vfp_colSectorsColor == vfpToCompare.vfp_colSectorsColor) &&
- (vfp_colPolygonsColor == vfpToCompare.vfp_colPolygonsColor) &&
- (vfp_fXMin == vfpToCompare.vfp_fXMin) &&
- (vfp_fXMax == vfpToCompare.vfp_fXMax) &&
- (vfp_fYMin == vfpToCompare.vfp_fYMin) &&
- (vfp_fYMax == vfpToCompare.vfp_fYMax) &&
- (vfp_fZMin == vfpToCompare.vfp_fZMin) &&
- (vfp_fZMax == vfpToCompare.vfp_fZMax) &&
- (vfp_fShearX == vfpToCompare.vfp_fShearX) &&
- (vfp_fShearZ == vfpToCompare.vfp_fShearZ) &&
- (vfp_fStretchX == vfpToCompare.vfp_fStretchX) &&
- (vfp_fStretchY == vfpToCompare.vfp_fStretchY) &&
- (vfp_bClosed == vfpToCompare.vfp_bClosed) &&
- (vfp_bLinearStaircases == vfpToCompare.vfp_bLinearStaircases) &&
- (vfp_bOuter == vfpToCompare.vfp_bOuter) &&
- (vfp_iSlicesIn360 == vfpToCompare.vfp_iSlicesIn360) &&
- (vfp_iNoOfSlices == vfpToCompare.vfp_iNoOfSlices) &&
- (vfp_fRadius == vfpToCompare.vfp_fRadius) &&
- (vfp_iMeridians == vfpToCompare.vfp_iMeridians) &&
- (vfp_iParalels == vfpToCompare.vfp_iParalels) &&
- (vfp_iSlicesPerWidth == vfpToCompare.vfp_iSlicesPerWidth) &&
- (vfp_iSlicesPerHeight == vfpToCompare.vfp_iSlicesPerHeight) &&
- (vfp_iTopShape == vfpToCompare.vfp_iTopShape) &&
- (vfp_iBottomShape == vfpToCompare.vfp_iBottomShape) &&
- (vfp_fAmplitude == vfpToCompare.vfp_fAmplitude) &&
- (vfp_fMipStart == vfpToCompare.vfp_fMipStart) &&
- (vfp_fMipStep == vfpToCompare.vfp_fMipStep) &&
- (vfp_fnDisplacement == vfpToCompare.vfp_fnDisplacement)
- );
- }
- inline CValuesForPrimitive &CValuesForPrimitive::operator+=(const
- CValuesForPrimitive &vfpToAdd)
- {
- // add member by member
- vfp_fXMin += vfpToAdd.vfp_fXMin;
- vfp_fXMax += vfpToAdd.vfp_fXMax;
- vfp_fYMin += vfpToAdd.vfp_fYMin;
- vfp_fYMax += vfpToAdd.vfp_fYMax;
- vfp_fZMin += vfpToAdd.vfp_fZMin;
- vfp_fZMax += vfpToAdd.vfp_fZMax;
- vfp_fShearX += vfpToAdd.vfp_fShearX;
- vfp_fShearZ += vfpToAdd.vfp_fShearZ;
- vfp_fStretchX += vfpToAdd.vfp_fStretchX;
- vfp_fStretchY += vfpToAdd.vfp_fStretchY;
- return *this;
- }
- inline CValuesForPrimitive CValuesForPrimitive::operator+(const
- CValuesForPrimitive &vfpToAdd)
- {
- return CValuesForPrimitive(*this) += vfpToAdd;
- }
- inline CValuesForPrimitive &CValuesForPrimitive::operator-=(const
- CValuesForPrimitive &vfpToSub)
- {
- // sub member by member
- vfp_fXMin -= vfpToSub.vfp_fXMin;
- vfp_fXMax -= vfpToSub.vfp_fXMax;
- vfp_fYMin -= vfpToSub.vfp_fYMin;
- vfp_fYMax -= vfpToSub.vfp_fYMax;
- vfp_fZMin -= vfpToSub.vfp_fZMin;
- vfp_fZMax -= vfpToSub.vfp_fZMax;
- vfp_fShearX -= vfpToSub.vfp_fShearX;
- vfp_fShearZ -= vfpToSub.vfp_fShearZ;
- vfp_fStretchX -= vfpToSub.vfp_fStretchX;
- vfp_fStretchY -= vfpToSub.vfp_fStretchY;
- return *this;
- }
- inline CValuesForPrimitive CValuesForPrimitive::operator-(const
- CValuesForPrimitive &vfpToSub)
- {
- return CValuesForPrimitive(*this) -= vfpToSub;
- }
- #define SNAP_FLOAT_GRID 0.25f
- inline void CValuesForPrimitive::CorrectInvalidValues(void)
- {
- // some values must be valid, so if they are not, coorect them
- if( vfp_fXMax < vfp_fXMin) vfp_fXMax = vfp_fXMin+SNAP_FLOAT_GRID;
- if( vfp_fYMax < vfp_fYMin) vfp_fYMax = vfp_fYMin+SNAP_FLOAT_GRID;
- if( vfp_fZMax < vfp_fZMin) vfp_fZMax = vfp_fZMin+SNAP_FLOAT_GRID;
- }
- /////////////////////////////////////////////////////////////////////////////
- extern CWorldEditorApp theApp;
- #include "CtrlEnumCombo.h"
- #include "CtrlEditString.h"
- #include "CtrlEditFloat.h"
- #include "CtrlEditBoolean.h"
- #include "CtrlBrowseFile.h"
- #include "CtrlAxisRadio.h"
- #include "WndAnimationFrames.h"
- #include "WndTestAnimation.h"
- #include "WndDisplayTexture.h"
- #include "PrimitiveHistoryCombo.h"
- #include "EntitySelectionListBox.h"
- #include "CSGDesitnationCombo.h"
- #include "TriangularisationCombo.h"
- #include "EditMipSwitchDistance.h"
- #include "ActiveTextureWnd.h"
- #include "BrushPaletteWnd.h"
- #include "CustomComboWnd.h"
- #include "TerrainInterface.h"
- #include "TerrainEditing.h"
- #include "WndTerrainTilePalette.h"
- #include "ViewTexture.h"
- #include "ColorPaletteWnd.h"
- #include "ToolTipWnd.h"
- #include "ColoredButton.h"
- #include "CtrlEditFlags.h"
- #include "DlgEditFloat.h"
- #include "DlgStretchChildOffset.h"
- #include "DlgFilterPolygonSelection.h"
- #include "DlgFilterVertexSelection.h"
- #include "DlgAllignVertices.h"
- #include "DlgSnapVertex.h"
- #include "DlgWorldSettings.h"
- #include "DlgDisplaceMapSize.h"
- #include "DlgSelectByName.h"
- #include "DlgRenderingPreferences.h"
- #include "DlgPgGlobal.h"
- #include "DlgPgTerrain.h"
- #include "DlgPgPosition.h"
- #include "DlgPgPrimitive.h"
- #include "DlgPgPolygon.h"
- #include "DlgPgShadow.h"
- #include "DlgPgSector.h"
- #include "DlgPgTexture.h"
- #include "DlgPgRenderingStatistics.h"
- #include "DlgAutoDeltaCSG.h"
- #include "DlgProgress.h"
- #include "DlgLightAnimationEditor.h"
- #include "DlgTreeShortcuts.h"
- #include "DlgBrowseByClass.h"
- #include "DlgNumericAlpha.h"
- #include "DlgMirrorAndStretch.h"
- #include "DlgComment.h"
- #include "DlgAutTexturize.h"
- #include "DlgEditTerrainBrush.h"
- #include "DlgEditTerrainLayer.h"
- #include "DlgTEOperationSettings.h"
- #include "DlgTerrainProperties.h"
- #include "DlgGenerateFBM.h"
- #include "InfoSheet.h"
- #include "VirtualTreeCtrl.h"
- #include "DlgCreateVirtualDirectory.h"
- #include "VirtualTreeNode.h"
- #include "BrowseWindow.h"
- #include "Browser.h"
- #include "InfoFrame.h"
- #include "PropertyComboBox.h"
- #include "PropertyComboBar.h"
- #include "DlgPreferences.h"
- #include "DlgLinkTree.h"
- #include "MainFrm.h"
- #include "ChildFrm.h"
- #include "WorldEditorDoc.h"
- #include "WorldEditorView.h"
- #include "SkyFloat.h"
- #endif // WORLDEDITOR_H
|