Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayMapData::cMapBase Class Reference

#include <cMapBase.h>

Inheritance diagram for GrayMapData::cMapBase:
Gray::cHeapObject GrayLib::cScriptableObj Gray3D::cMapBase1 Gray::IHeapObject IScriptableObj Gray3D::cMapCommon

Public Types

enum  P_TYPE_ { P_QTY }
 
- Public Types inherited from Gray3D::cMapCommon
typedef cVecT2< MAP_METER_tPOINT2_t
 
typedef cPoint3T< MAP_METER_tPOINT3_t
 
typedef cRectFT< MAP_METER_tRECT_t
 

Public Member Functions

 cMapBase (const char *pszMapName="Map")
 
virtual ~cMapBase ()
 
HRESULT LoadMap (const FILECHAR_t *pszInstallPath, const FILECHAR_t *pszMapName="Map")
 
virtual bool isPatchInBounds (const cMapPatch *pPatch) const
 
virtual cMapPatchPtr LoadPatchXY (MAP_METERI_t x, MAP_METERI_t y, MAP_METERI_t iSize, MAP_CHANNEL_t uLoadFlags=0)
 
cMapPatchPtr LoadPatchBest (MAP_METERI_t x, MAP_METERI_t y, MAP_METERI_t iSize, MAP_CHANNEL_t uLoadFlags=0)
 
bool ClampPointDynamic (cPoint3f &ptW) const
 
MAP_METERf_t GetHeightAt (MAP_METER_t x, MAP_METER_t y, MAP_METERI_t iSize, MAP_CHANNEL_t uFlags=MAP_CHANNEL_Height)
 
MAP_METERf_t GetHeightAt (const cPoint3f &ptW, MAP_METERI_t iSize, MAP_CHANNEL_t uFlags=MAP_CHANNEL_Height)
 
void GetHeightVert (cVector3f &v, DVALUEDEF_t x, DVALUEDEF_t y)
 
bool SetHeightAt (MAP_METERI_t x, MAP_METERI_t y, MAP_METERf_t iHeight, MAP_METERI_t iSize)
 
bool SetHeightAt (const cPoint3f &ptW, MAP_METERI_t iSize)
 
GINTERSECT_TYPE GetHeightRayContactPatch (cPoint3f &ptWContact, const cPoint3f &ptWOrigin, const cVector3f &avDir, cPoint3f &ptWPosNext, float fMaxRange, MAP_METERI_t iSize=((1<<((MAP_LOD_BLOCK) *3)) *MAP_PATCH_POINTS))
 
bool GetHeightRayContact (cPoint3f &ptWContact, const cPoint3f &ptWOrigin, const cVector3f &avDir, float fMaxRange=1000.0f, MAP_METERI_t iSize=((1<<((MAP_LOD_BLOCK) *3)) *MAP_PATCH_POINTS))
 
MAP_SURFACE_ID_t GetSurfacePt (MAP_METERI_t x, MAP_METERI_t y)
 
bool SetSurfacePt (MAP_METERI_t x, MAP_METERI_t y, MAP_SURFACE_ID_t eSurfaceID)
 
float GetNormalAt (OUT cVector3f &vNorm, MAP_METER_t x, MAP_METER_t y, MAP_METERI_t iSize)
 
float GetNormalAt (OUT cVector3f &vNorm, const cPoint3f &ptW, MAP_METERI_t iSize)
 
float GetNormalGradeAt (MAP_METER_t x, MAP_METER_t y, MAP_METERI_t iSize)
 
float GetNormalGradeAt (const cPoint3f &ptW, MAP_METERI_t iSize)
 
void GetNormalBounce (MAP_METER_t x, MAP_METER_t y, const cVector3f &vApproach, cVector3f &vBounce)
 
MAP_METER_t GetWaterLevel (MAP_METER_t x, MAP_METER_t y, MAP_METERI_t iSize)
 
MAP_METER_t GetWaterLevel (const cPoint3f &ptW, MAP_METERI_t iSize)
 
MAP_TERRAIN_TYPE GetTerrainType (const cPoint3f &pt, MAP_METERf_t fCharHeight, cVector3f *pvNorm, MAP_METERf_t *pfGroundLevel=nullptr, MAP_METERf_t *pfWaterLevel=nullptr)
 
STDMETHOD() s_PropPut (const cScriptableProp *pProp, const cVariant &vVal)
 
STDMETHOD() s_PropGet (const cScriptableProp *pProp, OUT cVariant &vValRet)
 
STDMETHOD() SetObjStateLoaded ()
 
 UNITTEST_FRIEND (cMapBase)
 
 CSCRIPT_CLASS_DEF0 (MapBase)
 
- Public Member Functions inherited from Gray::cHeapObject
 cHeapObject ()
 
