in Editor/Scripts/DevDescriptor.cs [55:97]
public bool Build()
{
try
{
IReadOnlyList<FileDescriptor> files;
if (m_SerializedData != null)
{
files = FileDescriptor.BuildFromByteStrings(new[] {m_SerializedData});
}
else if (m_SerializedBytes != null)
{
var fileDescriptorSet = FileDescriptorSet.Parser.ParseFrom(m_SerializedBytes);
files = FileDescriptor.BuildFromByteStrings(fileDescriptorSet.File);
}
else
{
throw new InvalidOperationException("DevDescriptor is not properly initialized.");
}
fileDescriptor = files[0];
fidelityMessage = fileDescriptor.MessageTypes.First(x => x.Name == "FidelityParams");
annotationMessage = fileDescriptor.MessageTypes.First(x => x.Name == "Annotation");
var loadingField = annotationMessage.Fields
.InDeclarationOrder()
.FirstOrDefault(DefaultMessages.IsLoadingStateField);
var sceneField = annotationMessage.Fields
.InDeclarationOrder()
.FirstOrDefault(DefaultMessages.IsSceneField);
// As message field's indexes start from 1, return 0 if field is not found.
loadingAnnotationIndex = loadingField?.FieldNumber ?? 0;
sceneAnnotationIndex = sceneField?.FieldNumber ?? 0;
annotationEnumSizes =
annotationMessage.Fields.InDeclarationOrder()
.Select(x => x.EnumType.Values.Count).ToList();
fidelityFieldNames = fidelityMessage.Fields.InDeclarationOrder().Select(x => x.Name).ToList();
return true;
}
catch (Exception e)
{
Debug.Log("Could not build DevDescriptor, " + e);
return false;
}
}