aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar Ruiqi Mao <ruiqimao@google.com>2018-06-21 11:24:13 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-06-21 17:40:17 +0000
commit9ac1b729f1790ebe7716ab6d91780b3649b93f8a (patch)
tree08f81a246d484d5003b7130bc0e9fd517165a01f /samplecode
parent94ed719bf8786c35c95cd0f52a866af9f15884e5 (diff)
fixed NIMA deformed vertices rendering
Bug: skia: Change-Id: I43c1a86eead7701db052451c446f9ad59467f909 Reviewed-on: https://skia-review.googlesource.com/136610 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Ruiqi Mao <ruiqimao@google.com>
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/Nima.cpp9
-rw-r--r--samplecode/SampleNima.cpp14
2 files changed, 15 insertions, 8 deletions
diff --git a/samplecode/Nima.cpp b/samplecode/Nima.cpp
index 4ac7d86137..047eec7ca4 100644
--- a/samplecode/Nima.cpp
+++ b/samplecode/Nima.cpp
@@ -10,11 +10,10 @@
#include "SkString.h"
#include "SkVertices.h"
#include "SkPaint.h"
+#include "SkFilterQuality.h"
#include "Resources.h"
#include <algorithm>
-#include <iostream>
-
using namespace nima;
SampleActor::SampleActor(std::string baseName)
@@ -32,6 +31,7 @@ SampleActor::SampleActor(std::string baseName)
// Create the paint.
fPaint = std::make_unique<SkPaint>();
fPaint->setShader(fTexture->makeShader(nullptr));
+ fPaint->setFilterQuality(SkFilterQuality::kLow_SkFilterQuality);
// Load the image nodes.
fActorImages.reserve(m_ImageNodeCount);
@@ -89,6 +89,11 @@ void SampleActorImage::render(const SampleActor* actor, SkCanvas* canvas) const
float* attrBoneIdx = vertexData + j + 4;
float* attrBoneWgt = vertexData + j + 8;
+ // Get deformed positions if necessary.
+ if (fActorImage->doesAnimationVertexDeform()) {
+ attrPosition = fActorImage->animationDeformedVertices() + i * 2;
+ }
+
// Deform the position.
Vec2D position(attrPosition[0], attrPosition[1]);
if (fActorImage->connectedBoneCount() > 0) {
diff --git a/samplecode/SampleNima.cpp b/samplecode/SampleNima.cpp
index ec7813b5a9..3f0caa9d9d 100644
--- a/samplecode/SampleNima.cpp
+++ b/samplecode/SampleNima.cpp
@@ -9,7 +9,7 @@
#include "Nima.h"
#include "SkAnimTimer.h"
#include "SkView.h"
-#include <nima/Animation/ActorAnimation.hpp>
+#include <nima/Animation/ActorAnimationInstance.hpp>
#include <cmath>
using namespace nima;
@@ -17,7 +17,8 @@ using namespace nima;
class NimaView : public SampleView {
public:
NimaView()
- : fActor(nullptr) {
+ : fActor(nullptr)
+ , fAnimation(nullptr) {
}
protected:
@@ -35,7 +36,7 @@ protected:
fActor = std::make_unique<SampleActor>("Robot");
// Get the animation.
- fAnimation = fActor->animation("jump");
+ fAnimation = fActor->animationInstance("attack");
}
void onDrawContent(SkCanvas* canvas) override {
@@ -53,15 +54,16 @@ protected:
bool onAnimate(const SkAnimTimer& timer) override {
// Apply the animation.
if (fAnimation) {
- float time = std::fmod(timer.secs(), fAnimation->duration());
- fAnimation->apply(time, fActor.get(), 1.0f);
+ float time = std::fmod(timer.secs(), fAnimation->max());
+ fAnimation->time(time);
+ fAnimation->apply(1.0f);
}
return true;
}
private:
std::unique_ptr<SampleActor> fActor;
- ActorAnimation* fAnimation = nullptr;
+ ActorAnimationInstance* fAnimation;
typedef SampleView INHERITED;
};