virtual ~cHeapObject ()
 
bool IsValidInsideN (INT_PTR index) const
 
bool IsValidInsidePtr (void const *pTest) const
 
virtual size_t GetHeapStatsThis (OUT ITERATE_t &iAllocCount) const
 
virtual bool isValidCheck () const noexcept
 
- Public Member Functions inherited from GrayLib::cScriptableObj
virtual ~cScriptableObj ()
 
 STDMETHOD_ (cScriptableInterfaceDefPtr, get_ScriptInterfaceDef)() const
 
STDMETHOD() s_PropGet (const cScriptableProp *pProp, OUT cVariant &vValRet) override
 
STDMETHOD() s_PropPut (const cScriptableProp *pProp, const cVariant &vVal) override
 
STDMETHOD() s_Invoke (const cScriptableMethod *pMethod, const cVariant &vArgs, OUT cVariant &vValRet) override
 
const cScriptablePropFindPropStr (const ATOMCHAR_t *pszPropName) const
 
const cScriptableMethodFindMethodStr (const ATOMCHAR_t *pszPropName) const
 
HRESULT s_InvokeKey (const ATOMCHAR_t *pszMethodKey, const cVariant &vArgs, OUT cVariant &vValRet)
 
 STDMETHOD_ (cVariant, s_Exec)(const ATOMCHAR_t *pszMethodKey
 
STDMETHOD() s_GetEnum (ITERATE_t i, OUT cStringA &rsPropName, OUT cVariant &rvValRet) override
 
STDMETHOD() s_GetByName (const ATOMCHAR_t *pszPropName, OUT cVariant &rvValRet) override
 
STDMETHOD() s_Put (const ATOMCHAR_t *pszPropName, const cVariant &vValSet) override
 
void s_LoadPropsCommandLine (cAppArgs &args)
 
HRESULT s_LoadPropsBase (IScriptableEnumerator &rProps)
 
HRESULT s_LoadPropVar (const ATOMCHAR_t *pszPropName, const cVariant &vVal)
 
HRESULT s_WritePropNULL (IScriptableSetter &s, const cScriptableProp *pProp)
 
HRESULT s_WriteProp (IScriptableSetter &s, const cScriptableProp *pProp)
 
HRESULT s_WritePropsClass (IScriptableSetter &s, const cScriptableInterfaceDef *pClass)
 
HRESULT s_WritePropsArray (IScriptableSetter &s, const cScriptableProp *pProps, IScriptableObj *pDefaultSkip=nullptr)
 
STDMETHOD() s_WriteProps (IScriptableSetter &s)
 
 STDMETHOD_ (cVariant, s_Get)(const ATOMCHAR_t *pszPropName)
 
cVariant s_Get (const cScriptableProp &rProp)
 
 STDMETHOD_ (cString, s_GetStr)(const ATOMCHAR_t *pszPropName)
 
 STDMETHOD_ (float, s_GetFloat)(const ATOMCHAR_t *pszPropName)
 
STDMETHOD() GetTypeInfoCount (UINT *pctinfo)
 
- Public Member Functions inherited from Gray3D::cMapBase1
 cMapBase1 (const char *pszMapName)
 
virtual ~cMapBase1 ()
 
virtual cStringA get_Name () const
 
cStringF get_MapDir () const
 
virtual MAP_METER_t GetHeightAt (MAP_METER_t x, MAP_METER_t y)
 
virtual float GetNormalGradeAt (MAP_METER_t x, MAP_METER_t y)
 

Static Public Member Functions

static bool GRAYCALL IsValidPatchSize (MAP_METERI_t iSize)
 
- Static Public Member Functions inherited from GrayLib::cScriptableObj
static HRESULT GRAYCALL CopyAllProps (IScriptableSetter *pObjDest, IScriptableEnumerator &rProps, int iStart=0)
 
- Static Public Member Functions inherited from Gray3D::cMapCommon
static cString GetStr (MAP_METER_t x, MAP_METER_t y)
 
static cString GetStr (const POINT2_t &pt)
 
static cString GetStr (const POINT3_t &pt)
 
static cString GetStr (const RECT_t &r)
 

Public Attributes

 CHEAPOBJECT_IMPL
 
cValueRange< MAP_METERI_tm_SizeHeight
 
cWinSize m_MapSize
 
cRectI m_MapDynamic
 
cMapWaterDef m_WaterDef
 
CMapKeys m_MapKeys
 
- Public Attributes inherited from GrayLib::cScriptableObj
const cVariantvArgs = cVariant::k_VarNULL)
 
- Public Attributes inherited from Gray3D::cMapBase1
cStringA m_sMapSymName
 Dir name as symbolic id. (NOT descriptive/friendly name, use Regions for that) ex. "Map". More...
 
