read static method
Implementation
static KeyFrame? read(StreamReader reader, ActorComponent? component) {
KeyFramePathVertices frame = KeyFramePathVertices();
if (!KeyFrameWithInterpolation.read(reader, frame) ||
component is! ActorPath) {
return null;
}
ActorPath pathNode = component;
int length = pathNode.points.fold<int>(0, (int previous, PathPoint point) {
return previous + 2 + (point.pointType == PointType.straight ? 1 : 4);
});
frame._vertices = Float32List(length);
int readIdx = 0;
reader.openArray('value');
for (final PathPoint point in pathNode.points) {
frame._vertices[readIdx++] = reader.readFloat32('translationX');
frame._vertices[readIdx++] = reader.readFloat32('translationY');
if (point.pointType == PointType.straight) {
// radius
frame._vertices[readIdx++] = reader.readFloat32('radius');
} else {
// in/out
frame._vertices[readIdx++] = reader.readFloat32('inValueX');
frame._vertices[readIdx++] = reader.readFloat32('inValueY');
frame._vertices[readIdx++] = reader.readFloat32('outValueX');
frame._vertices[readIdx++] = reader.readFloat32('outValueY');
}
}
reader.closeArray();
pathNode.makeVertexDeform();
return frame;
}