public void SetObjectData(ISerializationData dataHolder, ISerializationContext context)
{
if(m_knowledgeStorage == null)
m_knowledgeStorage = new NameSearchTree<KnowledgeEntry>();
else
m_knowledgeStorage.Clear();
if(m_dynamicProperties==null)
m_dynamicProperties = new NameSearchTree<DynamicKnowledgeEntry>();
else
m_dynamicProperties.Clear();
RegistNativeDynamicProperties(this);
Perspective = dataHolder.GetValue<Name>("Perspective");
var knowledge = dataHolder.GetValueGraphNode("Knowledge");
var it = ((IObjectGraphNode) knowledge).GetEnumerator();
while (it.MoveNext())
{
var perspective = String2Perspective(it.Current.FieldName);
var holder = (IObjectGraphNode) it.Current.FieldNode;
foreach (var field in holder)
{
var property = (Name) field.FieldName;
var value = field.FieldNode.RebuildObject<Name>();
if(value==null)
continue;
Tell(property,value,perspective);
}
}
}