def getCreationBuffer(self, parent_id): buffer = blender_cave.buffer.Buffer() item_id = self.getItemID() if not self._created: buffer.command(self.getParent().CREATE_ITEM) buffer.itemID(parent_id) buffer.itemID(item_id) item_name = self.getItemName() buffer.string(item_name) try: if self._item.parent is not None: parent_name = str(self._item.parent) else: parent_name = item_name except AttributeError: parent_name = item_name buffer.string(parent_name) self._created = True if not self.getParent()._firstCreation: self.activate(True, True) for item in self._getSubItems(): item = self.getParent().getItem(item) buffer += item.getCreationBuffer(item_id) return buffer
def getBuffer(self): buffer = blender_cave.buffer.Buffer() # Create new objects affectations ... newObjects = blender_cave.buffer.Buffer() while len(self._synchronizedObjectsToAdd) > 0: object = self._synchronizedObjectsToAdd.pop() objects_id = id(object) self._synchronizedObjects[objects_id] = object newObjects.itemID(objects_id) newObjects.string(object._synchronize_object_name) if not newObjects.isEmpty(): buffer.command(self.NEW_OBJECT) buffer.subBuffer(newObjects) # Then update objects attributs for objects_id, object in self._synchronizedObjects.items(): object_data_buffer = object.getSynchronizerBuffer() if (object_data_buffer is not None) and (not object_data_buffer.isEmpty()): buffer.command(self.OBJECT) buffer.itemID(objects_id) buffer.subBuffer(object_data_buffer) return buffer
def process(self, buffer): while not buffer.isEmpty(): command = buffer.command() if command == self.NEW_OBJECT: new_objects_buffer = buffer.subBuffer() while not new_objects_buffer.isEmpty(): objects_id = new_objects_buffer.itemID() objects_name = new_objects_buffer.string() for i in range(len(self._synchronizedObjectsToAdd)): if self._synchronizedObjectsToAdd[i]._synchronize_object_name == objects_name: object = self._synchronizedObjectsToAdd.pop(i) self._synchronizedObjects[objects_id] = object break elif command == self.OBJECT: objects_id = buffer.itemID() objectBuffer = buffer.subBuffer() if objects_id in self._synchronizedObjects: self._synchronizedObjects[objects_id].processSynchronizerBuffer(objectBuffer)
def process(self, buffer): while not buffer.isEmpty(): command = buffer.command() if command == self.NEW_OBJECT: new_objects_buffer = buffer.subBuffer() while not new_objects_buffer.isEmpty(): objects_id = new_objects_buffer.itemID() objects_name = new_objects_buffer.string() for i in range(len(self._synchronizedObjectsToAdd)): if self._synchronizedObjectsToAdd[ i]._synchronize_object_name == objects_name: object = self._synchronizedObjectsToAdd.pop(i) self._synchronizedObjects[objects_id] = object break elif command == self.OBJECT: objects_id = buffer.itemID() objectBuffer = buffer.subBuffer() if objects_id in self._synchronizedObjects: self._synchronizedObjects[ objects_id].processSynchronizerBuffer(objectBuffer)