511 lines
16 KiB
C
511 lines
16 KiB
C
|
//========= Copyright <20> 1996-2005, Valve Corporation, All rights reserved. ============//
|
|||
|
//
|
|||
|
// Purpose:
|
|||
|
//
|
|||
|
//=============================================================================//
|
|||
|
|
|||
|
#ifndef SCULPTOPTIONS_H
|
|||
|
#define SCULPTOPTIONS_H
|
|||
|
#ifdef _WIN32
|
|||
|
#pragma once
|
|||
|
#endif
|
|||
|
|
|||
|
#include "disppaint.h"
|
|||
|
#include "afxwin.h"
|
|||
|
#include "afxcmn.h"
|
|||
|
|
|||
|
class CMapView3D;
|
|||
|
class CPaintSculptDlg;
|
|||
|
|
|||
|
class CSculptTool
|
|||
|
{
|
|||
|
public:
|
|||
|
CSculptTool();
|
|||
|
~CSculptTool();
|
|||
|
|
|||
|
void SetPaintOwner( CPaintSculptDlg *pOwner ) { m_PaintOwner = pOwner; }
|
|||
|
|
|||
|
virtual bool BeginPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual bool Paint( CMapView3D *pView, const Vector2D &vPoint, SpatialPaintData_t &SpatialData );
|
|||
|
virtual void RenderTool3D(CRender3D *pRender) = 0;
|
|||
|
virtual bool OnLMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnLMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnMouseMove3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnLButtonUpDialog(UINT nFlags, CPoint point) { return false; }
|
|||
|
virtual bool OnLButtonDownDialog(UINT nFlags, CPoint point) { return false; }
|
|||
|
virtual bool OnMouseMoveDialog(UINT nFlags, CPoint point) { return false; }
|
|||
|
|
|||
|
protected:
|
|||
|
|
|||
|
// Painting.
|
|||
|
virtual bool PrePaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual bool PostPaint( bool bAutoSew );
|
|||
|
virtual bool DoPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual void DoPaintOperation( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp ) = 0;
|
|||
|
|
|||
|
bool GetStartingSpot( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
|
|||
|
bool IsPointInScreenCircle( CMapView3D *pView, CMapDisp *pDisp, CMapDisp *pOrigDisp, int nVertIndex, bool bUseOrigDisplacement = true, bool bUseCurrentPosition = false, float *pflLengthPercent = NULL );
|
|||
|
|
|||
|
void DoPaintSmooth( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp );
|
|||
|
bool PaintSphereDispBBoxOverlap( const Vector &vCenter, float flRadius, const Vector &vBBoxMin, const Vector &vBBoxMax );
|
|||
|
bool IsInSphereRadius( const Vector &vCenter, float flRadius2, const Vector &vPos, float &flDistance2 );
|
|||
|
float CalcSmoothRadius2( const Vector &vPoint );
|
|||
|
bool DoPaintSmoothOneOverExp( const Vector &vNewCenter, Vector &vPaintPos );
|
|||
|
|
|||
|
void AddToUndo( CMapDisp **pDisp );
|
|||
|
|
|||
|
void DrawDirection( CRender3D *pRender, Vector vDirection, Color Towards, Color Away );
|
|||
|
void DuplicateSelectedDisp( );
|
|||
|
void PrepareDispForPainting( );
|
|||
|
bool FindCollisionIntercept( CCamera *pCamera, const Vector2D &vPoint, bool bUseOrigPosition, Vector &vCollisionPoint, Vector &vCollisionNormal, float &vCollisionIntercept,
|
|||
|
int *pnCollideDisplacement = NULL, int *pnCollideTri = NULL );
|
|||
|
|
|||
|
private:
|
|||
|
void DetermineKeysDown();
|
|||
|
|
|||
|
protected:
|
|||
|
static bool MapDispLessFunc( EditDispHandle_t const &a, EditDispHandle_t const &b )
|
|||
|
{
|
|||
|
return a < b;
|
|||
|
}
|
|||
|
|
|||
|
static CUtlMap<EditDispHandle_t, CMapDisp *> m_OrigMapDisp;
|
|||
|
|
|||
|
Vector m_StartingCollisionPoint, m_StartingCollisionNormal, m_OriginalCollisionPoint, m_OriginalCollisionNormal, m_CurrentCollisionPoint, m_CurrentCollisionNormal;
|
|||
|
float m_StartingCollisionIntercept, m_OriginalCollisionIntercept, m_CurrentCollisionIntercept;
|
|||
|
float m_StartingProjectedRadius, m_OriginalProjectedRadius, m_CurrentProjectedRadius;
|
|||
|
bool m_OriginalCollisionValid, m_CurrentCollisionValid;
|
|||
|
|
|||
|
Vector2D m_MousePoint;
|
|||
|
bool m_bLMBDown; // left mouse button state
|
|||
|
bool m_bRMBDown; // right mouse button state
|
|||
|
bool m_bAltDown, m_bCtrlDown, m_bShiftDown;
|
|||
|
|
|||
|
bool m_ValidPaintingSpot;
|
|||
|
|
|||
|
float m_BrushSize;
|
|||
|
|
|||
|
CPaintSculptDlg *m_PaintOwner;
|
|||
|
|
|||
|
SpatialPaintData_t m_SpatialData;
|
|||
|
};
|
|||
|
|
|||
|
class CSculptPainter : public CSculptTool
|
|||
|
{
|
|||
|
public:
|
|||
|
CSculptPainter();
|
|||
|
~CSculptPainter();
|
|||
|
|
|||
|
virtual bool BeginPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual bool Paint( CMapView3D *pView, const Vector2D &vPoint, SpatialPaintData_t &spatialData );
|
|||
|
virtual bool OnLMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnLMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnMouseMove3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
|
|||
|
protected:
|
|||
|
virtual bool DoSizing( const Vector2D &vPoint );
|
|||
|
|
|||
|
bool m_InPaintingMode;
|
|||
|
bool m_InSizingMode;
|
|||
|
Vector2D m_StartSizingPoint;
|
|||
|
float m_OrigBrushSize;
|
|||
|
};
|
|||
|
|
|||
|
class CSculptPushOptions : public CDialog, public CSculptPainter
|
|||
|
{
|
|||
|
DECLARE_DYNAMIC(CSculptPushOptions)
|
|||
|
|
|||
|
public:
|
|||
|
CSculptPushOptions(CWnd* pParent = NULL); // standard constructor
|
|||
|
virtual ~CSculptPushOptions();
|
|||
|
|
|||
|
virtual BOOL OnInitDialog( void );
|
|||
|
virtual void OnOK();
|
|||
|
virtual void OnCancel();
|
|||
|
|
|||
|
// Dialog Data
|
|||
|
enum { IDD = IDD_DISP_SCULPT_PUSH_OPTIONS };
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
OFFSET_MODE_ADAPTIVE,
|
|||
|
OFFSET_MODE_ABSOLUTE
|
|||
|
} OffsetMode;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
NORMAL_MODE_BRUSH_CENTER,
|
|||
|
NORMAL_MODE_SCREEN,
|
|||
|
NORMAL_MODE_X,
|
|||
|
NORMAL_MODE_Y,
|
|||
|
NORMAL_MODE_Z,
|
|||
|
NORMAL_MODE_SELECTED
|
|||
|
} NormalMode;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
DENSITY_MODE_ADDITIVE,
|
|||
|
DENSITY_MODE_ATTENUATED,
|
|||
|
} DensityMode;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|||
|
|
|||
|
DECLARE_MESSAGE_MAP()
|
|||
|
|
|||
|
public:
|
|||
|
afx_msg void OnCbnSelchangeIdcSculptPushOptionNormalMode();
|
|||
|
CComboBox m_OffsetModeControl;
|
|||
|
CEdit m_OffsetDistanceControl;
|
|||
|
CEdit m_OffsetAmountControl;
|
|||
|
CEdit m_SmoothAmountControl;
|
|||
|
CEdit m_FalloffPositionControl;
|
|||
|
CEdit m_FalloffFinalControl;
|
|||
|
CComboBox m_DensityModeControl;
|
|||
|
CComboBox m_NormalModeControl;
|
|||
|
afx_msg void OnCbnSelchangeSculptPushOptionOffsetMode();
|
|||
|
|
|||
|
private:
|
|||
|
OffsetMode m_OffsetMode;
|
|||
|
float m_OffsetDistance, m_OffsetAmount;
|
|||
|
NormalMode m_NormalMode;
|
|||
|
DensityMode m_DensityMode;
|
|||
|
float m_Direction;
|
|||
|
float m_SmoothAmount;
|
|||
|
Vector m_SelectedNormal;
|
|||
|
float m_flFalloffSpot;
|
|||
|
float m_flFalloffEndingValue;
|
|||
|
|
|||
|
void GetPaintAxis( CCamera *pCamera, const Vector2D &vPoint, Vector &vPaintAxis );
|
|||
|
|
|||
|
public:
|
|||
|
virtual bool BeginPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual void RenderTool3D(CRender3D *pRender);
|
|||
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void DoPaintOperation( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp );
|
|||
|
void DoSmoothOperation( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp );
|
|||
|
|
|||
|
public:
|
|||
|
afx_msg void OnEnChangeSculptPushOptionOffsetDistance();
|
|||
|
afx_msg void OnCbnSelchangeSculptPushOptionDensityMode();
|
|||
|
afx_msg void OnEnKillfocusSculptPushOptionSmoothAmount();
|
|||
|
afx_msg void OnEnKillfocusSculptPushOptionOffsetAmount();
|
|||
|
afx_msg void OnEnKillfocusSculptPushOptionFalloffPosition();
|
|||
|
afx_msg void OnEnKillfocusSculptPushOptionFalloffFinal();
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
class CSculptCarveOptions : public CDialog, public CSculptPainter
|
|||
|
{
|
|||
|
DECLARE_DYNAMIC(CSculptCarveOptions)
|
|||
|
|
|||
|
public:
|
|||
|
CSculptCarveOptions(CWnd* pParent = NULL); // standard constructor
|
|||
|
virtual ~CSculptCarveOptions();
|
|||
|
|
|||
|
virtual BOOL OnInitDialog( void );
|
|||
|
virtual void OnOK();
|
|||
|
virtual void OnCancel();
|
|||
|
|
|||
|
// Dialog Data
|
|||
|
enum { IDD = IDD_DISP_SCULPT_CARVE_OPTIONS };
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
OFFSET_MODE_ADAPTIVE,
|
|||
|
OFFSET_MODE_ABSOLUTE
|
|||
|
} OffsetMode;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
NORMAL_MODE_BRUSH_CENTER,
|
|||
|
NORMAL_MODE_SCREEN,
|
|||
|
NORMAL_MODE_X,
|
|||
|
NORMAL_MODE_Y,
|
|||
|
NORMAL_MODE_Z,
|
|||
|
NORMAL_MODE_SELECTED
|
|||
|
} NormalMode;
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
DENSITY_MODE_ADDITIVE,
|
|||
|
DENSITY_MODE_ATTENUATED,
|
|||
|
} DensityMode;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|||
|
|
|||
|
DECLARE_MESSAGE_MAP()
|
|||
|
|
|||
|
public:
|
|||
|
CComboBox m_OffsetModeControl;
|
|||
|
CEdit m_OffsetDistanceControl;
|
|||
|
CEdit m_OffsetAmountControl;
|
|||
|
CEdit m_SmoothAmountControl;
|
|||
|
CComboBox m_DensityModeControl;
|
|||
|
CComboBox m_NormalModeControl;
|
|||
|
CStatic m_CarveBrushControl;
|
|||
|
|
|||
|
private:
|
|||
|
const static int MAX_SCULPT_SIZE = 100;
|
|||
|
const static int MAX_QUEUE_SIZE = 20;
|
|||
|
|
|||
|
OffsetMode m_OffsetMode;
|
|||
|
float m_OffsetDistance, m_OffsetAmount;
|
|||
|
NormalMode m_NormalMode;
|
|||
|
DensityMode m_DensityMode;
|
|||
|
float m_Direction;
|
|||
|
float m_SmoothAmount;
|
|||
|
Vector m_SelectedNormal;
|
|||
|
float m_BrushPoints[ MAX_SCULPT_SIZE ];
|
|||
|
int m_BrushLocation;
|
|||
|
Vector2D m_StartLine, m_EndLine;
|
|||
|
CUtlVector< Vector2D > m_DrawPoints;
|
|||
|
CUtlVector< Vector2D > m_DrawNormal;
|
|||
|
|
|||
|
CUtlVector< Vector2D > m_PointQueue;
|
|||
|
|
|||
|
|
|||
|
void GetPaintAxis( CCamera *pCamera, const Vector2D &vPoint, Vector &vPaintAxis );
|
|||
|
void AdjustBrush( int x, int y );
|
|||
|
void AdjustBrushCursor( int x, int y );
|
|||
|
bool CalculatePointNormal( int PointIndex, Vector2D &vNormal );
|
|||
|
bool CalculateQueuePoint( Vector2D &vPoint, Vector2D &vNormal );
|
|||
|
void AddQueuePoint( const Vector2D &vPoint, bool bDrawIt );
|
|||
|
|
|||
|
public:
|
|||
|
virtual bool BeginPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
// virtual bool Paint( CMapView3D *pView, const Vector2D &vPoint, SpatialPaintData_t &spatialData );
|
|||
|
virtual void RenderTool3D(CRender3D *pRender);
|
|||
|
virtual bool OnLMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnLMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnMouseMove3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
|
|||
|
protected:
|
|||
|
bool IsPointAffected( CMapView3D *pView, CMapDisp *pDisp, CMapDisp *pOrigDisp, int nVertIndex, int nBrushPoint, Vector2D &vViewVert, bool bUseOrigDisplacement = true, bool bUseCurrentPosition = false );
|
|||
|
virtual void DoPaintOperation( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp );
|
|||
|
|
|||
|
public:
|
|||
|
afx_msg void OnPaint();
|
|||
|
afx_msg void OnEnChangeSculptPushOptionOffsetDistance();
|
|||
|
afx_msg void OnCbnSelchangeSculptPushOptionDensityMode();
|
|||
|
afx_msg void OnEnKillfocusSculptPushOptionSmoothAmount();
|
|||
|
afx_msg void OnEnKillfocusSculptPushOptionOffsetAmount();
|
|||
|
afx_msg void OnCbnSelchangeIdcSculptPushOptionNormalMode();
|
|||
|
afx_msg void OnCbnSelchangeSculptPushOptionOffsetMode();
|
|||
|
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
|||
|
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
|||
|
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
|||
|
virtual BOOL PreTranslateMessage( MSG* pMsg );
|
|||
|
};
|
|||
|
|
|||
|
#if 0
|
|||
|
|
|||
|
class ITextureInternal;
|
|||
|
|
|||
|
// CSculptProjectOptions dialog
|
|||
|
|
|||
|
class CSculptProjectOptions : public CDialog, public CSculptTool
|
|||
|
{
|
|||
|
DECLARE_DYNAMIC(CSculptProjectOptions)
|
|||
|
|
|||
|
public:
|
|||
|
CSculptProjectOptions(CWnd* pParent = NULL); // standard constructor
|
|||
|
virtual ~CSculptProjectOptions();
|
|||
|
|
|||
|
// Dialog Data
|
|||
|
enum { IDD = IDD_DISP_SCULPT_PROJECT_OPTIONS };
|
|||
|
|
|||
|
public:
|
|||
|
virtual bool Paint( CMapView3D *pView, const Vector2D &vPoint, SpatialPaintData_t &spatialData );
|
|||
|
virtual void RenderTool3D(CRender3D *pRender);
|
|||
|
virtual bool OnLMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnLMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseUp3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
virtual bool OnMouseMove3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
|
|||
|
protected:
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
PROJECT_MODE_NONE,
|
|||
|
PROJECT_MODE_SIZE,
|
|||
|
PROJECT_MODE_POSITION,
|
|||
|
PROJECT_MODE_TILE,
|
|||
|
} ToolMode;
|
|||
|
|
|||
|
CFileDialog *m_FileDialog;
|
|||
|
unsigned char *m_ImagePixels;
|
|||
|
int m_Width, m_Height;
|
|||
|
ITextureInternal *m_pTexture;
|
|||
|
IMaterial *m_pMaterial;
|
|||
|
|
|||
|
Vector m_ProjectLocation, m_ProjectSize;
|
|||
|
Vector m_OriginalProjectLocation, m_OriginalProjectSize;
|
|||
|
int m_ProjectX, m_ProjectY, m_ProjectWidth, m_ProjectHeight;
|
|||
|
float m_TileWidth, m_TileHeight;
|
|||
|
float m_OriginalTileWidth, m_OriginalTileHeight;
|
|||
|
ToolMode m_ToolMode;
|
|||
|
Vector2D m_StartSizingPoint;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void DoPaintOperation( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp );
|
|||
|
virtual bool DoSizing( const Vector2D &vPoint );
|
|||
|
virtual bool DoPosition( const Vector2D &vPoint );
|
|||
|
virtual bool DoTiling( const Vector2D &vPoint );
|
|||
|
bool ReadImage( CString &FileName );
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|||
|
|
|||
|
DECLARE_MESSAGE_MAP()
|
|||
|
public:
|
|||
|
afx_msg void OnBnClickedLoadImage();
|
|||
|
public:
|
|||
|
CSliderCtrl m_ProjectSizeControl;
|
|||
|
public:
|
|||
|
afx_msg void OnNMCustomdrawProjectSize(NMHDR *pNMHDR, LRESULT *pResult);
|
|||
|
public:
|
|||
|
virtual BOOL OnInitDialog();
|
|||
|
public:
|
|||
|
CStatic m_ProjectSizeNumControl;
|
|||
|
};
|
|||
|
#endif
|
|||
|
|
|||
|
class CTextureButton : public CButton
|
|||
|
{
|
|||
|
public:
|
|||
|
CTextureButton( );
|
|||
|
|
|||
|
void SetTexture( IEditorTexture *pTexture );
|
|||
|
void SetSelected( bool bSelected );
|
|||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
|||
|
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
|
|||
|
|
|||
|
private:
|
|||
|
IEditorTexture *m_pTexure;
|
|||
|
bool m_bSelected;
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
class CColorButton : public CButton
|
|||
|
{
|
|||
|
public:
|
|||
|
CColorButton( );
|
|||
|
|
|||
|
void SetColor( float flRed, float flGreen, float flBlue );
|
|||
|
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
|
|||
|
virtual void DrawItem( LPDRAWITEMSTRUCT lpDrawItemStruct );
|
|||
|
|
|||
|
private:
|
|||
|
float m_flRed, m_flGreen, m_flBlue;
|
|||
|
|
|||
|
protected:
|
|||
|
DECLARE_MESSAGE_MAP()
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
class CSculptBlendOptions : public CDialog, public CSculptPainter
|
|||
|
{
|
|||
|
DECLARE_DYNAMIC(CSculptBlendOptions)
|
|||
|
|
|||
|
public:
|
|||
|
CSculptBlendOptions(CWnd* pParent = NULL); // standard constructor
|
|||
|
virtual ~CSculptBlendOptions();
|
|||
|
|
|||
|
virtual BOOL OnInitDialog( void );
|
|||
|
virtual void OnOK();
|
|||
|
virtual void OnCancel();
|
|||
|
|
|||
|
// Dialog Data
|
|||
|
enum { IDD = IDD_DISP_SCULPT_BLEND_OPTIONS };
|
|||
|
|
|||
|
typedef enum
|
|||
|
{
|
|||
|
COLOR_MODE_SINGLE,
|
|||
|
COLOR_MODE_RANGE,
|
|||
|
COLOR_MODE_OR,
|
|||
|
|
|||
|
COLOR_MODE_MAX
|
|||
|
} ColorMode;
|
|||
|
|
|||
|
protected:
|
|||
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|||
|
|
|||
|
DECLARE_MESSAGE_MAP()
|
|||
|
|
|||
|
public:
|
|||
|
|
|||
|
private:
|
|||
|
float m_Direction;
|
|||
|
float m_flFalloffSpot;
|
|||
|
float m_flFalloffEndingValue;
|
|||
|
int m_nLastCollideDisplacement;
|
|||
|
int m_nLastCollideTri;
|
|||
|
ColorMode m_ColorMode[ MAX_MULTIBLEND_CHANNELS ];
|
|||
|
int m_nSelectedTexture;
|
|||
|
Vector m_vStartDrawColor[ MAX_MULTIBLEND_CHANNELS ];
|
|||
|
Vector m_vEndDrawColor[ MAX_MULTIBLEND_CHANNELS ];
|
|||
|
int m_nDefaultFalloffPosition;
|
|||
|
int m_nDefaultFalloffFinal;
|
|||
|
int m_nDefaultBlendAmount;
|
|||
|
int m_nDefaultColorBlendAmount;
|
|||
|
int m_nDefaultAlphaBlendAmount;
|
|||
|
bool m_b4WayBlendMode;
|
|||
|
|
|||
|
public:
|
|||
|
virtual bool BeginPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual void RenderTool3D(CRender3D *pRender);
|
|||
|
virtual bool OnRMouseDown3D( CMapView3D *pView, UINT nFlags, const Vector2D &vPoint );
|
|||
|
|
|||
|
protected:
|
|||
|
virtual bool DoPaint( CMapView3D *pView, const Vector2D &vPoint );
|
|||
|
virtual void DoPaintOperation( CMapView3D *pView, const Vector2D &vPoint, CMapDisp *pDisp, CMapDisp *pOrigDisp );
|
|||
|
|
|||
|
void SelectTexture( int nTexture );
|
|||
|
void SetColorMode( ColorMode NewMode, bool bSetDialog );
|
|||
|
|
|||
|
public:
|
|||
|
CSliderCtrl m_BlendAmountControl;
|
|||
|
afx_msg void OnNMCustomdrawBlendAmount(NMHDR *pNMHDR, LRESULT *pResult);
|
|||
|
CStatic m_BlendAmountTextControl;
|
|||
|
afx_msg void OnShowWindow(BOOL bShow, UINT nStatus);
|
|||
|
CTextureButton m_TextureControl[ MAX_MULTIBLEND_CHANNELS ];
|
|||
|
CButton m_TextureMaskControl[ MAX_MULTIBLEND_CHANNELS ];
|
|||
|
CButton m_ColorMaskControl[ MAX_MULTIBLEND_CHANNELS ];
|
|||
|
afx_msg void OnBnClickedTextureButton1();
|
|||
|
afx_msg void OnBnClickedTextureButton2();
|
|||
|
afx_msg void OnBnClickedTextureButton3();
|
|||
|
afx_msg void OnBnClickedTextureButton4();
|
|||
|
afx_msg void ShrinkBrush();
|
|||
|
afx_msg void EnlargeBrush();
|
|||
|
afx_msg void OnBnClickedSetColor();
|
|||
|
afx_msg void OnBnClickedSetColor2();
|
|||
|
afx_msg void OnBnClickedBlendColorOperation();
|
|||
|
|
|||
|
CSliderCtrl m_ColorBlendAmountControl;
|
|||
|
CStatic m_ColorBlendAmountTextControl;
|
|||
|
CColorButton m_ColorStartControl;
|
|||
|
CColorButton m_ColorEndControl;
|
|||
|
afx_msg void OnNMCustomdrawColorBlendAmount(NMHDR *pNMHDR, LRESULT *pResult);
|
|||
|
CComboBox m_BlendColorOperationControl;
|
|||
|
afx_msg void OnCbnSelchangeBlendColorOperation();
|
|||
|
CSliderCtrl m_FalloffPositionControl;
|
|||
|
CSliderCtrl m_FalloffFinalControl;
|
|||
|
CSliderCtrl m_AlphaBlendAmountControl;
|
|||
|
CStatic m_AlphaBlendAmountTextControl;
|
|||
|
afx_msg void OnNMCustomdrawAlphaBlendAmount(NMHDR *pNMHDR, LRESULT *pResult);
|
|||
|
afx_msg void OnRButtonDblClk(UINT nFlags, CPoint point);
|
|||
|
};
|
|||
|
|
|||
|
|
|||
|
#endif // SCULPTOPTIONS_H
|