Example #1
0
    public void DoSetup()
    {
        //this.transform.position = Vector3.zero;
        if (this.gameObject.GetComponent <BoxCollider2D>() == null && this.gameObject.GetComponent <CircleCollider2D>() == null)
        {
            this.gameObject.AddComponent <CircleCollider2D>();
            this.gameObject.GetComponent <CircleCollider2D>().radius    = 75;
            this.gameObject.GetComponent <CircleCollider2D>().isTrigger = true;
            Debug.Log("Already has collider");
        }
        //get player and main camera
        mainCamera = GameObject.Find("CM_Main").GetComponent <Cinemachine.CinemachineVirtualCamera>();
        player     = GameObject.Find("Player").GetComponent <PlayerInput.TurntableController>();

        GameObject VCam = Instantiate <GameObject>(Resources.Load <GameObject>("Prefabs/Cameras/CM_Puzzle"));

        VCam.name             = "CM_" + this.name;
        VCam.transform.parent = GameObject.Find("Camera Rig").transform;
        setPieceCamera        = VCam.GetComponent <Cinemachine.CinemachineVirtualCamera>();
        setPieceCamera.GetCinemachineComponent <Cinemachine.CinemachineTransposer>().m_FollowOffset = new Vector3(0, 0, -200);
        setPieceCamera.AddCinemachineComponent <Cinemachine.CinemachineBasicMultiChannelPerlin>();
        setPieceCamera.GetCinemachineComponent <Cinemachine.CinemachineBasicMultiChannelPerlin>().m_AmplitudeGain = 0.2f;
        setPieceCamera.GetCinemachineComponent <Cinemachine.CinemachineBasicMultiChannelPerlin>().m_FrequencyGain = 0.2f;

        #if UNITY_EDITOR
        setPieceCamera.GetCinemachineComponent <Cinemachine.CinemachineBasicMultiChannelPerlin>().m_NoiseProfile =
            AssetDatabase.LoadAssetAtPath <Cinemachine.NoiseSettings>("Packages/com.Unity.Cinemachine/Presets/Noise/Handheld_tele_mild.asset");
        #endif

        foreach (Transform child in transform)
        {
            if (child.gameObject.name == "Center")
            {
                centerExists = true;
            }
        }
        if (centerExists == false)
        {
            center                    = new GameObject();
            center.name               = "Center";
            center.transform.parent   = this.transform;
            center.transform.position = Vector3.zero;
            setPieceCamera.Follow     = center.transform;
            setPieceCamera.LookAt     = center.transform;
        }
    }
Example #2
0
        private int LocateExistingRigs(string[] rigNames, bool forceOrbital)
        {
            this.mOrbitals = new CinemachineOrbitalTransposer[rigNames.Length];
            this.m_Rigs    = new CinemachineVirtualCamera[rigNames.Length];
            int num = 0;

            foreach (object obj in base.transform)
            {
                Transform transform = (Transform)obj;
                CinemachineVirtualCamera component = transform.GetComponent <CinemachineVirtualCamera>();
                if (component != null)
                {
                    GameObject gameObject = transform.gameObject;
                    for (int i = 0; i < rigNames.Length; i++)
                    {
                        if (this.mOrbitals[i] == null && gameObject.name == rigNames[i])
                        {
                            this.mOrbitals[i] = component.GetCinemachineComponent <CinemachineOrbitalTransposer>();
                            if (this.mOrbitals[i] == null && forceOrbital)
                            {
                                this.mOrbitals[i] = component.AddCinemachineComponent <CinemachineOrbitalTransposer>();
                            }
                            if (this.mOrbitals[i] != null)
                            {
                                this.mOrbitals[i].m_HeadingIsSlave = true;
                                if (i == 0)
                                {
                                    this.mOrbitals[i].HeadingUpdater = ((CinemachineOrbitalTransposer orbital, float deltaTime, Vector3 up) => orbital.UpdateHeading(deltaTime, up, ref this.m_XAxis));
                                }
                                this.m_Rigs[i] = component;
                                num++;
                            }
                        }
                    }
                }
            }
            return(num);
        }
