コード例 #1
0
        public static DynamicObject GetDynamicObjectFromKey(string key)
        {
            ObjectLoadState state = GetObjectFromKey(key, out object obj);

            if (state == ObjectLoadState.Loaded)
            {
                return((DynamicObject)obj);
            }
            return(null);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
        }