PixelLightAPI  .
SNLoadScreen.h
Go to the documentation of this file.
00001 /*********************************************************\
00002  *  File: SNLoadScreen.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_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(1.0f, 1.0f, 1.0f, 1.0f),     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(1.0f, 1.0f, 1.0f, 1.0f),     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__


PixelLight PixelLight 0.9.10-R1
Copyright (C) 2002-2011 by The PixelLight Team
Last modified Fri Dec 23 2011 15:51:02
The content of this PixelLight document is published under the
Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported