public static bool MarkDynamicObjectAsDestroyed(Either <DynamicObject, DynamicObjectSave> dynamicObject, string sceneName) { string id = dynamicObject.Match( dynamicObj => dynamicObj.ID, dynamicObjSave => dynamicObjSave.ID ); if (!allDynamicObjectRecords.ContainsKey(id)) { Debug.LogError($"Trying to mark DynamicObject {dynamicObject} as destroyed, but allDynamicObjectRecords contains no entry for {id}"); return(false); } if (allDynamicObjectRecords[id].sceneName != sceneName) { Debug.LogError($"Trying to mark DynamicObject {dynamicObject} in scene {sceneName} as destroyed, but existing entry for id {id} is in a different scene: {allDynamicObjectRecords[id].sceneName}"); return(false); } DynamicObjectRecord record = allDynamicObjectRecords[id]; record.isDestroyed = true; allDynamicObjectRecords[id] = record; return(true); }
public static bool ChangeDynamicObjectScene(DynamicObject dynamicObject, string newScene) { string id = dynamicObject.ID; if (!allDynamicObjectRecords.ContainsKey(id)) { Debug.LogError($"Trying to change scene for DynamicObject {dynamicObject}, but there is no entry for id {id}"); return(false); } if (allDynamicObjectRecords[id].sceneName == newScene) { Debug.LogWarning($"Trying to change scene for DynamicObject {dynamicObject}, but existing entry for id {id} is already in {newScene}. Nothing to do."); return(true); } DynamicObjectRecord record = allDynamicObjectRecords[id]; record.sceneName = newScene; allDynamicObjectRecords[id] = record; return(true); }