示例#1
0
        public byte[] SerializeGraphs(SerializeSettings settings, out uint checksum)
        {
            AstarPath.active.BlockUntilPathQueueBlocked();
            AstarSerializer astarSerializer = new AstarSerializer(this, settings);

            astarSerializer.OpenSerialize();
            this.SerializeGraphsPart(astarSerializer);
            byte[] result = astarSerializer.CloseSerialize();
            checksum = astarSerializer.GetChecksum();
            return(result);
        }
示例#2
0
        public byte[] SerializeGraphsExtra(SerializeSettings settings)
        {
            AstarPath.active.BlockUntilPathQueueBlocked();
            AstarSerializer astarSerializer = new AstarSerializer(this, settings);

            astarSerializer.OpenSerialize();
            astarSerializer.graphs = this.graphs;
            byte[] result = astarSerializer.SerializeExtraInfoBytes();
            astarSerializer.CloseSerialize();
            return(result);
        }
示例#3
0
        public byte[] SerializeGraphs(SerializeSettings settings, out uint checksum)
        {
            PathProcessor.GraphUpdateLock graphUpdateLock = this.AssertSafe(false);
            AstarSerializer astarSerializer = new AstarSerializer(this, settings);

            astarSerializer.OpenSerialize();
            this.SerializeGraphsPart(astarSerializer);
            byte[] result = astarSerializer.CloseSerialize();
            checksum = astarSerializer.GetChecksum();
            graphUpdateLock.Release();
            return(result);
        }
示例#4
0
        /** Main serializer function, a similar one exists in the AstarEditor.cs script to save additional info */
        public byte[] SerializeGraphs(AstarSerializer serializer)
        {
            serializer.OpenSerialize();

            SerializeGraphsPart(serializer);

            serializer.Close();

            byte[] bytes = (serializer.writerStream.BaseStream as System.IO.MemoryStream).ToArray();

            Debug.Log("Got a whole bunch of data, " + bytes.Length + " bytes");
            return(bytes);
        }
示例#5
0
        /** Main serializer function.
         * Serializes all graphs to a byte array
         * A similar function exists in the AstarPathEditor.cs script to save additional info */
        public byte[] SerializeGraphs(SerializeSettings settings, out uint checksum)
        {
            AstarPath.active.BlockUntilPathQueueBlocked();

            var sr = new AstarSerializer(this, settings);

            sr.OpenSerialize();
            SerializeGraphsPart(sr);
            var bytes = sr.CloseSerialize();

            checksum = sr.GetChecksum();
            return(bytes);
        }
示例#6
0
        /** Main serializer function.
         * Serializes all graphs to a byte array
         * A similar function exists in the AstarPathEditor.cs script to save additional info */
        public byte[] SerializeGraphs(SerializeSettings settings, out uint checksum)
        {
            var graphLock = AssertSafe();
            var sr        = new AstarSerializer(settings);

            sr.OpenSerialize();
            sr.SerializeGraphs(graphs);
            sr.SerializeExtraInfo();
            byte[] bytes = sr.CloseSerialize();
            checksum = sr.GetChecksum();
        #if ASTARDEBUG
            Debug.Log("Got a whole bunch of data, " + bytes.Length + " bytes");
        #endif
            graphLock.Release();
            return(bytes);
        }
