diff --git a/Source/Components/RiveView.swift b/Source/Components/RiveView.swift index 4f2dd3cb..705cfba6 100644 --- a/Source/Components/RiveView.swift +++ b/Source/Components/RiveView.swift @@ -68,7 +68,7 @@ open class RiveView: RiveRendererView { advance(delta: 0) } - showFPS = true + showFPS = false } // MARK: - Controls @@ -172,10 +172,7 @@ open class RiveView: RiveRendererView { if let stateMachine = riveModel.stateMachine { isPlaying = stateMachine.advance(by: delta) && wasPlaying - for stateChange in stateMachine.stateChanges() { - stateMachineDelegate?.stateMachine?(stateMachine, didChangeState: stateChange) - } -// stateMachine.stateChanges().forEach { stateMachineDelegate?.stateMachine?(stateMachine, didChangeState: $0) } + stateMachine.stateChanges().forEach { stateMachineDelegate?.stateMachine?(stateMachine, didChangeState: $0) } } else if let animation = riveModel.animation { isPlaying = animation.advance(by: delta) && wasPlaying diff --git a/Source/Components/RiveViewModel.swift b/Source/Components/RiveViewModel.swift index 61396826..622c009b 100644 --- a/Source/Components/RiveViewModel.swift +++ b/Source/Components/RiveViewModel.swift @@ -9,6 +9,33 @@ import SwiftUI import Combine +/// An object used for controlling a RiveView. For most common Rive files you should only need to interact with a `RiveViewModel` object. +/// +/// - Usage: +/// - You should initialize with either an Animation name or a StateMachine name, but not both. Only one will be used and if both are given the StateMachine will be used. +/// - Default StateMachine or Animation from the file can be used by leaving their parameters nil +/// - Examples: +/// +/// ``` +/// // SwiftUI Example +/// struct Animation: View { +/// var body: some View { +/// RiveViewModel(fileName: "cool_rive_file").view() +/// } +/// } +/// ``` +/// +/// ``` +/// // UIKit Example +/// class AnimationViewController: UIViewController { +/// @IBOutlet weak var riveView: RiveView! +/// var viewModel = RiveViewModel(fileName: "cool_rive_file") +/// +/// override func viewDidLoad() { +/// viewModel.setView(riveView) +/// } +/// } +/// ``` open class RiveViewModel: NSObject, ObservableObject, RiveFileDelegate, RiveStateMachineDelegate, RivePlayerDelegate { open private(set) var riveView: RiveView? private var defaultModel: RiveModelBuffer! diff --git a/Tests/RiveDelegatesTest.swift b/Tests/RiveDelegatesTest.swift index 337071a8..a108dc13 100644 --- a/Tests/RiveDelegatesTest.swift +++ b/Tests/RiveDelegatesTest.swift @@ -164,7 +164,7 @@ class DelegatesTest: XCTestCase { let delegate = DrDelegate() let file = try RiveFile(testfileName: "multiple_animations") let model = RiveModel(riveFile: file) - let viewModel = RiveViewModel(model, autoPlay: false) + let viewModel = RiveViewModel(model, autoPlay: false, animationName: "one") let view = viewModel.createRiveView() view.playerDelegate = delegate