Newer
Older
HoloAnatomy / Assets / HoloToolkit-Examples / Medical / Scripts / TapToPlaceScene.cs
SURFACEBOOK2\jackwynne on 25 May 2018 1 KB v1
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using HoloToolkit.Unity.InputModule;
using UnityEngine;

namespace HoloToolkit.Unity
{
    /// <summary>
    /// Lightweight game object placement
    /// </summary>
    public class TapToPlaceScene : MonoBehaviour, IInputClickHandler
    {
        public float DistanceFromHead = 1.0f;

        public bool Placing = true;

        Quaternion initialRotation;

        public void SetPlacing(bool placing)
        {
            this.Placing = placing;
        }

        private void OnEnable()
        {
            this.initialRotation = this.transform.rotation;
        }

        void Update()
        {
            if (Placing)
            {
                var cameraTransform = CameraCache.Main.transform;
                var headPosition = cameraTransform.position;
                var forward = cameraTransform.forward;
                var scenePosition = headPosition + DistanceFromHead * forward;

                var facingRotation = cameraTransform.localRotation * this.initialRotation;
                //only yaw
                facingRotation.x = 0;
                facingRotation.z = 0;

                this.transform.position = scenePosition;
                this.transform.rotation = facingRotation;
            }

            if (Input.GetMouseButtonDown(0))
            {
                Placing = false;
            }
        }

        public void OnInputClicked(InputClickedEventData eventData)
        {
            Placing = false;
        }
    }
}