Пример #1
0
 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));
 }
Пример #2
0
        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);
        }
Пример #7
0
 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);
 }