private static IHierarchyElement ReadHieraerchyElement(UnsafeReader reader) { switch (reader.ReadInt32()) { case 0: return(GameObjectHierarchy.Read(reader)); case 1: return(ComponentHierarchy.Read(reader)); case 2: return(PrefabInstanceHierarchy.Read(reader)); case 3: return(ScriptComponentHierarchy.Read(reader)); case 4: return(StrippedHierarchyElement.Read(reader)); case 5: return(TransformHierarchy.Read(reader)); default: throw new InvalidOperationException("Unknown type"); } }
private static void WriteHierarchyElement(UnsafeWriter writer, IHierarchyElement hierarchyElement) { switch (hierarchyElement) { case GameObjectHierarchy gameObjectHierarchy: writer.Write(0); GameObjectHierarchy.Write(writer, gameObjectHierarchy); break; case ComponentHierarchy componentHierarchy: writer.Write(1); ComponentHierarchy.Write(writer, componentHierarchy); break; case PrefabInstanceHierarchy prefabInstanceHierarchy: writer.Write(2); PrefabInstanceHierarchy.Write(writer, prefabInstanceHierarchy); break; case ScriptComponentHierarchy scriptComponentHierarchy: writer.Write(3); ScriptComponentHierarchy.Write(writer, scriptComponentHierarchy); break; case StrippedHierarchyElement strippedHierarchyElement: writer.Write(4); StrippedHierarchyElement.Write(writer, strippedHierarchyElement); break; case TransformHierarchy transformHierarchy: writer.Write(5); TransformHierarchy.Write(writer, transformHierarchy); break; } }