void Save() { BinaryFormatter formatter = new BinaryFormatter (); if (!Directory.Exists (saveDirectory)) { Directory.CreateDirectory (saveDirectory); } FileStream file = File.Create (saveName); PersistentCube cubeToSave = new PersistentCube (); Color cubeColor = this.GetComponent<MeshRenderer> ().material.color; cubeToSave.SetCubeColor (new Vector3 (cubeColor.r, cubeColor.g, cubeColor.b)); Vector3 cubePosition = this.transform.position; cubeToSave.SetCubePosition (cubePosition); formatter.Serialize (file, cubeToSave); file.Close (); }
void Update() { transform.Rotate(Vector3.up * Input.GetAxis("Mouse X") * rotationSpeed * 10 * Time.deltaTime); head.Rotate(Vector3.left * Input.GetAxis("Mouse Y") * rotationSpeed * 10 * Time.deltaTime); ClampHeadRotation(); if (characterController.isGrounded) { moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); moveDirection = transform.TransformDirection(moveDirection); moveDirection *= speed; if (Input.GetButton("Jump")) { moveDirection.y = jumpSpeed; } } moveDirection.y -= gravity * Time.deltaTime; characterController.Move(moveDirection * Time.deltaTime); Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0)); RaycastHit hit; if (Physics.Raycast(ray, out hit) && Vector3.Distance(transform.position, hit.point) < 10) { holoCube.gameObject.SetActive(true); holoCube.eulerAngles = new Vector3(holoCube.eulerAngles.x, 0, holoCube.eulerAngles.z); holoCube.position = hit.point + (Vector3.up * 0.5f * holoCube.lossyScale.y); if (Input.GetMouseButtonDown(0)) { SpawnCube(); } } else { holoCube.gameObject.SetActive(false); } RaycastHit hit2; if (Input.GetMouseButtonDown(1) && Physics.Raycast(ray, out hit2)) { PersistentCube tmp = hit2.collider.gameObject.GetComponent <PersistentCube>(); if (tmp != null) { tmp.Destroy(); } } holoCube.localScale += Vector3.one * Time.deltaTime * Input.mouseScrollDelta.y * 5; holoCube.localScale = Mathf.Clamp(holoCube.localScale.x, 0.3f, 1.7f) * Vector3.one; if (Input.GetKeyDown("e")) { if (currentCubeMaterial < MaterialStore.Instance.Count - 1) { currentCubeMaterial++; } else { currentCubeMaterial = 0; } previewCube.material = MaterialStore.Instance.GetMaterial(currentCubeMaterial); } if (Input.GetKeyDown("q")) { if (currentCubeMaterial > 0) { currentCubeMaterial--; } else { currentCubeMaterial = MaterialStore.Instance.Count - 1; } previewCube.material = MaterialStore.Instance.GetMaterial(currentCubeMaterial); } }