Преглед на файлове

Encoded managed diffs are now in a format appropriate for querying and modifying game object handles

BearishSun преди 10 години
родител
ревизия
4474b5f0c1
променени са 3 файла, в които са добавени 6 реда и са изтрити 19 реда
  1. 1 1
      BansheeEditor/Include/BsCodeEditor.h
  2. 1 1
      BansheeEditor/Source/BsCodeEditor.cpp
  3. 4 17
      SBansheeEngine/Source/BsManagedDiff.cpp

+ 1 - 1
BansheeEditor/Include/BsCodeEditor.h

@@ -68,7 +68,7 @@ namespace BansheeEngine
 		/**
 		 * @brief	Opens a code file in the active external editor. 
 		 *
-		 * @param	path		Path to the code file to open, can be absolute or relative to project folder.
+		 * @param	path		Path to the code file to open, can be absolute or relative to project resources folder.
 		 *						The file should be part of a solution in the active editor.
 		 * @param	lineNumber	Line number to focus on once the file is opened. Might not be supported by all
 		 *						editors.

+ 1 - 1
BansheeEditor/Source/BsCodeEditor.cpp

@@ -62,7 +62,7 @@ namespace BansheeEngine
 
 		Path filePath = path;
 		if (!path.isAbsolute())
-			filePath.makeAbsolute(gEditorApplication().getProjectPath());
+			filePath.makeAbsolute(gProjectLibrary().getResourcesFolder());
 
 		mActiveEditor->openFile(getSolutionPath(), filePath, lineNumber);
 	}

+ 4 - 17
SBansheeEngine/Source/BsManagedDiff.cpp

@@ -23,25 +23,15 @@ namespace BansheeEngine
 		if (diff == nullptr)
 			return nullptr;
 
-		MemorySerializer ms;
-
-		UINT32 dataLength = 0;
-		UINT8* diffData = ms.encode(diff.get(), dataLength, &bs_alloc);
-
 		SPtr<SerializedObject> output = bs_shared_ptr_new<SerializedObject>();
 		output->subObjects.push_back(SerializedSubObject());
 
 		SerializedSubObject& subObject = output->subObjects.back();
 		subObject.typeId = ManagedSerializableObject::getRTTIStatic()->getRTTIId();
 
-		SPtr<SerializedField> field = bs_shared_ptr_new<SerializedField>();
-		field->value = diffData;
-		field->size = dataLength;
-		field->ownsMemory = true;
-
 		SerializedEntry entry;
 		entry.fieldId = 0;
-		entry.serialized = field;
+		entry.serialized = bs._encodeIntermediate(diff.get());
 
 		subObject.entries[0] = entry;
 
@@ -51,14 +41,11 @@ namespace BansheeEngine
 	void ManagedDiff::applyDiff(const SPtr<IReflectable>& object, const SPtr<SerializedObject>& serzDiff,
 		DiffObjectMap& objectMap, Vector<DiffCommand>& diffCommands)
 	{
-		SPtr<SerializedField> field = std::static_pointer_cast<SerializedField>(serzDiff->subObjects[0].entries[0].serialized);
+		SPtr<SerializedObject> diffObj = std::static_pointer_cast<SerializedObject>(serzDiff->subObjects[0].entries[0].serialized);
 
-		MemorySerializer ms;
-		ManagedSerializableDiffPtr diff;
+		BinarySerializer bs;
+		ManagedSerializableDiffPtr diff = std::static_pointer_cast<ManagedSerializableDiff>(bs._decodeIntermediate(diffObj));
 		
-		if (field->size > 0)
-			diff = std::static_pointer_cast<ManagedSerializableDiff>(ms.decode(field->value, field->size));
-
 		if (diff != nullptr)
 		{
 			SPtr<ManagedSerializableObject> managedObj = std::static_pointer_cast<ManagedSerializableObject>(object);