コード例 #1
0
    private void populateNavVirtual(DiscourseClip clip)
    {
        // Make a copy of virtual camera and set aim and follow target

        string name     = clip.Name;
        float  start    = clip.start + 0.06f;
        float  duration = clip.duration - 0.06f;
        float  fov      = clip.fov;

        float fab_start = clip.fabulaStart;

        GameObject starting_loc = GameObject.Find(clip.startingPos_string);
        float      start_offset = clip.start_dist_offset;
        GameObject ending_loc   = GameObject.Find(clip.endingPos_string);
        float      end_offset   = clip.end_dist_offset;

        GameObject virtualCamOriginal = GameObject.Find(clip.virtualCamName);
        GameObject virtualCam         = Instantiate(virtualCamOriginal);
        CinemachineVirtualCamera cva  = virtualCam.GetComponent <CinemachineVirtualCamera>();

        if (clip.aimTarget != null)
        {
            agent = GameObject.Find(clip.aimTarget);

            cva.m_LookAt           = agent.transform;
            cva.m_Lens.FieldOfView = clip.fov;
        }

        bool has_fab_switch = false;

        if (clip.fabulaStart >= 0f)
        {
            has_fab_switch = true;
            GameObject ttravel = Instantiate(Resources.Load("time_travel", typeof(GameObject))) as GameObject;
            ttravel.transform.parent = virtualCam.transform;
            ttravel.GetComponent <timeStorage>().fab_time = clip.fabulaStart;
            TimelineClip tc = ctrack.CreateDefaultClip();
            tc.start       = clip.start;
            tc.duration    = clip.duration;
            tc.displayName = "Time Travel";
            var time_travel_clip = tc.asset as ControlPlayableAsset;
            AnimateBind(time_travel_clip, ttravel);
        }

        film_track_clip = ftrack.CreateDefaultClip();
        if (has_fab_switch)
        {
            start    = clip.start + (float)0.06;
            duration = clip.duration;
        }
        film_track_clip.start       = start;
        film_track_clip.duration    = duration;
        film_track_clip.displayName = clip.Name;

        // specialize and bind
        var cinemachineShot = film_track_clip.asset as CinemachineShot;

        CamBind(cinemachineShot, cva);
    }
コード例 #2
0
    private void addTimeTravel(DiscourseClip clip)
    {
        time_track_clip             = ptrack.CreateClip <setFloatClip>();
        time_track_clip.start       = clip.start;
        time_track_clip.duration    = clip.duration;
        time_track_clip.displayName = clip.Name;
        var timeControl = time_track_clip.asset as setFloatClip;

        TimeBind(timeControl, agent, clip.fabulaStart);
    }
コード例 #3
0
    private void populateCtrlObject(DiscourseClip clip)
    {
        agent = GameObject.Find(clip.TimeLineObject);

        control_track_clip             = ctrack.CreateDefaultClip();
        control_track_clip.start       = clip.start;
        control_track_clip.duration    = clip.duration;
        control_track_clip.displayName = clip.Name;
        var controlAnim = control_track_clip.asset as ControlPlayableAsset;

        AnimateBind(controlAnim, agent);
    }
コード例 #4
0
    private void populateCamObject(DiscourseClip clip)
    {
        agent   = GameObject.Find(clip.TimeLineObject);
        new_cam = agent.GetComponent <CinemachineVirtualCamera>();

        film_track_clip             = ftrack.CreateDefaultClip();
        film_track_clip.start       = clip.start;
        film_track_clip.duration    = clip.duration;
        film_track_clip.displayName = clip.Name;
        var cinemachineShot = film_track_clip.asset as CinemachineShot;

        CamBind(cinemachineShot, new_cam);
    }
