Particles: Cleanup and better UI

Remove SkAnimTimer from the module interface entirely.
Clean up some other SkParticleEffect methods. Simplify
VisitTypes to just visit all of them, it's easier for
the client to do any filtering.

In the slide, make the UI far nicer. Load all files in
a given directory, and allow editing (and saving) them
all at once, or adding a new entry. Support multiple
playing effects, with a draggable handle to set the
position.

Bug: skia:
Change-Id: I0bec4077f9135bc122569f1410bebc96d5439480
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/197243
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
diff --git a/modules/particles/src/SkParticleEffect.cpp b/modules/particles/src/SkParticleEffect.cpp
index 1e81d55..57b6b54 100644
--- a/modules/particles/src/SkParticleEffect.cpp
+++ b/modules/particles/src/SkParticleEffect.cpp
@@ -7,7 +7,6 @@
 
 #include "SkParticleEffect.h"
 
-#include "SkAnimTimer.h"
 #include "SkCanvas.h"
 #include "SkColorData.h"
 #include "SkPaint.h"
@@ -39,10 +38,6 @@
     this->setCapacity(fParams->fMaxCount);
 }
 
-void SkParticleEffect::start(const SkAnimTimer& timer, bool looping) {
-    this->start(timer.secs(), looping);
-}
-
 void SkParticleEffect::start(double now, bool looping) {
     fCount = 0;
     fLastTime = fSpawnTime = now;
@@ -50,21 +45,13 @@
     fLooping = looping;
 }
 
-void SkParticleEffect::update(const SkAnimTimer& timer) {
-    if (!timer.isRunning()) {
-        return;
-    }
-
-    update(timer.secs());
-}
-
 void SkParticleEffect::update(double now) {
     if (!this->isAlive() || !fParams->fDrawable) {
         return;
     }
 
     float deltaTime = static_cast<float>(now - fLastTime);
-    if (deltaTime < 0.0f) {
+    if (deltaTime <= 0.0f) {
         return;
     }
     fLastTime = now;