Example #1
0
    // Start is called before the first frame update
    void Start()
    {
        _poseUpdater           = new PoseUpdater(this.transform, bonePrefix, avatarType, useSmooth);
        _poseUpdater.queueSize = this.queueSize;
        data         = CSVReader.Read(poseFile);
        numCols      = data[0].Count;
        currentPose  = new float[72];
        nextPose     = new float[72];
        currentFrame = 0;
        nextFrame    = 1;
        maxFrame     = data.Count - 1;

        float[] startPose = new float[72];
        for (int i = 0; i < 72; i++)
        {
            if (numCols == 73)
            {
                startPose[i] = Convert.ToSingle(data[0][(i + 1).ToString()]);
            }
            else
            {
                startPose[i] = Convert.ToSingle(data[0][(i).ToString()]);
            }
        }
        _poseUpdater.initQueueWithStartPose(startPose);
    }
    void Start()
    {
        DOTween.Init();

        loadingPanel  = GameObject.Find("LoadingPanel");
        loadingCircle = GameObject.Find("LoadingCircle");
        loadingPanel.SetActive(false);

        GameObject scriptLoader = GameObject.Find("ScriptLoader");

        graphicSwitcher = scriptLoader.GetComponent <GraphicSwitcher>();
        lessonRecorder  = scriptLoader.GetComponent <LessonRecorder>();

        GameObject kaoru = GameObject.Find("Kaoru");

        poseUpdater    = kaoru.GetComponent <PoseUpdater>();
        emotionChanger = kaoru.GetComponent <EmotionChanger>();

        recordingIcon = GameObject.Find("RecordingIcon").GetComponent <Image>();
        ColorAlphaToZero(recordingIcon);

        nextGraphicButton = GameObject.Find("NextGraphicButton");
        nextGraphicButton.GetComponent <Button>().onClick.AddListener(SwitchNextGraphic);
        nextGraphicButton.SetActive(false);

        prevGraphicButton = GameObject.Find("PrevGraphicButton");
        prevGraphicButton.GetComponent <Button>().onClick.AddListener(SwitchPrevGraphic);
        prevGraphicButton.SetActive(false);

        recButton = GameObject.Find("RecButton");
        recButton.GetComponent <Button>().onClick.AddListener(StartRecording);

        stopButton = GameObject.Find("StopButton");
        stopButton.GetComponent <Button>().onClick.AddListener(StopRecording);
        stopButton.SetActive(false);

        resumeButton = GameObject.Find("ResumeButton");
        resumeButton.GetComponent <Button>().onClick.AddListener(ResumeRecording);
        resumeButton.SetActive(false);

        saveButton = GameObject.Find("SaveButton");
        saveButton.GetComponent <Button>().onClick.AddListener(SaveRecord);
        saveButton.SetActive(false);

        GameObject.Find("FullScreenButton").GetComponent <Button>().onClick.AddListener(() => {
            Screen.fullScreen = !Screen.fullScreen;
        });

        scriptLoader.GetComponent <LessonMaterial>().OnLoadCompleted.Subscribe(_ => {
            nextGraphicButton.SetActive(true);
            prevGraphicButton.SetActive(true);

            TouchDetector touchDetector = kaoru.GetComponent <TouchDetector>();
            touchDetector.initButtons();
        });

        GameObject.Find("SmileButton").GetComponent <Button>().onClick.AddListener(() => {
            SwitchFacialExpression("smile1");
        });

        GameObject.Find("SadButton").GetComponent <Button>().onClick.AddListener(() => {
            SwitchFacialExpression("sad2");
        });

        GameObject.Find("AngerButton").GetComponent <Button>().onClick.AddListener(() => {
            SwitchFacialExpression("anger3");
        });

        EventTrigger stepForwardEventTrigger = GameObject.Find("StepForwardButton")
                                               .GetComponent <Button>().gameObject.AddComponent <EventTrigger>();
        EventTrigger stepBackEventTrigger = GameObject.Find("StepBackButton")
                                            .GetComponent <Button>().gameObject.AddComponent <EventTrigger>();
        EventTrigger stepLeftEventTrigger = GameObject.Find("StepLeftButton")
                                            .GetComponent <Button>().gameObject.AddComponent <EventTrigger>();
        EventTrigger stepRightEventTrigger = GameObject.Find("StepRightButton")
                                             .GetComponent <Button>().gameObject.AddComponent <EventTrigger>();

        EventTrigger.Entry moveForwardEntry = new EventTrigger.Entry();
        moveForwardEntry.eventID = EventTriggerType.PointerDown;
        moveForwardEntry.callback.AddListener((_) => {
            poseUpdater.SwicthMovingBackAndForward("startMovingForward");
        });
        EventTrigger.Entry moveBackEntry = new EventTrigger.Entry();
        moveBackEntry.eventID = EventTriggerType.PointerDown;
        moveBackEntry.callback.AddListener((_) => {
            poseUpdater.SwicthMovingBackAndForward("startMovingBack");
        });
        EventTrigger.Entry moveLeftEntry = new EventTrigger.Entry();
        moveLeftEntry.eventID = EventTriggerType.PointerDown;
        moveLeftEntry.callback.AddListener((_) => {
            poseUpdater.SwicthMovingBackAndForward("startMovingLeft");
        });
        EventTrigger.Entry moveRightEntry = new EventTrigger.Entry();
        moveRightEntry.eventID = EventTriggerType.PointerDown;
        moveRightEntry.callback.AddListener((_) => {
            poseUpdater.SwicthMovingBackAndForward("startMovingRight");
        });
        EventTrigger.Entry stopEntry = new EventTrigger.Entry();
        stopEntry.eventID = EventTriggerType.PointerUp;
        stopEntry.callback.AddListener((_) => {
            poseUpdater.SwicthMovingBackAndForward("stopMoving");
        });

        stepForwardEventTrigger.triggers.Add(moveForwardEntry);
        stepForwardEventTrigger.triggers.Add(stopEntry);
        stepBackEventTrigger.triggers.Add(moveBackEntry);
        stepBackEventTrigger.triggers.Add(stopEntry);
        stepLeftEventTrigger.triggers.Add(moveLeftEntry);
        stepLeftEventTrigger.triggers.Add(stopEntry);
        stepRightEventTrigger.triggers.Add(moveRightEntry);
        stepRightEventTrigger.triggers.Add(stopEntry);
    }