cStringF m_sMapDir
 Dir Full Path. to find map data. m_sMapSymName.scp file is to be found. More...
 
RECT_t m_MapRect
 Restrict dynamics to only use/load/store this part of the map. More...
 

Static Public Attributes

static cScriptableProp sm_Props [P_QTY+1]
 

Additional Inherited Members

- Protected Member Functions inherited from Gray::cHeapObject
const void * get_HeapPtr () const noexcept override
 Get the top level (outermost, freeable) class pointer. I can delete get_HeapPtr(). More...
 

Member Enumeration Documentation

◆ P_TYPE_

Enumerator
P_QTY 

Constructor & Destructor Documentation

◆ cMapBase()

GrayMapData::cMapBase::cMapBase ( const char *  pszMapName = "Map")

< Manage a single contiguous map. The server can have multiple maps loaded at once. Cache Patches for the map as used/needed. Propagate changes up = to parent patch. Propagate changes down = to child patches 0,0 = North West Corner, x=-N/+S, y=-W/+E. Use cDirectionDef

◆ ~cMapBase()

GrayMapData::cMapBase::~cMapBase ( )
virtual

Member Function Documentation

◆ ClampPointDynamic()

bool GrayMapData::cMapBase::ClampPointDynamic ( cPoint3f ptW) const

Might I/Avatar stand here? Clamp it to be in range.

Returns
true = out of bounds.

◆ CSCRIPT_CLASS_DEF0()

GrayMapData::cMapBase::CSCRIPT_CLASS_DEF0 ( MapBase  )

◆ GetHeightAt() [1/2]

MAP_METERf_t GrayMapData::cMapBase::GetHeightAt ( const cPoint3f ptW,
MAP_METERI_t  iSize,
MAP_CHANNEL_t  uFlags = MAP_CHANNEL_Height 
)
inline

< Get ground level at the best resolution possible. MAP_CHANNEL_NonCrit = don't load anything not already loaded.

◆ GetHeightAt() [2/2]

MAP_METER_t GrayMapData::cMapBase::GetHeightAt ( MAP_METER_t  x,
MAP_METER_t  y,
MAP_METERI_t  iSize,
MAP_CHANNEL_t  uFlags = MAP_CHANNEL_Height 
)

MAP_CHANNEL_Height CALCULATE ALTITUDE ACCORDING TO LANDSCAPE at a point

NOTE : x and y must be within the loaded terrain Patches limit !!

Returns
height in meters. >= MAP_HEIGHT_MIN

◆ GetHeightRayContact()

bool GrayMapData::cMapBase::GetHeightRayContact ( cPoint3f ptWContact,
const cPoint3f ptWOrigin,
const cVector3f avDir,
float  fMaxRange = 1000.0f,
MAP_METERI_t  iSize = ((1<<(( MAP_LOD_BLOCK )*3)) * MAP_PATCH_POINTS) 
)

Get the exact contact point on the ground.

  • ptWContact = contact pos. ptWOrigin = starting point, assumed to be above ground vDir = Normalized direction vector we moved, fMaxRange = how far to go iSize = Patch size scale MAP_SIZE(MAP_LOD_BLOCK)
    Returns
    true = we hit ground, ptWContact = resulting hit location.

◆ GetHeightRayContactPatch()

GINTERSECT_TYPE GrayMapData::cMapBase::GetHeightRayContactPatch ( cPoint3f ptWContact,
const cPoint3f ptWOrigin,
const cVector3f avDir,
cPoint3f ptWPosNext,
float  fMaxRange,
MAP_METERI_t  iSize = ((1<<(( MAP_LOD_BLOCK )*3)) * MAP_PATCH_POINTS) 
)

Get the exact contact point on the ground from a point avOrigin assumed to be above ground and a direction vector vDir, (avPos2 is also used to give back the next pos) result is given in vContact in case of success (return true)

  • vDir = move vector.
    Returns
    GINTERSECT_TYPE vContact = point of hit.

◆ GetHeightVert()

void GrayMapData::cMapBase::GetHeightVert ( cVector3f v,
DVALUEDEF_t  x,
DVALUEDEF_t  y 
)
inline

◆ GetNormalAt() [1/2]

float GrayMapData::cMapBase::GetNormalAt ( OUT cVector3f vNorm,
const cPoint3f ptW,
MAP_METERI_t  iSize 
)
inline

◆ GetNormalAt() [2/2]

float GrayMapData::cMapBase::GetNormalAt ( OUT cVector3f vNorm,
MAP_METER_t  x,
MAP_METER_t  y,
MAP_METERI_t  iSize 
)

Return the normal of the Terrain at a point.

  • world coords, x and y (meters) are assumed to be within the loaded patch
    Returns
    height vNorm

◆ GetNormalBounce()

