Updating defs.
diff --git a/dev/defs/assets/file_asset_contents.json b/dev/defs/assets/file_asset_contents.json
index e77742a..511d858 100644
--- a/dev/defs/assets/file_asset_contents.json
+++ b/dev/defs/assets/file_asset_contents.json
@@ -5,9 +5,19 @@
     "string": "file_asset_contents"
   },
   "properties": {
+    "assetId": {
+      "type": "Id",
+      "initialValue": "Core.missingId",
+      "key": {
+        "int": 213,
+        "string": "assetid"
+      },
+      "description": "The id of the asset these bytes belong to.",
+      "runtime": false,
+      "coop": false
+    },
     "bytes": {
       "type": "Bytes",
-      "initialValue": "[]",
       "key": {
         "int": 212,
         "string": "bytes"
diff --git a/dev/defs/shapes/contour_mesh_vertex.json b/dev/defs/shapes/contour_mesh_vertex.json
new file mode 100644
index 0000000..089b2ac
--- /dev/null
+++ b/dev/defs/shapes/contour_mesh_vertex.json
@@ -0,0 +1,8 @@
+{
+  "name": "ContourMeshVertex",
+  "key": {
+    "int": 111,
+    "string": "contourmeshvertex"
+  },
+  "extends": "shapes/mesh_vertex.json"
+}
\ No newline at end of file
diff --git a/dev/defs/shapes/forced_edge.json b/dev/defs/shapes/forced_edge.json
new file mode 100644
index 0000000..d4162ac
--- /dev/null
+++ b/dev/defs/shapes/forced_edge.json
@@ -0,0 +1,33 @@
+{
+  "name": "ForcedEdge",
+  "key": {
+    "int": 112,
+    "string": "forcededge"
+  },
+  "extends": "component.json",
+  "runtime": false,
+  "properties": {
+    "fromId": {
+      "type": "Id",
+      "typeRuntime": "uint",
+      "initialValue": "Core.missingId",
+      "initialValueRuntime": "0",
+      "key": {
+        "int": 219,
+        "string": "fromid"
+      },
+      "description": "Identifier used to track MeshVertex the force edge extends from."
+    },
+    "toId": {
+      "type": "Id",
+      "typeRuntime": "uint",
+      "initialValue": "Core.missingId",
+      "initialValueRuntime": "0",
+      "key": {
+        "int": 220,
+        "string": "toid"
+      },
+      "description": "Identifier used to track MeshVertex the force edge extends to."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/shapes/mesh.json b/dev/defs/shapes/mesh.json
new file mode 100644
index 0000000..e4986d5
--- /dev/null
+++ b/dev/defs/shapes/mesh.json
@@ -0,0 +1,39 @@
+{
+  "name": "Mesh",
+  "key": {
+    "int": 109,
+    "string": "mesh"
+  },
+  "extends": "container_component.json",
+  "properties": {
+    "isClosed": {
+      "type": "bool",
+      "initialValue": "false",
+      "key": {
+        "int": 217,
+        "string": "isclosed"
+      },
+      "description": "Whether the contour is closed.",
+      "runtime": false
+    },
+    "editingModeValue": {
+      "type": "uint",
+      "initialValue": "0",
+      "key": {
+        "int": 214,
+        "string": "editing_mode_value"
+      },
+      "description": "We use this to track the edit-time state of the Mesh for the VertexEditor.",
+      "runtime": false,
+      "coop": false
+    },
+    "triangleIndexBytes": {
+      "type": "Bytes",
+      "key": {
+        "int": 223,
+        "string": "triangleindexbytes"
+      },
+      "description": "Byte data for the triangle indices."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/shapes/mesh_vertex.json b/dev/defs/shapes/mesh_vertex.json
new file mode 100644
index 0000000..06a7c0f
--- /dev/null
+++ b/dev/defs/shapes/mesh_vertex.json
@@ -0,0 +1,30 @@
+{
+  "name": "MeshVertex",
+  "key": {
+    "int": 108,
+    "string": "meshvertex"
+  },
+  "extends": "shapes/vertex.json",
+  "properties": {
+    "u": {
+      "type": "double",
+      "initialValue": "0",
+      "group": "texture",
+      "key": {
+        "int": 215,
+        "string": "u"
+      },
+      "description": "U value for the texture coordinate of the vertex."
+    },
+    "v": {
+      "type": "double",
+      "initialValue": "0",
+      "group": "texture",
+      "key": {
+        "int": 216,
+        "string": "v"
+      },
+      "description": "V value for the texture coordinate of the vertex."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/shapes/path_vertex.json b/dev/defs/shapes/path_vertex.json
index 4995ace..5021bf8 100644
--- a/dev/defs/shapes/path_vertex.json
+++ b/dev/defs/shapes/path_vertex.json
@@ -5,29 +5,6 @@
     "string": "pathvertex"
   },
   "abstract": true,
-  "extends": "container_component.json",
-  "properties": {
-    "x": {
-      "type": "double",
-      "initialValue": "0",
-      "animates": true,
-      "group": "position",
-      "key": {
-        "int": 24,
-        "string": "x"
-      },
-      "description": "X value for the translation of the vertex."
-    },
-    "y": {
-      "type": "double",
-      "initialValue": "0",
-      "animates": true,
-      "group": "position",
-      "key": {
-        "int": 25,
-        "string": "y"
-      },
-      "description": "Y value for the translation of the vertex."
-    }
-  }
+  "extends": "shapes/vertex.json",
+  "genericPassThrough": "bones/weight.json"
 }
\ No newline at end of file
diff --git a/dev/defs/shapes/points_path.json b/dev/defs/shapes/points_path.json
index 72862e6..d8a2912 100644
--- a/dev/defs/shapes/points_path.json
+++ b/dev/defs/shapes/points_path.json
@@ -22,6 +22,7 @@
         "int": 74,
         "string": "editingmode"
       },
+      "description": "We use this to track the edit-time state of the PointsPath for the VertexEditor.",
       "runtime": false,
       "coop": false
     }
diff --git a/dev/defs/shapes/text.json b/dev/defs/shapes/text.json
new file mode 100644
index 0000000..b82a17e
--- /dev/null
+++ b/dev/defs/shapes/text.json
@@ -0,0 +1,19 @@
+{
+  "name": "Text",
+  "key": {
+    "int": 110,
+    "string": "text"
+  },
+  "extends": "node.json",
+  "properties": {
+    "value": {
+      "type": "String",
+      "initialValue": "''",
+      "key": {
+        "int": 218,
+        "string": "text"
+      },
+      "description": "The value stored in the Text object."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/shapes/text_run.json b/dev/defs/shapes/text_run.json
new file mode 100644
index 0000000..8e97dad
--- /dev/null
+++ b/dev/defs/shapes/text_run.json
@@ -0,0 +1,29 @@
+{
+  "name": "TextRun",
+  "key": {
+    "int": 113,
+    "string": "textrun"
+  },
+  "extends": "drawable.json",
+  "properties": {
+    "pointSize": {
+      "type": "double",
+      "initialValue": "16",
+      "animates": true,
+      "key": {
+        "int": 221,
+        "string": "point_size"
+      },
+      "description": "The point size for text styled by this run."
+    },
+    "textLength": {
+      "type": "uint",
+      "initialValue": "0",
+      "key": {
+        "int": 222,
+        "string": "text_length"
+      },
+      "description": "The length of the text styled by this run."
+    }
+  }
+}
\ No newline at end of file
diff --git a/dev/defs/shapes/vertex.json b/dev/defs/shapes/vertex.json
new file mode 100644
index 0000000..524de3b
--- /dev/null
+++ b/dev/defs/shapes/vertex.json
@@ -0,0 +1,33 @@
+{
+  "name": "Vertex",
+  "key": {
+    "int": 107,
+    "string": "vertex"
+  },
+  "abstract": true,
+  "extends": "container_component.json",
+  "properties": {
+    "x": {
+      "type": "double",
+      "initialValue": "0",
+      "animates": true,
+      "group": "position",
+      "key": {
+        "int": 24,
+        "string": "x"
+      },
+      "description": "X value for the translation of the vertex."
+    },
+    "y": {
+      "type": "double",
+      "initialValue": "0",
+      "animates": true,
+      "group": "position",
+      "key": {
+        "int": 25,
+        "string": "y"
+      },
+      "description": "Y value for the translation of the vertex."
+    }
+  }
+}
\ No newline at end of file