mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 13:37:00 +00:00
[11305] more safe code in vmaps and Field class
Signed-off-by: Ambal <pogrebniak@gala.net>
This commit is contained in:
parent
1fea8a321f
commit
43db4eaaa2
5 changed files with 10 additions and 13 deletions
|
|
@ -127,7 +127,7 @@ void BIH::subdivide(int left, int right, std::vector<uint32> &tempTree, buildDat
|
||||||
if (right == rightOrig)
|
if (right == rightOrig)
|
||||||
{
|
{
|
||||||
// all left
|
// all left
|
||||||
if (prevAxis == axis && prevSplit == split) {
|
if (prevAxis == axis && G3D::fuzzyEq(prevSplit, split)) {
|
||||||
// we are stuck here - create a leaf
|
// we are stuck here - create a leaf
|
||||||
stats.updateLeaf(depth, right - left + 1);
|
stats.updateLeaf(depth, right - left + 1);
|
||||||
createNode(tempTree, nodeIndex, left, right);
|
createNode(tempTree, nodeIndex, left, right);
|
||||||
|
|
@ -146,7 +146,7 @@ void BIH::subdivide(int left, int right, std::vector<uint32> &tempTree, buildDat
|
||||||
else if (left > right)
|
else if (left > right)
|
||||||
{
|
{
|
||||||
// all right
|
// all right
|
||||||
if (prevAxis == axis && prevSplit == split) {
|
if (prevAxis == axis && G3D::fuzzyEq(prevSplit, split)) {
|
||||||
// we are stuck here - create a leaf
|
// we are stuck here - create a leaf
|
||||||
stats.updateLeaf(depth, right - left + 1);
|
stats.updateLeaf(depth, right - left + 1);
|
||||||
createNode(tempTree, nodeIndex, left, right);
|
createNode(tempTree, nodeIndex, left, right);
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ class BIH
|
||||||
for (int i=0; i<3; ++i)
|
for (int i=0; i<3; ++i)
|
||||||
{
|
{
|
||||||
invDir[i] = 1.f / dir[i];
|
invDir[i] = 1.f / dir[i];
|
||||||
if (dir[i] != 0.f)
|
if (G3D::fuzzyNe(dir[i], 0.0f))
|
||||||
{
|
{
|
||||||
float t1 = (bounds.low()[i] - org[i]) * invDir[i];
|
float t1 = (bounds.low()[i] - org[i]) * invDir[i];
|
||||||
float t2 = (bounds.high()[i] - org[i]) * invDir[i];
|
float t2 = (bounds.high()[i] - org[i]) * invDir[i];
|
||||||
|
|
|
||||||
|
|
@ -150,10 +150,10 @@ namespace VMAP
|
||||||
{
|
{
|
||||||
float tx_f = (pos.x - iCorner.x)/LIQUID_TILE_SIZE;
|
float tx_f = (pos.x - iCorner.x)/LIQUID_TILE_SIZE;
|
||||||
uint32 tx = uint32(tx_f);
|
uint32 tx = uint32(tx_f);
|
||||||
if (tx<0 || tx >= iTilesX) return false;
|
if (tx >= iTilesX) return false;
|
||||||
float ty_f = (pos.y - iCorner.y)/LIQUID_TILE_SIZE;
|
float ty_f = (pos.y - iCorner.y)/LIQUID_TILE_SIZE;
|
||||||
uint32 ty = uint32(ty_f);
|
uint32 ty = uint32(ty_f);
|
||||||
if (ty<0 || ty >= iTilesY) return false;
|
if (ty >= iTilesY) return false;
|
||||||
|
|
||||||
// check if tile shall be used for liquid level
|
// check if tile shall be used for liquid level
|
||||||
// checking for 0x08 *might* be enough, but disabled tiles always are 0x?F:
|
// checking for 0x08 *might* be enough, but disabled tiles always are 0x?F:
|
||||||
|
|
|
||||||
|
|
@ -56,14 +56,11 @@ class Field
|
||||||
uint32 GetUInt32() const { return mValue ? static_cast<uint32>(atol(mValue)) : uint32(0); }
|
uint32 GetUInt32() const { return mValue ? static_cast<uint32>(atol(mValue)) : uint32(0); }
|
||||||
uint64 GetUInt64() const
|
uint64 GetUInt64() const
|
||||||
{
|
{
|
||||||
if(mValue)
|
uint64 value = 0;
|
||||||
{
|
if(!mValue || sscanf(mValue,UI64FMTD,&value) == -1)
|
||||||
uint64 value;
|
|
||||||
sscanf(mValue,UI64FMTD,&value);
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetType(enum DataTypes type) { mType = type; }
|
void SetType(enum DataTypes type) { mType = type; }
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "11304"
|
#define REVISION_NR "11305"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue