00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "SkyDomeComponent.h"
00019 #include "../../core/GameManager.h"
00020
00021
00022
00023
00024 SkyDomeComponent::SkyDomeComponent(Entity *parent, u32 hRes, u32 vRes, f32 texturePerc,
00025 f32 spherePerc, f32 radius)
00026 : SceneComponent(parent, true)
00027 {
00028 init(hRes, vRes, texturePerc, spherePerc, radius);
00029 }
00030
00031
00032 SkyDomeComponent::SkyDomeComponent(Entity *parent, const std::string &fileName, u32 hRes, u32 vRes,
00033 f32 texturePerc, f32 spherePerc, f32 radius)
00034 : SceneComponent(parent, true)
00035 {
00036 init(hRes, vRes, texturePerc, spherePerc, radius);
00037 setMaterialTexture(0, fileName);
00038 }
00039
00040
00041 SkyDomeComponent::SkyDomeComponent(Entity *parent, ITexture *texture, u32 hRes, u32 vRes,
00042 f32 texturePerc, f32 spherePerc, f32 radius)
00043 : SceneComponent(parent, true)
00044 {
00045 init(hRes, vRes, texturePerc, spherePerc, radius);
00046 setMaterialTexture(0, texture);
00047 }
00048
00049
00050 SkyDomeComponent::~SkyDomeComponent()
00051 {
00052 }
00053
00054
00055 void SkyDomeComponent::init(u32 hRes, u32 vRes, f32 texturePerc, f32 spherePerc, f32 radius)
00056 {
00057
00058 mSceneNode = GameManager::Instance()->getSceneManager()->addSkyDomeSceneNode(0, hRes,
00059 vRes, texturePerc, spherePerc, radius, 0, pParent->getID());
00060
00061
00062 mTriSelector = NULL;
00063 mMetaSelector = NULL;
00064 }
00065
00066
00067 bool SkyDomeComponent::parseXML(IXMLReader *file, Entity *entity)
00068 {
00069
00070 SkyDomeComponent *component = NULL;
00071
00072
00073 if(file->getNodeType() == io::EXN_ELEMENT)
00074 {
00075 if(stringw("SkyDomeComponent") == file->getNodeName())
00076 {
00077 u32 hRes = file->getAttributeValueAsInt(L"hRes");
00078 u32 vRes = file->getAttributeValueAsInt(L"vRes");
00079 f32 texturePerc = file->getAttributeValueAsFloat(L"texturePerc");
00080 f32 spherePerc = file->getAttributeValueAsFloat(L"spherePerc");
00081 f32 radius = file->getAttributeValueAsFloat(L"radius");
00082
00083
00084 component = new SkyDomeComponent(entity, hRes, vRes, texturePerc, spherePerc, radius);
00085 }
00086 }
00087
00088 if(component == NULL)
00089 return false;
00090
00091
00092 while(file->read())
00093 {
00094 switch(file->getNodeType())
00095 {
00096 case io::EXN_ELEMENT:
00097
00098
00099 SceneComponent::parseBaseXML(file, component);
00100
00101 break;
00102
00103 case io::EXN_ELEMENT_END:
00104
00105
00106 if(stringw("SkyDomeComponent") == file->getNodeName())
00107 return true;
00108
00109 break;
00110
00111 default:
00112
00113 break;
00114 }
00115 }
00116
00117
00118 return false;
00119 }
00120
00121