Planeshift

shadowmanager.h

Go to the documentation of this file.
00001 /*
00002 * shadowmanager.h - Author: Andrew Robberts
00003 *
00004 * Copyright (C) 2007 Atomic Blue ([email protected], http://www.atomicblue.org)
00005 *
00006 *
00007 * This program is free software; you can redistribute it and/or
00008 * modify it under the terms of the GNU General Public License
00009 * as published by the Free Software Foundation (version 2 of the License)
00010 * This program 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
00013 * GNU General Public License for more details.
00014 * You should have received a copy of the GNU General Public License
00015 * along with this program; if not, write to the Free Software
00016 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00017 *
00018 */
00019 
00020 #ifndef SHADOW_MANAGER_H
00021 #define SHADOW_MANAGER_H
00022 
00023 // PS INCLUDES
00024 #include "pscelclient.h"
00025 
00026 struct iConfigManager;
00027 
00028 class psShadowManager
00029 {
00030 private:
00031     csRef<iConfigManager>   cfgmgr;
00032     float                   shadowRange;
00033     bool                    shadowsEnabled;
00034 
00035     bool WithinRange(GEMClientObject * object, const csBox3 & bbox = csBox3()) const;
00036 public:
00037     psShadowManager();
00038     ~psShadowManager();
00039 
00040     bool Load(const char * filename);
00041 
00042     void CreateShadow(GEMClientObject * object);
00043     void RemoveShadow(GEMClientObject * object);
00044 
00045     void RecreateAllShadows();
00046     void RemoveAllShadows();
00047 
00048     float GetShadowRange() const;
00049     void SetShadowRange(float shadowRange);
00050 
00051     void UpdateShadows();
00052 
00053     void DisableShadows() { shadowsEnabled = false; RemoveAllShadows(); }
00054 
00055     void EnableShadows() { shadowsEnabled = true; RecreateAllShadows(); }
00056 
00057     bool ShadowsEnabled() { return shadowsEnabled; }
00058 };
00059 
00060 #endif // SHADOW_MANAGER_H