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); }
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); }
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); }
/** 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); }
/** 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); }
/** 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); }
/*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; }
/** 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; }