Expose name on instances
diff --git a/include/rive/animation/linear_animation_instance.hpp b/include/rive/animation/linear_animation_instance.hpp
index a1ec2ab..d03b8db 100644
--- a/include/rive/animation/linear_animation_instance.hpp
+++ b/include/rive/animation/linear_animation_instance.hpp
@@ -68,6 +68,7 @@
         uint32_t duration() const;
         float speed() const;
         float startSeconds() const;
+        std::string name() const;
     
         // Returns either the animation's default or overridden loop values
         Loop loop() { return (Loop)loopValue(); }
diff --git a/include/rive/animation/state_machine_instance.hpp b/include/rive/animation/state_machine_instance.hpp
index e9c8c33..2226ef9 100644
--- a/include/rive/animation/state_machine_instance.hpp
+++ b/include/rive/animation/state_machine_instance.hpp
@@ -52,6 +52,8 @@
         SMINumber* getNumber(std::string name) const;
         SMITrigger* getTrigger(std::string name) const;
 
+        std::string name() const;
+
         const size_t currentAnimationCount() const;
         const LinearAnimationInstance* currentAnimationByIndex(size_t index) const;
 
diff --git a/src/animation/linear_animation_instance.cpp b/src/animation/linear_animation_instance.cpp
index f781cc2..4e6e987 100644
--- a/src/animation/linear_animation_instance.cpp
+++ b/src/animation/linear_animation_instance.cpp
@@ -122,6 +122,10 @@
 
 float LinearAnimationInstance::startSeconds() const { return m_Animation->startSeconds(); }
 
+std::string LinearAnimationInstance::name() const {
+    return m_Animation->name();
+}
+
 // Returns either the animation's default or overridden loop values
 int LinearAnimationInstance::loopValue() {
     if (m_LoopValue != -1) {
diff --git a/src/animation/state_machine_instance.cpp b/src/animation/state_machine_instance.cpp
index 928ad49..1176c6c 100644
--- a/src/animation/state_machine_instance.cpp
+++ b/src/animation/state_machine_instance.cpp
@@ -279,6 +279,10 @@
 void StateMachineInstance::markNeedsAdvance() { m_NeedsAdvance = true; }
 bool StateMachineInstance::needsAdvance() const { return m_NeedsAdvance; }
 
+std::string StateMachineInstance::name() const {
+    return m_Machine->name();
+}
+
 SMIInput* StateMachineInstance::input(size_t index) const {
     if (index < m_InputCount) {
         return m_InputInstances[index];