void GrayMapData::cMapBase::GetNormalBounce ( MAP_METER_t  x,
MAP_METER_t  y,
const cVector3f vApproach,
cVector3f vBounce 
)

◆ GetNormalGradeAt() [1/2]

float GrayMapData::cMapBase::GetNormalGradeAt ( const cPoint3f ptW,
MAP_METERI_t  iSize 
)
inline

◆ GetNormalGradeAt() [2/2]

float GrayMapData::cMapBase::GetNormalGradeAt ( MAP_METER_t  x,
MAP_METER_t  y,
MAP_METERI_t  iSize 
)

◆ GetSurfacePt()

MAP_SURFACE_ID_t GrayMapData::cMapBase::GetSurfacePt ( MAP_METERI_t  x,
MAP_METERI_t  y 
)

◆ GetTerrainType()

MAP_TERRAIN_TYPE GrayMapData::cMapBase::GetTerrainType ( const cPoint3f pt,
MAP_METERf_t  fCharHeight,
cVector3f pvNorm,
MAP_METERf_t pfGroundLevel = nullptr,
MAP_METERf_t pfWaterLevel = nullptr 
)

◆ GetWaterLevel() [1/2]

MAP_METER_t GrayMapData::cMapBase::GetWaterLevel ( const cPoint3f ptW,
MAP_METERI_t  iSize 
)
inline

◆ GetWaterLevel() [2/2]

MAP_METER_t GrayMapData::cMapBase::GetWaterLevel ( MAP_METER_t  x,
MAP_METER_t  y,
MAP_METERI_t  iSize 
)

◆ isPatchInBounds()

bool GrayMapData::cMapBase::isPatchInBounds ( const cMapPatch pPatch) const
virtual

◆ IsValidPatchSize()

bool GrayMapData::cMapBase::IsValidPatchSize ( MAP_METERI_t  iSize)
static

◆ LoadMap()

HRESULT GrayMapData::cMapBase::LoadMap ( const FILECHAR_t pszInstallPath,
const FILECHAR_t pszMapName = "Map" 
)

◆ LoadPatchBest()

cMapPatchPtr GrayMapData::cMapBase::LoadPatchBest ( MAP_METERI_t  x,
MAP_METERI_t  y,
MAP_METERI_t  iSize,
MAP_CHANNEL_t  uLoadFlags = 0 
)

◆ LoadPatchXY()

cMapPatchPtr GrayMapData::cMapBase::LoadPatchXY ( MAP_METERI_t  x,
MAP_METERI_t  y,
MAP_METERI_t  iSize,
MAP_CHANNEL_t  uLoadFlags = 0 
)
virtual

◆ s_PropGet()

HRESULT GrayMapData::cMapBase::s_PropGet ( const cScriptableProp pProp,
OUT cVariant vValRet 
)

◆ s_PropPut()

HRESULT GrayMapData::cMapBase::s_PropPut ( const cScriptableProp pProp,
const cVariant vVal 
)

◆ SetHeightAt() [1/2]

bool GrayMapData::cMapBase::SetHeightAt ( const cPoint3f ptW,
MAP_METERI_t  iSize 
)
inline

◆ SetHeightAt() [2/2]

bool GrayMapData::cMapBase::SetHeightAt ( MAP_METERI_t  x,
MAP_METERI_t  y,
MAP_METERf_t  iHeight,
MAP_METERI_t  iSize 
)

◆ SetObjStateLoaded()

HRESULT GrayMapData::cMapBase::SetObjStateLoaded ( )

◆ SetSurfacePt()

bool GrayMapData::cMapBase::SetSurfacePt ( MAP_METERI_t  x,
MAP_METERI_t  y,
MAP_SURFACE_ID_t  eSurfaceID 
)

◆ UNITTEST_FRIEND()

GrayMapData::cMapBase::UNITTEST_FRIEND ( cMapBase  )

Member Data Documentation

◆ CHEAPOBJECT_IMPL

GrayMapData::cMapBase::CHEAPOBJECT_IMPL

◆ m_MapDynamic

cRectI GrayMapData::cMapBase::m_MapDynamic

◆ m_MapKeys

CMapKeys GrayMapData::cMapBase::m_MapKeys

◆ m_MapSize

cWinSize GrayMapData::cMapBase::m_MapSize

◆ m_SizeHeight

cValueRange<MAP_METERI_t> GrayMapData::cMapBase::m_SizeHeight

◆ m_WaterDef

cMapWaterDef GrayMapData::cMapBase::m_WaterDef

◆ sm_Props

cScriptableProp GrayMapData::cMapBase::sm_Props
static
Initial value:
=
{
#define cMapBaseProp(a,b,c,d,e)
}
#define CSCRIPT_PROP_END
Definition: cScriptableInterface.h:264

The documentation for this class was generated from the following files: