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

View File

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

View File

@ -44,6 +44,7 @@ class AABB {
-double.maxFinite
]);
}
double get area => width * height;
bool get isEmpty {
return _buffer[0] == double.maxFinite &&
_buffer[1] == double.maxFinite &&
@ -162,6 +163,12 @@ class AABB {
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],
_buffer[1] + vec[1], _buffer[2] + vec[0], _buffer[3] + vec[1]);
@override

View File

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

View File

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

View File

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