PixelLightAPI
.
|
00001 /*********************************************************\ 00002 * File: SNLoadScreen.h * 00003 * 00004 * Copyright (C) 2002-2012 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_LOADSCREEN_H__ 00024 #define __PLENGINE_COMPOSITING_LOADSCREEN_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 * Load screen scene node 00047 */ 00048 class SNLoadScreen : 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 * @brief 00072 * Scene node flags (SceneNode flags extension) 00073 */ 00074 enum EFlags { 00075 NoImageBlend = 1<<10 /**< Do not blend the images */ 00076 }; 00077 pl_enum(EFlags) 00078 pl_enum_base(SNLoadScreenBase::EFlags) 00079 pl_enum_value(NoImageBlend, "Do not blend the images") 00080 pl_enum_end 00081 00082 00083 //[-------------------------------------------------------] 00084 //[ RTTI interface ] 00085 //[-------------------------------------------------------] 00086 pl_class(PL_RTTI_EXPORT, SNLoadScreen, "PLEngine", PLEngine::SNLoadScreenBase, "Load screen scene node") 00087 // Attributes 00088 pl_attribute(ClearFlags, pl_flag_type(EClearFlags), Color|Depth, ReadWrite, DirectValue, "Clear flags", "") 00089 pl_attribute(ClearColor, PLGraphics::Color4, PLGraphics::Color4(0.0f, 0.0f, 0.0f, 0.0f), ReadWrite, DirectValue, "Clear color (r/g/b/a)", "") 00090 pl_attribute(Images, PLCore::uint8, 4, ReadWrite, DirectValue, "Number of images (1-4)", "Min='1' Max='4'") 00091 00092 // [TODO] New RTTI usage 00093 // DEFINE_VAR(PL_VAR_FILENAME, m_sScreenMaterial[0], "ScreenMaterial[0]", "Data/Materials/LoadScreen/0.mat", "Screen 0 material filename", "Type='Material Effect Image TextureAni'", "") 00094 // DEFINE_VAR(PL_VAR_FILENAME, m_sScreenMaterial[1], "ScreenMaterial[1]", "Data/Materials/LoadScreen/1.mat", "Screen 1 material filename", "Type='Material Effect Image TextureAni'", "") 00095 // DEFINE_VAR(PL_VAR_FILENAME, m_sScreenMaterial[2], "ScreenMaterial[2]", "Data/Materials/LoadScreen/2.mat", "Screen 2 material filename", "Type='Material Effect Image TextureAni'", "") 00096 // DEFINE_VAR(PL_VAR_FILENAME, m_sScreenMaterial[3], "ScreenMaterial[3]", "Data/Materials/LoadScreen/3.mat", "Screen 3 material filename", "Type='Material Effect Image TextureAni'", "") 00097 // DEFINE_VAR(PL_VAR_FILENAME, m_sBarBackMaterial, "BarBackMaterial", "Data/Materials/LoadScreen/BarBack.mat", "Bar back material filename", "Type='Material Effect Image TextureAni'", "") 00098 // DEFINE_VAR(PL_VAR_FILENAME, m_sBarMaterial[0], "BarMaterial[0]", "Data/Materials/LoadScreen/Bar0.mat", "Bar 0 material filename", "Type='Material Effect Image TextureAni'", "") 00099 // DEFINE_VAR(PL_VAR_FILENAME, m_sBarMaterial[1], "BarMaterial[1]", "Data/Materials/LoadScreen/Bar1.mat", "Bar 1 material filename", "Type='Material Effect Image TextureAni'", "") 00100 00101 pl_attribute(ImageX, float, 0.175f, ReadWrite, DirectValue, "Image x position 'screen space' between 0.0 and 1.0", "") 00102 pl_attribute(ImageY, float, 0.133f, ReadWrite, DirectValue, "Image y position 'screen space' between 0.0 and 1.0", "") 00103 pl_attribute(ImageWidth, float, 0.64f, ReadWrite, DirectValue, "Image width 'screen space' between 0.0 and 1.0", "") 00104 pl_attribute(ImageHeight, float, 0.853f, ReadWrite, DirectValue, "Image height 'screen space' between 0.0 and 1.0", "") 00105 pl_attribute(ImageColor, PLGraphics::Color4, PLGraphics::Color4::White, ReadWrite, DirectValue, "Image color", "") 00106 pl_attribute(BarX, float, 0.025f, ReadWrite, DirectValue, "Bar x position 'screen space' between 0.0 and 1.0", "") 00107 pl_attribute(BarY, float, 0.083f, ReadWrite, DirectValue, "Bar y position 'screen space' between 0.0 and 1.0", "") 00108 pl_attribute(BarWidth, float, 0.95f, ReadWrite, DirectValue, "Bar width 'screen space' between 0.0 and 1.0", "") 00109 pl_attribute(BarHeight, float, 0.066f, ReadWrite, DirectValue, "Bar height 'screen space' between 0.0 and 1.0", "") 00110 pl_attribute(BarColor, PLGraphics::Color4, PLGraphics::Color4::White, ReadWrite, DirectValue, "Bar color", "") 00111 // Overwritten SceneNode attributes 00112 pl_attribute(Flags, pl_flag_type(EFlags), NoCulling, ReadWrite, GetSet, "Flags", "") 00113 // Constructors 00114 pl_constructor_0(DefaultConstructor, "Default constructor", "") 00115 pl_class_end 00116 00117 00118 //[-------------------------------------------------------] 00119 //[ Public functions ] 00120 //[-------------------------------------------------------] 00121 public: 00122 /** 00123 * @brief 00124 * Default constructor 00125 */ 00126 SNLoadScreen(); 00127 00128 /** 00129 * @brief 00130 * Destructor 00131 */ 00132 virtual ~SNLoadScreen(); 00133 00134 00135 //[-------------------------------------------------------] 00136 //[ Private functions ] 00137 //[-------------------------------------------------------] 00138 private: 00139 /** 00140 * @brief 00141 * Free's the used materials 00142 */ 00143 void FreeMaterials(); 00144 00145 00146 //[-------------------------------------------------------] 00147 //[ Private data ] 00148 //[-------------------------------------------------------] 00149 private: 00150 PLCore::String m_sScreenMaterial[4]; 00151 PLCore::String m_sBarBackMaterial; 00152 PLCore::String m_sBarMaterial[2]; 00153 PLRenderer::MaterialHandler m_cScreenMaterial[4]; 00154 PLRenderer::MaterialHandler m_cBarBackMaterial; 00155 PLRenderer::MaterialHandler m_cBarMaterial[2]; 00156 float m_fAlpha[4]; 00157 float m_fBarBackAlpha; 00158 float m_fBarAlpha[2]; 00159 00160 00161 //[-------------------------------------------------------] 00162 //[ Public virtual PLScene::SceneNode functions ] 00163 //[-------------------------------------------------------] 00164 public: 00165 PL_API virtual void DrawPost(PLRenderer::Renderer &cRenderer, const PLScene::VisNode *pVisNode = nullptr) override; 00166 00167 00168 }; 00169 00170 00171 //[-------------------------------------------------------] 00172 //[ Namespace ] 00173 //[-------------------------------------------------------] 00174 } // PLEngine 00175 00176 00177 #endif // __PLENGINE_COMPOSITING_LOADSCREEN_H__
|