123
This commit is contained in:
142
Editor/TerrainModifyTool.h
Normal file
142
Editor/TerrainModifyTool.h
Normal file
@@ -0,0 +1,142 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek Engine Source File.
|
||||
// Copyright (C), Crytek Studios, 2001.
|
||||
// -------------------------------------------------------------------------
|
||||
// File name: TerrainModifyTool.h
|
||||
// Version: v1.00
|
||||
// Created: 11/1/2002 by Timur.
|
||||
// Compilers: Visual C++ 6.0
|
||||
// Description: Terrain modification tool.
|
||||
// -------------------------------------------------------------------------
|
||||
// History:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __TerrainModifyTool_h__
|
||||
#define __TerrainModifyTool_h__
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "EditTool.h"
|
||||
|
||||
// {9BC941A8-44F1-4b91-B270-E7EF55167E48}
|
||||
DEFINE_GUID( TERRAIN_MODIFY_TOOL_GUID, 0x9bc941a8, 0x44f1, 0x4b91, 0xb2, 0x70, 0xe7, 0xef, 0x55, 0x16, 0x7e, 0x48);
|
||||
|
||||
enum BrushType
|
||||
{
|
||||
eBrushFlatten = 1,
|
||||
eBrushSmooth,
|
||||
eBrushRiseLower,
|
||||
eBrushTypeLast
|
||||
};
|
||||
|
||||
struct CTerrainBrush
|
||||
{
|
||||
// Type of this brush.
|
||||
BrushType type;
|
||||
//! Outside Radius of brush.
|
||||
float radius;
|
||||
//! Inside Radius of brush.
|
||||
float radiusInside;
|
||||
//! Height where to paint.
|
||||
float height;
|
||||
//! How hard this brush.
|
||||
float hardness;
|
||||
//! Is this brush have noise.
|
||||
bool bNoise;
|
||||
//! Scale of applied noise.
|
||||
float noiseScale;
|
||||
//! Frequency of applied noise.
|
||||
float noiseFreq;
|
||||
//! True if objects should be repositioned on modified terrain.
|
||||
bool bRepositionObjects;
|
||||
|
||||
CTerrainBrush() {
|
||||
type = eBrushFlatten;
|
||||
radius = 2;
|
||||
radiusInside = 1;
|
||||
height = 1;
|
||||
bNoise = false;
|
||||
hardness = 0.2f;
|
||||
noiseScale = 50;
|
||||
noiseFreq = 50;
|
||||
bRepositionObjects = false;
|
||||
}
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
class CTerrainModifyTool : public CEditTool
|
||||
{
|
||||
DECLARE_DYNCREATE(CTerrainModifyTool)
|
||||
public:
|
||||
CTerrainModifyTool();
|
||||
virtual ~CTerrainModifyTool();
|
||||
|
||||
//! Register this tool to editor system.
|
||||
static void RegisterTool( CRegistrationContext &rc );
|
||||
|
||||
virtual void BeginEditParams( IEditor *ie,int flags );
|
||||
virtual void EndEditParams();
|
||||
|
||||
virtual void Display( DisplayContext &dc );
|
||||
|
||||
// Ovverides from CEditTool
|
||||
bool MouseCallback( CViewport *view,EMouseEvent event,CPoint &point,int flags );
|
||||
|
||||
// Key down.
|
||||
bool OnKeyDown( CViewport *view,uint nChar,uint nRepCnt,uint nFlags );
|
||||
bool OnKeyUp( CViewport *view,uint nChar,uint nRepCnt,uint nFlags ) { return false; };
|
||||
bool OnSetCursor( CViewport *vp );
|
||||
|
||||
// Delete itself.
|
||||
void Release() { delete this; };
|
||||
|
||||
void SetActiveBrushType( BrushType type );
|
||||
BrushType GetActiveBrushType() const { return m_currentBrushType; }
|
||||
void SetBrush( const CTerrainBrush &brush ) { m_brush[m_currentBrushType] = brush; };
|
||||
void GetBrush( CTerrainBrush &brush ) const { brush = m_brush[m_currentBrushType]; };
|
||||
void EnableBrushNoise( bool enable ) { m_brush[m_currentBrushType].bNoise = enable; };
|
||||
|
||||
void Paint();
|
||||
|
||||
private:
|
||||
void UpdateUI();
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Commands.
|
||||
static void Command_Activate();
|
||||
static void Command_Flatten();
|
||||
static void Command_Smooth();
|
||||
static void Command_RiseLower();
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
Vec3 m_pointerPos;
|
||||
IEditor *m_ie;
|
||||
|
||||
int m_panelId;
|
||||
class CTerrainModifyPanel *m_panel;
|
||||
|
||||
static BrushType m_currentBrushType;
|
||||
static CTerrainBrush m_brush[eBrushTypeLast];
|
||||
CTerrainBrush *m_pBrush;
|
||||
|
||||
bool m_bSmoothOverride;
|
||||
bool m_bQueryHeightMode;
|
||||
bool m_bPaintingMode;
|
||||
bool m_bLowerTerrain;
|
||||
|
||||
CPoint m_MButtonDownPos;
|
||||
float m_prevRadius;
|
||||
float m_prevRadiusInside;
|
||||
float m_prevHeight;
|
||||
|
||||
HCURSOR m_hPickCursor;
|
||||
HCURSOR m_hPaintCursor;
|
||||
HCURSOR m_hFlattenCursor;
|
||||
HCURSOR m_hSmoothCursor;
|
||||
};
|
||||
|
||||
|
||||
#endif // __TerrainModifyTool_h__
|
||||
Reference in New Issue
Block a user