[canvaskit] Add particles integration

Bug: skia:
Change-Id: I5bf08e8007b59b5e21005f5004d698e53b99ffe6
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/197849
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/modules/particles/src/SkParticleEffect.cpp b/modules/particles/src/SkParticleEffect.cpp
index f3b7d44..1e81d55 100644
--- a/modules/particles/src/SkParticleEffect.cpp
+++ b/modules/particles/src/SkParticleEffect.cpp
@@ -40,18 +40,29 @@
 }
 
 void SkParticleEffect::start(const SkAnimTimer& timer, bool looping) {
+    this->start(timer.secs(), looping);
+}
+
+void SkParticleEffect::start(double now, bool looping) {
     fCount = 0;
-    fLastTime = fSpawnTime = timer.secs();
+    fLastTime = fSpawnTime = now;
     fSpawnRemainder = 0.0f;
     fLooping = looping;
 }
 
 void SkParticleEffect::update(const SkAnimTimer& timer) {
-    if (!timer.isRunning() || !this->isAlive() || !fParams->fDrawable) {
+    if (!timer.isRunning()) {
         return;
     }
 
-    double now = timer.secs();
+    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) {
         return;