1 /*---------------------------------------------------------------------------*
2   Project:  NintendoWare
3   File:     gfx_UserRenderCommand.h
4 
5   Copyright (C)2009-2011 Nintendo/HAL Laboratory, Inc.  All rights reserved.
6 
7   These coded instructions, statements, and computer programs contain proprietary
8   information of Nintendo and/or its licensed developers and are protected by
9   national and international copyright laws. They may not be disclosed to third
10   parties or copied or duplicated in any form, in whole or in part, without the
11   prior written consent of Nintendo.
12 
13   The content herein is highly confidential and should be handled accordingly.
14 
15   $Revision: $
16  *---------------------------------------------------------------------------*/
17 
18 #ifndef NW_GFX_USERRENDERCOMMAND_H_
19 #define NW_GFX_USERRENDERCOMMAND_H_
20 
21 #include <nw/gfx/gfx_RenderElement.h>
22 
23 #include <functional>
24 
25 namespace nw
26 {
27 namespace gfx
28 {
29 
30 class UserRenderNode;
31 
32 //---------------------------------------------------------------------------
33 //! @brief レンダーキューの途中に独自の描画処理を割り込ませるためのクラスです。
34 //---------------------------------------------------------------------------
35 class UserRenderCommand : public RenderCommand
36 {
37 private:
38     NW_DISALLOW_COPY_AND_ASSIGN(UserRenderCommand);
39 
40 public:
41     //! @brief コマンドを呼び出します。
42     virtual void Invoke(RenderContext* renderContext) = 0;
43 
44     //! @brief ユーザ定義の描画ノードを設定します。
45     //
46     //! @param[in] userRenderNode ユーザ定義の描画ノードです。NULL を設定することで解除します。
SetUserRenderNode(UserRenderNode * userRenderNode)47     void SetUserRenderNode(UserRenderNode* userRenderNode)
48     {
49         m_Parent = userRenderNode;
50     }
51 
52     //! @brief ユーザ定義の描画ノードのポインタを取得します。
53     //
54     //! @return ユーザ定義の描画ノードのポインタを返します。
GetUserRenderNode()55     UserRenderNode* GetUserRenderNode() const
56     {
57         return m_Parent;
58     }
59 
60 protected:
61     //! コンストラクタです。
UserRenderCommand()62     UserRenderCommand() {}
63     //! デストラクタです。
~UserRenderCommand()64     virtual ~UserRenderCommand() {}
65 
66     UserRenderNode* m_Parent;
67 };
68 
69 //@}
70 
71 } // namespace gfx
72 } // namespace nw
73 
74 #endif // NW_GFX_USERRENDERCOMMAND_H_
75