void Start()
    {
        //----------- Retrieving selected cabinet type to pass along with object selected event ----------
        selectedObjectType = GetComponent <CabinetScript>()._typeOfCabinet;

        //---------- Retrieving child colliders of internals -------------
        if (!internals)
        {
            childColliders = GetComponentsInChildren <Collider>();
            selfCollider   = gameObject.GetComponent <BoxCollider>();
        }
    }
Ejemplo n.º 2
0
    //=========== Function to calculate camera rotation on selecting different cabinet types ===============
    Vector3 RotateCamera(GameObject selectedObject, CabinetScript.TypeOfCabinet objectType)
    {
        Vector3 rotation = new Vector3();

        //----- Switch will help choose which values to use for camera rotation when an object is selected ------
        switch (objectType)
        {
        //------------------- BASE CABINETS---------------
        case CabinetScript.TypeOfCabinet.BaseCabinet: {
            rotation = new Vector3(selectedObject.transform.rotation.eulerAngles.x + baseCabinet.verticalViewAngleOnObjectSelection,
                                   selectedObject.transform.rotation.eulerAngles.y + baseCabinet.horizontalViewAngleOnObjectSelection, selectedObject.transform.rotation.eulerAngles.z);
            break;
        }

        //------------------- WALL CABINETS ---------------
        case CabinetScript.TypeOfCabinet.WallCabinets: {
            rotation = new Vector3(selectedObject.transform.rotation.eulerAngles.x + wallCabinet.verticalViewAngleOnObjectSelection,
                                   selectedObject.transform.rotation.eulerAngles.y + wallCabinet.horizontalViewAngleOnObjectSelection, selectedObject.transform.rotation.eulerAngles.z);
            break;
        }

        //------------------- CORNER CABINETS ------------
        case CabinetScript.TypeOfCabinet.CornerCabinet: {
            rotation = new Vector3(selectedObject.transform.rotation.eulerAngles.x + cornerCabinet.verticalViewAngleOnObjectSelection,
                                   selectedObject.transform.rotation.eulerAngles.y + cornerCabinet.horizontalViewAngleOnObjectSelection, selectedObject.transform.rotation.eulerAngles.z);
            break;
        }

        //------------------- TALL CABINETS ---------------
        case CabinetScript.TypeOfCabinet.TallCabinet: {
            rotation = new Vector3(selectedObject.transform.rotation.eulerAngles.x + oilPullout.verticalViewAngleOnObjectSelection,
                                   selectedObject.transform.rotation.eulerAngles.y + oilPullout.horizontalViewAngleOnObjectSelection, selectedObject.transform.rotation.eulerAngles.z);
            break;
        }

        //-------------------- HOB -----------------------
        case CabinetScript.TypeOfCabinet.Hob: {
            rotation = new Vector3(selectedObject.transform.rotation.eulerAngles.x + hob.verticalViewAngleOnObjectSelection,
                                   selectedObject.transform.rotation.eulerAngles.y + hob.horizontalViewAngleOnObjectSelection, selectedObject.transform.rotation.eulerAngles.z);
            break;
        }

        //-------------------- INTERNALS ------------------------

        //-------------------- HOB -----------------------
        case CabinetScript.TypeOfCabinet.MidSizeCabinet: {
            rotation = new Vector3(selectedObject.transform.rotation.eulerAngles.x + drawers.verticalViewAngleOnObjectSelection,
                                   selectedObject.transform.rotation.eulerAngles.y + drawers.horizontalViewAngleOnObjectSelection, selectedObject.transform.rotation.eulerAngles.z);
            break;
        }
        }
        return(rotation);
    }
    //=========== Called when any object in the scene is selected --- All objects will call this function when any kind of selection event occus. ============
    public void UnSelected(GameObject selectedObject, CabinetScript.TypeOfCabinet objectType)
    {
        //---------- Set this object to unselected only if this is not the selected object and it was selected before -------
        if (gameObject != selectedObject && objectSelectionStatus.interaction == Interactions.interactionTypes.Selected)
        {
            objectSelectionStatus.SetUnSelected();

            //------ To be executed only for non internals -------- Internals colliders are controlled by parent cabinet --------
            if (!internals)
            {
                SwitchOnSelfColliders();

                DeactivateCollidersInChildren();
            }
        }
    }
Ejemplo n.º 4
0
    //===== Used for direct call or focusing the camera on objects =====
    public void FocusCameraOnObject(GameObject selectedObject, CabinetScript.TypeOfCabinet objectType)
    {
        //-------------- Saving camera position ---------------
        //StoreOriginalPosition(animationCamera.transform.position);

        //-------------- Saving camera rotation ---------------
        //StoreOriginalRotation();


        //---------- Calculate new camera position ----------
        Vector3 position = PositionCamera(selectedObject, objectType);

        //----------- Tween to new position -----------
        iTween.MoveTo(animationCamera, position, cameraFocusOnObjectSpeed);

        //----------- Calculate new camera rotation -------------------
        Vector3 rotation = RotateCamera(selectedObject, objectType);

        //------------- Tween new rotation ------------
        iTween.RotateTo(animationCamera, rotation, cameraFocusOnObjectSpeed);

        //----Change Camera status to Edit Mode----It is used as check before re-enabling tb orbit script----
        camStatus = cameraStatus.EditMode;
    }