Example #3
0
        private void CreateRigs(CinemachineVirtualCamera[] copyFrom)
        {
            // Invalidate the cache
            m_Rigs     = null;
            mOribitals = null;

            string[] rigNames            = RigNames;
            float[]  softCenterDefaultsV = new float[] { 0.5f, 0.55f, 0.6f };
            for (int i = 0; i < rigNames.Length; ++i)
            {
                CinemachineVirtualCamera src = null;
                if (copyFrom != null && copyFrom.Length > i)
                {
                    src = copyFrom[i];
                }

                CinemachineVirtualCamera rig = null;
                if (CreateRigOverride != null)
                {
                    rig = CreateRigOverride(this, rigNames[i], src);
                }
                else
                {
                    // If there is an existing rig with this name, delete it
                    List <Transform> list = new List <Transform>();
                    foreach (Transform child in transform)
                    {
                        if (child.GetComponent <CinemachineVirtualCamera>() != null &&
                            child.gameObject.name == rigNames[i])
                        {
                            list.Add(child);
                        }
                    }
                    foreach (Transform child in list)
                    {
                        DestroyImmediate(child.gameObject);
                    }

                    // Create a new rig with default components
                    GameObject go = new GameObject(rigNames[i]);
                    go.transform.parent = transform;
                    rig = go.AddComponent <CinemachineVirtualCamera>();
                    if (src != null)
                    {
                        ReflectionHelpers.CopyFields(src, rig);
                    }
                    else
                    {
                        go = rig.GetComponentOwner().gameObject;
                        go.AddComponent <CinemachineOrbitalTransposer>();
                        go.AddComponent <CinemachineComposer>();
                    }
                }

                // Set up the defaults
                rig.InvalidateComponentPipeline();
                CinemachineOrbitalTransposer orbital = rig.GetCinemachineComponent <CinemachineOrbitalTransposer>();
                if (orbital == null)
                {
                    orbital = rig.AddCinemachineComponent <CinemachineOrbitalTransposer>(); // should not happen
                }
                if (src == null)
                {
                    // Only set defaults if not copying
                    orbital.m_Radius       = DefaultRadius[i];
                    orbital.m_HeightOffset = DefaultHeight[i];
                    CinemachineComposer composer = rig.GetCinemachineComponent <CinemachineComposer>();
                    if (composer != null)
                    {
                        composer.m_HorizontalDamping = composer.m_VerticalDamping = 0;
                        composer.m_ScreenX           = 0.5f;
                        composer.m_ScreenY           = softCenterDefaultsV[i];
                        composer.m_DeadZoneWidth     = composer.m_DeadZoneHeight = 0;
                        composer.m_SoftZoneWidth     = composer.m_SoftZoneHeight = 0.8f;
                        composer.m_BiasX             = composer.m_BiasY = 0;
                    }
                }
            }
        }
        private int LocateExistingRigs(string[] rigNames, bool forceOrbital)
        {
            mOrbitals = new CinemachineOrbitalTransposer[rigNames.Length];
            m_Rigs    = new CinemachineVirtualCamera[rigNames.Length];
            int rigsFound = 0;

            foreach (Transform child in transform)
            {
                CinemachineVirtualCamera vcam = child.GetComponent <CinemachineVirtualCamera>();
                if (vcam != null)
                {
                    GameObject go = child.gameObject;
                    for (int i = 0; i < rigNames.Length; ++i)
                    {
                        if (mOrbitals[i] == null && go.name == rigNames[i])
                        {
                            // Must have an orbital transposer or it's no good
                            mOrbitals[i] = vcam.GetCinemachineComponent <CinemachineOrbitalTransposer>();
                            if (mOrbitals[i] == null && forceOrbital)
                            {
                                mOrbitals[i] = vcam.AddCinemachineComponent <CinemachineOrbitalTransposer>();
                            }
                            if (mOrbitals[i] != null)
                            {
                                mOrbitals[i].m_HeadingIsSlave = true;
                                if (i == 1)
                                {
                                    mOrbitals[i].HeadingUpdater
                                        = (CinemachineOrbitalTransposer orbital, float deltaTime, Vector3 up)
                                          => { return(orbital.UpdateHeading(deltaTime, up, ref m_XAxis)); }
                                }
                                ;
                                m_Rigs[i] = vcam;
                                m_Rigs[i].m_StandbyUpdate = m_StandbyUpdate;
                                ++rigsFound;
                            }
                        }
                    }
                }
            }
            return(rigsFound);
        }

        void PushSettingsToRigs()
        {
            UpdateRigCache();
            for (int i = 0; i < m_Rigs.Length; ++i)
            {
                if (m_Rigs[i] == null)
                {
                    continue;
                }

                if (m_CommonLens)
                {
                    m_Rigs[i].m_Lens = m_Lens;
                }

                // If we just deserialized from a legacy version,
                // pull the orbits and targets from the rigs
                if (mUseLegacyRigDefinitions)
                {
                    mUseLegacyRigDefinitions = false;
                    m_Orbits[i].m_Height     = mOrbitals[i].m_FollowOffset.y;
                    m_Orbits[i].m_Radius     = -mOrbitals[i].m_FollowOffset.z;
                    if (m_Rigs[i].Follow != null)
                    {
                        Follow = m_Rigs[i].Follow;
                    }
                }
                m_Rigs[i].Follow          = null;
                m_Rigs[i].m_StandbyUpdate = m_StandbyUpdate;
                if (!PreviousStateIsValid)
                {
                    m_Rigs[i].PreviousStateIsValid = false;
                    m_Rigs[i].transform.position   = transform.position;
                    m_Rigs[i].transform.rotation   = transform.rotation;
                }
                // Hide the rigs from prying eyes
                if (CinemachineCore.sShowHiddenObjects)
                {
                    m_Rigs[i].gameObject.hideFlags
                        &= ~(HideFlags.HideInHierarchy | HideFlags.HideInInspector);
                }
                else
                {
                    m_Rigs[i].gameObject.hideFlags
                        |= (HideFlags.HideInHierarchy | HideFlags.HideInInspector);
                }

                mOrbitals[i].m_FollowOffset = GetLocalPositionForCameraFromInput(GetYAxisValue());
                mOrbitals[i].m_BindingMode  = m_BindingMode;
                mOrbitals[i].m_Heading      = m_Heading;
                mOrbitals[i].m_XAxis        = m_XAxis;
                mOrbitals[i].m_RecenterToTargetHeading.m_enabled         = (i == 1) ? m_RecenterToTargetHeading.m_enabled : false;
                mOrbitals[i].m_RecenterToTargetHeading.m_WaitTime        = m_RecenterToTargetHeading.m_WaitTime;
                mOrbitals[i].m_RecenterToTargetHeading.m_RecenteringTime = m_RecenterToTargetHeading.m_RecenteringTime;

                // Hack to get SimpleFollow with heterogeneous dampings to work
                if (m_BindingMode == CinemachineTransposer.BindingMode.SimpleFollowWithWorldUp)
                {
                    m_Rigs[i].SetStateRawPosition(State.RawPosition);
                }
            }
        }