/// <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; }
/// <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); } } }
/// <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; }
/// <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); } }
/// <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(); }
/// <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(); }
/// <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; } } }
/// <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); }
/// <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(); }
/// <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(); }