Ejemplo n.º 5
0
    //=========== Function to calculate camera position on selecting different cabinet types ===============
    Vector3 PositionCamera(GameObject selectedObject, CabinetScript.TypeOfCabinet type)
    {
        Vector3 position = new Vector3();

        //-------------- Switch will help choose what position values should be used when object is selected ----------
        switch (type)
        {
        //-------------- BASE CABINET -----------------
        case CabinetScript.TypeOfCabinet.BaseCabinet: {
            if (baseCabinet.autoFitCameraToBaseCabinetSize)
            {
                //----------- Set distance from the fron of the cabinet -----
                float sizeOfObject = Mathf.Max(selectedObject.GetComponent <Collider>().bounds.extents.x, selectedObject.GetComponent <Collider>().bounds.extents.y *baseCabinet.maxZoomLimitOnObject);
                float distance     = sizeOfObject / cameraFOVBasedValue;
                Debug.Log("Distance Z:" + distance);
                Debug.Log("Object Z:" + selectedObject.transform.position.z);
                position = selectedObject.transform.position + selectedObject.transform.forward * distance * 1.8f;

                //-------- Set the height of the camera ------
                position = position + new Vector3(0f, baseCabinet.cameraHeightWithObjectOnZoom, 0f);
                Debug.Log("Position Z:" + position.z);
            }
            //--------- Else use manual fit -----------
            else
            {
                position = selectedObject.transform.position + selectedObject.transform.forward * baseCabinet.distanceFromObjectOnZoom;
                position = position + new Vector3(0f, baseCabinet.cameraHeightWithObjectOnZoom, 0f);
            }
            break;
        }

        //-------------- WALL CABINET -----------------
        case CabinetScript.TypeOfCabinet.WallCabinets: {
            //---- IF Auto Fit -----------------
            if (wallCabinet.autoFitCameraToBaseCabinetSize)
            {
                //----------- Set distance from the fron of the object -------
                float sizeOfObject = Mathf.Max(selectedObject.GetComponent <Collider>().bounds.extents.x, selectedObject.GetComponent <Collider>().bounds.extents.y *wallCabinet.maxZoomLimitOnObject);
                float distance     = sizeOfObject / cameraFOVBasedValue;
                Debug.Log("Distance Z:" + distance);
                Debug.Log("Object Z:" + selectedObject.transform.position.z);
                position = selectedObject.transform.position + selectedObject.transform.forward * distance * 1.8f;

                //-------- Set the height of the camera ------
                position = position + new Vector3(0f, wallCabinet.cameraHeightWithObjectOnZoom, 0f);
                Debug.Log("Position Z:" + position.z);
            }
            //--------- Else use manual fit -----------
            else
            {
                position = selectedObject.transform.position + selectedObject.transform.forward * wallCabinet.distanceFromObjectOnZoom;
                position = position + new Vector3(0f, wallCabinet.cameraHeightWithObjectOnZoom, 0f);
            }
            break;
        }

        //-------------- CORNER CABINET -----------------
        case CabinetScript.TypeOfCabinet.CornerCabinet: {
            //---- IF Auto Fit -----------------
            if (cornerCabinet.autoFitCameraToBaseCabinetSize)
            {
                //----------- Set distance from the front of the object -------
                float sizeOfObject = Mathf.Max(selectedObject.GetComponent <Collider>().bounds.extents.x, selectedObject.GetComponent <Collider>().bounds.extents.y *cornerCabinet.maxZoomLimitOnObject);
                float distance     = sizeOfObject / cameraFOVBasedValue;
                Debug.Log("Distance Z:" + distance);
                Debug.Log("Object Z:" + selectedObject.transform.position.z);
                position = selectedObject.transform.position + selectedObject.transform.forward * distance * 1.8f - selectedObject.transform.right * distance * 1.8f;

                //-------- Set the height of the camera --------
                position = position + new Vector3(0f, cornerCabinet.cameraHeightWithObjectOnZoom, 0f);
                Debug.Log("Position Z:" + position.z);
            }
            //--------- Else use manual fit -----------
            else
            {
                position = selectedObject.transform.position + selectedObject.transform.forward * cornerCabinet.distanceFromObjectOnZoom - selectedObject.transform.right * cornerCabinet.distanceFromObjectOnZoom;
                position = position + new Vector3(0f, cornerCabinet.cameraHeightWithObjectOnZoom, 0f);
            }
            break;
        }

        //-------------- TALL CABINET -----------------
        case CabinetScript.TypeOfCabinet.TallCabinet: {
            //---- IF Auto Fit -----------------
            if (oilPullout.autoFitCameraToBaseCabinetSize)
            {
                //----------- Set distance from the front of the cabinet -----
                float sizeOfObject = Mathf.Max(selectedObject.GetComponent <Collider>().bounds.extents.x, selectedObject.GetComponent <Collider>().bounds.extents.y *oilPullout.maxZoomLimitOnObject);
                float distance     = sizeOfObject / cameraFOVBasedValue;
                Debug.Log("Distance Z:" + distance);
                Debug.Log("Object Z:" + selectedObject.transform.position.z);
                position = selectedObject.transform.position + selectedObject.transform.forward * distance * 1.8f;

                //-------- Set the height of the camera ------
                position = position + new Vector3(0f, oilPullout.cameraHeightWithObjectOnZoom, 0f);
                Debug.Log("Position Z:" + position.z);
            }
            //--------- Else use manual fit -----------
            else
            {
                position = selectedObject.transform.position + selectedObject.transform.forward * oilPullout.distanceFromObjectOnZoom + selectedObject.transform.right * oilPullout.distanceFromObjectOnZoom;
                position = position + new Vector3(0f, oilPullout.cameraHeightWithObjectOnZoom, 0f);
            }
            break;
        }

        //-------------- HOB -----------------
        case CabinetScript.TypeOfCabinet.Hob: {
            //---- IF Auto Fit -----------------
            if (hob.autoFitCameraToBaseCabinetSize)
            {
                //----------- Set distance from the fron of the cabinet -----
                float sizeOfObject = Mathf.Max(selectedObject.GetComponent <Collider>().bounds.extents.x, selectedObject.GetComponent <Collider>().bounds.extents.y *hob.maxZoomLimitOnObject);
                float distance     = sizeOfObject / cameraFOVBasedValue;
                Debug.Log("Distance Z:" + distance);
                Debug.Log("Object Z:" + selectedObject.transform.position.z);
                position = selectedObject.transform.position + selectedObject.transform.forward * distance * 1.8f;

                //-------- Set the height of the camera ------
                position = position + new Vector3(0f, hob.cameraHeightWithObjectOnZoom, 0f);
                Debug.Log("Position Z:" + position.z);
            }
            //--------- Else use manual fit -----------
            else
            {
                position = selectedObject.transform.position + selectedObject.transform.forward * hob.distanceFromObjectOnZoom;
                position = position + new Vector3(0f, hob.cameraHeightWithObjectOnZoom, 0f);
            }
            break;
        }

        //---------------------------------------------------------- INTERNALS -------------------------------------------------------

        //-------------- DRAWS -----------------
        case CabinetScript.TypeOfCabinet.MidSizeCabinet: {
            //---- IF Auto Fit -----------------
            if (drawers.autoFitCameraToBaseCabinetSize)
            {
                //----------- Set distance from the fron of the cabinet -----
                float sizeOfObject = Mathf.Max(selectedObject.GetComponent <Collider>().bounds.extents.x, selectedObject.GetComponent <Collider>().bounds.extents.y *drawers.maxZoomLimitOnObject);
                float distance     = sizeOfObject / cameraFOVBasedValue;
                Debug.Log("Distance Z:" + distance);
                Debug.Log("Object Z:" + selectedObject.transform.position.z);
                position = selectedObject.transform.position + selectedObject.transform.forward * distance * 1.8f;

                //-------- Set the height of the camera ------
                position = position + new Vector3(0f, drawers.cameraHeightWithObjectOnZoom, 0f);
                Debug.Log("Position Z:" + position.z);
            }
            //--------- Else use manual fit -----------
            else
            {
                position = selectedObject.transform.position + selectedObject.transform.forward * drawers.distanceFromObjectOnZoom;
                position = position + new Vector3(0f, drawers.cameraHeightWithObjectOnZoom, 0f);
            }
            break;
        }
        }
        return(position);
    }
    void Start()
    {
        //----------- Retrieving selected cabinet type to pass along with object selected event ----------
        selectedObjectType = GetComponent<CabinetScript>()._typeOfCabinet;

        //---------- Retrieving child colliders of internals -------------
        if(!internals){
            childColliders = GetComponentsInChildren<Collider>();
            selfCollider = gameObject.GetComponent<BoxCollider>();
        }
    }
Ejemplo n.º 7
0
 //------------- This function will disable the Orbit function used for the rotate feature of the camera when object is selected ---------
 public void DisableTBOrbit(GameObject selectedObject, CabinetScript.TypeOfCabinet objectType)
 {
     script.enabled = false;
     CancelInvoke("EnableTBOrbitScript");
 }