Ejemplo n.º 1
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");
 }
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;
    }
Ejemplo n.º 3
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.º 4
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;
    }
    //=========== 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();
            }
        }
    }