コード例 #5
0
    // Update is called once per frame (DEPRECIATED)
    private void populateCustom(DiscourseClip clip)
    {
        // find aim target and follow Target
        agent  = GameObject.Find(clip.aimTarget);
        anchor = GameObject.Find(clip.followTarget);
        if (anchor == null)
        {
            // This "anchor" hosts the actual anchor
            anchor      = new GameObject();
            anchor.name = clip.Name;
            GameObject VC_Host = GameObject.Find("VirtualCams");
            anchor.transform.position = new Vector3(0f, 0f, 0f);
            anchor.transform.parent   = VC_Host.transform;
            //anchor = GameObject.Find(clip.followTarget);

            //anchor = agent;
        }

        // create position of target
        GameObject target_go = new GameObject();

        target_go.name = "target_" + clip.Name;
        target_go.transform.position = agent.transform.position + new Vector3(0f, HEIGHT, 0f);
        target_go.transform.parent   = agent.transform;

        Vector3 goal_direction = degToVector3(clip.targetOrientation + agent.transform.eulerAngles.y);

        goal_direction = goal_direction.normalized * clip.targetDistance;

        // create position of camera
        GameObject go = new GameObject();

        go.name = clip.Name;
        go.transform.position = agent.transform.position + goal_direction + new Vector3(0f, HEIGHT, 0f);
        go.transform.parent   = anchor.transform;


        // create vcam
        CinemachineVirtualCamera cva = go.AddComponent <CinemachineVirtualCamera>();

        cva.m_LookAt           = target_go.transform;
        cva.m_Follow           = go.transform;
        cva.m_Lens.FieldOfView = clip.fov;


        bool has_fab_switch = false;

        if (clip.fabulaStart >= 0f)
        {
            has_fab_switch = true;
            //Instantiate(Resources.Load("enemy", typeof(GameObject))) as GameObject;
            GameObject ttravel = Instantiate(Resources.Load("time_travel", typeof(GameObject))) as GameObject;
            ttravel.transform.parent = go.transform;
            ttravel.GetComponent <timeStorage>().fab_time = clip.fabulaStart;


            TimelineClip tc = ctrack.CreateDefaultClip();
            tc.start       = clip.start;
            tc.duration    = clip.duration;
            tc.displayName = "Time Travel";
            var time_travel_clip = tc.asset as ControlPlayableAsset;

            AnimateBind(time_travel_clip, ttravel);

            //time_track_clip = ptrack.CreateClip<setFloatClip>();
            //time_track_clip.start = clip.start;
            //time_track_clip.duration = clip.duration;
            //time_track_clip.displayName = "Time Travel";
            //time_track_clip.displayName = clip.Name;
            //var timeControl = time_track_clip.asset as setFloatClip;

            //TimeBind(timeControl, ttravel, clip.fabulaStart);


            //ttravel

            ////gopd.
            ////gopd.playableAsset =
            ////TimelineAsset ta = Instantiate(Resources.Load("time_TravelTimeline", typeof(Playable))) as TimelineAsset;
            //TimelineAsset ta = (TimelineAsset)ScriptableObject.CreateInstance("TimelineAsset");
            //ActivationTrack atrack = ta.CreateTrack<ActivationTrack>(null, "local_active_track");
            //TimelineClip tc = atrack.CreateDefaultClip();
            //tc.start = 0f;
            //tc.duration = clip.duration;

            //GameObject son = ttravel.GetComponent<timeStorage>().setFabObj;
            ////tc.asset = son;
            //tc.underlyingAsset = son;
            //var activation_clip = tc.asset as ActivationTrack;
            ////activation_clip.postPlaybackState = ActivationTrack.PostPlaybackState.Inactive;

            ////activation_clip.parent = son;
            //ttravel.transform.parent = go.transform;
        }

        // default clip attributes
        film_track_clip = ftrack.CreateDefaultClip();
        float start    = clip.start;
        float duration = clip.duration;

        if (has_fab_switch)
        {
            //start = clip.start + (float)0.16;
            //duration = clip.duration - (float)0.16;
            start    = clip.start + (float)0.06;
            duration = clip.duration;
        }
        else
        {
        }
        film_track_clip.start       = start;
        film_track_clip.duration    = duration;
        film_track_clip.displayName = clip.Name;


        // specialize and bind
        var cinemachineShot = film_track_clip.asset as CinemachineShot;

        CamBind(cinemachineShot, cva);
    }
