KnowledgeBase.KB.SetObjectData C# (CSharp) Method

SetObjectData() public method

public SetObjectData ( ISerializationData dataHolder, ISerializationContext context ) : void
dataHolder ISerializationData
context ISerializationContext
return void
        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);
                }
            }
        }