public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var ws = (WorkspaceModel)value;
writer.WriteStartObject();
writer.WritePropertyName("Uuid");
writer.WriteValue(ws.Guid.ToString());
writer.WritePropertyName("IsCustomNode");
writer.WriteValue(value is CustomNodeWorkspaceModel ? true : false);
if(value is CustomNodeWorkspaceModel)
{
writer.WritePropertyName("Category");
writer.WriteValue(((CustomNodeWorkspaceModel)value).Category);
}
writer.WritePropertyName("LastModified");
writer.WriteValue(ws.LastSaved.ToUniversalTime());
writer.WritePropertyName("LastModifiedBy");
writer.WriteValue(ws.Author);
writer.WritePropertyName("Description");
writer.WriteValue(ws.Description);
writer.WritePropertyName("Name");
writer.WriteValue(ws.Name);
//element resolver
writer.WritePropertyName("ElementResolver");
serializer.Serialize(writer, ws.ElementResolver);
//nodes
writer.WritePropertyName("Nodes");
serializer.Serialize(writer, ws.Nodes);
//notes
writer.WritePropertyName("Notes");
serializer.Serialize(writer, ws.Notes);
//connectors
writer.WritePropertyName("Connectors");
serializer.Serialize(writer, ws.Connectors);
//annotations
writer.WritePropertyName("Annotations");
serializer.Serialize(writer, ws.Annotations);
//cameras
writer.WritePropertyName("Cameras");
writer.WriteStartArray();
writer.WriteEndArray();
writer.WritePropertyName("Dependencies");
writer.WriteStartArray();
var functions = ws.Nodes.Where(n => n is Function);
if (functions.Any())
{
var deps = functions.Cast<Function>().Select(f => f.Definition.FunctionId).Distinct();
foreach(var d in deps)
{
writer.WriteValue(d);
}
}
writer.WriteEndArray();
writer.WriteEndObject();
}
}