public static void SaveGame(string name, List <GameObject> _mapData) { if (!(Directory.Exists(Application.persistentDataPath + "/Saves/" + name))) { Directory.CreateDirectory(Application.persistentDataPath + "/Saves/" + name); } MapData _myMap = new MapData(); foreach (GameObject _go in _mapData) { if (_go != null) { GOData _goD = _go.GetComponent <GOData>(); BlockEntry bE = new BlockEntry(); bE.blockName = _goD.blockTypeName; bE.blockPosition = _goD.position; bE.blockYRotation = _goD.yRotation; bE.coloured = _goD.coloured; _myMap.mapBlocks.Add(bE); } } XmlSerializer serialiser = new XmlSerializer(typeof(MapData)); FileStream stream = new FileStream(Application.persistentDataPath + "/Saves/" + name + "/block_data.xml", FileMode.Create); serialiser.Serialize(stream, _myMap); stream.Close(); Debug.Log("Successfully Saved Level: " + name + " At " + Application.persistentDataPath + "/Saves/" + name + "/block_data.xml"); }
GameObject CreateBlock(GameObject _prefab, Vector3 _position, float _yRotation) { GameObject newInst = Instantiate(_prefab); newInst.transform.position = _position; newInst.transform.RotateAround(newInst.transform.position, Vector3.up, _yRotation); newInst.transform.SetParent(transform, false); GOData goD = newInst.AddComponent <GOData>(); goD.blockTypeName = _prefab.name; goD.position = newInst.transform.position; goD.yRotation = _yRotation; newInst.name = _prefab.name + ", X:" + newInst.transform.position.x + ", Y:" + newInst.transform.position.y + ", Z:" + newInst.transform.position.z; newInst.GetComponentInChildren <MeshRenderer>().gameObject.AddComponent <NavMeshSourceTag>(); Util.AddAllMeshCollidersToRenderers(newInst); mapData.Add(newInst); return(newInst); }
private void Update() { DoBlockPlacer(); if (Input.GetKeyDown(KeyCode.G)) { GameObject zombieGO = GameObject.Instantiate((GameObject)Resources.Load("Enemy/ENEMY_ZOMBIE")); NavMeshAgent NVA = zombieGO.AddComponent <NavMeshAgent>(); NVA.radius = 7.46f; NVA.height = 16f; zombieGO.AddComponent <EnemyZombieAI>(); } if (noColPaintMode) { //No colour paint mode RaycastHit _hit; Ray _ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(_ray, out _hit, Mathf.Infinity)) { if (Vector3.Distance(_hit.point, Camera.main.transform.position) > minToCamera) { if (Input.GetKeyDown(KeyCode.Mouse0)) { //Colour object if (_hit.collider.gameObject != null) { Transform mainObj = Util.getInitialParent(_hit.collider.transform, this.transform.name); Debug.Log("Painting " + mainObj.name + " To have no colour"); GOData god = mainObj.GetComponent <GOData>(); if (god != null) { god.coloured = false; } //Add block to non-coloured layer Util.MoveToLayer(mainObj, 10); } } else { //Preview Selection if (_hit.collider.gameObject != null) { Transform mainObj = Util.getInitialParent(_hit.collider.transform, this.transform.name); } } } } } else if (colourPaintMode) { //Colour paint mode RaycastHit _hit; Ray _ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(_ray, out _hit, Mathf.Infinity)) { if (Vector3.Distance(_hit.point, Camera.main.transform.position) > minToCamera) { if (Input.GetKeyDown(KeyCode.Mouse0)) { //Colour Object if (_hit.collider.gameObject != null) { Transform mainObj = Util.getInitialParent(_hit.collider.transform, this.transform.name); Debug.Log("Painting " + mainObj.name + " To have colour"); GOData god = mainObj.GetComponent <GOData>(); if (god != null) { god.coloured = true; } //Add block to coloured layer Util.MoveToLayer(mainObj, 9); } } else { //Preview Selection if (_hit.collider.gameObject != null) { Transform mainObj = Util.getInitialParent(_hit.collider.transform, this.transform.name); } } } } } else if (demolishMode) { //Demolish mode RaycastHit _hit; Ray _ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(_ray, out _hit, Mathf.Infinity)) { if (Vector3.Distance(_hit.point, Camera.main.transform.position) > minToCamera) { if (Input.GetKeyDown(KeyCode.Mouse0)) { //Delete object if (_hit.collider.gameObject != null) { Transform mainObj = Util.getInitialParent(_hit.collider.transform, this.transform.name); Debug.Log("Deleting: " + mainObj.name); if (mapData.Contains(mainObj.gameObject)) { mapData.Remove(mainObj.gameObject); Destroy(mainObj.gameObject); } } } else { //Preview Selection if (_hit.collider.gameObject != null) { Transform mainObj = Util.getInitialParent(_hit.collider.transform, this.transform.name); MeshRenderer[] mr = mainObj.GetComponentsInChildren <MeshRenderer>(); lastSelectedPreview = mainObj.gameObject; foreach (MeshRenderer _mr in mr) { ShowPreview sp = _mr.gameObject.AddComponent <ShowPreview>(); sp.Load(mainObj.gameObject, this, _mr); } } } } } } }