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
|