Esempio n. 1
0
        /// <summary>
        /// Awakes this instance.
        /// </summary>
        private void Awake()
        {
            var colliders = GetComponents <MeshCollider>();

            if (colliders.Length > 2)
            {
                Debug.LogWarning("CollisionDetect:: You must have only 2 mesh colliders on this mesh and one must be convex");
            }

            for (int i = 0; i < colliders.Length; i++)
            {
                if (colliders[i].convex)
                {
                    selfTriggerCollider           = colliders[i];
                    selfTriggerCollider.isTrigger = true;
                }
                else
                {
                    selfMeshCollider = colliders[i];
                }
            }

            if (Controller == null)
            {
                Controller = gameObject.GetComponentInParent <ARObject>();
            }

            collidingSurface = false;
            collidingObject  = false;
        }
Esempio n. 2
0
        /// <summary>
        /// Sets side buttons initial visibility
        /// </summary>
        private void SetButtonsVisibilityUI()
        {
            ARObject selectedObject = SelectionManager.Instance.SelectedObject;

            if (selectedObject != null)
            {
                TranslateButton.gameObject.SetActive(false);
                RotateButton.gameObject.SetActive(false);
                ScaleButton.gameObject.SetActive(false);
                CompassButton.gameObject.SetActive(false);

                if (selectedObject.Transformation.TranslateEnabledAxis != Axis.None)
                {
                    TranslateButton.gameObject.SetActive(true);
                }

                if (selectedObject.Transformation.RotateEnabledAxis != Axis.None)
                {
                    if (selectedObject.IsPhysic)
                    {
                        CompassButton.gameObject.SetActive(true);
                    }
                    else
                    {
                        RotateButton.gameObject.SetActive(true);
                    }
                }

                if (selectedObject.Transformation.ScaleEnabledAxis != Axis.None)
                {
                    ScaleButton.gameObject.SetActive(true);
                }
            }
        }
Esempio n. 3
0
 /// <summary>
 /// On select.
 /// </summary>
 /// <param name="isSelecting">The is selecting.</param>
 /// <param name="objectSelected">The object selected.</param>
 private void OnSelect(bool isSelecting, ARObject objectSelected)
 {
     if (isSelecting)
         SelectedObject = objectSelected;
     else
         SelectedObject = null;
 }
Esempio n. 4
0
 /// <summary>
 /// Called by the delegate when selecting an object
 /// </summary>mmary>
 private void HandleSelectionActive(bool isSelecting, ARObject selectedObject)
 {
     if (PlacementManager.Instance.InSceneObjectsCount < 1)
     {
         clearButton.SetActive(false);
     }
     else
     {
         clearButton.SetActive(!isSelecting);
         resetButton.SetActive(true);
     }
 }
Esempio n. 5
0
        /// <summary>
        /// Start is called on the frame when a script is enabled just before
        /// any of the Update methods is called the first time.
        /// </summary>
        private void Start()
        {
            // Get required components
            cachedArObjectComponent  = GetComponent <ARObject>();
            TranslateTransformObject = cachedArObjectComponent.TranslateObject.transform;

            // Create raycast auxiliary structs
            rayHits      = new RaycastHit[5];
            hitLayerMask = 1 << (int)Layers.Draggable | 1 << (int)Layers.BackgroundMesh | 1 << (int)Layers.Surface;

            // Create line renderer
            CreateLineRenderer();
        }
Esempio n. 6
0
        /// <summary>
        /// Sets the translate mode
        /// </summary>
        public void SetHandlerModeTranslate()
        {
            AudioManager.Instance.PlayAudioClip("Caroulsel");

            ARObject selectedObject = SelectionManager.Instance.SelectedObject;

            if (selectedObject != null)
            {
                selectedObject.Transformation.Handler.SetMode(HandlerObject.HandlerMode.Translate);
            }

            TransformManager.Instance.SetMode(HandlerObject.HandlerMode.Translate);

            SetButtonsStateUI();
        }
Esempio n. 7
0
        /// <summary>
        /// Sets the side menu buttons state
        /// </summary>
        private void SetButtonsStateUI(bool clear = false)
        {
            ARObject selectedObject = SelectionManager.Instance.SelectedObject;

            if (selectedObject != null)
            {
                if (clear)
                {
                    TranslateButton.GetComponent <Image>().color = (new Color(1, 1, 1, AlphaDisabled));
                    RotateButton.GetComponent <Image>().color    = (new Color(1, 1, 1, AlphaDisabled));
                    ScaleButton.GetComponent <Image>().color     = (new Color(1, 1, 1, AlphaDisabled));
                    CompassButton.GetComponent <Image>().color   = (new Color(1, 1, 1, AlphaDisabled));
                }

                HandlerObject.HandlerMode handlerMode = selectedObject.Transformation.Handler.Mode;

                switch (handlerMode)
                {
                case HandlerObject.HandlerMode.Translate:
                    TranslateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaEnabled), 0.2f);
                    RotateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    ScaleButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    CompassButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    break;

                case HandlerObject.HandlerMode.Rotate:
                    TranslateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    RotateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaEnabled), 0.2f);
                    ScaleButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    CompassButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaEnabled), 0.2f);
                    break;

                case HandlerObject.HandlerMode.Scale:
                    TranslateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    RotateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    ScaleButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaEnabled), 0.2f);
                    CompassButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    break;

                default:
                    TranslateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaEnabled), 0.2f);
                    RotateButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    ScaleButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    CompassButton.GetComponent <Image>().DOColor(new Color(1, 1, 1, AlphaDisabled), 0.2f);
                    break;
                }
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Gets ball start point.
        /// </summary>
        /// <param name="fallbackPosition">The fallback position.</param>
        public Vector3 GetBallStartPoint(Vector3 fallbackPosition)
        {
            Vector3 position = fallbackPosition;
            float   height   = -10000f;

            foreach (Transform child in ObjectContainer.transform)
            {
                ARObject arobject = child.gameObject.GetComponent <ARObject>();
                if (arobject != null && arobject.SnapObject != null)
                {
                    if (arobject.SnapObject.position.y > height)
                    {
                        position = arobject.SnapObject.position;
                        height   = arobject.SnapObject.position.y;
                    }
                }
            }

            return(position);
        }
Esempio n. 9
0
        /// <summary>
        /// Ons touch down.
        /// </summary>
        /// <param name="index">The index.</param>
        /// <param name="touchData">The touch data.</param>
        private void OnTouchDown(int index, TouchManager.TouchElement touchData)
        {
            int touchCount = TouchManager.Instance.TouchsActive;

            ARObject hitObject = null;
            if (TranslationType == TranslationMode.Grab)
                hitObject = SelectionManager.Instance.GetObjectHit();
            else
                hitObject = selectedObject;

            if (touchCount == 1)
            {
                if (hitObject != null)
                {
                    isRotating = false;
                    isMoving = true;
                    isScaling = false;

                    if (RotationType == RotationMode.OneFinger)
                        isRotating = true;
                }
                else
                    isMoving = false;
            }
            else if (touchCount == 2)
            {
                isRotating = false;
                isMoving = false;
                isScaling = true;

                if (RotationType == RotationMode.TwoFingers || RotationType == RotationMode.Angle)
                    isRotating = true;
            }

            if (isRotating)
                SetInitialRotation();

            if (isScaling)
                SetInitialScale();
        }
Esempio n. 10
0
        /// <summary>
        /// Awakes this instance.
        /// </summary>
        private void Awake()
        {
            // Get required components
            cachedArObjectComponent = GetComponent <ARObject>();

            // Get the main camera
            mainCamera = Camera.main;

            // Setup labels
            SetupLabels();

            // Create lines
            CreateLineMaterial();
            CreateLineRenderers();

            // Manual update
            UpdateLabelsPosition();
            UpdateWiresPosition();

            // Register events callbacks
            RegisterCallbacks();
        }