PixelLightAPI
.
|
00001 /*********************************************************\ 00002 * File: SNLoadScreenPL.h * 00003 * 00004 * Copyright (C) 2002-2011 The PixelLight Team (http://www.pixellight.org/) 00005 * 00006 * This file is part of PixelLight. 00007 * 00008 * PixelLight is free software: you can redistribute it and/or modify 00009 * it under the terms of the GNU Lesser General Public License as published by 00010 * the Free Software Foundation, either version 3 of the License, or 00011 * (at your option) any later version. 00012 * 00013 * PixelLight is distributed in the hope that it will be useful, 00014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00016 * GNU Lesser General Public License for more details. 00017 * 00018 * You should have received a copy of the GNU Lesser General Public License 00019 * along with PixelLight. If not, see <http://www.gnu.org/licenses/>. 00020 \*********************************************************/ 00021 00022 00023 #ifndef __PLENGINE_COMPOSITING_LOADSCREENPL_H__ 00024 #define __PLENGINE_COMPOSITING_LOADSCREENPL_H__ 00025 #pragma once 00026 00027 00028 //[-------------------------------------------------------] 00029 //[ Includes ] 00030 //[-------------------------------------------------------] 00031 #include <PLRenderer/Material/MaterialHandler.h> 00032 #include "PLEngine/Compositing/LoadScreen/SNLoadScreenBase.h" 00033 00034 00035 //[-------------------------------------------------------] 00036 //[ Namespace ] 00037 //[-------------------------------------------------------] 00038 namespace PLEngine { 00039 00040 00041 //[-------------------------------------------------------] 00042 //[ Classes ] 00043 //[-------------------------------------------------------] 00044 /** 00045 * @brief 00046 * PixelLight load screen scene node 00047 */ 00048 class SNLoadScreenPL : public SNLoadScreenBase { 00049 00050 00051 //[-------------------------------------------------------] 00052 //[ Public definitions ] 00053 //[-------------------------------------------------------] 00054 public: 00055 /** 00056 * @brief 00057 * Clear flags 00058 */ 00059 enum EClearFlags { 00060 Color = 1<<0, /**< Clear color buffer */ 00061 Depth = 1<<1, /**< Clear depth buffer */ 00062 Stencil = 1<<2 /**< Clear stencil buffer */ 00063 }; 00064 pl_enum(EClearFlags) 00065 pl_enum_value(Color, "Clear color buffer") 00066 pl_enum_value(Depth, "Clear depth buffer") 00067 pl_enum_value(Stencil, "Clear stencil buffer") 00068 pl_enum_end 00069 00070 00071 //[-------------------------------------------------------] 00072 //[ RTTI interface ] 00073 //[-------------------------------------------------------] 00074 pl_class(PL_RTTI_EXPORT, SNLoadScreenPL, "PLEngine", PLEngine::SNLoadScreenBase, "Load screen scene node") 00075 // Attributes 00076 pl_attribute(ClearFlags, pl_flag_type(EClearFlags), Color|Depth, ReadWrite, DirectValue, "Clear flags", "") 00077 pl_attribute(ClearColor, PLGraphics::Color4, PLGraphics::Color4(0.0f, 0.0f, 0.0f, 0.0f), ReadWrite, DirectValue, "Clear color (r/g/b/a)", "") 00078 // Overwritten SceneNode attributes 00079 pl_attribute(Flags, pl_flag_type(EFlags), NoCulling, ReadWrite, GetSet, "Flags", "") 00080 // Constructors 00081 pl_constructor_0(DefaultConstructor, "Default constructor", "") 00082 pl_class_end 00083 00084 00085 //[-------------------------------------------------------] 00086 //[ Public functions ] 00087 //[-------------------------------------------------------] 00088 public: 00089 /** 00090 * @brief 00091 * Default constructor 00092 */ 00093 SNLoadScreenPL(); 00094 00095 /** 00096 * @brief 00097 * Destructor 00098 */ 00099 virtual ~SNLoadScreenPL(); 00100 00101 00102 //[-------------------------------------------------------] 00103 //[ Private functions ] 00104 //[-------------------------------------------------------] 00105 private: 00106 /** 00107 * @brief 00108 * Free's the used materials 00109 */ 00110 void FreeMaterials(); 00111 00112 00113 //[-------------------------------------------------------] 00114 //[ Private data ] 00115 //[-------------------------------------------------------] 00116 private: 00117 PLRenderer::MaterialHandler m_cLogoMaterial; 00118 00119 00120 //[-------------------------------------------------------] 00121 //[ Public virtual SceneNode functions ] 00122 //[-------------------------------------------------------] 00123 public: 00124 PL_API virtual void DrawPost(PLRenderer::Renderer &cRenderer, const PLScene::VisNode *pVisNode = nullptr) override; 00125 00126 00127 }; 00128 00129 00130 //[-------------------------------------------------------] 00131 //[ Namespace ] 00132 //[-------------------------------------------------------] 00133 } // PLEngine 00134 00135 00136 #endif // __PLENGINE_COMPOSITING_LOADSCREENPL_H__
|