mirror of
https://github.com/OpenMW/openmw.git
synced 2025-11-29 05:04:31 +00:00
First batch of warning fixes
This commit is contained in:
parent
7520e86ab3
commit
98291f1377
34 changed files with 111 additions and 106 deletions
|
|
@ -21,7 +21,7 @@ namespace DetourNavigator
|
||||||
switch (agentBounds.mShapeType)
|
switch (agentBounds.mShapeType)
|
||||||
{
|
{
|
||||||
case CollisionShapeType::Aabb:
|
case CollisionShapeType::Aabb:
|
||||||
return std::max(agentBounds.mHalfExtents.x(), agentBounds.mHalfExtents.y()) * std::sqrt(2);
|
return std::max(agentBounds.mHalfExtents.x(), agentBounds.mHalfExtents.y()) * std::sqrt(2.0f);
|
||||||
case CollisionShapeType::RotatingBox:
|
case CollisionShapeType::RotatingBox:
|
||||||
return agentBounds.mHalfExtents.x();
|
return agentBounds.mHalfExtents.x();
|
||||||
case CollisionShapeType::Cylinder:
|
case CollisionShapeType::Cylinder:
|
||||||
|
|
|
||||||
|
|
@ -56,8 +56,8 @@ namespace DetourNavigator
|
||||||
|
|
||||||
inline TileBounds maxCellTileBounds(const osg::Vec2i& position, int size)
|
inline TileBounds maxCellTileBounds(const osg::Vec2i& position, int size)
|
||||||
{
|
{
|
||||||
return TileBounds{ osg::Vec2f(position.x(), position.y()) * size,
|
return TileBounds{ osg::Vec2f(static_cast<float>(position.x()), static_cast<float>(position.y())) * static_cast<float>(size),
|
||||||
osg::Vec2f(position.x() + 1, position.y() + 1) * size };
|
osg::Vec2f(static_cast<float>(position.x() + 1), static_cast<float>(position.y() + 1)) * static_cast<float>(size) };
|
||||||
}
|
}
|
||||||
|
|
||||||
inline TileBounds makeObjectTileBounds(const btCollisionShape& shape, const btTransform& transform)
|
inline TileBounds makeObjectTileBounds(const btCollisionShape& shape, const btTransform& transform)
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ namespace ESM
|
||||||
inline ESM::ExteriorCellLocation positionToExteriorCellLocation(
|
inline ESM::ExteriorCellLocation positionToExteriorCellLocation(
|
||||||
float x, float y, ESM::RefId worldspaceId = ESM::Cell::sDefaultWorldspaceId)
|
float x, float y, ESM::RefId worldspaceId = ESM::Cell::sDefaultWorldspaceId)
|
||||||
{
|
{
|
||||||
const float cellSize = getCellSize(worldspaceId);
|
const float cellSize = static_cast<float>(getCellSize(worldspaceId));
|
||||||
return { static_cast<int>(std::floor(x / cellSize)), static_cast<int>(std::floor(y / cellSize)), worldspaceId };
|
return { static_cast<int>(std::floor(x / cellSize)), static_cast<int>(std::floor(y / cellSize)), worldspaceId };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -141,11 +141,11 @@ namespace ESM
|
||||||
effects[MagicEffect::Effects::DisintegrateArmor] = MagicEffect::Effects::Sanctuary;
|
effects[MagicEffect::Effects::DisintegrateArmor] = MagicEffect::Effects::Sanctuary;
|
||||||
effects[MagicEffect::Effects::DisintegrateWeapon] = MagicEffect::Effects::Sanctuary;
|
effects[MagicEffect::Effects::DisintegrateWeapon] = MagicEffect::Effects::Sanctuary;
|
||||||
|
|
||||||
for (int i = MagicEffect::Effects::DrainAttribute; i <= MagicEffect::Effects::DamageSkill; ++i)
|
for (short i = MagicEffect::Effects::DrainAttribute; i <= MagicEffect::Effects::DamageSkill; ++i)
|
||||||
effects[i] = MagicEffect::Effects::ResistMagicka;
|
effects[i] = MagicEffect::Effects::ResistMagicka;
|
||||||
for (int i = MagicEffect::Effects::AbsorbAttribute; i <= MagicEffect::Effects::AbsorbSkill; ++i)
|
for (short i = MagicEffect::Effects::AbsorbAttribute; i <= MagicEffect::Effects::AbsorbSkill; ++i)
|
||||||
effects[i] = MagicEffect::Effects::ResistMagicka;
|
effects[i] = MagicEffect::Effects::ResistMagicka;
|
||||||
for (int i = MagicEffect::Effects::WeaknessToFire; i <= MagicEffect::Effects::WeaknessToNormalWeapons; ++i)
|
for (short i = MagicEffect::Effects::WeaknessToFire; i <= MagicEffect::Effects::WeaknessToNormalWeapons; ++i)
|
||||||
effects[i] = MagicEffect::Effects::ResistMagicka;
|
effects[i] = MagicEffect::Effects::ResistMagicka;
|
||||||
|
|
||||||
effects[MagicEffect::Effects::Burden] = MagicEffect::Effects::ResistMagicka;
|
effects[MagicEffect::Effects::Burden] = MagicEffect::Effects::ResistMagicka;
|
||||||
|
|
@ -154,7 +154,7 @@ namespace ESM
|
||||||
effects[MagicEffect::Effects::Blind] = MagicEffect::Effects::ResistMagicka;
|
effects[MagicEffect::Effects::Blind] = MagicEffect::Effects::ResistMagicka;
|
||||||
effects[MagicEffect::Effects::Sound] = MagicEffect::Effects::ResistMagicka;
|
effects[MagicEffect::Effects::Sound] = MagicEffect::Effects::ResistMagicka;
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i)
|
for (short i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
effects[MagicEffect::Effects::CalmHumanoid + i] = MagicEffect::Effects::ResistMagicka;
|
effects[MagicEffect::Effects::CalmHumanoid + i] = MagicEffect::Effects::ResistMagicka;
|
||||||
effects[MagicEffect::Effects::FrenzyHumanoid + i] = MagicEffect::Effects::ResistMagicka;
|
effects[MagicEffect::Effects::FrenzyHumanoid + i] = MagicEffect::Effects::ResistMagicka;
|
||||||
|
|
@ -194,11 +194,11 @@ namespace ESM
|
||||||
static std::map<short, short> effects;
|
static std::map<short, short> effects;
|
||||||
if (effects.empty())
|
if (effects.empty())
|
||||||
{
|
{
|
||||||
for (int i = DrainAttribute; i <= DamageSkill; ++i)
|
for (short i = DrainAttribute; i <= DamageSkill; ++i)
|
||||||
effects[i] = WeaknessToMagicka;
|
effects[i] = WeaknessToMagicka;
|
||||||
for (int i = AbsorbAttribute; i <= AbsorbSkill; ++i)
|
for (short i = AbsorbAttribute; i <= AbsorbSkill; ++i)
|
||||||
effects[i] = WeaknessToMagicka;
|
effects[i] = WeaknessToMagicka;
|
||||||
for (int i = WeaknessToFire; i <= WeaknessToNormalWeapons; ++i)
|
for (short i = WeaknessToFire; i <= WeaknessToNormalWeapons; ++i)
|
||||||
effects[i] = WeaknessToMagicka;
|
effects[i] = WeaknessToMagicka;
|
||||||
|
|
||||||
effects[Burden] = WeaknessToMagicka;
|
effects[Burden] = WeaknessToMagicka;
|
||||||
|
|
@ -207,7 +207,7 @@ namespace ESM
|
||||||
effects[Blind] = WeaknessToMagicka;
|
effects[Blind] = WeaknessToMagicka;
|
||||||
effects[Sound] = WeaknessToMagicka;
|
effects[Sound] = WeaknessToMagicka;
|
||||||
|
|
||||||
for (int i = 0; i < 2; ++i)
|
for (short i = 0; i < 2; ++i)
|
||||||
{
|
{
|
||||||
effects[CalmHumanoid + i] = WeaknessToMagicka;
|
effects[CalmHumanoid + i] = WeaknessToMagicka;
|
||||||
effects[FrenzyHumanoid + i] = WeaknessToMagicka;
|
effects[FrenzyHumanoid + i] = WeaknessToMagicka;
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ namespace ESM
|
||||||
|
|
||||||
osg::Vec4f getColor() const;
|
osg::Vec4f getColor() const;
|
||||||
|
|
||||||
enum Effects
|
enum Effects : short
|
||||||
{
|
{
|
||||||
WaterBreathing = 0,
|
WaterBreathing = 0,
|
||||||
SwiftSwim = 1,
|
SwiftSwim = 1,
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ namespace Files
|
||||||
pos_type seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which) override
|
pos_type seekoff(off_type off, std::ios_base::seekdir dir, std::ios_base::openmode which) override
|
||||||
{
|
{
|
||||||
if (dir == std::ios_base::cur)
|
if (dir == std::ios_base::cur)
|
||||||
gbump(off);
|
setg(bufferStart, gptr() + off, bufferEnd);
|
||||||
else
|
else
|
||||||
setg(bufferStart, (dir == std::ios_base::beg ? bufferStart : bufferEnd) + off, bufferEnd);
|
setg(bufferStart, (dir == std::ios_base::beg ? bufferStart : bufferEnd) + off, bufferEnd);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ namespace LuaUtil
|
||||||
{
|
{
|
||||||
const ESM::LuaScriptCfg& script = mScripts[id];
|
const ESM::LuaScriptCfg& script = mScripts[id];
|
||||||
if (script.mFlags & flag)
|
if (script.mFlags & flag)
|
||||||
res[id] = script.mInitializationData;
|
res[static_cast<int>(id)] = script.mInitializationData;
|
||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ namespace Misc::Convert
|
||||||
|
|
||||||
inline osg::Vec3f makeOsgVec3f(const ESM::Pathgrid::Point& value)
|
inline osg::Vec3f makeOsgVec3f(const ESM::Pathgrid::Point& value)
|
||||||
{
|
{
|
||||||
return osg::Vec3f(value.mX, value.mY, value.mZ);
|
return osg::Vec3f(static_cast<float>(value.mX), static_cast<float>(value.mY), static_cast<float>(value.mZ));
|
||||||
}
|
}
|
||||||
|
|
||||||
inline btVector3 toBullet(const osg::Vec3f& vec)
|
inline btVector3 toBullet(const osg::Vec3f& vec)
|
||||||
|
|
@ -32,9 +32,9 @@ namespace Misc::Convert
|
||||||
return btQuaternion(quat.x(), quat.y(), quat.z(), quat.w());
|
return btQuaternion(quat.x(), quat.y(), quat.z(), quat.w());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline osg::Vec3f toOsg(const btVector3& vec)
|
inline osg::Vec3d toOsg(const btVector3& vec)
|
||||||
{
|
{
|
||||||
return osg::Vec3f(vec.x(), vec.y(), vec.z());
|
return osg::Vec3d(vec.x(), vec.y(), vec.z());
|
||||||
}
|
}
|
||||||
|
|
||||||
inline osg::Quat toOsg(const btQuaternion& quat)
|
inline osg::Quat toOsg(const btQuaternion& quat)
|
||||||
|
|
|
||||||
|
|
@ -263,7 +263,7 @@ namespace NifOsg
|
||||||
if (mKeyFrames.size() <= 1)
|
if (mKeyFrames.size() <= 1)
|
||||||
return;
|
return;
|
||||||
float input = getInputValue(nv);
|
float input = getInputValue(nv);
|
||||||
size_t i = 1;
|
unsigned int i = 1;
|
||||||
for (std::vector<FloatInterpolator>::iterator it = mKeyFrames.begin() + 1; it != mKeyFrames.end();
|
for (std::vector<FloatInterpolator>::iterator it = mKeyFrames.begin() + 1; it != mKeyFrames.end();
|
||||||
++it, ++i)
|
++it, ++i)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ namespace NifOsg
|
||||||
for (int j = 0; j < 3; ++j)
|
for (int j = 0; j < 3; ++j)
|
||||||
{
|
{
|
||||||
// Update the current decomposed rotation and restore the known scale.
|
// Update the current decomposed rotation and restore the known scale.
|
||||||
mRotationScale.mValues[j][i] = _matrix(i, j); // NB: column/row major difference
|
mRotationScale.mValues[j][i] = static_cast<float>(_matrix(i, j)); // NB: column/row major difference
|
||||||
_matrix(i, j) *= mScale;
|
_matrix(i, j) *= mScale;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ namespace NifOsg
|
||||||
{
|
{
|
||||||
mNormalArray = new osg::Vec3Array(1);
|
mNormalArray = new osg::Vec3Array(1);
|
||||||
mNormalArray->setBinding(osg::Array::BIND_OVERALL);
|
mNormalArray->setBinding(osg::Array::BIND_OVERALL);
|
||||||
(*mNormalArray.get())[0] = osg::Vec3(0.3, 0.3, 0.3);
|
(*mNormalArray.get())[0] = osg::Vec3(0.3f, 0.3f, 0.3f);
|
||||||
}
|
}
|
||||||
|
|
||||||
ParticleSystem::ParticleSystem(const ParticleSystem& copy, const osg::CopyOp& copyop)
|
ParticleSystem::ParticleSystem(const ParticleSystem& copy, const osg::CopyOp& copyop)
|
||||||
|
|
@ -115,7 +115,7 @@ namespace NifOsg
|
||||||
{
|
{
|
||||||
mNormalArray = new osg::Vec3Array(1);
|
mNormalArray = new osg::Vec3Array(1);
|
||||||
mNormalArray->setBinding(osg::Array::BIND_OVERALL);
|
mNormalArray->setBinding(osg::Array::BIND_OVERALL);
|
||||||
(*mNormalArray.get())[0] = osg::Vec3(0.3, 0.3, 0.3);
|
(*mNormalArray.get())[0] = osg::Vec3(0.3f, 0.3f, 0.3f);
|
||||||
|
|
||||||
// For some reason the osgParticle constructor doesn't copy the particles
|
// For some reason the osgParticle constructor doesn't copy the particles
|
||||||
for (int i = 0; i < copy.numParticles() - copy.numDeadParticles(); ++i)
|
for (int i = 0; i < copy.numParticles() - copy.numDeadParticles(); ++i)
|
||||||
|
|
@ -247,9 +247,9 @@ namespace NifOsg
|
||||||
{
|
{
|
||||||
float size = mCachedDefaultSize;
|
float size = mCachedDefaultSize;
|
||||||
if (particle->getAge() < mGrowTime && mGrowTime != 0.f)
|
if (particle->getAge() < mGrowTime && mGrowTime != 0.f)
|
||||||
size *= particle->getAge() / mGrowTime;
|
size *= static_cast<float>(particle->getAge() / mGrowTime);
|
||||||
if (particle->getLifeTime() - particle->getAge() < mFadeTime && mFadeTime != 0.f)
|
if (particle->getLifeTime() - particle->getAge() < mFadeTime && mFadeTime != 0.f)
|
||||||
size *= (particle->getLifeTime() - particle->getAge()) / mFadeTime;
|
size *= static_cast<float>(particle->getLifeTime() - particle->getAge()) / mFadeTime;
|
||||||
particle->setSizeRange(osgParticle::rangef(size, size));
|
particle->setSizeRange(osgParticle::rangef(size, size));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -326,7 +326,7 @@ namespace NifOsg
|
||||||
decayFactor = std::exp(-1.f * mDecay * distance);
|
decayFactor = std::exp(-1.f * mDecay * distance);
|
||||||
}
|
}
|
||||||
|
|
||||||
particle->addVelocity(mCachedWorldDirection * mForce * dt * decayFactor * magic);
|
particle->addVelocity(mCachedWorldDirection * mForce * static_cast<float>(dt) * decayFactor * magic);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -340,7 +340,7 @@ namespace NifOsg
|
||||||
|
|
||||||
diff.normalize();
|
diff.normalize();
|
||||||
|
|
||||||
particle->addVelocity(diff * mForce * dt * decayFactor * magic);
|
particle->addVelocity(diff * mForce * static_cast<float>(dt) * decayFactor * magic);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -421,7 +421,7 @@ namespace NifOsg
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
particle->addVelocity(explosionDir * mStrength * decay * dt);
|
particle->addVelocity(explosionDir * mStrength * decay * static_cast<float>(dt));
|
||||||
}
|
}
|
||||||
|
|
||||||
Emitter::Emitter()
|
Emitter::Emitter()
|
||||||
|
|
@ -487,7 +487,7 @@ namespace NifOsg
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int randomIndex = Misc::Rng::rollClosedProbability() * (mTargets.size() - 1);
|
int randomIndex = static_cast<int>(std::floor(Misc::Rng::rollClosedProbability() * (mTargets.size() - 1)));
|
||||||
recIndex = mTargets[randomIndex];
|
recIndex = mTargets[randomIndex];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,11 +83,11 @@ namespace Resource
|
||||||
auto triangleMeshShape = std::make_unique<TriangleMeshShape>(mTriangleMesh.release(), true);
|
auto triangleMeshShape = std::make_unique<TriangleMeshShape>(mTriangleMesh.release(), true);
|
||||||
btVector3 aabbMin = triangleMeshShape->getLocalAabbMin();
|
btVector3 aabbMin = triangleMeshShape->getLocalAabbMin();
|
||||||
btVector3 aabbMax = triangleMeshShape->getLocalAabbMax();
|
btVector3 aabbMax = triangleMeshShape->getLocalAabbMax();
|
||||||
shape->mCollisionBox.mExtents[0] = (aabbMax[0] - aabbMin[0]) / 2.0f;
|
shape->mCollisionBox.mExtents[0] = static_cast<float>(aabbMax[0] - aabbMin[0]) / 2.0f;
|
||||||
shape->mCollisionBox.mExtents[1] = (aabbMax[1] - aabbMin[1]) / 2.0f;
|
shape->mCollisionBox.mExtents[1] = static_cast<float>(aabbMax[1] - aabbMin[1]) / 2.0f;
|
||||||
shape->mCollisionBox.mExtents[2] = (aabbMax[2] - aabbMin[2]) / 2.0f;
|
shape->mCollisionBox.mExtents[2] = static_cast<float>(aabbMax[2] - aabbMin[2]) / 2.0f;
|
||||||
shape->mCollisionBox.mCenter = osg::Vec3f(
|
shape->mCollisionBox.mCenter = osg::Vec3f(
|
||||||
(aabbMax[0] + aabbMin[0]) / 2.0f, (aabbMax[1] + aabbMin[1]) / 2.0f, (aabbMax[2] + aabbMin[2]) / 2.0f);
|
static_cast<float>(aabbMax[0] + aabbMin[0]) / 2.0f, static_cast<float>(aabbMax[1] + aabbMin[1]) / 2.0f, static_cast<float>(aabbMax[2] + aabbMin[2]) / 2.0f);
|
||||||
shape->mCollisionShape.reset(triangleMeshShape.release());
|
shape->mCollisionShape.reset(triangleMeshShape.release());
|
||||||
|
|
||||||
return shape;
|
return shape;
|
||||||
|
|
|
||||||
|
|
@ -144,8 +144,8 @@ namespace Resource
|
||||||
|
|
||||||
callback->addMergedAnimationTrack(std::move(mergedAnimationTrack));
|
callback->addMergedAnimationTrack(std::move(mergedAnimationTrack));
|
||||||
|
|
||||||
float startTime = animation->getStartTime();
|
float startTime = static_cast<float>(animation->getStartTime());
|
||||||
float stopTime = startTime + animation->getDuration();
|
float stopTime = static_cast<float>(startTime + animation->getDuration());
|
||||||
|
|
||||||
SceneUtil::EmulatedAnimation emulatedAnimation;
|
SceneUtil::EmulatedAnimation emulatedAnimation;
|
||||||
emulatedAnimation.mStartTime = startTime;
|
emulatedAnimation.mStartTime = startTime;
|
||||||
|
|
@ -168,7 +168,7 @@ namespace Resource
|
||||||
{
|
{
|
||||||
std::string line;
|
std::string line;
|
||||||
while (getline(*textKeysFile, line))
|
while (getline(*textKeysFile, line))
|
||||||
mTarget.mTextKeys.emplace(parseTimeSignature(line), parseTextKey(line));
|
mTarget.mTextKeys.emplace(static_cast<float>(parseTimeSignature(line)), parseTextKey(line));
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -520,14 +520,14 @@ namespace Resource
|
||||||
|
|
||||||
void StatsHandler::setUpScene(osgViewer::ViewerBase& viewer)
|
void StatsHandler::setUpScene(osgViewer::ViewerBase& viewer)
|
||||||
{
|
{
|
||||||
const osg::Vec4 backgroundColor(0.0, 0.0, 0.0f, 0.3);
|
const osg::Vec4 backgroundColor(0.0f, 0.0f, 0.0f, 0.3f);
|
||||||
const osg::Vec4 staticTextColor(1.0, 1.0, 0.0f, 1.0);
|
const osg::Vec4 staticTextColor(1.0f, 1.0f, 0.0f, 1.0f);
|
||||||
const osg::Vec4 dynamicTextColor(1.0, 1.0, 1.0f, 1.0);
|
const osg::Vec4 dynamicTextColor(1.0f, 1.0f, 1.0f, 1.0f);
|
||||||
|
|
||||||
const auto longest = std::max_element(mStatNames.begin(), mStatNames.end(),
|
const auto longest = std::max_element(mStatNames.begin(), mStatNames.end(),
|
||||||
[](const std::string& lhs, const std::string& rhs) { return lhs.size() < rhs.size(); });
|
[](const std::string& lhs, const std::string& rhs) { return lhs.size() < rhs.size(); });
|
||||||
const std::size_t longestSize = longest->size();
|
const std::size_t longestSize = longest->size();
|
||||||
const float statNamesWidth = longestSize * characterSize * 0.6 + 2 * backgroundMargin;
|
const float statNamesWidth = longestSize * characterSize * 0.6f + 2 * backgroundMargin;
|
||||||
const float statTextWidth = 7 * characterSize + 2 * backgroundMargin;
|
const float statTextWidth = 7 * characterSize + 2 * backgroundMargin;
|
||||||
const float statHeight = pageSize * characterSize + 2 * backgroundMargin;
|
const float statHeight = pageSize * characterSize + 2 * backgroundMargin;
|
||||||
const float width = statNamesWidth + backgroundSpacing + statTextWidth;
|
const float width = statNamesWidth + backgroundSpacing + statTextWidth;
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,7 @@ namespace SceneUtil
|
||||||
|
|
||||||
float FrameTimeSource::getValue(osg::NodeVisitor* nv)
|
float FrameTimeSource::getValue(osg::NodeVisitor* nv)
|
||||||
{
|
{
|
||||||
return nv->getFrameStamp()->getSimulationTime();
|
return static_cast<float>(nv->getFrameStamp()->getSimulationTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
ControllerVisitor::ControllerVisitor()
|
ControllerVisitor::ControllerVisitor()
|
||||||
|
|
@ -83,7 +83,7 @@ namespace SceneUtil
|
||||||
visit(node, *ctrl);
|
visit(node, *ctrl);
|
||||||
if (CompositeStateSetUpdater* composite = dynamic_cast<CompositeStateSetUpdater*>(callback))
|
if (CompositeStateSetUpdater* composite = dynamic_cast<CompositeStateSetUpdater*>(callback))
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < composite->getNumControllers(); ++i)
|
for (size_t i = 0; i < composite->getNumControllers(); ++i)
|
||||||
{
|
{
|
||||||
StateSetUpdater* statesetcontroller = composite->getController(i);
|
StateSetUpdater* statesetcontroller = composite->getController(i);
|
||||||
if (Controller* ctrl = dynamic_cast<Controller*>(statesetcontroller))
|
if (Controller* ctrl = dynamic_cast<Controller*>(statesetcontroller))
|
||||||
|
|
|
||||||
|
|
@ -114,8 +114,8 @@ namespace SceneUtil
|
||||||
osg::ref_ptr<osg::Material> material = new osg::Material;
|
osg::ref_ptr<osg::Material> material = new osg::Material;
|
||||||
material->setColorMode(osg::Material::AMBIENT_AND_DIFFUSE);
|
material->setColorMode(osg::Material::AMBIENT_AND_DIFFUSE);
|
||||||
|
|
||||||
const float polygonOffsetFactor = SceneUtil::AutoDepth::isReversed() ? 1.0 : -1.0;
|
const float polygonOffsetFactor = SceneUtil::AutoDepth::isReversed() ? 1.0f : -1.0f;
|
||||||
const float polygonOffsetUnits = SceneUtil::AutoDepth::isReversed() ? 1.0 : -1.0;
|
const float polygonOffsetUnits = SceneUtil::AutoDepth::isReversed() ? 1.0f : -1.0f;
|
||||||
osg::ref_ptr<osg::PolygonOffset> polygonOffset
|
osg::ref_ptr<osg::PolygonOffset> polygonOffset
|
||||||
= new osg::PolygonOffset(polygonOffsetFactor, polygonOffsetUnits);
|
= new osg::PolygonOffset(polygonOffsetFactor, polygonOffsetUnits);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ namespace SceneUtil
|
||||||
, mPulseSlow(light.mData.mFlags & ESM::Light::PulseSlow)
|
, mPulseSlow(light.mData.mFlags & ESM::Light::PulseSlow)
|
||||||
, mOffDefault(light.mData.mFlags & ESM::Light::OffDefault)
|
, mOffDefault(light.mData.mFlags & ESM::Light::OffDefault)
|
||||||
, mColor(SceneUtil::colourFromRGB(light.mData.mColor))
|
, mColor(SceneUtil::colourFromRGB(light.mData.mColor))
|
||||||
, mRadius(light.mData.mRadius)
|
, mRadius(static_cast<float>(light.mData.mRadius))
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -26,7 +26,7 @@ namespace SceneUtil
|
||||||
, mPulseSlow(light.mData.flags & ESM4::Light::PulseSlow)
|
, mPulseSlow(light.mData.flags & ESM4::Light::PulseSlow)
|
||||||
, mOffDefault(light.mData.flags & ESM4::Light::OffDefault)
|
, mOffDefault(light.mData.flags & ESM4::Light::OffDefault)
|
||||||
, mColor(SceneUtil::colourFromRGB(light.mData.colour))
|
, mColor(SceneUtil::colourFromRGB(light.mData.colour))
|
||||||
, mRadius(light.mData.radius)
|
, mRadius(static_cast<float>(light.mData.radius))
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -168,7 +168,7 @@ namespace SceneUtil
|
||||||
void configureLayout(const LightBuffer* other)
|
void configureLayout(const LightBuffer* other)
|
||||||
{
|
{
|
||||||
mOffsets = other->mOffsets;
|
mOffsets = other->mOffsets;
|
||||||
int size = other->mData->size();
|
int size = static_cast<int>(other->mData->size());
|
||||||
|
|
||||||
configureLayout(mOffsets, size);
|
configureLayout(mOffsets, size);
|
||||||
}
|
}
|
||||||
|
|
@ -192,7 +192,7 @@ namespace SceneUtil
|
||||||
: mStride((offsetAttenuationRadius + sizeof(GLfloat) * osg::Vec4::num_components + stride) / 4)
|
: mStride((offsetAttenuationRadius + sizeof(GLfloat) * osg::Vec4::num_components + stride) / 4)
|
||||||
{
|
{
|
||||||
constexpr auto sizeofFloat = sizeof(GLfloat);
|
constexpr auto sizeofFloat = sizeof(GLfloat);
|
||||||
const auto diffuseOffset = offsetColors / sizeofFloat;
|
const auto diffuseOffset = static_cast<int>(offsetColors / sizeofFloat);
|
||||||
|
|
||||||
mValues[Diffuse] = diffuseOffset;
|
mValues[Diffuse] = diffuseOffset;
|
||||||
mValues[Ambient] = diffuseOffset + 1;
|
mValues[Ambient] = diffuseOffset + 1;
|
||||||
|
|
@ -310,7 +310,7 @@ namespace SceneUtil
|
||||||
|
|
||||||
META_StateAttribute(SceneUtil, DisableLight, osg::StateAttribute::LIGHT)
|
META_StateAttribute(SceneUtil, DisableLight, osg::StateAttribute::LIGHT)
|
||||||
|
|
||||||
unsigned int getMember() const override { return mIndex; }
|
unsigned int getMember() const override { return static_cast<unsigned int>(mIndex); }
|
||||||
|
|
||||||
bool getModeUsage(ModeUsage& usage) const override
|
bool getModeUsage(ModeUsage& usage) const override
|
||||||
{
|
{
|
||||||
|
|
@ -360,12 +360,12 @@ namespace SceneUtil
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int getMember() const override { return mIndex; }
|
unsigned int getMember() const override { return static_cast<unsigned int>(mIndex); }
|
||||||
|
|
||||||
bool getModeUsage(ModeUsage& usage) const override
|
bool getModeUsage(ModeUsage& usage) const override
|
||||||
{
|
{
|
||||||
for (size_t i = 0; i < mLights.size(); ++i)
|
for (size_t i = 0; i < mLights.size(); ++i)
|
||||||
usage.usesMode(GL_LIGHT0 + mIndex + i);
|
usage.usesMode(GL_LIGHT0 + static_cast<int>(mIndex) + i);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -451,7 +451,7 @@ namespace SceneUtil
|
||||||
new FFPLightStateAttribute(mLightManager->getStartLight(), std::move(lights)), osg::StateAttribute::ON);
|
new FFPLightStateAttribute(mLightManager->getStartLight(), std::move(lights)), osg::StateAttribute::ON);
|
||||||
|
|
||||||
for (size_t i = 0; i < lightList.size(); ++i)
|
for (size_t i = 0; i < lightList.size(); ++i)
|
||||||
stateset->setMode(GL_LIGHT0 + mLightManager->getStartLight() + i, osg::StateAttribute::ON);
|
stateset->setMode(GL_LIGHT0 + mLightManager->getStartLight() + static_cast<int>(i), osg::StateAttribute::ON);
|
||||||
|
|
||||||
// need to push some dummy attributes to ensure proper state tracking
|
// need to push some dummy attributes to ensure proper state tracking
|
||||||
// lights need to reset to their default when the StateSet is popped
|
// lights need to reset to their default when the StateSet is popped
|
||||||
|
|
@ -533,7 +533,7 @@ namespace SceneUtil
|
||||||
configureAttenuation(lightMat, light->getConstantAttenuation(), light->getLinearAttenuation(),
|
configureAttenuation(lightMat, light->getConstantAttenuation(), light->getLinearAttenuation(),
|
||||||
light->getQuadraticAttenuation(), lightList[i]->mLightSource->getRadius());
|
light->getQuadraticAttenuation(), lightList[i]->mLightSource->getRadius());
|
||||||
|
|
||||||
data->setElement(i + 1, lightMat);
|
data->setElement(static_cast<unsigned int>(i + 1), lightMat);
|
||||||
}
|
}
|
||||||
|
|
||||||
stateset->addUniform(data);
|
stateset->addUniform(data);
|
||||||
|
|
@ -774,7 +774,7 @@ namespace SceneUtil
|
||||||
int stride = -1;
|
int stride = -1;
|
||||||
|
|
||||||
ext->glGetActiveUniformBlockiv(handle, 0, GL_UNIFORM_BLOCK_DATA_SIZE, &totalBlockSize);
|
ext->glGetActiveUniformBlockiv(handle, 0, GL_UNIFORM_BLOCK_DATA_SIZE, &totalBlockSize);
|
||||||
ext->glGetActiveUniformsiv(handle, index.size(), index.data(), GL_UNIFORM_ARRAY_STRIDE, &stride);
|
ext->glGetActiveUniformsiv(handle, static_cast<GLsizei>(index.size()), index.data(), GL_UNIFORM_ARRAY_STRIDE, &stride);
|
||||||
|
|
||||||
std::array<const char*, 3> names = {
|
std::array<const char*, 3> names = {
|
||||||
"LightBuffer[0].packedColors",
|
"LightBuffer[0].packedColors",
|
||||||
|
|
@ -784,8 +784,8 @@ namespace SceneUtil
|
||||||
std::vector<unsigned int> indices(names.size());
|
std::vector<unsigned int> indices(names.size());
|
||||||
std::vector<int> offsets(names.size());
|
std::vector<int> offsets(names.size());
|
||||||
|
|
||||||
ext->glGetUniformIndices(handle, names.size(), names.data(), indices.data());
|
ext->glGetUniformIndices(handle, static_cast<GLsizei>(names.size()), names.data(), indices.data());
|
||||||
ext->glGetActiveUniformsiv(handle, indices.size(), indices.data(), GL_UNIFORM_OFFSET, offsets.data());
|
ext->glGetActiveUniformsiv(handle, static_cast<GLsizei>(indices.size()), indices.data(), GL_UNIFORM_OFFSET, offsets.data());
|
||||||
|
|
||||||
mTemplate->configureLayout(offsets[0], offsets[1], offsets[2], totalBlockSize, stride);
|
mTemplate->configureLayout(offsets[0], offsets[1], offsets[2], totalBlockSize, stride);
|
||||||
}
|
}
|
||||||
|
|
@ -1047,7 +1047,7 @@ namespace SceneUtil
|
||||||
LightSourceTransform l;
|
LightSourceTransform l;
|
||||||
l.mLightSource = lightSource;
|
l.mLightSource = lightSource;
|
||||||
l.mWorldMatrix = worldMat;
|
l.mWorldMatrix = worldMat;
|
||||||
osg::Vec3f pos = osg::Vec3f(worldMat.getTrans().x(), worldMat.getTrans().y(), worldMat.getTrans().z());
|
osg::Vec3f pos = worldMat.getTrans();
|
||||||
lightSource->getLight(frameNum)->setPosition(osg::Vec4f(pos, 1.f));
|
lightSource->getLight(frameNum)->setPosition(osg::Vec4f(pos, 1.f));
|
||||||
|
|
||||||
mLights.push_back(l);
|
mLights.push_back(l);
|
||||||
|
|
@ -1094,7 +1094,7 @@ namespace SceneUtil
|
||||||
if (getLightIndexMap(frameNum).find(id) != getLightIndexMap(frameNum).end())
|
if (getLightIndexMap(frameNum).find(id) != getLightIndexMap(frameNum).end())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
int index = getLightIndexMap(frameNum).size() + 1;
|
int index = static_cast<int>(getLightIndexMap(frameNum).size()) + 1;
|
||||||
updateGPUPointLight(index, lightList[i]->mLightSource, frameNum, viewMatrix);
|
updateGPUPointLight(index, lightList[i]->mLightSource, frameNum, viewMatrix);
|
||||||
getLightIndexMap(frameNum).emplace(id, index);
|
getLightIndexMap(frameNum).emplace(id, index);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ namespace SceneUtil
|
||||||
void setLight(size_t frame, const osg::Light* light, float radius)
|
void setLight(size_t frame, const osg::Light* light, float radius)
|
||||||
{
|
{
|
||||||
size_t frameId = frame % 2;
|
size_t frameId = frame % 2;
|
||||||
size_t i = mIndex[frameId];
|
int i = mIndex[frameId];
|
||||||
|
|
||||||
if (i >= (sMaxPPLights - 1))
|
if (i >= (sMaxPPLights - 1))
|
||||||
return;
|
return;
|
||||||
|
|
@ -74,11 +74,11 @@ namespace SceneUtil
|
||||||
void updateCount(size_t frame)
|
void updateCount(size_t frame)
|
||||||
{
|
{
|
||||||
size_t frameId = frame % 2;
|
size_t frameId = frame % 2;
|
||||||
mUniformCount[frameId]->set(static_cast<int>(mIndex[frameId]));
|
mUniformCount[frameId]->set(mIndex[frameId]);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<size_t, 2> mIndex;
|
std::array<int, 2> mIndex;
|
||||||
std::array<osg::ref_ptr<osg::Uniform>, 2> mUniformBuffers;
|
std::array<osg::ref_ptr<osg::Uniform>, 2> mUniformBuffers;
|
||||||
std::array<osg::ref_ptr<osg::Uniform>, 2> mUniformCount;
|
std::array<osg::ref_ptr<osg::Uniform>, 2> mUniformCount;
|
||||||
};
|
};
|
||||||
|
|
@ -106,7 +106,7 @@ namespace SceneUtil
|
||||||
|
|
||||||
float mActorFade;
|
float mActorFade;
|
||||||
|
|
||||||
unsigned int mLastAppliedFrame;
|
size_t mLastAppliedFrame;
|
||||||
|
|
||||||
bool mEmpty = false;
|
bool mEmpty = false;
|
||||||
|
|
||||||
|
|
@ -148,9 +148,9 @@ namespace SceneUtil
|
||||||
/// Get the unique ID for this light source.
|
/// Get the unique ID for this light source.
|
||||||
int getId() const { return mId; }
|
int getId() const { return mId; }
|
||||||
|
|
||||||
void setLastAppliedFrame(unsigned int lastAppliedFrame) { mLastAppliedFrame = lastAppliedFrame; }
|
void setLastAppliedFrame(size_t lastAppliedFrame) { mLastAppliedFrame = lastAppliedFrame; }
|
||||||
|
|
||||||
unsigned int getLastAppliedFrame() const { return mLastAppliedFrame; }
|
size_t getLastAppliedFrame() const { return mLastAppliedFrame; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class UBOManager : public osg::StateAttribute
|
class UBOManager : public osg::StateAttribute
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ namespace SceneUtil
|
||||||
linearAttenuation = linearMethod == 0 ? linearValue : 0.01f;
|
linearAttenuation = linearMethod == 0 ? linearValue : 0.01f;
|
||||||
float r = radius * linearRadiusMult;
|
float r = radius * linearRadiusMult;
|
||||||
if (r > 0.f && (linearMethod == 1 || linearMethod == 2))
|
if (r > 0.f && (linearMethod == 1 || linearMethod == 2))
|
||||||
linearAttenuation = linearValue / std::pow(r, linearMethod);
|
linearAttenuation = linearValue / std::pow(r, static_cast<float>(linearMethod));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (useQuadratic && (!outQuadInLin || isExterior))
|
if (useQuadratic && (!outQuadInLin || isExterior))
|
||||||
|
|
@ -81,7 +81,7 @@ namespace SceneUtil
|
||||||
quadraticAttenuation = quadraticMethod == 0 ? quadraticValue : 0.01f;
|
quadraticAttenuation = quadraticMethod == 0 ? quadraticValue : 0.01f;
|
||||||
float r = radius * quadraticRadiusMult;
|
float r = radius * quadraticRadiusMult;
|
||||||
if (r > 0.f && (quadraticMethod == 1 || quadraticMethod == 2))
|
if (r > 0.f && (quadraticMethod == 1 || quadraticMethod == 2))
|
||||||
quadraticAttenuation = quadraticValue / std::pow(r, quadraticMethod);
|
quadraticAttenuation = quadraticValue / std::pow(r, static_cast<float>(quadraticMethod));
|
||||||
}
|
}
|
||||||
|
|
||||||
// If the values are still nonsense, try to at least prevent UB and disable attenuation
|
// If the values are still nonsense, try to at least prevent UB and disable attenuation
|
||||||
|
|
|
||||||
|
|
@ -3341,7 +3341,7 @@ void SceneUtil::MWShadowTechnique::DebugHUD::setFrustumVertices(osg::ref_ptr<osg
|
||||||
|
|
||||||
void SceneUtil::MWShadowTechnique::DebugHUD::addAnotherShadowMap()
|
void SceneUtil::MWShadowTechnique::DebugHUD::addAnotherShadowMap()
|
||||||
{
|
{
|
||||||
unsigned int shadowMapNumber = mDebugCameras.size();
|
size_t shadowMapNumber = mDebugCameras.size();
|
||||||
|
|
||||||
mDebugCameras.push_back(new osg::Camera);
|
mDebugCameras.push_back(new osg::Camera);
|
||||||
mDebugCameras[shadowMapNumber]->setViewport(200 * shadowMapNumber, 0, 200, 200);
|
mDebugCameras[shadowMapNumber]->setViewport(200 * shadowMapNumber, 0, 200, 200);
|
||||||
|
|
|
||||||
|
|
@ -300,12 +300,12 @@ namespace SceneUtil {
|
||||||
double _splitPointUniformLogRatio = 0.5;
|
double _splitPointUniformLogRatio = 0.5;
|
||||||
double _splitPointDeltaBias = 0.0;
|
double _splitPointDeltaBias = 0.0;
|
||||||
|
|
||||||
float _polygonOffsetFactor = 1.1;
|
float _polygonOffsetFactor = 1.f;
|
||||||
float _polygonOffsetUnits = 4.0;
|
float _polygonOffsetUnits = 4.0f;
|
||||||
|
|
||||||
bool _useFrontFaceCulling = true;
|
bool _useFrontFaceCulling = true;
|
||||||
|
|
||||||
float _shadowFadeStart = 0.0;
|
float _shadowFadeStart = 0.0f;
|
||||||
|
|
||||||
unsigned int _worldMask = ~0u;
|
unsigned int _worldMask = ~0u;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -47,16 +47,19 @@ namespace SceneUtil
|
||||||
void addPathgridToGeometry(const size_t vertexCount, const size_t pointIndexCount, const size_t edgeIndexCount,
|
void addPathgridToGeometry(const size_t vertexCount, const size_t pointIndexCount, const size_t edgeIndexCount,
|
||||||
osg::ref_ptr<osg::Geometry>& gridGeometry, const ESM::Pathgrid& pathgrid)
|
osg::ref_ptr<osg::Geometry>& gridGeometry, const ESM::Pathgrid& pathgrid)
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(vertexCount);
|
assert(vertexCount < std::numeric_limits<unsigned int>::max());
|
||||||
osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array(vertexCount);
|
assert(pointIndexCount < std::numeric_limits<unsigned int>::max());
|
||||||
osg::ref_ptr<PType> pointIndices = new PType(osg::PrimitiveSet::TRIANGLES, pointIndexCount);
|
assert(edgeIndexCount < std::numeric_limits<unsigned int>::max());
|
||||||
osg::ref_ptr<LType> lineIndices = new LType(osg::PrimitiveSet::LINES, edgeIndexCount);
|
osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(static_cast<unsigned int>(vertexCount));
|
||||||
|
osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array(static_cast<unsigned int>(vertexCount));
|
||||||
|
osg::ref_ptr<PType> pointIndices = new PType(osg::PrimitiveSet::TRIANGLES, static_cast<unsigned int>(pointIndexCount));
|
||||||
|
osg::ref_ptr<LType> lineIndices = new LType(osg::PrimitiveSet::LINES, static_cast<unsigned int>(edgeIndexCount));
|
||||||
|
|
||||||
// Add each point/node
|
// Add each point/node
|
||||||
for (size_t pointIndex = 0; pointIndex < pathgrid.mPoints.size(); ++pointIndex)
|
for (size_t pointIndex = 0; pointIndex < pathgrid.mPoints.size(); ++pointIndex)
|
||||||
{
|
{
|
||||||
const ESM::Pathgrid::Point& point = pathgrid.mPoints[pointIndex];
|
const ESM::Pathgrid::Point& point = pathgrid.mPoints[pointIndex];
|
||||||
osg::Vec3f position = osg::Vec3f(point.mX, point.mY, point.mZ);
|
osg::Vec3f position = osg::Vec3f(static_cast<float>(point.mX), static_cast<float>(point.mY), static_cast<float>(point.mZ));
|
||||||
|
|
||||||
size_t vertexOffset = pointIndex * DiamondTotalVertexCount;
|
size_t vertexOffset = pointIndex * DiamondTotalVertexCount;
|
||||||
size_t indexOffset = pointIndex * DiamondIndexCount;
|
size_t indexOffset = pointIndex * DiamondIndexCount;
|
||||||
|
|
@ -70,7 +73,7 @@ namespace SceneUtil
|
||||||
|
|
||||||
for (unsigned short i = 0; i < DiamondIndexCount; ++i)
|
for (unsigned short i = 0; i < DiamondIndexCount; ++i)
|
||||||
{
|
{
|
||||||
pointIndices->setElement(indexOffset + i, vertexOffset + DiamondIndices[i]);
|
pointIndices->setElement(static_cast<unsigned int>(indexOffset + i), static_cast<unsigned int>(vertexOffset + DiamondIndices[i]));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Connectors
|
// Connectors
|
||||||
|
|
@ -93,8 +96,8 @@ namespace SceneUtil
|
||||||
const ESM::Pathgrid::Point& from = pathgrid.mPoints[edge.mV0];
|
const ESM::Pathgrid::Point& from = pathgrid.mPoints[edge.mV0];
|
||||||
const ESM::Pathgrid::Point& to = pathgrid.mPoints[edge.mV1];
|
const ESM::Pathgrid::Point& to = pathgrid.mPoints[edge.mV1];
|
||||||
|
|
||||||
osg::Vec3f fromPos = osg::Vec3f(from.mX, from.mY, from.mZ);
|
osg::Vec3f fromPos = osg::Vec3f(static_cast<float>(from.mX), static_cast<float>(from.mY), static_cast<float>(from.mZ));
|
||||||
osg::Vec3f toPos = osg::Vec3f(to.mX, to.mY, to.mZ);
|
osg::Vec3f toPos = osg::Vec3f(static_cast<float>(to.mX), static_cast<float>(to.mY), static_cast<float>(to.mZ));
|
||||||
osg::Vec3f dir = toPos - fromPos;
|
osg::Vec3f dir = toPos - fromPos;
|
||||||
dir.normalize();
|
dir.normalize();
|
||||||
|
|
||||||
|
|
@ -138,9 +141,11 @@ namespace SceneUtil
|
||||||
osg::ref_ptr<osg::Geometry>& wireframeGeometry, const ESM::Pathgrid& pathgrid,
|
osg::ref_ptr<osg::Geometry>& wireframeGeometry, const ESM::Pathgrid& pathgrid,
|
||||||
const std::vector<unsigned short>& selected)
|
const std::vector<unsigned short>& selected)
|
||||||
{
|
{
|
||||||
osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(vertexCount);
|
assert(vertexCount < std::numeric_limits<unsigned int>::max());
|
||||||
osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array(vertexCount);
|
assert(indexCount < std::numeric_limits<unsigned int>::max());
|
||||||
osg::ref_ptr<T> indices = new T(osg::PrimitiveSet::LINES, indexCount);
|
osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array(static_cast<unsigned int>(vertexCount));
|
||||||
|
osg::ref_ptr<osg::Vec4Array> colors = new osg::Vec4Array(static_cast<unsigned int>(vertexCount));
|
||||||
|
osg::ref_ptr<T> indices = new T(osg::PrimitiveSet::LINES, static_cast<unsigned int>(indexCount));
|
||||||
|
|
||||||
osg::Vec3f wireOffset = osg::Vec3f(0, 0, (1 - DiamondWireframeScalar) * DiamondHalfHeight);
|
osg::Vec3f wireOffset = osg::Vec3f(0, 0, (1 - DiamondWireframeScalar) * DiamondHalfHeight);
|
||||||
|
|
||||||
|
|
@ -148,7 +153,7 @@ namespace SceneUtil
|
||||||
for (size_t it = 0; it < selected.size(); ++it)
|
for (size_t it = 0; it < selected.size(); ++it)
|
||||||
{
|
{
|
||||||
const ESM::Pathgrid::Point& point = pathgrid.mPoints[selected[it]];
|
const ESM::Pathgrid::Point& point = pathgrid.mPoints[selected[it]];
|
||||||
osg::Vec3f position = osg::Vec3f(point.mX, point.mY, point.mZ) + wireOffset;
|
osg::Vec3f position = osg::Vec3f(static_cast<float>(point.mX), static_cast<float>(point.mY), static_cast<float>(point.mZ)) + wireOffset;
|
||||||
|
|
||||||
size_t vertexOffset = it * DiamondVertexCount;
|
size_t vertexOffset = it * DiamondVertexCount;
|
||||||
size_t indexOffset = it * DiamondWireframeIndexCount;
|
size_t indexOffset = it * DiamondWireframeIndexCount;
|
||||||
|
|
@ -166,7 +171,7 @@ namespace SceneUtil
|
||||||
|
|
||||||
for (unsigned short i = 0; i < DiamondWireframeIndexCount; ++i)
|
for (unsigned short i = 0; i < DiamondWireframeIndexCount; ++i)
|
||||||
{
|
{
|
||||||
indices->setElement(indexOffset + i, vertexOffset + DiamondWireframeIndices[i]);
|
indices->setElement(static_cast<unsigned int>(indexOffset + i), static_cast<unsigned int>(vertexOffset + DiamondWireframeIndices[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,13 +34,13 @@ namespace SceneUtil
|
||||||
{
|
{
|
||||||
matrix.postMultTranslate(-_position);
|
matrix.postMultTranslate(-_position);
|
||||||
matrix.postMultRotate(_attitude.inverse());
|
matrix.postMultRotate(_attitude.inverse());
|
||||||
matrix.postMultScale(osg::Vec3f(1.0 / _scale.x(), 1.0 / _scale.y(), 1.0 / _scale.z()));
|
matrix.postMultScale(osg::Vec3f(1.0f / _scale.x(), 1.0f / _scale.y(), 1.0f / _scale.z()));
|
||||||
}
|
}
|
||||||
else // absolute
|
else // absolute
|
||||||
{
|
{
|
||||||
matrix.makeRotate(_attitude.inverse());
|
matrix.makeRotate(_attitude.inverse());
|
||||||
matrix.preMultTranslate(-_position);
|
matrix.preMultTranslate(-_position);
|
||||||
matrix.postMultScale(osg::Vec3f(1.0 / _scale.x(), 1.0 / _scale.y(), 1.0 / _scale.z()));
|
matrix.postMultScale(osg::Vec3f(1.0f / _scale.x(), 1.0f / _scale.y(), 1.0f / _scale.z()));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ namespace
|
||||||
const osg::Vec3f e1 = v2 - v0;
|
const osg::Vec3f e1 = v2 - v0;
|
||||||
osg::Vec3f normal = e0 ^ e1;
|
osg::Vec3f normal = e0 ^ e1;
|
||||||
normal.normalize();
|
normal.normalize();
|
||||||
for (std::size_t j = 0; j < 3; ++j)
|
for (int j = 0; j < 3; ++j)
|
||||||
result[i + j] = normal[j];
|
result[i + j] = normal[j];
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
|
|
|
||||||
|
|
@ -61,7 +61,7 @@ namespace SceneUtil
|
||||||
else if (Misc::StringUtils::ciEqual(computeSceneBounds, "bounds"))
|
else if (Misc::StringUtils::ciEqual(computeSceneBounds, "bounds"))
|
||||||
mShadowSettings->setComputeNearFarModeOverride(osg::CullSettings::COMPUTE_NEAR_FAR_USING_BOUNDING_VOLUMES);
|
mShadowSettings->setComputeNearFarModeOverride(osg::CullSettings::COMPUTE_NEAR_FAR_USING_BOUNDING_VOLUMES);
|
||||||
|
|
||||||
const int mapres = settings.mShadowMapResolution;
|
const short mapres = static_cast<short>(settings.mShadowMapResolution);
|
||||||
mShadowSettings->setTextureSize(osg::Vec2s(mapres, mapres));
|
mShadowSettings->setTextureSize(osg::Vec2s(mapres, mapres));
|
||||||
|
|
||||||
mShadowTechnique->setSplitPointUniformLogarithmicRatio(settings.mSplitPointUniformLogarithmicRatio);
|
mShadowTechnique->setSplitPointUniformLogarithmicRatio(settings.mSplitPointUniformLogarithmicRatio);
|
||||||
|
|
|
||||||
|
|
@ -88,14 +88,14 @@ namespace SceneUtil
|
||||||
|
|
||||||
void CompositeStateSetUpdater::apply(osg::StateSet* stateset, osg::NodeVisitor* nv)
|
void CompositeStateSetUpdater::apply(osg::StateSet* stateset, osg::NodeVisitor* nv)
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < mCtrls.size(); ++i)
|
for (const auto& ctrl : mCtrls)
|
||||||
mCtrls[i]->apply(stateset, nv);
|
ctrl->apply(stateset, nv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void CompositeStateSetUpdater::setDefaults(osg::StateSet* stateset)
|
void CompositeStateSetUpdater::setDefaults(osg::StateSet* stateset)
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < mCtrls.size(); ++i)
|
for (const auto& ctrl : mCtrls)
|
||||||
mCtrls[i]->setDefaults(stateset);
|
ctrl->setDefaults(stateset);
|
||||||
}
|
}
|
||||||
|
|
||||||
CompositeStateSetUpdater::CompositeStateSetUpdater() {}
|
CompositeStateSetUpdater::CompositeStateSetUpdater() {}
|
||||||
|
|
@ -103,16 +103,16 @@ namespace SceneUtil
|
||||||
CompositeStateSetUpdater::CompositeStateSetUpdater(const CompositeStateSetUpdater& copy, const osg::CopyOp& copyop)
|
CompositeStateSetUpdater::CompositeStateSetUpdater(const CompositeStateSetUpdater& copy, const osg::CopyOp& copyop)
|
||||||
: StateSetUpdater(copy, copyop)
|
: StateSetUpdater(copy, copyop)
|
||||||
{
|
{
|
||||||
for (unsigned int i = 0; i < copy.mCtrls.size(); ++i)
|
for (const auto& ctrl : copy.mCtrls)
|
||||||
mCtrls.emplace_back(osg::clone(copy.mCtrls[i].get(), copyop));
|
mCtrls.emplace_back(osg::clone(ctrl.get(), copyop));
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int CompositeStateSetUpdater::getNumControllers()
|
size_t CompositeStateSetUpdater::getNumControllers()
|
||||||
{
|
{
|
||||||
return mCtrls.size();
|
return mCtrls.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
StateSetUpdater* CompositeStateSetUpdater::getController(int i)
|
StateSetUpdater* CompositeStateSetUpdater::getController(size_t i)
|
||||||
{
|
{
|
||||||
return mCtrls[i];
|
return mCtrls[i];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -79,8 +79,8 @@ namespace SceneUtil
|
||||||
|
|
||||||
META_Object(SceneUtil, CompositeStateSetUpdater)
|
META_Object(SceneUtil, CompositeStateSetUpdater)
|
||||||
|
|
||||||
unsigned int getNumControllers();
|
size_t getNumControllers();
|
||||||
StateSetUpdater* getController(int i);
|
StateSetUpdater* getController(size_t i);
|
||||||
|
|
||||||
void addController(StateSetUpdater* ctrl);
|
void addController(StateSetUpdater* ctrl);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -131,8 +131,8 @@ namespace SceneUtil
|
||||||
if ((mDuration >= 0) && mStartingTime == 0)
|
if ((mDuration >= 0) && mStartingTime == 0)
|
||||||
mStartingTime = nv->getFrameStamp()->getSimulationTime();
|
mStartingTime = nv->getFrameStamp()->getSimulationTime();
|
||||||
|
|
||||||
float time = nv->getFrameStamp()->getSimulationTime();
|
double time = nv->getFrameStamp()->getSimulationTime();
|
||||||
int index = (int)(time * 16) % mTextures.size();
|
int index = static_cast<int>(std::floor(time * 16)) % mTextures.size();
|
||||||
stateset->setTextureAttribute(
|
stateset->setTextureAttribute(
|
||||||
mTexUnit, mTextures[index], osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
|
mTexUnit, mTextures[index], osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ namespace SceneUtil
|
||||||
float mDuration;
|
float mDuration;
|
||||||
float mOriginalDuration; // for recording that this is originally a permanent glow if it is changed to a
|
float mOriginalDuration; // for recording that this is originally a permanent glow if it is changed to a
|
||||||
// temporary one
|
// temporary one
|
||||||
float mStartingTime;
|
double mStartingTime;
|
||||||
Resource::ResourceSystem* mResourceSystem;
|
Resource::ResourceSystem* mResourceSystem;
|
||||||
bool mColorChanged;
|
bool mColorChanged;
|
||||||
bool mDone;
|
bool mDone;
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@ namespace SceneUtil
|
||||||
normal->push_back(osg::Vec3f(0, 0, 1));
|
normal->push_back(osg::Vec3f(0, 0, 1));
|
||||||
waterGeom->setNormalArray(normal, osg::Array::BIND_OVERALL);
|
waterGeom->setNormalArray(normal, osg::Array::BIND_OVERALL);
|
||||||
|
|
||||||
waterGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, verts->size()));
|
waterGeom->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::QUADS, 0, static_cast<GLsizei>(verts->size())));
|
||||||
waterGeom->setComputeBoundingBoxCallback(new WaterBoundCallback);
|
waterGeom->setComputeBoundingBoxCallback(new WaterBoundCallback);
|
||||||
waterGeom->setCullingActive(false);
|
waterGeom->setCullingActive(false);
|
||||||
return waterGeom;
|
return waterGeom;
|
||||||
|
|
|
||||||
|
|
@ -99,13 +99,13 @@ namespace SceneUtil
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int WorkQueue::getNumItems() const
|
size_t WorkQueue::getNumItems() const
|
||||||
{
|
{
|
||||||
std::unique_lock<std::mutex> lock(mMutex);
|
std::unique_lock<std::mutex> lock(mMutex);
|
||||||
return mQueue.size();
|
return mQueue.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int WorkQueue::getNumActiveThreads() const
|
size_t WorkQueue::getNumActiveThreads() const
|
||||||
{
|
{
|
||||||
return std::accumulate(
|
return std::accumulate(
|
||||||
mThreads.begin(), mThreads.end(), 0u, [](auto r, const auto& t) { return r + t->isActive(); });
|
mThreads.begin(), mThreads.end(), 0u, [](auto r, const auto& t) { return r + t->isActive(); });
|
||||||
|
|
|
||||||
|
|
@ -62,9 +62,9 @@ namespace SceneUtil
|
||||||
/// @par Used internally by the WorkThread.
|
/// @par Used internally by the WorkThread.
|
||||||
osg::ref_ptr<WorkItem> removeWorkItem();
|
osg::ref_ptr<WorkItem> removeWorkItem();
|
||||||
|
|
||||||
unsigned int getNumItems() const;
|
size_t getNumItems() const;
|
||||||
|
|
||||||
unsigned int getNumActiveThreads() const;
|
size_t getNumActiveThreads() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mIsReleased;
|
bool mIsReleased;
|
||||||
|
|
|
||||||
|
|
@ -441,7 +441,7 @@ namespace Shader
|
||||||
normalMapTex->setMaxAnisotropy(diffuseMap->getMaxAnisotropy());
|
normalMapTex->setMaxAnisotropy(diffuseMap->getMaxAnisotropy());
|
||||||
normalMap = normalMapTex;
|
normalMap = normalMapTex;
|
||||||
|
|
||||||
int unit = texAttributes.size();
|
int unit = static_cast<int>(texAttributes.size());
|
||||||
if (!writableStateSet)
|
if (!writableStateSet)
|
||||||
writableStateSet = getWritableStateSet(node);
|
writableStateSet = getWritableStateSet(node);
|
||||||
writableStateSet->setTextureAttributeAndModes(unit, normalMapTex, osg::StateAttribute::ON);
|
writableStateSet->setTextureAttributeAndModes(unit, normalMapTex, osg::StateAttribute::ON);
|
||||||
|
|
@ -487,7 +487,7 @@ namespace Shader
|
||||||
osg::Texture::MAG_FILTER, diffuseMap->getFilter(osg::Texture::MAG_FILTER));
|
osg::Texture::MAG_FILTER, diffuseMap->getFilter(osg::Texture::MAG_FILTER));
|
||||||
specularMapTex->setMaxAnisotropy(diffuseMap->getMaxAnisotropy());
|
specularMapTex->setMaxAnisotropy(diffuseMap->getMaxAnisotropy());
|
||||||
|
|
||||||
int unit = texAttributes.size();
|
int unit = static_cast<int>(texAttributes.size());
|
||||||
if (!writableStateSet)
|
if (!writableStateSet)
|
||||||
writableStateSet = getWritableStateSet(node);
|
writableStateSet = getWritableStateSet(node);
|
||||||
writableStateSet->setTextureAttributeAndModes(unit, specularMapTex, osg::StateAttribute::ON);
|
writableStateSet->setTextureAttributeAndModes(unit, specularMapTex, osg::StateAttribute::ON);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue