public static bool GetLocationTransform(LocationKey key, out MiniTransform transform) { if (key == null) { transform = new MiniTransform(Vector3.zero); return(false); } return(GetLocationTransform(key.scene, key.name, out transform)); }
public static bool GetLocationTransform(string scene, string name, out MiniTransform transform) { LocationDefenition location = GetLocation(scene, name); if (location == null) { transform = new MiniTransform(Vector3.zero); return(false); } transform = location.GetTransform(); return(true); }
static void MovePlayer(string scene, MiniTransform target, bool forceReload) { if (!CheckSceneName(scene)) { return; } if (forceReload || !GameManager.playerExists || !SceneLoading.currentLoadedScenes.Contains(scene)) { MovePlayerToUnloadedScene(scene, target); } MoveDynamicObjectToTransform(GameManager.player, target.position, target.rotation, false); }
static void MoveObject(DynamicObject dynamicObject, string scene, MiniTransform target) { if (!CheckSceneName(scene)) { return; } if (dynamicObject == null) { return; } MoveObject(ObjectLoadState.Loaded, dynamicObject, scene, target); }
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 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); }
public static void SetTransform(this Transform transform, MiniTransform settings, TransformBehavior behavior) { if (settings == null) { return; } if (behavior == null || behavior.position) { transform.position = settings.position; } if (behavior == null || behavior.rotation) { transform.rotation = Quaternion.Euler(settings.rotation); } if (behavior == null || behavior.scale) { transform.localScale = settings.scale; } }
static void MovePlayerToUnloadedScene(string scene, MiniTransform target) { movingPlayer = true; movePlayerTarget = target; SceneLoading.LoadSceneAsync(scene, null, null, LoadSceneMode.Single, false); }