00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "std3d.h"
00027
00028 #include "nel/3d/u_water.h"
00029 #include "3d/water_pool_manager.h"
00030 #include "3d/water_height_map.h"
00031 #include "3d/water_model.h"
00032 #include "3d/water_user.h"
00033 #include "3d/driver_user.h"
00034
00035
00036 namespace NL3D
00037 {
00038
00039
00040 UWaterHeightMap &UWaterHeightMapManager::getWaterHeightMapFromID(uint32 ID)
00041 {
00042 NL3D_MEM_WATER
00043 nlassert(GetWaterPoolManager().hasPool(ID));
00044 return GetWaterPoolManager().getPoolByID(ID);
00045 }
00046
00047
00048
00049 void UWaterHeightMapManager::setBlendFactor(UDriver *drv, float value)
00050 {
00051 NL3D_MEM_WATER
00052 NLMISC::clamp(value, 0.f, 1.f);
00053 GetWaterPoolManager().setBlendFactor(NLMISC::safe_cast<CDriverUser *>(drv)->getDriver(), value);
00054 }
00055
00056
00057 uint32 CWaterInstanceUser::getWaterHeightMapID() const
00058 {
00059 NL3D_MEM_WATER
00060 CWaterModel *wm = NLMISC::safe_cast<CWaterModel *>(_Instance);
00061 return wm->getWaterHeightMapID();
00062 }
00063
00064
00065
00066 float CWaterInstanceUser::getHeightFactor() const
00067 {
00068 NL3D_MEM_WATER
00069 CWaterModel *wm = NLMISC::safe_cast<CWaterModel *>(_Instance);
00070 return wm->getHeightFactor();
00071 }
00072
00073
00074 float CWaterInstanceUser::getHeight(const NLMISC::CVector2f &pos)
00075 {
00076 NL3D_MEM_WATER
00077 CWaterModel *wm = NLMISC::safe_cast<CWaterModel *>(_Instance);
00078 return wm->getHeight(pos);
00079 }
00080
00081
00082 float CWaterInstanceUser::getAttenuatedHeight(const NLMISC::CVector2f &pos, const NLMISC::CVector &viewer)
00083 {
00084 NL3D_MEM_WATER
00085 CWaterModel *wm = NLMISC::safe_cast<CWaterModel *>(_Instance);
00086 return wm->getAttenuatedHeight(pos, viewer);
00087 }
00088
00089 }