00001 //------------------------------------------------------------------------------ 00002 // Lamp : Open source game middleware 00003 // Copyright (C) 2004 Junpei Ohtani ( Email : junpee@users.sourceforge.jp ) 00004 // 00005 // This library is free software; you can redistribute it and/or 00006 // modify it under the terms of the GNU Lesser General Public 00007 // License as published by the Free Software Foundation; either 00008 // version 2.1 of the License, or (at your option) any later version. 00009 // 00010 // This library is distributed in the hope that it will be useful, 00011 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 // Lesser General Public License for more details. 00014 // 00015 // You should have received a copy of the GNU Lesser General Public 00016 // License along with this library; if not, write to the Free Software 00017 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00018 //------------------------------------------------------------------------------ 00019 00020 /** @file 00021 * ライトマネージャヘッダ 00022 * @author Junpee 00023 */ 00024 00025 #ifndef LIGHT_MANAGER_H_ 00026 #define LIGHT_MANAGER_H_ 00027 00028 #include <Graphics/Scene/SceneObjectManagerTemplate.h> 00029 #include <Graphics/Light/AmbientLight.h> 00030 #include <Graphics/Light/DirectionalLight.h> 00031 #include <Graphics/Light/PointLight.h> 00032 00033 namespace Lamp{ 00034 //------------------------------------------------------------------------------ 00035 /** 00036 * ライトマネージャ 00037 */ 00038 class LightManager : public SceneObjectManagerTemplate<Light>{ 00039 friend class Scene; 00040 public: 00041 /** 00042 * アンビエントライトの作成 00043 * 00044 * すでに同じライト名のライトが存在するとエラーになります。 00045 * 空文字列を名前に指定するとエラーになります。 00046 * @param lightName ライト名 00047 * @return 作成されたライト 00048 */ 00049 virtual AmbientLight* createAmbientLight(const String& lightName); 00050 00051 /** 00052 * ディレクショナルライトの作成 00053 * 00054 * すでに同じライト名のライトが存在するとエラーになります。 00055 * 空文字列を名前に指定するとエラーになります。 00056 * @param lightName ライト名 00057 * @return 作成されたライト 00058 */ 00059 virtual DirectionalLight* createDirectionalLight(const String& lightName); 00060 00061 /** 00062 * ポイントライトの作成 00063 * 00064 * すでに同じライト名のライトが存在するとエラーになります。 00065 * 空文字列を名前に指定するとエラーになります。 00066 * @param lightName ライト名 00067 * @return 作成されたライト 00068 */ 00069 virtual PointLight* createPointLight(const String& lightName); 00070 00071 protected: 00072 /** 00073 * コンストラクタ 00074 * @param scene シーン 00075 */ 00076 LightManager(Scene* scene); 00077 00078 }; 00079 00080 //------------------------------------------------------------------------------ 00081 } // End of namespace Lamp 00082 #endif // End of LIGHT_MANAGER_H_ 00083 //------------------------------------------------------------------------------