IRTShaderNode.h

Go to the documentation of this file.
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 };