mirror of
https://github.com/rive-app/rive-flutter.git
synced 2025-06-27 10:18:12 +08:00
Fixing mixing issue and bumping to 0.6.0+1.
This commit is contained in:
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user