00001 /********************************************************************** 00002 *< 00003 FILE: IRTShaderNode.h 00004 00005 DESCRIPTION: Interface for a shader node as part of the shade tree 00006 including Management 00007 00008 CREATED BY: Neil Hazzard 00009 00010 HISTORY: created March 8th, 2007 00011 00012 *> Copyright (c) 2007, All Rights Reserved. 00013 **********************************************************************/ 00014 #pragma once 00015 #include <WTypes.h> 00016 #include "export.h" 00017 #include "MaxHeap.h" 00018 #include "strbasic.h" 00019 00020 // forward declarations 00021 class Animatable; 00022 class INode; 00023 class Mesh; 00024 class MNMesh; 00025 00026 00028 00039 class IRTShaderNode : public MaxHeapOperators 00040 { 00041 public: 00048 virtual bool SetRenderObjects(INode * node, Mesh * mesh)=0; 00049 00056 virtual bool SetRenderObjects(INode * node, MNMesh * mnmesh)=0; 00057 00066 virtual bool DrawObjects() =0; 00067 00075 virtual void RegisterGraphicsWindow(LPVOID gfxWindow)=0; 00076 }; 00077 00079 00084 class IRTShaderManager: public MaxHeapOperators 00085 { 00086 public: 00092 virtual IRTShaderNode * AddShaderNode(Animatable* anim) =0; 00093 00097 virtual void RemoveShaderNode(IRTShaderNode* shadeNode)=0; 00098 00105 virtual IRTShaderNode * FindShaderNode(Animatable * anim)=0; 00106 00107 00115 DllExport static IRTShaderManager * GetRTShaderManager(); 00116 }; 00117 00119 class IRTShaderManager2 : public IRTShaderManager 00120 { 00121 00122 public: 00129 virtual const MCHAR * GetShaderCode(Animatable * anim)=0; 00130 00138 DllExport static IRTShaderManager2 * GetRTShaderManager2(); 00139 00140 };