using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using TMPro; using UnityEngine; using UnityEngine.Serialization; using UnityEngine.UI; public class PoseEditor : MonoBehaviour { public GameObject framePrefab; [FormerlySerializedAs("timeline")] public List timelineFrames; public Camera renderCamera; public GameObject robot; // Start is called before the first frame updaten void Start() { GameObject frame0 = Instantiate(framePrefab, transform, true); SetupFrame(frame0, 0); frame0.transform.Find("FrameAdd").Find("Text (TMP)").GetComponent().text = "+"; timelineFrames.Add(frame0); SetFrameCapture(0); } // Update is called once per frame void Update() { } public void AddFrameCallback(int _id) { GameObject frame = Instantiate(framePrefab, transform, true); _id += 1; SetupFrame(frame, _id); timelineFrames.Insert(frame.GetComponent().id, frame); SetFrameCapture(_id); if (frame.GetComponent().id < timelineFrames.Count - 1) for (int i = frame.GetComponent().id + 1; i < timelineFrames.Count; i++) { GameObject f = timelineFrames[i]; SetupFrame(f, i); } GetComponent().sizeDelta = new Vector2(820 + 160 * timelineFrames.Count, 140.0f); } public void ModifyFrameCallback(int _id) { SetFrameCapture(_id); } public void SelectFrameCallback(int _id) { GameObject frame = timelineFrames[_id]; var rc = robot.GetComponent(); rc.targetAngleBody = frame.GetComponent().targetAngleBody; rc.targetAngleHead = frame.GetComponent().targetAngleHead; rc.targetAngleArmPitchLeft = frame.GetComponent().targetAngleArmPitchLeft; rc.targetAngleArmRollLeft = frame.GetComponent().targetAngleArmRollLeft; rc.targetAngleArmPitchRight = frame.GetComponent().targetAngleArmPitchRight; rc.targetAngleArmRollRight = frame.GetComponent().targetAngleArmRollRight; rc.sliderAngleBody.Value = (int) rc.targetAngleBody; rc.sliderAngleHead.Value = (int) rc.targetAngleHead; rc.sliderAngleArmPitchLeft.Value = (int) rc.targetAngleArmPitchLeft; rc.sliderAngleArmRollLeft.Value = (int) rc.targetAngleArmRollLeft; rc.sliderAngleArmPitchRight.Value = (int) rc.targetAngleArmPitchRight; rc.sliderAngleArmRollRight.Value = (int) rc.targetAngleArmRollRight; } public void DeleteFrameCallback(int _id) { if (_id > 0) { Destroy(timelineFrames[_id]); timelineFrames.RemoveAt(_id); for (int i = _id; i < timelineFrames.Count; i++) { GameObject f = timelineFrames[i]; SetupFrame(f, i); } GetComponent().sizeDelta = new Vector2(820 + 160 * timelineFrames.Count, 140.0f); } } private void SetupFrame(GameObject frame, int _id) { frame.GetComponent().id = _id; frame.name = "Frame_" + _id; frame.transform.GetComponent().anchoredPosition3D = new Vector3(91 + 160 * _id, 0, 0); frame.transform.Find("FrameAdd").GetComponent