示例#7
0
    /*public void OnDisableUndo () {
        return;
        if (!editor.enableUndo) {
            return;
        }

        if (undoState != null) {
            ScriptableObject.DestroyImmediate (undoState);
            undoState = null;
        }
    }

    private void ApplyUndo () {
        return;
        if (!editor.enableUndo) {
            return;
        }

        undoState.hasBeenReverted = false;

        if (AstarPath.active == null) {
            return;
        }

        byte[] bytes = GetSerializedBytes (target);

        bool isDifferent = false;

        //Check if the data is any different from the last saved data, if it isn't, don't load it
        if (undoState.data == null || bytes.Length != undoState.data.Length) {
            isDifferent = true;
        } else {
            for (int i=0;i<bytes.Length;i++) {
                if (bytes[i] != undoState.data[i]) {
                    isDifferent = true;
                    break;
                }
            }
        }

        if (isDifferent) {

            Debug.Log ("The undo is different "+ Event.current.type +" "+Event.current.commandName);
            //Event.current.Use ();
            AstarSerializer sz = new AstarSerializer (editor.script);
            sz.OpenDeserialize (undoState.data);
            sz.DeSerializeSettings (target,AstarPath.active);
            sz.Close ();
        }
    }

    public void ModifierKeysChanged () {
        return;
        if (!editor.enableUndo) {
            return;
        }

        if (undoState == null) {
            return;
        }
        //The user has tried to undo something, apply that
        if (undoState.hasBeenReverted) {
            ApplyUndo ();
            GUI.changed = true;
            editor.Repaint ();
        }

    }

    /** Handles undo operations for the graph *
    public void HandleUndo (NavGraph target) {
        return;
        if (!editor.enableUndo) {
            return;
        }

        if (undoState == null) {
            undoState = ScriptableObject.CreateInstance<GraphUndo>();
        }

        Event e = Event.current;

        //ModifierKeysChanged ();

        //To serialize settings for a grid graph takes from 0.00 ms to 7.8 ms (usually 0.0, but sometimes jumps up to 7.8 (no values in between)
        if ((e.button == 0 && (e.type == EventType.MouseDown || e.type == EventType.MouseUp)) || (e.isKey && (e.keyCode == KeyCode.Tab || e.keyCode == KeyCode.Return))) {
            System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
            stopWatch.Start();

            //Serialize the settings of the graph
            byte[] bytes = GetSerializedBytes (target);

            bool isDifferent = false;

            if (undoState.data == null) {
                Debug.LogError ("UndoState.data == null - This should not happen");
                return;
            }

            //Check if the data is any different from the last saved data, if it isn't, don't save it
            if (bytes.Length != undoState.data.Length) {
                isDifferent = true;
            } else {
                for (int i=0;i<bytes.Length;i++) {
                    if (bytes[i] != undoState.data[i]) {
                        isDifferent = true;
                        break;
                    }
                }
            }

            //Only save undo if the data was different from the last saved undo
            if (isDifferent) {
                //This flag is set to true so we can detect if the object has been reverted
                undoState.hasBeenReverted = true;

                Undo.RegisterUndo (undoState,"A* inspector");

                //Assign the new data
                undoState.data = bytes;

                //Undo.SetSnapshotTarget(undoState,"A* inspector");
                //Undo.CreateSnapshot ();
                //Undo.RegisterSnapshot();

                undoState.hasBeenReverted = false;
                Debug.Log ("Saved "+bytes.Length+" bytes");
                stopWatch.Stop();
                Debug.Log ("Adding Undo "+stopWatch.Elapsed.ToString ());
            }

        }
    }*/
    /** Returns a byte array with the settings of the graph. This function serializes the graph's settings and stores them in a byte array, used for undo operations. This will not save any additional metadata such as which A* version we are working on. */
    private byte[] GetSerializedBytes(NavGraph target)
    {
        //Serialize the settings of the graph
        AstarSerializer sz = new AstarSerializer (editor.script);
        sz.OpenSerialize ();
        sz.SerializeSettings (target,AstarPath.active);
        sz.Close ();
        byte[] bytes = (sz.writerStream.BaseStream as System.IO.MemoryStream).ToArray ();

        return bytes;
    }
示例#8
0
        /** Main serializer function, a similar one exists in the AstarEditor.cs script to save additional info */
        public byte[] SerializeGraphs(AstarSerializer serializer)
        {
            serializer.OpenSerialize ();

            SerializeGraphsPart (serializer);

            serializer.Close ();

            byte[] bytes = (serializer.writerStream.BaseStream as System.IO.MemoryStream).ToArray ();

            Debug.Log ("Got a whole bunch of data, "+bytes.Length+" bytes");
            return bytes;
        }
    public byte[] SerializeGraphs(AstarSerializer serializer)
    {
        //System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch();
        //stopWatch.Start();

        CheckGraphEditors ();

        serializer.OpenSerialize ();

        script.astarData.SerializeGraphsPart (serializer);

        for (int i=0;i<script.graphs.Length;i++) {
            NavGraph graph = script.graphs[i];

            GraphEditor graphEditor = graphEditors[i];

            serializer.AddAnchor ("EditorSettings_"+i);
            ISerializableGraphEditor serializableEditor = graphEditor as ISerializableGraphEditor;
            if (serializableEditor != null) {
                //@Add

                //Set an unique prefix for all variables in this graph
                serializer.sPrefix = i.ToString ()+"E";
                serializer.SerializeEditorSettings (graph,serializableEditor,script);
                //serializableEditor.SerializeSettings (graph,serializer);
            }
        }

        serializer.Close ();

        byte[] bytes = (serializer.writerStream.BaseStream as System.IO.MemoryStream).ToArray ();

        //stopWatch.Stop();
        //Debug.Log ("Serializing Graphs - Took "+stopWatch.Elapsed.ToString ());

        return bytes;
    }