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); }
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); } }
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(); }
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); }