Fixing mixing issue and bumping to 0.6.0+1.

This commit is contained in:
Luigi Rosso
2020-09-30 12:02:59 -07:00
parent 224472bc1e
commit 621469b0df
8 changed files with 45 additions and 38 deletions

View File

@ -1,3 +1,7 @@
## [0.6.0+1] - 2020-09-30 11:55:07
- Fixing a mixing issue with double keyframes.
## [0.6.0] - 2020-09-28 16:22:43 ## [0.6.0] - 2020-09-28 16:22:43
- Adding a ToC to files indicating included core properties and their backing field types so that they may be skipped by runtimes that do not understand those properties. This will allow newer minor version files to be read by older minor version runtimes. - Adding a ToC to files indicating included core properties and their backing field types so that they may be skipped by runtimes that do not understand those properties. This will allow newer minor version files to be read by older minor version runtimes.

View File

@ -5,9 +5,7 @@ import 'package:rive/src/generated/animation/keyframe_color_base.dart';
import 'package:rive/src/generated/rive_core_context.dart'; import 'package:rive/src/generated/rive_core_context.dart';
export 'package:rive/src/generated/animation/keyframe_color_base.dart'; export 'package:rive/src/generated/animation/keyframe_color_base.dart';
class KeyFrameColor extends KeyFrameColorBase { void _apply(Core<CoreContext> object, int propertyKey, double mix, int value) {
@override
void apply(Core<CoreContext> object, int propertyKey, double mix) {
if (mix == 1) { if (mix == 1) {
RiveCoreContext.setColor(object, propertyKey, value); RiveCoreContext.setColor(object, propertyKey, value);
} else { } else {
@ -17,8 +15,12 @@ class KeyFrameColor extends KeyFrameColorBase {
mix); mix);
RiveCoreContext.setColor(object, propertyKey, mixedColor.value); RiveCoreContext.setColor(object, propertyKey, mixedColor.value);
} }
} }
class KeyFrameColor extends KeyFrameColorBase {
@override
void apply(Core<CoreContext> object, int propertyKey, double mix) =>
_apply(object, propertyKey, mix, value);
@override @override
void onAdded() { void onAdded() {
super.onAdded(); super.onAdded();
@ -32,16 +34,8 @@ class KeyFrameColor extends KeyFrameColorBase {
if (interpolator != null) { if (interpolator != null) {
f = interpolator.transform(f); f = interpolator.transform(f);
} }
var interpolatedValue = Color.lerp(Color(value), Color(nextFrame.value), f); _apply(object, propertyKey, mix,
if (mix == 1) { Color.lerp(Color(value), Color(nextFrame.value), f).value);
RiveCoreContext.setColor(object, propertyKey, interpolatedValue.value);
} else {
var mixedColor = Color.lerp(
Color(RiveCoreContext.getColor(object, propertyKey)),
interpolatedValue,
mix);
RiveCoreContext.setColor(object, propertyKey, mixedColor.value);
}
} }
@override @override

View File

@ -4,12 +4,21 @@ import 'package:rive/src/generated/animation/keyframe_double_base.dart';
import 'package:rive/src/generated/rive_core_context.dart'; import 'package:rive/src/generated/rive_core_context.dart';
export 'package:rive/src/generated/animation/keyframe_double_base.dart'; export 'package:rive/src/generated/animation/keyframe_double_base.dart';
void _apply(
Core<CoreContext> object, int propertyKey, double mix, double value) {
if (mix == 1) {
RiveCoreContext.setDouble(object, propertyKey, value);
} else {
var mixi = 1.0 - mix;
RiveCoreContext.setDouble(object, propertyKey,
RiveCoreContext.getDouble(object, propertyKey) * mixi + value * mix);
}
}
class KeyFrameDouble extends KeyFrameDoubleBase { class KeyFrameDouble extends KeyFrameDoubleBase {
@override @override
void apply(Core<CoreContext> object, int propertyKey, double mix) { void apply(Core<CoreContext> object, int propertyKey, double mix) =>
RiveCoreContext.setDouble(object, propertyKey, value * mix); _apply(object, propertyKey, mix, value);
}
@override @override
void onAdded() { void onAdded() {
super.onAdded(); super.onAdded();
@ -23,17 +32,7 @@ class KeyFrameDouble extends KeyFrameDoubleBase {
if (interpolator != null) { if (interpolator != null) {
f = interpolator.transform(f); f = interpolator.transform(f);
} }
var interpolatedValue = value + (nextFrame.value - value) * f; _apply(object, propertyKey, mix, value + (nextFrame.value - value) * f);
if (mix == 1) {
RiveCoreContext.setDouble(object, propertyKey, interpolatedValue);
} else {
var mixi = 1.0 - mix;
RiveCoreContext.setDouble(
object,
propertyKey,
RiveCoreContext.getDouble(object, propertyKey) * mixi +
interpolatedValue * mix);
}
} }
@override @override

View File

@ -43,6 +43,7 @@ abstract class Component extends ComponentBase<RuntimeArtboard>
_artboard?.addComponent(this); _artboard?.addComponent(this);
} }
@mustCallSuper
void visitAncestor(Component ancestor) {} void visitAncestor(Component ancestor) {}
bool resolveArtboard() { bool resolveArtboard() {
int sanity = maxTreeDepth; int sanity = maxTreeDepth;

View File

@ -44,6 +44,7 @@ class AABB {
-double.maxFinite -double.maxFinite
]); ]);
} }
double get area => width * height;
bool get isEmpty { bool get isEmpty {
return _buffer[0] == double.maxFinite && return _buffer[0] == double.maxFinite &&
_buffer[1] == double.maxFinite && _buffer[1] == double.maxFinite &&
@ -162,6 +163,12 @@ class AABB {
return true; return true;
} }
static bool testOverlapPoint(AABB a, Vec2D b) {
var x = b[0];
var y = b[1];
return x >= a[0] && x <= a[2] && y >= a[1] && y <= a[3];
}
AABB translate(Vec2D vec) => AABB.fromValues(_buffer[0] + vec[0], AABB translate(Vec2D vec) => AABB.fromValues(_buffer[0] + vec[0],
_buffer[1] + vec[1], _buffer[2] + vec[0], _buffer[3] + vec[1]); _buffer[1] + vec[1], _buffer[2] + vec[0], _buffer[3] + vec[1]);
@override @override

View File

@ -37,6 +37,7 @@ abstract class Path extends PathBase {
@override @override
void visitAncestor(Component ancestor) { void visitAncestor(Component ancestor) {
super.visitAncestor(ancestor);
if (_shape == null && ancestor is Shape) { if (_shape == null && ancestor is Shape) {
_changeShape(ancestor); _changeShape(ancestor);
} }

View File

@ -80,6 +80,7 @@ class PathComposer extends PathComposerBase {
@override @override
void visitAncestor(Component ancestor) { void visitAncestor(Component ancestor) {
super.visitAncestor(ancestor);
if (_shape == null && ancestor is Shape) { if (_shape == null && ancestor is Shape) {
_changeShape(ancestor); _changeShape(ancestor);
} }

View File

@ -1,6 +1,6 @@
name: rive name: rive
description: Rive 2 Flutter Runtime description: Rive 2 Flutter Runtime
version: 0.6.0 version: 0.6.0+1
repository: https://github.com/rive-app/rive-flutter repository: https://github.com/rive-app/rive-flutter
homepage: https://rive.app homepage: https://rive.app