Skip to content

Commit 218ee44

Browse files
committed
Merge branch 'coverity' into 'master'
Coverity fixes See merge request OpenMW/openmw!5189
2 parents ef2b211 + 64b3498 commit 218ee44

File tree

4 files changed

+46
-30
lines changed

4 files changed

+46
-30
lines changed

apps/opencs/view/render/object.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -182,13 +182,9 @@ const CSMWorld::CellRef& CSVRender::Object::getReference() const
182182
CSVRender::Object::Object(
183183
CSMWorld::Data& data, osg::Group* parentNode, const std::string& id, bool referenceable, bool forceBaseToZero)
184184
: mData(data)
185-
, mBaseNode(nullptr)
186-
, mSelected(false)
187185
, mParentNode(parentNode)
188186
, mResourceSystem(data.getResourceSystem().get())
189187
, mForceBaseToZero(forceBaseToZero)
190-
, mScaleOverride(1)
191-
, mOverrideFlags(0)
192188
{
193189
mRootNode = new osg::PositionAttitudeTransform;
194190

apps/opencs/view/render/object.hpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,14 @@ namespace CSVRender
9090
osg::ref_ptr<osg::PositionAttitudeTransform> mRootNode;
9191
osg::ref_ptr<osg::PositionAttitudeTransform> mBaseNode;
9292
osg::ref_ptr<osgFX::Scribe> mOutline;
93-
bool mSelected;
94-
bool mSnapTarget;
93+
bool mSelected{ false };
94+
bool mSnapTarget{ false };
9595
osg::Group* mParentNode;
9696
Resource::ResourceSystem* mResourceSystem;
9797
bool mForceBaseToZero;
9898
ESM::Position mPositionOverride;
99-
float mScaleOverride;
100-
int mOverrideFlags;
99+
float mScaleOverride{ 1.f };
100+
int mOverrideFlags{ 0 };
101101
std::unique_ptr<Actor> mActor;
102102

103103
/// Not implemented

components/nif/nifkey.hpp

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,10 @@ namespace Nif
3838
T mValue{};
3939
T mInTan{};
4040
T mOutTan{};
41-
float mTension;
42-
float mContinuity;
43-
float mBias;
41+
float mA; // Coefficients based on the TCB parameters
42+
float mB; // Only used by tangent calculations
43+
float mC;
44+
float mD;
4445
};
4546

4647
template <typename T, T (NIFStream::*getValue)()>
@@ -151,11 +152,20 @@ namespace Nif
151152

152153
static void readTCBKey(NIFStream& nif, TCBKey<T>& value)
153154
{
155+
float tension;
156+
float continuity;
157+
float bias;
158+
154159
nif.read(value.mTime);
155160
value.mValue = (nif.*getValue)();
156-
nif.read(value.mTension);
157-
nif.read(value.mContinuity);
158-
nif.read(value.mBias);
161+
nif.read(tension);
162+
nif.read(continuity);
163+
nif.read(bias);
164+
165+
value.mA = (1.f - tension) * (1.f - continuity) * (1.f + bias);
166+
value.mB = (1.f - tension) * (1.f + continuity) * (1.f - bias);
167+
value.mC = (1.f - tension) * (1.f + continuity) * (1.f + bias);
168+
value.mD = (1.f - tension) * (1.f - continuity) * (1.f - bias);
159169
}
160170

161171
template <typename U>
@@ -164,23 +174,32 @@ namespace Nif
164174
if (keys.size() <= 1)
165175
return;
166176

167-
for (std::size_t i = 0; i < keys.size(); ++i)
168177
{
169-
TCBKey<U>& curr = keys[i];
170-
const TCBKey<U>* prev = (i == 0) ? nullptr : &keys[i - 1];
171-
const TCBKey<U>* next = (i == keys.size() - 1) ? nullptr : &keys[i + 1];
172-
const float prevLen = prev != nullptr && next != nullptr ? curr.mTime - prev->mTime : 1.f;
173-
const float nextLen = prev != nullptr && next != nullptr ? next->mTime - curr.mTime : 1.f;
174-
if (prevLen + nextLen == 0.f)
178+
TCBKey<U>& first = keys[0];
179+
const U delta = keys[1].mValue - first.mValue;
180+
first.mInTan = delta * ((first.mA + first.mB) * 0.5f);
181+
first.mOutTan = delta * ((first.mC + first.mD) * 0.5f);
182+
}
183+
184+
for (std::size_t i = 1; i < keys.size() - 1; ++i)
185+
{
186+
const TCBKey<U>& prev = keys[i - 1];
187+
const TCBKey<U>& next = keys[i + 1];
188+
const float timeSpan = next.mTime - prev.mTime;
189+
if (timeSpan == 0.f)
175190
continue;
176-
const float x = (1.f - curr.mTension) * (1.f - curr.mContinuity) * (1.f + curr.mBias);
177-
const float y = (1.f - curr.mTension) * (1.f + curr.mContinuity) * (1.f - curr.mBias);
178-
const float z = (1.f - curr.mTension) * (1.f + curr.mContinuity) * (1.f + curr.mBias);
179-
const float w = (1.f - curr.mTension) * (1.f - curr.mContinuity) * (1.f - curr.mBias);
180-
const U prevDelta = prev != nullptr ? curr.mValue - prev->mValue : next->mValue - curr.mValue;
181-
const U nextDelta = next != nullptr ? next->mValue - curr.mValue : curr.mValue - prev->mValue;
182-
curr.mInTan = (prevDelta * x + nextDelta * y) * prevLen / (prevLen + nextLen);
183-
curr.mOutTan = (prevDelta * z + nextDelta * w) * nextLen / (prevLen + nextLen);
191+
TCBKey<U>& key = keys[i];
192+
const U prevDelta = key.mValue - prev.mValue;
193+
const U nextDelta = next.mValue - key.mValue;
194+
key.mInTan = (prevDelta * key.mA + nextDelta * key.mB) * ((key.mTime - prev.mTime) / timeSpan);
195+
key.mOutTan = (prevDelta * key.mC + nextDelta * key.mD) * ((next.mTime - key.mTime) / timeSpan);
196+
}
197+
198+
{
199+
TCBKey<U>& last = keys.back();
200+
const U delta = last.mValue - keys[keys.size() - 2].mValue;
201+
last.mInTan = delta * ((last.mA + last.mB) * 0.5f);
202+
last.mOutTan = delta * ((last.mC + last.mD) * 0.5f);
184203
}
185204
}
186205

components/sceneutil/mwshadowtechnique.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,8 @@ void MWShadowTechnique::LightData::setLightData(osg::RefMatrix* lm, const osg::L
532532
//
533533
MWShadowTechnique::ShadowData::ShadowData(MWShadowTechnique::ViewDependentData* vdd):
534534
_viewDependentData(vdd),
535-
_textureUnit(0)
535+
_textureUnit(0),
536+
_sm_i(0)
536537
{
537538

538539
const ShadowSettings* settings = vdd->getViewDependentShadowMap()->getShadowedScene()->getShadowSettings();

0 commit comments

Comments
 (0)