123
This commit is contained in:
176
Editor/2DViewport.h
Normal file
176
Editor/2DViewport.h
Normal file
@@ -0,0 +1,176 @@
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Crytek Engine Source File.
|
||||
// Copyright (C), Crytek Studios, 2002.
|
||||
// -------------------------------------------------------------------------
|
||||
// File name: 2dviewport.h
|
||||
// Version: v1.00
|
||||
// Created: 5/7/2002 by Timur.
|
||||
// Compilers: Visual Studio.NET
|
||||
// Description:
|
||||
// -------------------------------------------------------------------------
|
||||
// History:
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef __2dviewport_h__
|
||||
#define __2dviewport_h__
|
||||
|
||||
#if _MSC_VER > 1000
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "Viewport.h"
|
||||
|
||||
/** 2D Viewport used mostly for indoor editing, Front/Top/Left viewports.
|
||||
*/
|
||||
class C2DViewport : public CViewport
|
||||
{
|
||||
DECLARE_DYNCREATE(C2DViewport)
|
||||
public:
|
||||
C2DViewport();
|
||||
virtual ~C2DViewport();
|
||||
|
||||
virtual void SetType( EViewportType type );
|
||||
virtual EViewportType GetType() { return m_viewType; }
|
||||
|
||||
virtual void ResetContent();
|
||||
virtual void UpdateContent( int flags );
|
||||
|
||||
// Called every frame to update viewport.
|
||||
virtual void Update();
|
||||
|
||||
//! Map world space position to viewport position.
|
||||
virtual CPoint WorldToView( Vec3d wp );
|
||||
//! Map viewport position to world space position.
|
||||
virtual Vec3d ViewToWorld( CPoint vp,bool *collideWithTerrain=0,bool onlyTerrain=false );
|
||||
//! Map viewport position to world space ray from camera.
|
||||
virtual void ViewToWorldRay( CPoint vp,Vec3 &raySrc,Vec3 &rayDir );
|
||||
|
||||
virtual void OnTitleMenu( CMenu &menu );
|
||||
virtual void OnTitleMenuCommand( int id );
|
||||
|
||||
virtual void DrawBrush( DisplayContext &dc,struct SBrush *brush,const Matrix44 &brushTM,int flags );
|
||||
virtual void DrawTextLabel( DisplayContext &dc,const Vec3& pos,float size,const CFColor& color,const char *text );
|
||||
|
||||
virtual bool HitTest( CPoint point,ObjectHitInfo &hitInfo,int flags=0 );
|
||||
virtual bool IsBoundsVisible( const BBox &box ) const;
|
||||
|
||||
Vec3d SnapToGrid( Vec3d vec );
|
||||
|
||||
// ovverided from CViewport.
|
||||
float GetScreenScaleFactor( const Vec3 &worldPoint );
|
||||
|
||||
// Overrided from CViewport.
|
||||
void OnDragSelectRectangle( CPoint p1,CPoint p2,bool bNormilizeRect=false );
|
||||
void CenterOnSelection();
|
||||
|
||||
Vec3 GetCPVector( const Vec3 &p1,const Vec3 &p2 );
|
||||
|
||||
/** Get 2D viewports origin.
|
||||
*/
|
||||
Vec3 GetOrigin2D() const;
|
||||
|
||||
/** Assign 2D viewports origin.
|
||||
*/
|
||||
void SetOrigin2D( const Vec3 &org );
|
||||
|
||||
protected:
|
||||
enum EViewportAxis
|
||||
{
|
||||
VPA_XY,
|
||||
VPA_XZ,
|
||||
VPA_YZ,
|
||||
};
|
||||
|
||||
void SetAxis( EViewportAxis axis );
|
||||
|
||||
// Scrolling / zooming related
|
||||
virtual void SetScrollOffset( float x,float y,bool bLimits=true );
|
||||
virtual void GetScrollOffset( float &x,float &y ); // Only x and y components used.
|
||||
|
||||
void SetZoom( float fZoomFactor,CPoint center );
|
||||
|
||||
// overrides from CViewport.
|
||||
void SetConstrPlane( CPoint cursor,const Matrix44 &xform );
|
||||
|
||||
//! Calculate view transformation matrix.
|
||||
virtual void CalculateViewTM();
|
||||
|
||||
// Render
|
||||
void Render();
|
||||
|
||||
// Draw everything.
|
||||
virtual void Draw( DisplayContext &dc );
|
||||
|
||||
// Draw elements of viewport.
|
||||
void DrawGrid( DisplayContext &dc,bool bNoXNumbers=false );
|
||||
void DrawAxis( DisplayContext &dc );
|
||||
void DrawSelection( DisplayContext &dc );
|
||||
void DrawObjects( DisplayContext &dc );
|
||||
void DrawViewerMarker( DisplayContext &dc );
|
||||
|
||||
BBox GetWorldBounds( CPoint p1,CPoint p2 );
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//! Get current screen matrix.
|
||||
//! Screen matrix transform from World space to Screen space.
|
||||
const Matrix44& GetScreenTM() const { return m_screenTM; };
|
||||
|
||||
//{{AFX_MSG(C2DViewport)
|
||||
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
|
||||
afx_msg void OnMButtonDown(UINT nFlags, CPoint point);
|
||||
afx_msg void OnMButtonUp(UINT nFlags, CPoint point);
|
||||
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
|
||||
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
|
||||
afx_msg void OnSize(UINT nType, int cx, int cy);
|
||||
afx_msg BOOL OnEraseBkgnd(CDC* pDC);
|
||||
afx_msg void OnPaint();
|
||||
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
|
||||
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
|
||||
afx_msg void OnRButtonUp(UINT nFlags, CPoint point);
|
||||
afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt);
|
||||
afx_msg void OnDestroy();
|
||||
//}}AFX_MSG
|
||||
DECLARE_MESSAGE_MAP()
|
||||
|
||||
protected:
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
// Variables.
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
IRenderer* m_renderer;
|
||||
|
||||
//! XY/XZ/YZ mode of this 2D viewport.
|
||||
EViewportType m_viewType;
|
||||
EViewportAxis m_axis;
|
||||
|
||||
//! Axis to cull normals with in this Viewport.
|
||||
int m_cullAxis;
|
||||
|
||||
// Viewport origin point.
|
||||
Vec3 m_origin2D;
|
||||
|
||||
// Scrolling / zooming related
|
||||
CPoint m_cMousePos;
|
||||
CPoint m_RMouseDownPos;
|
||||
|
||||
float m_prevZoomFactor;
|
||||
CSize m_prevScrollOffset;
|
||||
|
||||
CRect m_rcSelect;
|
||||
CRect m_rcClient;
|
||||
|
||||
BBox m_displayBounds;
|
||||
|
||||
//! True if should display terrain.
|
||||
bool m_bShowTerrain;
|
||||
|
||||
Matrix44 m_screenTM;
|
||||
|
||||
float m_gridAlpha;
|
||||
COLORREF m_colorGridText;
|
||||
COLORREF m_colorAxisText;
|
||||
COLORREF m_colorBackground;
|
||||
};
|
||||
|
||||
#endif // __2dviewport_h__
|
||||
Reference in New Issue
Block a user