public static DynamicObject GetDynamicObjectFromKey(string key) { ObjectLoadState state = GetObjectFromKey(key, out object obj); if (state == ObjectLoadState.Loaded) { return((DynamicObject)obj); } return(null); }
static void MoveObject(ObjectLoadState state, object obj, string scene, MiniTransform target) { bool sceneIsLoaded = SceneLoading.currentLoadedScenes.Contains(scene); if (state == ObjectLoadState.Loaded) { DynamicObject dynamicObject = (DynamicObject)obj; // moving loaded DO to a scene and position thats already loaded if (sceneIsLoaded) { MoveDynamicObjectToTransform(dynamicObject, target.position, target.rotation, false); } // moving loaded DO to an unloaded scene/position else { if (dynamicObject.isPlayer) { MovePlayerToUnloadedScene(scene, target); } else { DynamicObjectState objState = GetStateByID(dynamicObject.GetID()); dynamicObject.AdjustState(objState, scene, target.position, target.rotation, false); objState.loadedVersion = null; // give to pool again dynamicObject.gameObject.SetActive(false); } } } else if (state == ObjectLoadState.Unloaded) { DynamicObjectState objState = (DynamicObjectState)obj; if (objState.id == alias2ID[PLAYER_ALIAS]) { Debug.Log("Cant Move Player When Player Is Unloaded..."); return; } objState.scene = scene; objState.position = target.position; objState.rotation = target.rotation; objState.isUntouched = false; //moving an unloaded object to a loaded scene if (sceneIsLoaded) { LoadNewDynamicObjectWithState(objState, false); } } }
public static ObjectLoadState AddNewAliasedObject(string alias, PrefabReference prefabRef, string scene, Vector3 pos, Quaternion rot, bool permanent, out object obj) { if (alias2ID.ContainsKey(alias)) { Debug.LogError("Object with alias: '" + alias + "' already exists!"); obj = null; return(ObjectLoadState.NotFound); } string id; ObjectLoadState loadState = AddNewObject(prefabRef, scene, pos, rot, permanent, out obj, out id); alias2ID.Add(alias, id); id2Alias.Add(id, alias); return(loadState); }
public static void MoveObject(string key, string scene, MiniTransform target) { if (!CheckSceneName(scene)) { return; } ObjectLoadState state = GetObjectFromKey(key, out object obj); if (state == ObjectLoadState.NotFound) { return; } MoveObject(state, obj, scene, target); }