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 ();
    }
Exemple #2
0
    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);
        }
    }