コード例 #6
0
    private void populateNavCam(DiscourseClip clip)
    {
        string name     = clip.Name;
        float  start    = clip.start + 0.06f;
        float  duration = clip.duration - 0.06f;
        float  fov      = clip.fov;

        float fab_start = clip.fabulaStart;

        GameObject starting_loc = GameObject.Find(clip.startingPos_string);
        float      start_offset = clip.start_dist_offset;
        GameObject ending_loc   = GameObject.Find(clip.endingPos_string);
        float      end_offset   = clip.end_dist_offset;

        float orient = clip.targetOrientation;

        agent = GameObject.Find(clip.aimTarget);


        // create position of target
        GameObject target_go = new GameObject();

        target_go.name = "target_" + clip.Name;
        target_go.transform.position = agent.transform.position + new Vector3(0f, HEIGHT, 0f);
        target_go.transform.parent   = agent.transform;

        Vector3 dest_minus_start        = (ending_loc.transform.position - starting_loc.transform.position).normalized;
        Vector3 agent_starting_position = starting_loc.transform.position + dest_minus_start * start_offset;
        Vector3 agent_middle_position   = agent_starting_position + dest_minus_start * (end_offset / 2);

        GameObject go = new GameObject();

        go.name = clip.Name;
        float orientation = Mathf.Atan2(dest_minus_start.x, -dest_minus_start.z) * Mathf.Rad2Deg - 90f;

        Vector3 goal_direction = degToVector3(orient + orientation);

        //Debug.Log(orient + orientation);

        go.transform.position = agent_middle_position + (goal_direction * clip.targetDistance) + new Vector3(0f, HEIGHT, 0f);
        go.transform.rotation.SetLookRotation(agent_starting_position);

        CinemachineVirtualCamera cva = go.AddComponent <CinemachineVirtualCamera>();
        CinemachineComposer      cc  = cva.AddCinemachineComponent <CinemachineComposer>();

        cc.m_DeadZoneWidth     = 0.5f;
        cc.m_SoftZoneWidth     = 0.8f;
        cva.m_Lens.FieldOfView = clip.fov;
        cva.m_LookAt           = target_go.transform;


        CinemachineBasicMultiChannelPerlin cbmcp = cva.AddCinemachineComponent <CinemachineBasicMultiChannelPerlin>();

        cbmcp.m_NoiseProfile  = Instantiate(Resources.Load("Handheld_tele_mild", typeof(NoiseSettings))) as NoiseSettings;
        cbmcp.m_AmplitudeGain = 0.5f;
        cbmcp.m_FrequencyGain = 1f;

        if (clip.followTarget != null)
        {
            nav_track_clip          = ntrack.CreateClip <LerpMoveObjectAsset>();
            nav_track_clip.start    = clip.start + 0.16f;
            nav_track_clip.duration = clip.duration - 0.16f;
            LerpMoveObjectAsset lerp_clip          = nav_track_clip.asset as LerpMoveObjectAsset;
            GameObject          camera_destination = new GameObject();
            camera_destination.name = "camera lerp destination";
            Vector3 end_camera = ending_loc.transform.position + (goal_direction * clip.targetDistance) + new Vector3(0f, HEIGHT, 0f);
            camera_destination.transform.position = end_camera;
            GameObject camera_origin = new GameObject();
            camera_origin.name = "camera lerp origin";
            camera_origin.transform.position = go.transform.position;
            TransformBind(lerp_clip, go, camera_origin.transform, camera_destination.transform);
        }


        bool has_fab_switch = false;

        if (clip.fabulaStart >= 0f)
        {
            has_fab_switch = true;
            GameObject ttravel = Instantiate(Resources.Load("time_travel", typeof(GameObject))) as GameObject;
            ttravel.transform.parent = go.transform;
            ttravel.GetComponent <timeStorage>().fab_time = clip.fabulaStart;
            TimelineClip tc = ctrack.CreateDefaultClip();
            tc.start       = clip.start;
            tc.duration    = clip.duration;
            tc.displayName = "Time Travel";
            var time_travel_clip = tc.asset as ControlPlayableAsset;
            AnimateBind(time_travel_clip, ttravel);
        }

        // default clip attributes
        film_track_clip = ftrack.CreateDefaultClip();
        if (has_fab_switch)
        {
            start    = clip.start + (float)0.06;
            duration = clip.duration;
        }
        film_track_clip.start       = start;
        film_track_clip.duration    = duration;
        film_track_clip.displayName = clip.Name;

        // specialize and bind
        var cinemachineShot = film_track_clip.asset as CinemachineShot;

        CamBind(cinemachineShot, cva);
    }