tge/lib/maxsdk40/IStdDualVS.h
2017-04-17 06:17:10 -06:00

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