You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
210 lines
4.5 KiB
210 lines
4.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $Workfile: $ |
|
// $Date: $ |
|
// |
|
//----------------------------------------------------------------------------- |
|
// $Log: $ |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef MATSYSWIN_H |
|
#define MATSYSWIN_H |
|
#pragma once |
|
|
|
|
|
#include <mxtk/mxMatSysWindow.h> |
|
#include "materialsystem/imaterialsystem.h" |
|
#include "faceposertoolwindow.h" |
|
#include "interface.h" |
|
|
|
|
|
class MatSysWindow : public mxMatSysWindow, public IFacePoserToolWindow |
|
{ |
|
typedef mxMatSysWindow BaseClass; |
|
public: |
|
|
|
// CREATORS |
|
MatSysWindow( mxWindow *parent, int x, int y, int w, int h, const char *label, int style ); |
|
~MatSysWindow( ); |
|
|
|
// MANIPULATORS |
|
virtual int handleEvent( mxEvent *event ); |
|
virtual void draw( ); |
|
|
|
virtual void redraw(); |
|
|
|
void EnableStickySnapshotMode( void ); |
|
void DisableStickySnapshotMode( void ); |
|
void PushSnapshotMode( int nSnapShotSize ); |
|
void PopSnapshotMode( void ); |
|
|
|
void TakeSnapshotRect( const char *pFilename, int x, int y, int w, int h ); |
|
bool IsSuppressingResize( void ); |
|
void SuppressResize( bool suppress ); |
|
|
|
void TakeScreenShot(const char *filename); |
|
|
|
void Frame( void ); |
|
void DrawFrame( void ); |
|
|
|
void SuppressBufferSwap( bool bSuppress ); |
|
|
|
void *m_hWnd; |
|
|
|
private: |
|
bool m_bSuppressResize; |
|
bool m_bSuppressSwap; |
|
|
|
// stack and sticky window mode |
|
int m_stickyDepth; |
|
bool m_bIsSticky; |
|
int m_snapshotDepth; |
|
WINDOWPLACEMENT m_wp; |
|
HCURSOR m_hPrevCursor; |
|
}; |
|
|
|
extern MatSysWindow *g_pMatSysWindow; |
|
|
|
extern IMaterialSystem *g_pMaterialSystem; |
|
extern IMaterial *g_materialBackground; |
|
extern IMaterial *g_materialWireframe; |
|
extern IMaterial *g_materialWireframe; |
|
extern IMaterial *g_materialWireframeVertexColor; |
|
extern IMaterial *g_materialWireframeVertexColorNoCull; |
|
extern IMaterial *g_materialDebugCopyBaseTexture; |
|
extern IMaterial *g_materialFlatshaded; |
|
extern IMaterial *g_materialSmoothshaded; |
|
extern IMaterial *g_materialBones; |
|
extern IMaterial *g_materialLines; |
|
extern IMaterial *g_materialFloor; |
|
|
|
|
|
#if 0 |
|
|
|
typedef struct |
|
{ |
|
int width; |
|
int height; |
|
int bpp; |
|
int flags; |
|
int frequency; |
|
} screen_res_t; |
|
|
|
|
|
|
|
typedef struct |
|
{ |
|
int width; |
|
int height; |
|
int bpp; |
|
} devinfo_t; |
|
|
|
|
|
|
|
class MaterialSystemApp |
|
{ |
|
public: |
|
|
|
MaterialSystemApp(); |
|
~MaterialSystemApp(); |
|
|
|
void Term(); |
|
|
|
// Post a message to shutdown the app. |
|
void AppShutdown(); |
|
|
|
int WinMain(void *hInstance, void *hPrevInstance, char *szCmdLine, int iCmdShow); |
|
long WndProc(void *hwnd, long iMsg, long wParam, long lParam); |
|
|
|
int FindNumParameter(const char *s, int defaultVal=-1); |
|
bool FindParameter(const char *s); |
|
const char* FindParameterArg(const char *s); |
|
|
|
void SetTitleText(PRINTF_FORMAT_STRING const char *fmt, ...); |
|
|
|
|
|
private: |
|
|
|
bool InitMaterialSystem(); |
|
void Clear(); |
|
|
|
bool CreateMainWindow(int width, int height, int bpp, bool fullscreen); |
|
|
|
void RenderScene(); |
|
|
|
void MouseCapture(); |
|
void MouseRelease(); |
|
|
|
void GetParameters(); |
|
|
|
|
|
public: |
|
IMaterialSystem *m_pMaterialSystem; |
|
void *m_hMaterialSystemInst; |
|
|
|
devinfo_t m_DevInfo; |
|
|
|
void *m_hInstance; |
|
int m_iCmdShow; |
|
void *m_hWnd; |
|
void *m_hDC; |
|
bool m_bActive; |
|
bool m_bFullScreen; |
|
int m_width; |
|
int m_height; |
|
int m_centerx; // for mouse offset calculations |
|
int m_centery; |
|
int m_bpp; |
|
BOOL m_bChangeBPP; |
|
BOOL m_bAllowSoft; |
|
BOOL m_bPaused; |
|
int m_glnWidth; |
|
int m_glnHeight; |
|
float m_gldAspect; |
|
float m_NearClip; |
|
float m_FarClip; |
|
float m_fov; |
|
|
|
screen_res_t *m_pResolutions; |
|
int m_iResCount; |
|
|
|
int m_iVidMode; |
|
}; |
|
|
|
|
|
// ---------------------------------------------------------------------------------------- // |
|
// Global functions |
|
// ---------------------------------------------------------------------------------------- // |
|
|
|
// Show an error dialog and quit. |
|
bool Sys_Error(PRINTF_FORMAT_STRING const char *pMsg, ...); |
|
|
|
// Print to the trace window. |
|
void con_Printf(PRINTF_FORMAT_STRING const char *pMsg, ...); |
|
|
|
// Returns true if the key is down. |
|
bool IsKeyDown(char key); |
|
|
|
|
|
|
|
extern MaterialSystemApp g_MaterialSystemApp; |
|
|
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
extern unsigned int g_Time; |
|
|
|
#ifdef __cplusplus |
|
}; |
|
#endif |
|
|
|
|
|
#endif |
|
|
|
#endif // GLAPP_H
|
|
|