From d63248d27696eb7a0a488e519a1432c55d594fd8 Mon Sep 17 00:00:00 2001 From: janwas Date: Mon, 24 May 2004 20:27:25 +0000 Subject: [PATCH] fixed some signed/unsigned warnings This was SVN commit r259. --- source/simulation/EntityHandles.cpp | 2 + source/simulation/EntityProperties.h | 5 + source/terrain/FilePacker.cpp | 6 +- source/terrain/FileUnpacker.cpp | 2 +- source/terrain/FileUnpacker.h | 2 +- source/terrain/HFTracer.cpp | 354 +++++++++++++-------------- source/terrain/HFTracer.h | 94 +++---- source/terrain/MapReader.cpp | 1 + source/terrain/PatchRData.cpp | 5 +- source/terrain/TextureManager.cpp | 2 +- source/terrain/terrainMain.cpp | 6 - 11 files changed, 241 insertions(+), 238 deletions(-) diff --git a/source/simulation/EntityHandles.cpp b/source/simulation/EntityHandles.cpp index 54c4075cae..8c90e32ca7 100755 --- a/source/simulation/EntityHandles.cpp +++ b/source/simulation/EntityHandles.cpp @@ -1,3 +1,5 @@ +#include "precompiled.h" + #include "EntityHandles.h" #include "EntityManager.h" diff --git a/source/simulation/EntityProperties.h b/source/simulation/EntityProperties.h index c829dbc28f..9a487ad13b 100755 --- a/source/simulation/EntityProperties.h +++ b/source/simulation/EntityProperties.h @@ -21,8 +21,13 @@ #include "CStr.h" #include "Vector3D.h" +#pragma warning(push) +#pragma warning(disable:4996) + #include +#pragma warning(pop) + class CGenericProperty { public: diff --git a/source/terrain/FilePacker.cpp b/source/terrain/FilePacker.cpp index 2c59bafb82..7167e525d8 100755 --- a/source/terrain/FilePacker.cpp +++ b/source/terrain/FilePacker.cpp @@ -38,7 +38,7 @@ void CFilePacker::Write(const char* filename,u32 version,const char magicstr[4]) } // get size of data - u32 datasize=m_Data.size(); + u32 datasize=(u32)m_Data.size(); if (fwrite(&datasize,sizeof(datasize),1,fp)!=1) { fclose(fp); throw CFileWriteError(); @@ -59,7 +59,7 @@ void CFilePacker::Write(const char* filename,u32 version,const char magicstr[4]) // PackRaw: pack given number of bytes onto the end of the data stream void CFilePacker::PackRaw(const void* rawdata,u32 rawdatalen) { - u32 start=m_Data.size(); + u32 start=(u32)m_Data.size(); m_Data.resize(m_Data.size()+rawdatalen); memcpy(&m_Data[start],rawdata,rawdatalen); @@ -69,7 +69,7 @@ void CFilePacker::PackRaw(const void* rawdata,u32 rawdatalen) // PackString: pack a string onto the end of the data stream void CFilePacker::PackString(const CStr& str) { - u32 len=str.Length(); + u32 len=(u32)str.Length(); PackRaw(&len,sizeof(len)); PackRaw((const char*) str,len); } diff --git a/source/terrain/FileUnpacker.cpp b/source/terrain/FileUnpacker.cpp index 067006cd24..19b5654c14 100755 --- a/source/terrain/FileUnpacker.cpp +++ b/source/terrain/FileUnpacker.cpp @@ -67,7 +67,7 @@ void CFileUnpacker::Read(const char* filename,const char magicstr[4]) // UnpackRaw: unpack given number of bytes from the input stream into the given array // - throws CFileEOFError if the end of the data stream is reached before the given // number of bytes have been read -void CFileUnpacker::UnpackRaw(void* rawdata,u32 rawdatalen) +void CFileUnpacker::UnpackRaw(void* rawdata,size_t rawdatalen) { // got enough data to unpack? if (m_UnpackPos+rawdatalen<=m_Data.size()) { diff --git a/source/terrain/FileUnpacker.h b/source/terrain/FileUnpacker.h index 8160000a76..5cbca5564e 100755 --- a/source/terrain/FileUnpacker.h +++ b/source/terrain/FileUnpacker.h @@ -40,7 +40,7 @@ public: // UnpackRaw: unpack given number of bytes from the input stream into the given array // - throws CFileEOFError if the end of the data stream is reached before the given // number of bytes have been read - void UnpackRaw(void* rawdata,u32 rawdatalen); + void UnpackRaw(void* rawdata,size_t rawdatalen); // UnpackString: unpack a string from the raw data stream void UnpackString(CStr& result); diff --git a/source/terrain/HFTracer.cpp b/source/terrain/HFTracer.cpp index b326a7c852..932864556a 100755 --- a/source/terrain/HFTracer.cpp +++ b/source/terrain/HFTracer.cpp @@ -1,177 +1,177 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// Name: HFTracer.cpp -// Author: Rich Cross -// Contact: rich@wildfiregames.com -// -/////////////////////////////////////////////////////////////////////////////// - -#include "HFTracer.h" -#include "terrain/Terrain.h" -#include "terrain/Bound.h" -#include "terrain/Vector3D.h" - -extern CTerrain g_Terrain; - -/////////////////////////////////////////////////////////////////////////////// -// CHFTracer constructor -CHFTracer::CHFTracer(const u16* hf,u32 mapsize,float cellsize,float heightscale) - : m_Heightfield(hf), m_MapSize(mapsize), m_CellSize(cellsize), - m_HeightScale(heightscale) -{ -} - - -/////////////////////////////////////////////////////////////////////////////// -// RayTriIntersect: intersect a ray with triangle defined by vertices -// v0,v1,v2; return true if ray hits triangle at distance less than dist, -// or false otherwise -bool CHFTracer::RayTriIntersect(const CVector3D& v0,const CVector3D& v1,const CVector3D& v2, - const CVector3D& origin,const CVector3D& dir,float& dist) const -{ - const float EPSILON=0.00001f; - - // calculate edge vectors - CVector3D edge0=v1-v0; - CVector3D edge1=v2-v0; - - // begin calculating determinant - also used to calculate U parameter - CVector3D pvec=dir.Cross(edge1); - - // if determinant is near zero, ray lies in plane of triangle - float det = edge0.Dot(pvec); - if (fabs(det)1.01f) - return false; - - // prepare to test V parameter - CVector3D qvec=tvec.Cross(edge0); - - // calculate V parameter and test bounds - float v=dir.Dot(qvec)*inv_det; - if (v<0.0f || u+v>1.0f) - return false; - - // calculate distance to intersection point from ray origin - float d=edge1.Dot(qvec)*inv_det; - if (d>=0 && d0) { - traversalPt=origin+dir*tmin; - } else { - traversalPt=origin; - } - - // setup traversal variables - int sx=dir.X<0 ? -1 : 1; - int sz=dir.Z<0 ? -1 : 1; - - float invCellSize=1.0f/float(m_CellSize); - - float fcx=traversalPt.X*invCellSize; - int cx=int(fcx); - - float fcz=traversalPt.Z*invCellSize; - int cz=int(fcz); - - float invdx=float(1.0/fabs(dir.X)); - float invdz=float(1.0/fabs(dir.Z)); - - float dist; - do { - // test current cell - if (cx>=0 && cx=0 && cz=0); - - // fell off end of heightmap with no intersection; return a miss - return false; -} +/////////////////////////////////////////////////////////////////////////////// +// +// Name: HFTracer.cpp +// Author: Rich Cross +// Contact: rich@wildfiregames.com +// +/////////////////////////////////////////////////////////////////////////////// + +#include "HFTracer.h" +#include "terrain/Terrain.h" +#include "terrain/Bound.h" +#include "terrain/Vector3D.h" + +extern CTerrain g_Terrain; + +/////////////////////////////////////////////////////////////////////////////// +// CHFTracer constructor +CHFTracer::CHFTracer(const u16* hf,u32 mapsize,float cellsize,float heightscale) + : m_Heightfield(hf), m_MapSize(mapsize), m_CellSize(cellsize), + m_HeightScale(heightscale) +{ +} + + +/////////////////////////////////////////////////////////////////////////////// +// RayTriIntersect: intersect a ray with triangle defined by vertices +// v0,v1,v2; return true if ray hits triangle at distance less than dist, +// or false otherwise +bool CHFTracer::RayTriIntersect(const CVector3D& v0,const CVector3D& v1,const CVector3D& v2, + const CVector3D& origin,const CVector3D& dir,float& dist) const +{ + const float EPSILON=0.00001f; + + // calculate edge vectors + CVector3D edge0=v1-v0; + CVector3D edge1=v2-v0; + + // begin calculating determinant - also used to calculate U parameter + CVector3D pvec=dir.Cross(edge1); + + // if determinant is near zero, ray lies in plane of triangle + float det = edge0.Dot(pvec); + if (fabs(det)1.01f) + return false; + + // prepare to test V parameter + CVector3D qvec=tvec.Cross(edge0); + + // calculate V parameter and test bounds + float v=dir.Dot(qvec)*inv_det; + if (v<0.0f || u+v>1.0f) + return false; + + // calculate distance to intersection point from ray origin + float d=edge1.Dot(qvec)*inv_det; + if (d>=0 && d0) { + traversalPt=origin+dir*tmin; + } else { + traversalPt=origin; + } + + // setup traversal variables + int sx=dir.X<0 ? -1 : 1; + int sz=dir.Z<0 ? -1 : 1; + + float invCellSize=1.0f/float(m_CellSize); + + float fcx=traversalPt.X*invCellSize; + int cx=int(fcx); + + float fcz=traversalPt.Z*invCellSize; + int cz=int(fcz); + + float invdx=float(1.0/fabs(dir.X)); + float invdz=float(1.0/fabs(dir.Z)); + + float dist; + do { + // test current cell + if (cx>=0 && cx=0 && cz=0); + + // fell off end of heightmap with no intersection; return a miss + return false; +} diff --git a/source/terrain/HFTracer.h b/source/terrain/HFTracer.h index 97f0a02850..ad3add7a6d 100755 --- a/source/terrain/HFTracer.h +++ b/source/terrain/HFTracer.h @@ -1,48 +1,48 @@ -/////////////////////////////////////////////////////////////////////////////// -// -// Name: HFTracer.h -// Author: Rich Cross -// Contact: rich@wildfiregames.com -// -/////////////////////////////////////////////////////////////////////////////// - -#ifndef _HFTRACER_H -#define _HFTRACER_H - -class CVector3D; - -#include "res/res.h" - -/////////////////////////////////////////////////////////////////////////////// -// CHFTracer: a class for determining ray intersections with a heightfield -class CHFTracer -{ -public: - // constructor; setup data - CHFTracer(const u16* hf,u32 mapsize,float cellsize,float heightscale); - - // intersect ray with this heightfield; return true if intersection - // occurs (and fill in grid coordinates and point of intersection), or false otherwise - bool RayIntersect(CVector3D& origin,CVector3D& dir,int& x,int& z,CVector3D& ipt) const; - -private: - // intersect a ray with triangle defined by vertices - // v0,v1,v2; return true if ray hits triangle at distance less than dist, - // or false otherwise - bool RayTriIntersect(const CVector3D& v0,const CVector3D& v1,const CVector3D& v2, - const CVector3D& origin,const CVector3D& dir,float& dist) const; - - // test if ray intersects either of the triangles in the given - bool CellIntersect(int cx,int cz,CVector3D& origin,CVector3D& dir,float& dist) const; - - // the heightfield were tracing - const u16* m_Heightfield; - // size of the heightfield - u32 m_MapSize; - // cell size - size of each cell in x and z - float m_CellSize; - // vertical scale - size of each cell in y - float m_HeightScale; -}; - +/////////////////////////////////////////////////////////////////////////////// +// +// Name: HFTracer.h +// Author: Rich Cross +// Contact: rich@wildfiregames.com +// +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _HFTRACER_H +#define _HFTRACER_H + +class CVector3D; + +#include "res/res.h" + +/////////////////////////////////////////////////////////////////////////////// +// CHFTracer: a class for determining ray intersections with a heightfield +class CHFTracer +{ +public: + // constructor; setup data + CHFTracer(const u16* hf,u32 mapsize,float cellsize,float heightscale); + + // intersect ray with this heightfield; return true if intersection + // occurs (and fill in grid coordinates and point of intersection), or false otherwise + bool RayIntersect(CVector3D& origin,CVector3D& dir,int& x,int& z,CVector3D& ipt) const; + +private: + // intersect a ray with triangle defined by vertices + // v0,v1,v2; return true if ray hits triangle at distance less than dist, + // or false otherwise + bool RayTriIntersect(const CVector3D& v0,const CVector3D& v1,const CVector3D& v2, + const CVector3D& origin,const CVector3D& dir,float& dist) const; + + // test if ray intersects either of the triangles in the given + bool CellIntersect(int cx,int cz,CVector3D& origin,CVector3D& dir,float& dist) const; + + // the heightfield were tracing + const u16* m_Heightfield; + // size of the heightfield + u32 m_MapSize; + // cell size - size of each cell in x and z + float m_CellSize; + // vertical scale - size of each cell in y + float m_HeightScale; +}; + #endif \ No newline at end of file diff --git a/source/terrain/MapReader.cpp b/source/terrain/MapReader.cpp index 0d502880e1..8e3c3519c5 100755 --- a/source/terrain/MapReader.cpp +++ b/source/terrain/MapReader.cpp @@ -5,6 +5,7 @@ #include "MapReader.h" #include "UnitManager.h" #include "ObjectManager.h" + #include "BaseEntity.h" #include "BaseEntityCollection.h" #include "EntityManager.h" diff --git a/source/terrain/PatchRData.cpp b/source/terrain/PatchRData.cpp index 2828e8923e..c22d514900 100755 --- a/source/terrain/PatchRData.cpp +++ b/source/terrain/PatchRData.cpp @@ -101,7 +101,8 @@ void CPatchRData::BuildBlends() } } if (neighbourTextures.size()>0) { - u32 count=neighbourTextures.size(); +// u32 count=neighbourTextures.size(); +// janwas fixing warnings: not used? // sort textures from lowest to highest priority std::sort(neighbourTextures.begin(),neighbourTextures.end()); @@ -476,7 +477,7 @@ void CPatchRData::RenderStreams(u32 streamflags) if (streamflags & STREAM_UV0) glTexCoordPointer(2,GL_FLOAT,sizeof(SBaseVertex),base+offsetof(SBaseVertex,m_UVs)); // render all base splats at once - glDrawElements(GL_QUADS,m_Indices.size(),GL_UNSIGNED_SHORT,&m_Indices[0]); + glDrawElements(GL_QUADS,(GLsizei)m_Indices.size(),GL_UNSIGNED_SHORT,&m_Indices[0]); // bump stats g_Renderer.m_Stats.m_DrawCalls++; diff --git a/source/terrain/TextureManager.cpp b/source/terrain/TextureManager.cpp index 20f37b941a..2fa73a3d61 100755 --- a/source/terrain/TextureManager.cpp +++ b/source/terrain/TextureManager.cpp @@ -24,7 +24,7 @@ void CTextureManager::AddTextureType(const char* name) m_TerrainTextures.resize(m_TerrainTextures.size()+1); STextureType& ttype=m_TerrainTextures.back(); ttype.m_Name=name; - ttype.m_Index=m_TerrainTextures.size()-1; + ttype.m_Index=(int)(m_TerrainTextures.size()-1); } CTextureEntry* CTextureManager::FindTexture(const char* filename) diff --git a/source/terrain/terrainMain.cpp b/source/terrain/terrainMain.cpp index b18e2627a4..2fae5fc991 100755 --- a/source/terrain/terrainMain.cpp +++ b/source/terrain/terrainMain.cpp @@ -7,16 +7,10 @@ #include "ObjectManager.h" #include "Prometheus.h" -#include "time.h" #include "sdl.h" #include "res/tex.h" #include "detect.h" -#include - -// TODO: fix scrolling hack - framerate independent, use SDL -//#include "win.h" // REMOVEME - void InitScene (); void InitResources (); void RenderScene ();