Esempio n. 1
0
        private void MakePreviewObject(GameObject currentPreviewObject)
        {
            PreviewCollisionMemory collisionMemory   = currentPreviewObject.AddComponent <PreviewCollisionMemory>();
            HashSet <GameObject>   hierachialObjects = new HashSet <GameObject>();

            hierachialObjects.Add(currentPreviewObject);
            collisionMemory.ObjectsToIgnore = hierachialObjects;
            AddPreviewCollisionMemoryRecursive(currentPreviewObject, hierachialObjects);
            DeactivateAllBehaviors(currentPreviewObject);
            DeactivateAllRigidBodies(currentPreviewObject);
        }
Esempio n. 2
0
 private void AddPreviewCollisionMemoryRecursive(GameObject currentPreviewObject, HashSet <GameObject> hierachialObjects)
 {
     for (int i = 0; i < currentPreviewObject.transform.childCount; i++)
     {
         Transform childTransform = currentPreviewObject.transform.GetChild(i);
         hierachialObjects.Add(childTransform.gameObject);
         PreviewCollisionMemory collisionMemory = childTransform.gameObject.AddComponent <PreviewCollisionMemory>();
         collisionMemory.ObjectsToIgnore = hierachialObjects;
         AddPreviewCollisionMemoryRecursive(childTransform.gameObject, hierachialObjects);
     }
 }
Esempio n. 3
0
        public void StartGame()
        {
            m_isCurrentlyPlayingGame = true; //<< deactivates drag and drop.
            //m_positionsAtLastGameStart = new Dictionary<LevelAsset, List<Vector3>>();
            List <GameObject> objectsToDestroy = new List <GameObject>();

            //we need to store the current positions now,
            //because later, it's to late (infos get destroyed)
            StaticCatastrophyDataBroker.StoreLocationPlacementInfo(GetPositionInfos());

            //TODO: replace the preview objects with real objects that have physics reanabled.
            foreach (var kvp in m_inScenePreviewObjects)
            {
                //List<Vector3> positions = new List<Vector3>();
                //m_positionsAtLastGameStart.Add(kvp.Key, positions);
                foreach (var previewObject in kvp.Value)
                {
                    objectsToDestroy.Add(previewObject);

                    PreviewCollisionMemory collisionMemory = previewObject.GetComponent <PreviewCollisionMemory>();
                    //only add objects that havent been setup as colliding object.
                    if (!collisionMemory.IsColliding)
                    {
                        GameObject go = (GameObject)Instantiate(kvp.Key.Prefab);
                        go.transform.position = previewObject.transform.position;
                    }
                }
            }

            m_inScenePreviewObjects.Clear();
            m_currentDraggingObject = null;
            m_currentDraggingAsset  = null;

            foreach (GameObject obj in objectsToDestroy)
            {
                Destroy(obj);
            }

            StartStartableGameObjects();
            ApplyCatForce();
        }
Esempio n. 4
0
        public List <PrefabPositionInfo> GetPositionInfos()
        {
            List <PrefabPositionInfo> result = new List <PrefabPositionInfo>();

            foreach (var kvp in m_inScenePreviewObjects)
            {
                foreach (var obj in kvp.Value)
                {
                    PreviewCollisionMemory collisionMemory = obj.GetComponent <PreviewCollisionMemory>();
                    //only add objects that havent been setup as colliding object.
                    if (!collisionMemory.IsColliding)
                    {
                        result.Add(new PrefabPositionInfo()
                        {
                            Prefab = kvp.Key.Prefab, Position = obj.transform.position
                        });
                    }
                }
            }

            return(result);
        }