Skip to content

Commit a9b13d5

Browse files
committed
cleanup swimming code
1 parent 2875a54 commit a9b13d5

4 files changed

Lines changed: 18 additions & 20 deletions

File tree

game/graphics/mesh/animation.cpp

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -225,14 +225,15 @@ Animation::Sequence::Sequence(const zenkit::MdsAnimation& hdr, std::string_view
225225
data->lastFrame = uint32_t(hdr.last_frame);
226226

227227

228-
name = p.name;
228+
name = p.name;
229229
layer = p.layer;
230-
data->fpsRate = p.fps;
230+
231+
data->fpsRate = p.fps;
231232
data->numFrames = p.frame_count;
232233
data->nodeIndex = p.node_indices;
233-
data->samples = p.samples;
234+
data->samples = p.samples;
234235

235-
setupMoveTr();
236+
data->setupMoveTr();
236237
}
237238

238239
bool Animation::Sequence::isFinished(uint64_t now, uint64_t sTime, uint16_t comboLen) const {
@@ -571,10 +572,6 @@ void Animation::Sequence::schemeName(char scheme[64]) const {
571572
}
572573
}
573574

574-
void Animation::Sequence::setupMoveTr() {
575-
data->setupMoveTr();
576-
}
577-
578575
void Animation::AnimData::setupMoveTr() {
579576
size_t sz = nodeIndex.size();
580577
if(sz==0)

game/graphics/mesh/animation.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,6 @@ class Animation final {
117117
std::shared_ptr<AnimData> data;
118118

119119
private:
120-
void setupMoveTr();
121120
static void processEvent(const zenkit::MdsEventTag& e, EvCount& ev, uint64_t time);
122121
bool extractFrames(uint64_t &frameA, uint64_t &frameB, bool &invert, uint64_t barrier, uint64_t sTime, uint64_t now) const;
123122
};

game/graphics/mesh/pose.cpp

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,10 @@ bool Pose::updateFrame(const Animation::Sequence &s, BodyState bs, uint64_t sBle
394394
if(i==0) {
395395
if(bs==BS_CLIMB)
396396
smp.position.y = trY;
397+
else if(bs==BS_SWIM || bs==BS_DIVE)
398+
smp.position.y = trY;
397399
else if(s.isFly())
398-
smp.position.y = d.translate.y;
400+
smp.position.y = trY; //d.translate.y;
399401
}
400402

401403
switch(hasSamples[idx]) {
@@ -790,8 +792,13 @@ const Tempest::Matrix4x4 Pose::rootNode() const {
790792
size_t id = 0;
791793
if(skeleton->rootNodes.size())
792794
id = skeleton->rootNodes[0];
793-
auto& nodes = skeleton->nodes;
794-
return hasSamples[id] ? mkMatrix(base[id]) : nodes[id].tr;
795+
796+
const auto& nodes = skeleton->nodes;
797+
if(id>=nodes.size())
798+
return Matrix4x4::mkIdentity();
799+
800+
auto ret = hasSamples[id] ? mkMatrix(base[id]) : nodes[id].tr;
801+
return ret;
795802
}
796803

797804
const Matrix4x4 Pose::rootBone() const {
@@ -897,12 +904,13 @@ Vec3 Pose::mkBaseTranslation() {
897904
auto b0 = rootNode();
898905

899906
float dx = b0.at(3,0);
900-
//float dy = b0.at(3,1) - translateY();
901907
float dy = 0;
902908
float dz = b0.at(3,2);
903909

904-
if((flag&NoTranslation)==NoTranslation)
910+
if((flag&NoTranslation)==NoTranslation) {
905911
dy = b0.at(3,1);
912+
// dy = b0.at(3,1) - translateY();
913+
}
906914

907915
return Vec3(-dx,-dy,-dz);
908916
}

game/world/objects/npc.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4593,12 +4593,6 @@ void Npc::updateAnimation(uint64_t dt, bool force) {
45934593
pos = mkPositionMatrix();
45944594
}
45954595

4596-
if(mvAlgo.isSwim()) {
4597-
float chest = mvAlgo.canFlyOverWater() ? 0 : (translateY()-visual.pose().rootNode().at(3,1));
4598-
float y = pos.at(3,1);
4599-
pos.set(3,1,y+chest);
4600-
}
4601-
46024596
visual.setObjMatrix(pos,false);
46034597
durtyTranform = 0;
46044598
}

0 commit comments

Comments
 (0)