Пример #1
0
        ///----------------------------------------------------------------------------------------------

        ///Self Serialize blackboard
        public void SelfSerialize()
        {
            if (haltForUndo /*|| ParadoxNotion.Services.Threader.applicationIsPlaying || Application.isPlaying*/)
            {
                return;
            }

            var newReferences    = new List <UnityEngine.Object>();
            var newSerialization = JSONSerializer.Serialize(typeof(BlackboardSource), _blackboard, newReferences);

            if (newSerialization != _serializedBlackboard || !newReferences.SequenceEqual(_objectReferences) || (_serializedVariables == null || _serializedVariables.Length != _blackboard.variables.Count))
            {
                haltForUndo = true;
                UndoUtility.RecordObjectComplete(this, UndoUtility.GetLastOperationNameOr("Blackboard Change"));
                haltForUndo = false;

                _serializedVariables = new SerializationPair[_blackboard.variables.Count];
                for (var i = 0; i < _blackboard.variables.Count; i++)
                {
                    var serializedVariable = new SerializationPair();
                    serializedVariable._json = JSONSerializer.Serialize(typeof(Variable), _blackboard.variables.ElementAt(i).Value, serializedVariable._references);
                    _serializedVariables[i]  = serializedVariable;
                }

                _serializedBlackboard = newSerialization;
                _objectReferences     = newReferences;
            }
        }