Loading input changes
diff --git a/include/rive/animation/state_machine_event.hpp b/include/rive/animation/state_machine_event.hpp
index 8eca197..b3d7606 100644
--- a/include/rive/animation/state_machine_event.hpp
+++ b/include/rive/animation/state_machine_event.hpp
@@ -14,6 +14,7 @@
 
     public:
         size_t inputChangeCount() const { return m_InputChanges.size(); }
+        const EventInputChange* inputChange(size_t index) const;
         StatusCode import(ImportStack& importStack) override;
     };
 } // namespace rive
diff --git a/src/animation/state_machine.cpp b/src/animation/state_machine.cpp
index a767143..523b4c6 100644
--- a/src/animation/state_machine.cpp
+++ b/src/animation/state_machine.cpp
@@ -106,7 +106,7 @@
 }
 
 const StateMachineEvent* StateMachine::event(size_t index) const {
-    if (index >= 0 && index < m_Events.size()) {
+    if (index < m_Events.size()) {
         return m_Events[index];
     }
     return nullptr;
diff --git a/src/animation/state_machine_event.cpp b/src/animation/state_machine_event.cpp
index 5eadc0f..d6791b3 100644
--- a/src/animation/state_machine_event.cpp
+++ b/src/animation/state_machine_event.cpp
@@ -17,3 +17,10 @@
     stateMachineImporter->addEvent(this);
     return Super::import(importStack);
 }
+
+const EventInputChange* StateMachineEvent::inputChange(size_t index) const {
+    if (index < m_InputChanges.size()) {
+        return m_InputChanges[index];
+    }
+    return nullptr;
+}
\ No newline at end of file
diff --git a/test/state_machine_event_test.cpp b/test/state_machine_event_test.cpp
index e74e818..b65b32a 100644
--- a/test/state_machine_event_test.cpp
+++ b/test/state_machine_event_test.cpp
@@ -12,6 +12,8 @@
 #include <rive/animation/blend_animation_1d.hpp>
 #include <rive/animation/blend_state_direct.hpp>
 #include <rive/animation/blend_state_transition.hpp>
+#include <rive/animation/event_input_change.hpp>
+#include <rive/node.hpp>
 #include "catch.hpp"
 #include "rive_file_reader.hpp"
 #include <cstdio>
@@ -30,8 +32,30 @@
     REQUIRE(stateMachine->inputCount() == 4);
 
     // Expect each of the three events to have one input change each.
-    for (int i = 0; i < 3; i++) {
-        auto event = stateMachine->event(i);
-        REQUIRE(event->inputChangeCount() == 1);
-    }
+    auto event1 = stateMachine->event(0);
+    auto target1 = artboard->resolve(event1->targetId());
+    REQUIRE(target1->is<rive::Node>());
+    REQUIRE(target1->as<rive::Node>()->name() == "HandWickHit");
+    REQUIRE(event1->inputChangeCount() == 1);
+    auto inputChange1 = event1->inputChange(0);
+    REQUIRE(inputChange1 != nullptr);
+    REQUIRE(inputChange1->inputId() == 0);
+
+    auto event2 = stateMachine->event(1);
+    auto target2 = artboard->resolve(event2->targetId());
+    REQUIRE(target2->is<rive::Node>());
+    REQUIRE(target2->as<rive::Node>()->name() == "HandCannonHit");
+    REQUIRE(event2->inputChangeCount() == 1);
+    auto inputChange2 = event2->inputChange(0);
+    REQUIRE(inputChange2 != nullptr);
+    REQUIRE(inputChange2->inputId() == 1);
+
+    auto event3 = stateMachine->event(2);
+    auto target3 = artboard->resolve(event3->targetId());
+    REQUIRE(target3->is<rive::Node>());
+    REQUIRE(target3->as<rive::Node>()->name() == "HandHelmetHit");
+    REQUIRE(event3->inputChangeCount() == 1);
+    auto inputChange3 = event3->inputChange(0);
+    REQUIRE(inputChange3 != nullptr);
+    REQUIRE(inputChange3->inputId() == 2);
 }