internal PolystarContent(ILottieDrawable lottieDrawable, BaseLayer layer, PolystarShape polystarShape) { _lottieDrawable = lottieDrawable; Name = polystarShape.Name; _type = polystarShape.GetType(); _hidden = polystarShape.IsHidden; _pointsAnimation = polystarShape.Points.CreateAnimation(); _positionAnimation = polystarShape.Position.CreateAnimation(); _rotationAnimation = polystarShape.Rotation.CreateAnimation(); _outerRadiusAnimation = polystarShape.OuterRadius.CreateAnimation(); _outerRoundednessAnimation = polystarShape.OuterRoundedness.CreateAnimation(); if (_type == PolystarShape.Type.Star) { _innerRadiusAnimation = polystarShape.InnerRadius.CreateAnimation(); _innerRoundednessAnimation = polystarShape.InnerRoundedness.CreateAnimation(); } else { _innerRadiusAnimation = null; _innerRoundednessAnimation = null; } layer.AddAnimation(_pointsAnimation); layer.AddAnimation(_positionAnimation); layer.AddAnimation(_rotationAnimation); layer.AddAnimation(_outerRadiusAnimation); layer.AddAnimation(_outerRoundednessAnimation); if (_type == PolystarShape.Type.Star) { layer.AddAnimation(_innerRadiusAnimation); layer.AddAnimation(_innerRoundednessAnimation); } _pointsAnimation.ValueChanged += OnValueChanged; _positionAnimation.ValueChanged += OnValueChanged; _rotationAnimation.ValueChanged += OnValueChanged; _outerRadiusAnimation.ValueChanged += OnValueChanged; _outerRoundednessAnimation.ValueChanged += OnValueChanged; if (_type == PolystarShape.Type.Star) { _innerRadiusAnimation.ValueChanged += OnValueChanged; _innerRoundednessAnimation.ValueChanged += OnValueChanged; } }
internal static PolystarShape Parse(JsonReader reader, LottieComposition composition) { string name = null; PolystarShape.Type type = PolystarShape.Type.Polygon; AnimatableFloatValue points = null; IAnimatableValue <Vector2?, Vector2?> position = null; AnimatableFloatValue rotation = null; AnimatableFloatValue outerRadius = null; AnimatableFloatValue outerRoundedness = null; AnimatableFloatValue innerRadius = null; AnimatableFloatValue innerRoundedness = null; bool hidden = false; while (reader.HasNext()) { switch (reader.NextName()) { case "nm": name = reader.NextString(); break; case "sy": type = (PolystarShape.Type)reader.NextInt(); break; case "pt": points = AnimatableValueParser.ParseFloat(reader, composition, false); break; case "p": position = AnimatablePathValueParser.ParseSplitPath(reader, composition); break; case "r": rotation = AnimatableValueParser.ParseFloat(reader, composition, false); break; case "or": outerRadius = AnimatableValueParser.ParseFloat(reader, composition); break; case "os": outerRoundedness = AnimatableValueParser.ParseFloat(reader, composition, false); break; case "ir": innerRadius = AnimatableValueParser.ParseFloat(reader, composition); break; case "is": innerRoundedness = AnimatableValueParser.ParseFloat(reader, composition, false); break; case "hd": hidden = reader.NextBoolean(); break; default: reader.SkipValue(); break; } } return(new PolystarShape(name, type, points, position, rotation, innerRadius, outerRadius, innerRoundedness, outerRoundedness, hidden)); }