public void Serialize(Blueprint blueprint) { using (var stream = new MemoryStream()) { _serializer.Serialize(stream, blueprint); blueprintData = stream.ToArray(); } }
/// Adds all components from the blueprint to the entity. /// When 'replaceComponents' is set to true entity.ReplaceComponent() will be used instead of entity.AddComponent(). public Entity ApplyBlueprint(Blueprint blueprint, bool replaceComponents = false) { for (int i = 0, componentsLength = blueprint.components.Length; i < componentsLength; i++) { var componentBlueprint = blueprint.components[i]; if (replaceComponents) { ReplaceComponent(componentBlueprint.index, componentBlueprint.CreateComponent(this)); } else { AddComponent(componentBlueprint.index, componentBlueprint.CreateComponent(this)); } } return this; }
public Blueprint Deserialize() { Blueprint blueprint; if(blueprintData == null || blueprintData.Length == 0) { blueprint = new Blueprint(string.Empty, "New Blueprint", new Entity(0, null, null)); } else { using (var stream = new MemoryStream(blueprintData)) { blueprint = (Blueprint)_serializer.Deserialize(stream); } } name = blueprint.name; return blueprint; }
void Awake() { _allPools = findAllPools(); if (_allPools == null) { return; } var binaryBlueprint = ((BinaryBlueprint)target); _allPoolNames = _allPools.Select(pool => pool.metaData.poolName).ToArray(); BinaryBlueprintInspector.UpdateBinaryBlueprint(binaryBlueprint, _allPoolNames); _blueprint = binaryBlueprint.Deserialize(); AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(target), _blueprint.name); _poolIndex = Array.IndexOf(_allPoolNames, _blueprint.poolIdentifier); switchToPool(); _entity.ApplyBlueprint(_blueprint); EntityDrawer.Initialize(); }
public void Serialize(Entity entity) { var blueprint = new Blueprint(entity.contextInfo.name, name, entity); Serialize(blueprint); }
void Awake() { _allContexts = findAllContexts(); if(_allContexts == null) { return; } var binaryBlueprint = ((BinaryBlueprint)target); _allContextNames = _allContexts.Select(context => context.contextInfo.name).ToArray(); BinaryBlueprintInspector.UpdateBinaryBlueprint(binaryBlueprint, _allContexts, _allContextNames); _blueprint = binaryBlueprint.Deserialize(); AssetDatabase.RenameAsset(AssetDatabase.GetAssetPath(target), _blueprint.name); _contextIndex = Array.IndexOf(_allContextNames, _blueprint.contextIdentifier); switchToContext(); _entity.ApplyBlueprint(_blueprint); EntityDrawer.Initialize(); }
public void Serialize(Entity entity) { var blueprint = new Blueprint(entity.poolMetaData.poolName, name, entity); Serialize(blueprint); }