00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __PLENGINE_COMPOSITING_LOADSCREEN_H__
00024 #define __PLENGINE_COMPOSITING_LOADSCREEN_H__
00025 #pragma once
00026
00027
00028
00029
00030
00031 #include <PLRenderer/Material/MaterialHandler.h>
00032 #include "PLEngine/Compositing/LoadScreen/SNLoadScreenBase.h"
00033
00034
00035
00036
00037
00038 namespace PLEngine {
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048 class SNLoadScreen : public SNLoadScreenBase {
00049
00050
00051
00052
00053
00054 public:
00055
00056
00057
00058
00059 enum EClearFlags {
00060 Color = 1<<0,
00061 Depth = 1<<1,
00062 Stencil = 1<<2
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
00073
00074 enum EFlags {
00075 NoImageBlend = 1<<10
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
00085
00086 pl_class(PL_RTTI_EXPORT, SNLoadScreen, "PLEngine", PLEngine::SNLoadScreenBase, "Load screen scene node")
00087
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
00093
00094
00095
00096
00097
00098
00099
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
00112 pl_attribute(Flags, pl_flag_type(EFlags), NoCulling, ReadWrite, GetSet, "Flags", "")
00113
00114 pl_constructor_0(DefaultConstructor, "Default constructor", "")
00115 pl_class_end
00116
00117
00118
00119
00120
00121 public:
00122
00123
00124
00125
00126 SNLoadScreen();
00127
00128
00129
00130
00131
00132 virtual ~SNLoadScreen();
00133
00134
00135
00136
00137
00138 private:
00139
00140
00141
00142
00143 void FreeMaterials();
00144
00145
00146
00147
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
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
00173
00174 }
00175
00176
00177 #endif // __PLENGINE_COMPOSITING_LOADSCREEN_H__