Updating defs.
diff --git a/dev/defs/animation/event_bool_change.json b/dev/defs/animation/event_bool_change.json
new file mode 100644
index 0000000..5bf7a92
--- /dev/null
+++ b/dev/defs/animation/event_bool_change.json
@@ -0,0 +1,19 @@
+{
+  "name": "EventBoolChange",
+  "key": {
+    "int": 117,
+    "string": "event_bool_change"
+  },
+  "extends": "animation/event_input_change.json",
+  "properties": {
+    "value": {
+      "type": "bool",
+      "initialValue": "true",
+      "key": {
+        "int": 228,
+        "string": "value"
+      },
+      "description": "Value to set the input to when the event occurs."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/animation/event_input_change.json b/dev/defs/animation/event_input_change.json
new file mode 100644
index 0000000..5dc1811
--- /dev/null
+++ b/dev/defs/animation/event_input_change.json
@@ -0,0 +1,44 @@
+{
+  "name": "EventInputChange",
+  "key": {
+    "int": 116,
+    "string": "event_input_change"
+  },
+  "abstract": true,
+  "properties": {
+    "eventId": {
+      "type": "Id",
+      "typeRuntime": "uint",
+      "initialValue": "Core.missingId",
+      "initialValueRuntime": "0",
+      "key": {
+        "int": 226,
+        "string": "eventid"
+      },
+      "description": "Identifier used to track the StateMachineEvent this result belongs to.",
+      "runtime": false
+    },
+    "inputId": {
+      "type": "Id",
+      "typeRuntime": "uint",
+      "initialValue": "Core.missingId",
+      "initialValueRuntime": "-1",
+      "key": {
+        "int": 227,
+        "string": "inputid"
+      },
+      "description": "Id of the StateMachineInput referenced."
+    },
+    "order": {
+      "type": "FractionalIndex",
+      "initialValue": "FractionalIndex.invalid",
+      "initialValueRuntime": "0",
+      "key": {
+        "int": 230,
+        "string": "order"
+      },
+      "description": "Order value for condition in a transition.",
+      "runtime": false
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/animation/event_number_change.json b/dev/defs/animation/event_number_change.json
new file mode 100644
index 0000000..cc96e0a
--- /dev/null
+++ b/dev/defs/animation/event_number_change.json
@@ -0,0 +1,19 @@
+{
+  "name": "EventNumberChange",
+  "key": {
+    "int": 118,
+    "string": "event_number_change"
+  },
+  "extends": "animation/event_input_change.json",
+  "properties": {
+    "value": {
+      "type": "double",
+      "initialValue": "0",
+      "key": {
+        "int": 229,
+        "string": "value"
+      },
+      "description": "Value to set the input to when the event occurs."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/animation/event_trigger_change.json b/dev/defs/animation/event_trigger_change.json
new file mode 100644
index 0000000..9aa6e0d
--- /dev/null
+++ b/dev/defs/animation/event_trigger_change.json
@@ -0,0 +1,8 @@
+{
+  "name": "EventTriggerChange",
+  "key": {
+    "int": 115,
+    "string": "event_trigger_change"
+  },
+  "extends": "animation/event_input_change.json"
+}
\ No newline at end of file
diff --git a/dev/defs/animation/state_machine_bool.json b/dev/defs/animation/state_machine_bool.json
index 75b3cd0..3c9fbaf 100644
--- a/dev/defs/animation/state_machine_bool.json
+++ b/dev/defs/animation/state_machine_bool.json
@@ -13,6 +13,16 @@
         "int": 141,
         "string": "value"
       }
+    },
+    "playbackValue": {
+      "type": "bool",
+      "initialValue": "false",
+      "key": {
+        "int": 232,
+        "string": "playbackvalue"
+      },
+      "runtime": false,
+      "coop": false
     }
   }
 }
\ No newline at end of file
diff --git a/dev/defs/animation/state_machine_event.json b/dev/defs/animation/state_machine_event.json
new file mode 100644
index 0000000..64a8ffe
--- /dev/null
+++ b/dev/defs/animation/state_machine_event.json
@@ -0,0 +1,30 @@
+{
+  "name": "StateMachineEvent",
+  "key": {
+    "int": 114,
+    "string": "statemachineevent"
+  },
+  "extends": "animation/state_machine_component.json",
+  "properties": {
+    "targetId": {
+      "type": "Id",
+      "typeRuntime": "uint",
+      "initialValue": "Core.missingId",
+      "initialValueRuntime": "0",
+      "key": {
+        "int": 224,
+        "string": "targetid"
+      },
+      "description": "Identifier used to track the object use as a target fo this event."
+    },
+    "eventTypeValue": {
+      "type": "uint",
+      "initialValue": "0",
+      "key": {
+        "int": 225,
+        "string": "eventtypevalue"
+      },
+      "description": "Event type (hover, click, etc)."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/animation/state_machine_number.json b/dev/defs/animation/state_machine_number.json
index c9f9d2e..8d533f2 100644
--- a/dev/defs/animation/state_machine_number.json
+++ b/dev/defs/animation/state_machine_number.json
@@ -13,6 +13,16 @@
         "int": 140,
         "string": "value"
       }
+    },
+    "playbackValue": {
+      "type": "double",
+      "initialValue": "0",
+      "key": {
+        "int": 231,
+        "string": "playbackvalue"
+      },
+      "runtime": false,
+      "coop": false
     }
   }
 }
\ No newline at end of file
diff --git a/dev/defs/shapes/text.json b/dev/defs/shapes/text.json
index 8cbadf1..a14414a 100644
--- a/dev/defs/shapes/text.json
+++ b/dev/defs/shapes/text.json
@@ -1,11 +1,11 @@
 {
   "name": "Text",
-  "runtime": false,
   "key": {
     "int": 110,
     "string": "text"
   },
   "extends": "node.json",
+  "runtime": false,
   "properties": {
     "value": {
       "type": "String",
diff --git a/dev/defs/shapes/text_run.json b/dev/defs/shapes/text_run.json
index 5fb11de..5b66d9d 100644
--- a/dev/defs/shapes/text_run.json
+++ b/dev/defs/shapes/text_run.json
@@ -1,11 +1,11 @@
 {
   "name": "TextRun",
-  "runtime": false,
   "key": {
     "int": 113,
     "string": "textrun"
   },
   "extends": "drawable.json",
+  "runtime": false,
   "properties": {
     "pointSize": {
       "type": "double",