55 lines
1.5 KiB
C++
Executable File
55 lines
1.5 KiB
C++
Executable File
/**********************************************************************
|
|
*<
|
|
FILE: IStdDualVS.h
|
|
|
|
DESCRIPTION: Standard Dual VertexShader helper class interface definition
|
|
|
|
CREATED BY: Nikolai Sander, Discreet
|
|
|
|
HISTORY: created 10/11/00
|
|
|
|
*> Copyright (c) 2000, All Rights Reserved.
|
|
**********************************************************************/
|
|
|
|
#ifndef __ISTDDUALVS__H
|
|
#define __ISTDDUALVS__H
|
|
|
|
#include "IHardwareShader.h"
|
|
|
|
#define STD_DUAL_VERTEX_SHADER Class_ID(0x40e6b1a0, 0x549cbf06)
|
|
|
|
class VertexShaderCache
|
|
{
|
|
bool valid;
|
|
INode *node;
|
|
public:
|
|
VertexShaderCache(){ node = NULL; valid = false;}
|
|
~VertexShaderCache(){}
|
|
INode *GetNode() { return node;}
|
|
void SetNode(INode *node) { this->node = node;}
|
|
bool GetValid() { return valid;}
|
|
void SetValid(bool valid) { this->valid = valid;}
|
|
};
|
|
|
|
|
|
class IStdDualVSCallback
|
|
{
|
|
public:
|
|
virtual ReferenceTarget *GetRefTarg()=0;
|
|
virtual VertexShaderCache *CreateVertexShaderCache()=0;
|
|
virtual HRESULT InitValid(Mesh* mesh, INode *node)=0;
|
|
virtual HRESULT InitValid(MNMesh* mnmesh, INode *node)=0;
|
|
};
|
|
|
|
class IStdDualVS : public IVertexShader, public ReferenceMaker
|
|
{
|
|
public:
|
|
virtual ~IStdDualVS(){};
|
|
virtual void SetCallback(IStdDualVSCallback *callback)=0;
|
|
virtual int FindNodeIndex(INode *node)=0;
|
|
virtual Class_ID ClassID(){ return STD_DUAL_VERTEX_SHADER;}
|
|
virtual SClass_ID SuperClassID() { return REF_MAKER_CLASS_ID;}
|
|
virtual void DeleteThis() { delete this; }
|
|
};
|
|
|
|
#endif |