private void DrawTackEffect(TackPoint tackPoint) { EditorGUI.BeginChangeCheck(); var se = EditorGUILayout.IntField("se", tackPoint.motionData_.mEffect.se); var particle = (enParticleEffect)EditorGUILayout.EnumPopup("particle", (enParticleEffect)tackPoint.motionData_.mEffect.particle); var special = (enSpecialEffect)EditorGUILayout.EnumPopup("special", (enSpecialEffect)tackPoint.motionData_.mEffect.special); if (EditorGUI.EndChangeCheck()) { var lastData = tackPoint.motionData_.mEffect; Action action = () => { tackPoint.motionData_.mEffect.se = se; tackPoint.motionData_.mEffect.particle = (int)particle; tackPoint.motionData_.mEffect.special = (int)special; }; ARIMotionMainWindow.tackCmd_.Do( new MotionCommand(MethodBase.GetCurrentMethod().Name, () => { action(); }, () => { tackPoint.motionData_.mEffect = lastData; })); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
List <MotionPosState> GetIntermediatePos() { List <MotionPosState> res = new List <MotionPosState>(); int nowFrame = 0; for (int i = 0; i < tackPoints_.Count; i++) { var nowTack = tackPoints_[i]; TackPoint prevTack = (i > 0) ? tackPoints_[i - 1] : new TackPoint(); for (int i2 = 0; i2 < nowTack.span_; i2++) { var intermediate = MotionPos.MakeIntermediate2( prevTack.motionData_.mPos, nowTack.motionData_.mPos, nowTack.start_, nowTack.span_, nowFrame); res.Add(intermediate); nowFrame++; } } return(res); }
private void DrawTackPassive(TackPoint tackPoint) { EditorGUI.BeginChangeCheck(); var isLeft = EditorGUILayout.Toggle("isLeft", tackPoint.motionData_.mPassive.isLeft); var isBack = EditorGUILayout.Toggle("isBack", tackPoint.motionData_.mPassive.isBack); var faceNo = EditorGUILayout.IntField("faceNo", tackPoint.motionData_.mPassive.faceNo); if (EditorGUI.EndChangeCheck()) { var lastData = tackPoint.motionData_.mPassive; Action action = () => { tackPoint.motionData_.mPassive.isLeft = isLeft; tackPoint.motionData_.mPassive.isBack = isBack; tackPoint.motionData_.mPassive.faceNo = faceNo; }; ARIMotionMainWindow.tackCmd_.Do( new MotionCommand(MethodBase.GetCurrentMethod().Name, () => { action(); }, () => { tackPoint.motionData_.mPassive = lastData; })); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
private void UpdateTackTitle(TackPoint tackPoint) { //var newTitle = EditorGUILayout.TextField("title", tackPoint.title_); //if (newTitle != tackPoint.title_) //{ // tackPoint.BeforeSave(); // tackPoint.title_ = newTitle; // tackPoint.Save(); //} }
public TackPoint NewTackToEmptyFrame(int frame, int timelineType) { var newTackPoint = new TackPoint( tackPoints_.Count, frame, WindowSettings.DEFAULT_TACK_SPAN, timelineType ); return(newTackPoint); }
private void DrawTackSpan(TackPoint tackPoint) { var start = tackPoint.start_; GUILayout.Label("start : " + start); var span = tackPoint.span_; var end = start + span - 1; GUILayout.Label("end : " + end); GUILayout.Label("span : " + span); }
public void PasteTackToEmptyFrame(int frame, TackPoint clipTack) { var newTackPoint = new TackPoint( tackPoints_.Count, frame, clipTack ); tackPoints_.Add(newTackPoint); ApplyTextureToTacks(index_); }
public void AddNewTackToEmptyFrame(int frame, TackPoint newTackPoint) { //var newTackPoint = new TackPoint( // tackPoints_.Count, // frame, // WindowSettings.DEFAULT_TACK_SPAN, // timelineType //); tackPoints_.Add(newTackPoint); ApplyTextureToTacks(index_); }
//private void DrawTackAtari(TackPoint tackPoint) //{ // EditorGUI.BeginChangeCheck(); // var power = EditorGUILayout.IntField("power", tackPoint.motionData_.mAtari.power); // var isBomb = EditorGUILayout.Toggle("isBomb", tackPoint.motionData_.mAtari.isBomb); // var isHitReset = EditorGUILayout.Toggle("isHitReset", tackPoint.motionData_.mAtari.isHitReset); // var effect = (enAtariEffect)EditorGUILayout.EnumPopup("effect", (enAtariEffect)tackPoint.motionData_.mAtari.effect); // var isHead = EditorGUILayout.Toggle("isHead", tackPoint.motionData_.mAtari.isHead); // var isBody = EditorGUILayout.Toggle("isBody", tackPoint.motionData_.mAtari.isBody); // var isLeftArm = EditorGUILayout.Toggle("isLeftArm", tackPoint.motionData_.mAtari.isLeftArm); // var isRightArm = EditorGUILayout.Toggle("isRightArm", tackPoint.motionData_.mAtari.isRightArm); // var isLeftLeg = EditorGUILayout.Toggle("isLeftLeg", tackPoint.motionData_.mAtari.isLeftLeg); // var isRightLeg = EditorGUILayout.Toggle("isRightLeg", tackPoint.motionData_.mAtari.isRightLeg); // var isAnt = EditorGUILayout.Toggle("isAnt", tackPoint.motionData_.mAtari.isAnt); // var isRightAnt = EditorGUILayout.Toggle("isRightAnt", tackPoint.motionData_.mAtari.isRightAnt); // if (EditorGUI.EndChangeCheck()) // { // var lastData = tackPoint.motionData_.mAtari; // Action action = () => // { // tackPoint.motionData_.mAtari.power = power; // tackPoint.motionData_.mAtari.isHitReset = isHitReset; // tackPoint.motionData_.mAtari.isBomb = isBomb; // tackPoint.motionData_.mAtari.effect = (int)effect; // tackPoint.motionData_.mAtari.isHead = isHead; // tackPoint.motionData_.mAtari.isBody = isBody; // tackPoint.motionData_.mAtari.isLeftArm = isLeftArm; // tackPoint.motionData_.mAtari.isRightArm = isRightArm; // tackPoint.motionData_.mAtari.isLeftLeg = isLeftLeg; // tackPoint.motionData_.mAtari.isRightLeg = isRightLeg; // tackPoint.motionData_.mAtari.isAnt = isAnt; // tackPoint.motionData_.mAtari.isRightAnt = isRightAnt; // }; // JMMotionMainWindow.tackCmd_.Do( // new MotionCommand(MethodBase.GetCurrentMethod().Name, // () => { action(); }, // () => { tackPoint.motionData_.mAtari = lastData; })); // TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); // } //} //private void DrawTackHold(TackPoint tackPoint) //{ // EditorGUI.BeginChangeCheck(); // int selectedIndex = GetMotionIndex(tackPoint.motionData_.mHold.motionId); // var motionId = EditorGUILayout.Popup("motionId", selectedIndex, GetAllMotionList().ToArray()); // var posX = EditorGUILayout.IntField("posX", (int)tackPoint.motionData_.mHold.pos.x); // var posY = EditorGUILayout.IntField("posY", (int)tackPoint.motionData_.mHold.pos.y); // var rotate = (enPartsRotate)EditorGUILayout.EnumPopup("rotate", (enPartsRotate)tackPoint.motionData_.mHold.rotate); // var mirror = EditorGUILayout.Toggle("mirror", tackPoint.motionData_.mHold.mirror); // var isFront = EditorGUILayout.Toggle("isFront", tackPoint.motionData_.mHold.isFront); // var curveX = (enCurve)EditorGUILayout.EnumPopup("curveX", (enCurve)tackPoint.motionData_.mHold.curveX); // var curveY = (enCurve)EditorGUILayout.EnumPopup("curveY", (enCurve)tackPoint.motionData_.mHold.curveY); // if (EditorGUI.EndChangeCheck()) // { // var lastData = tackPoint.motionData_.mHold; // Action action = () => // { // tackPoint.motionData_.mHold.motionId = JMMotionMainWindow.fileList_[motionId]; // tackPoint.motionData_.mHold.pos.x = posX; // tackPoint.motionData_.mHold.pos.y = posY; // tackPoint.motionData_.mHold.rotate = (int)rotate; // tackPoint.motionData_.mHold.mirror = mirror; // tackPoint.motionData_.mHold.isFront = isFront; // tackPoint.motionData_.mHold.curveX = (int)curveX; // tackPoint.motionData_.mHold.curveY = (int)curveY; // }; // JMMotionMainWindow.tackCmd_.Do( // new MotionCommand(MethodBase.GetCurrentMethod().Name, // () => { action(); }, // () => { tackPoint.motionData_.mHold = lastData; })); // TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); // } //} //private void DrawTackThrow(TackPoint tackPoint) //{ // EditorGUI.BeginChangeCheck(); // var posX = EditorGUILayout.IntField("posX", (int)tackPoint.motionData_.mThrow.pos.x); // var posY = EditorGUILayout.IntField("posY", (int)tackPoint.motionData_.mThrow.pos.y); // var deltaX = EditorGUILayout.IntField("deltaX", (int)tackPoint.motionData_.mThrow.delta.x); // var deltaY = EditorGUILayout.IntField("deltaY", (int)tackPoint.motionData_.mThrow.delta.y); // var isLiner = EditorGUILayout.Toggle("mirror", tackPoint.motionData_.mThrow.isLiner); // if (EditorGUI.EndChangeCheck()) // { // var lastData = tackPoint.motionData_.mThrow; // Action action = () => // { // tackPoint.motionData_.mThrow.pos.x = posX; // tackPoint.motionData_.mThrow.pos.y = posY; // tackPoint.motionData_.mThrow.delta.x = deltaX; // tackPoint.motionData_.mThrow.delta.y = deltaY; // tackPoint.motionData_.mThrow.isLiner = isLiner; // }; // JMMotionMainWindow.tackCmd_.Do( // new MotionCommand(MethodBase.GetCurrentMethod().Name, // () => { action(); }, // () => { tackPoint.motionData_.mThrow = lastData; })); // TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); // } //} private void DrawTackAni(TackPoint tackPoint) { EditorGUI.BeginChangeCheck(); var paletteAni = (enPaletteAni)EditorGUILayout.EnumPopup("paletteAni", (enPaletteAni)tackPoint.motionData_.mColor.palette); //var transformAni = (enTransformAni)EditorGUILayout.EnumPopup("transformAni", (enTransformAni)tackPoint.motionData_.mAni.transformAni); var alphaAni = (enAlphaAni)EditorGUILayout.EnumPopup("alphaAni", (enAlphaAni)tackPoint.motionData_.mColor.alphaAni); var alphaVar = EditorGUILayout.IntField("alphaVar", (int)tackPoint.motionData_.mColor.alphaVar); var isThorax = EditorGUILayout.Toggle("isThorax", tackPoint.motionData_.mColor.isBody); var isHead = EditorGUILayout.Toggle("isHead", tackPoint.motionData_.mColor.isHead); var isLeftArm = EditorGUILayout.Toggle("isLeftArm", tackPoint.motionData_.mColor.isLeftArm); var isRightArm = EditorGUILayout.Toggle("isRightArm", tackPoint.motionData_.mColor.isRightArm); var isLeftHand = EditorGUILayout.Toggle("isLeftHand", tackPoint.motionData_.mColor.isLeftHand); var isRightHand = EditorGUILayout.Toggle("isRightHand", tackPoint.motionData_.mColor.isRightHand); var isLeftLeg = EditorGUILayout.Toggle("isLeftLeg", tackPoint.motionData_.mColor.isLeftLeg); var isRightLeg = EditorGUILayout.Toggle("isRightLeg", tackPoint.motionData_.mColor.isRightLeg); var isLeftFoot = EditorGUILayout.Toggle("isLeftFoot", tackPoint.motionData_.mColor.isLeftFoot); var isRightFoot = EditorGUILayout.Toggle("isRightFoot", tackPoint.motionData_.mColor.isRightFoot); var isAnt = EditorGUILayout.Toggle("isAnt", tackPoint.motionData_.mColor.isAnt); if (EditorGUI.EndChangeCheck()) { var lastData = tackPoint.motionData_.mColor; Action action = () => { tackPoint.motionData_.mColor.palette = (int)paletteAni; //tackPoint.motionData_.mAni.transformAni = (int)transformAni; tackPoint.motionData_.mColor.alphaAni = (int)alphaAni; tackPoint.motionData_.mColor.alphaVar = alphaVar; tackPoint.motionData_.mColor.isBody = isThorax; tackPoint.motionData_.mColor.isHead = isHead; tackPoint.motionData_.mColor.isLeftArm = isLeftArm; tackPoint.motionData_.mColor.isRightArm = isRightArm; tackPoint.motionData_.mColor.isLeftHand = isLeftHand; tackPoint.motionData_.mColor.isRightHand = isRightHand; tackPoint.motionData_.mColor.isLeftLeg = isLeftLeg; tackPoint.motionData_.mColor.isRightLeg = isRightLeg; tackPoint.motionData_.mColor.isLeftFoot = isLeftFoot; tackPoint.motionData_.mColor.isRightFoot = isRightFoot; tackPoint.motionData_.mColor.isAnt = isAnt; }; ARIMotionMainWindow.tackCmd_.Do( new MotionCommand(MethodBase.GetCurrentMethod().Name, () => { action(); }, () => { tackPoint.motionData_.mColor = lastData; })); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
//�R�s�y�p public TackPoint(int index, int start, TackPoint srcTack) { this.tackId_ = WindowSettings.ID_HEADER_TACK + Guid.NewGuid().ToString(); this.index_ = index; this.start_ = start; //�C���f�b�N�X�ƃX�^�[�g�ʒu�͐V�K this.IsExistTack_ = true; //���f�[�^�lj��̍ۂ̓R�R�ɒlj� //this.title_ = srcTack.title_; this.span_ = srcTack.span_; this.timelineType_ = srcTack.timelineType_; //�e��^�C�����C�� switch ((TimelineType)this.timelineType_) { case TimelineType.TL_POS: motionData_.mPos = srcTack.motionData_.mPos; break; case TimelineType.TL_TRANSFORM: motionData_.mTransform = srcTack.motionData_.mTransform; break; case TimelineType.TL_MOVE: motionData_.mMove = srcTack.motionData_.mMove; break; //case TimelineType.TL_ATARI: motionData_.mAtari = srcTack.motionData_.mAtari; break; //case TimelineType.TL_HOLD: motionData_.mHold = srcTack.motionData_.mHold; break; //case TimelineType.TL_THROW: motionData_.mThrow = srcTack.motionData_.mThrow; break; case TimelineType.TL_COLOR: motionData_.mColor = srcTack.motionData_.mColor; break; case TimelineType.TL_EFFECT: motionData_.mEffect = srcTack.motionData_.mEffect; break; case TimelineType.TL_PASSIVE: motionData_.mPassive = srcTack.motionData_.mPassive; break; default: Debug.LogError("other timelineType_"); break; } }
public void PasteTackToTimeline(string timelineId, int frame, TackPoint clipTack) { if (clipTack != null) { var targetTimeline = TimelinesByIds(new List <string> { timelineId })[0]; //targetTimeline.PasteTackToEmptyFrame(frame, clipTack); if (targetTimeline.timelineType_ == clipTack.timelineType_) { targetTimeline.PasteTackToEmptyFrame(frame, clipTack); //targetTimeline.AddNewTackToEmptyFrame(frame, clipTack); } } }
private void UndoKey() { if (Event.current.type != EventType.KeyDown) { return; } if (Event.current.keyCode == KeyCode.Z) { ARIMotionMainWindow.tackCmd_.Undo(); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } else if (Event.current.keyCode == KeyCode.Y) { ARIMotionMainWindow.tackCmd_.Redo(); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
public TackPoint GetTackById(string selectObjectId) { TackPoint res = null; foreach (var timelineTrack in timelineTracks_) { if (ARIMotionScoreWindow.IsTackId(selectObjectId)) { res = timelineTrack.GetTackById(selectObjectId); //見つかったら抜けないとNULLで上書きしてしまう if (res != null) { break; } } } return(res); }
private void DrawTackTransform(TackPoint tackPoint) { EditorGUI.BeginChangeCheck(); var AntRotate = (enPartsRotate)EditorGUILayout.EnumPopup("Ant.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.ant.rotate); var headRotate = (enPartsRotate)EditorGUILayout.EnumPopup("head.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.head.rotate); var bodyRotate = (enPartsRotate)EditorGUILayout.EnumPopup("body.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.body.rotate); var leftArmRotate = (enPartsRotate)EditorGUILayout.EnumPopup("leftArm.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.leftArm.rotate); var rightArmRotate = (enPartsRotate)EditorGUILayout.EnumPopup("rightArm.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.rightArm.rotate); var leftHandRotate = (enPartsRotate)EditorGUILayout.EnumPopup("leftHand.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.leftHand.rotate); var rightHandRotate = (enPartsRotate)EditorGUILayout.EnumPopup("rightHand.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.rightHand.rotate); var leftLegRotate = (enPartsRotate)EditorGUILayout.EnumPopup("leftLeg.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.leftLeg.rotate); var rightLegRotate = (enPartsRotate)EditorGUILayout.EnumPopup("rightLeg.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.rightLeg.rotate); var leftFootRotate = (enPartsRotate)EditorGUILayout.EnumPopup("leftFoot.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.leftFoot.rotate); var rightFootRotate = (enPartsRotate)EditorGUILayout.EnumPopup("rightFoot.rotate", (enPartsRotate)tackPoint.motionData_.mTransform.rightFoot.rotate); if (EditorGUI.EndChangeCheck()) { var lastData = tackPoint.motionData_.mTransform; Action action = () => { tackPoint.motionData_.mTransform.ant.rotate = (int)AntRotate; tackPoint.motionData_.mTransform.head.rotate = (int)headRotate; tackPoint.motionData_.mTransform.body.rotate = (int)bodyRotate; tackPoint.motionData_.mTransform.leftArm.rotate = (int)leftArmRotate; tackPoint.motionData_.mTransform.rightArm.rotate = (int)rightArmRotate; tackPoint.motionData_.mTransform.leftHand.rotate = (int)leftHandRotate; tackPoint.motionData_.mTransform.rightHand.rotate = (int)rightHandRotate; tackPoint.motionData_.mTransform.leftLeg.rotate = (int)leftLegRotate; tackPoint.motionData_.mTransform.rightLeg.rotate = (int)rightLegRotate; tackPoint.motionData_.mTransform.leftFoot.rotate = (int)leftFootRotate; tackPoint.motionData_.mTransform.rightFoot.rotate = (int)rightFootRotate; }; ARIMotionMainWindow.tackCmd_.Do( new MotionCommand(MethodBase.GetCurrentMethod().Name, () => { action(); }, () => { tackPoint.motionData_.mTransform = lastData; })); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
private void DrawTackMove(TackPoint tackPoint) { EditorGUI.BeginChangeCheck(); var deltaX = EditorGUILayout.IntField("delta.x", (int)tackPoint.motionData_.mMove.delta.x); var deltaY = EditorGUILayout.IntField("delta.y", (int)tackPoint.motionData_.mMove.delta.y); var accelX = EditorGUILayout.FloatField("accel.x", tackPoint.motionData_.mMove.accel.x); var accelY = EditorGUILayout.FloatField("accel.y", tackPoint.motionData_.mMove.accel.y); var decelMag = EditorGUILayout.FloatField("decelMag", tackPoint.motionData_.mMove.decelMag); var isZeroGrv = EditorGUILayout.Toggle("isZeroGrv", tackPoint.motionData_.mMove.isZeroGrv); var isZeroFric = EditorGUILayout.Toggle("isZeroFric", tackPoint.motionData_.mMove.isZeroFric); var isKeepX = EditorGUILayout.Toggle("isKeepX", tackPoint.motionData_.mMove.isKeepX); var isKeepY = EditorGUILayout.Toggle("isKeepY", tackPoint.motionData_.mMove.isKeepY); //var isNoLand = EditorGUILayout.Toggle("isNoLand", tackPoint.motionData_.mMove.isNoLand); if (EditorGUI.EndChangeCheck()) { var lastData = tackPoint.motionData_.mMove; Action action = () => { tackPoint.motionData_.mMove.delta.x = deltaX; tackPoint.motionData_.mMove.delta.y = deltaY; tackPoint.motionData_.mMove.accel.x = accelX; tackPoint.motionData_.mMove.accel.y = accelY; tackPoint.motionData_.mMove.decelMag = decelMag; //tackPoint.motionData_.mMove.decel.x = decelX; //tackPoint.motionData_.mMove.decel.y = decelY; tackPoint.motionData_.mMove.isZeroGrv = isZeroGrv; tackPoint.motionData_.mMove.isZeroFric = isZeroFric; tackPoint.motionData_.mMove.isKeepX = isKeepX; tackPoint.motionData_.mMove.isKeepY = isKeepY; }; ARIMotionMainWindow.tackCmd_.Do( new MotionCommand(MethodBase.GetCurrentMethod().Name, () => { action(); }, () => { tackPoint.motionData_.mMove = lastData; })); //tackPoint.motionData_.mMove.isNoLand = isNoLand; TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
//スコアファイルを単体JSONに分ける ScoreComponent LoadScore(Dictionary <string, object> deserialized) { var scoreTimelines = deserialized[TimeFlowShikiSettings.TIMEFLOWSHIKI_DATA_SCORE_TIMELINES] as List <object>; var currentTimelines = new List <TimelineTrack>(); foreach (var scoreTimeline in scoreTimelines) { var scoreTimelineDict = scoreTimeline as Dictionary <string, object>; var timelineTacks = scoreTimelineDict[TimeFlowShikiSettings.TIMEFLOWSHIKI_DATA_TIMELINE_TACKS] as List <object>; var currentTacks = new List <TackPoint>(); foreach (var timelineTack in timelineTacks) { var timelineTacksDict = timelineTack as Dictionary <string, object>; var newTack = new TackPoint(currentTacks.Count, timelineTacksDict); currentTacks.Add(newTack); } var newTimeline = new TimelineTrack(currentTimelines.Count, scoreTimelineDict, currentTacks); currentTimelines.Add(newTimeline); } var newScore = new ScoreComponent(deserialized, currentTimelines); return(newScore); }
////タックのデータをサブウインドウに移す // void SetHoldPartsData(enPartsType partsType, Vector2Int pos, PartsTransformState partsTransform, MotionHoldState motionHold) //{ // //この段階でエディタ用のパーツごとの位置補正がされるので、全体反転や全体回転もここで加味する // //反転が入っている場合は左右があるパーツは、X位置を反転させ、逆側の基礎位置を使用する // if (motionHold.mirror) pos.x = -pos.x; // //回転が入っている場合は基礎位置設定後、原点パーツが原点になるように移動させ、原点を中心に回転し、移動させた分をそのまま戻す // pos += BasePosition.GetPosEdit(partsType, motionHold.mirror); // //HOLDは足下原点ではなく、ボディ原点にする // pos -= BasePosition.GetPosEdit(enPartsType.Body, false); // Vector2Int tempPos = pos; // switch ((enPartsRotate)motionHold.rotate) // { // case enPartsRotate.Rotate0: // break; // case enPartsRotate.Rotate90: // pos.x = -tempPos.y; // pos.y = tempPos.x; // break; // case enPartsRotate.Rotate180: // pos.x = -tempPos.x; // pos.y = -tempPos.y; // break; // case enPartsRotate.Rotate270: // pos.x = tempPos.y; // pos.y = -tempPos.x; // break; // } // //pos += BasePosition.GetPosEdit(enPartsType.Body, false); // partsTransform.rotate = ((partsTransform.rotate + motionHold.rotate) % 360); //} void SetupPartsPos() { //Pos var selectedFrameAndPrevPos = parent_.GetActiveScore().GetSelectedFrameAndPrevPos(selectedFrame_); if (selectedFrameAndPrevPos.Count == 0) { return; } TackPoint prevTack = (selectedFrameAndPrevPos.Count == 2) ? selectedFrameAndPrevPos[1] : new TackPoint(); //最初のタックは前がないのでニュートラル TackPoint selectedTack = selectedFrameAndPrevPos[0]; //中間モーション生成 var intermediate = MotionPos.MakeIntermediate2( prevTack.motionData_.mPos, selectedTack.motionData_.mPos, selectedTack.start_, selectedTack.span_, selectedFrame_); sendMotion_.stPos = intermediate; }
void EmitAfterDraw(OnTrackEvent onTrackEvent) { var type = onTrackEvent.eventType; switch (type) { case OnTrackEvent.EventType.EVENT_TIMELINE_ADDTACK: { var targetTimelineId = onTrackEvent.activeObjectId; var targetFramePos = onTrackEvent.frame; var activeAuto = GetActiveScore(); Undo.RecordObject(this, "Add Tack"); string id = MethodBase.GetCurrentMethod().Name; TackPoint newTackPoint = activeAuto.NewTackToTimeline(targetTimelineId, targetFramePos); var delId = newTackPoint.tackId_; Action action = () => { activeAuto.PasteTackToTimeline(targetTimelineId, targetFramePos, newTackPoint); activeAuto.SqueezeTack(); }; Action undo = () => { activeAuto.DeleteObjectById(delId, false); activeAuto.SqueezeTack(); }; ARIMotionMainWindow.scoreCmd_.Do(new MotionCommand(id, action, undo)); return; } case OnTrackEvent.EventType.EVENT_TIMELINE_PASTETACK: { var targetTimelineId = onTrackEvent.activeObjectId; var targetFramePos = onTrackEvent.frame; var activeAuto = GetActiveScore(); Undo.RecordObject(this, "Paste Tack"); //activeAuto.PasteTackToTimeline(targetTimelineId, targetFramePos, clipTack_); //activeAuto.SqueezeTack(); string id = MethodBase.GetCurrentMethod().Name; TackPoint newTackPoint = clipTack_; Action action = () => { activeAuto.PasteTackToTimeline(targetTimelineId, targetFramePos, newTackPoint); activeAuto.SqueezeTack(); }; Action undo = () => { activeAuto.DeleteObjectById(newTackPoint.tackId_, false); activeAuto.SqueezeTack(); }; ARIMotionMainWindow.scoreCmd_.Do(new MotionCommand(id, action, undo)); return; } } }
public void UpdateSubWindow(TackPoint tackPoint) { this.tackPoint = tackPoint; }
public void UpdateTackPoint(TackPoint tackPoint) { this.tackPoint = tackPoint; }
private void DrawTackPos(TackPoint tackPoint) { EditorGUI.BeginChangeCheck(); var bodyX = EditorGUILayout.IntField("body.pos.x", (int)tackPoint.motionData_.mPos.body.pos.x); var bodyY = EditorGUILayout.IntField("body.pos.y", (int)tackPoint.motionData_.mPos.body.pos.y); var headX = EditorGUILayout.IntField("head.pos.x", (int)tackPoint.motionData_.mPos.head.pos.x); var headY = EditorGUILayout.IntField("head.pos.y", (int)tackPoint.motionData_.mPos.head.pos.y); // var leftArmX = EditorGUILayout.IntField("leftArm.pos.x", (int)tackPoint.motionData_.mPos.leftArm.pos.x); // var leftArmY = EditorGUILayout.IntField("leftArm.pos.y", (int)tackPoint.motionData_.mPos.leftArm.pos.y); // var rightArmX = EditorGUILayout.IntField("rightArm.pos.x", (int)tackPoint.motionData_.mPos.rightArm.pos.x); // var rightArmY = EditorGUILayout.IntField("rightArm.pos.y", (int)tackPoint.motionData_.mPos.rightArm.pos.y); var leftHandX = EditorGUILayout.IntField("leftHand.pos.x", (int)tackPoint.motionData_.mPos.leftHand.pos.x); var leftHandY = EditorGUILayout.IntField("leftHand.pos.y", (int)tackPoint.motionData_.mPos.leftHand.pos.y); var rightHandX = EditorGUILayout.IntField("rightHand.pos.x", (int)tackPoint.motionData_.mPos.rightHand.pos.x); var rightHandY = EditorGUILayout.IntField("rightHand.pos.y", (int)tackPoint.motionData_.mPos.rightHand.pos.y); // var leftLegX = EditorGUILayout.IntField("leftLeg.pos.x", (int)tackPoint.motionData_.mPos.leftLeg.pos.x); // var leftLegY = EditorGUILayout.IntField("leftLeg.pos.y", (int)tackPoint.motionData_.mPos.leftLeg.pos.y); // var rightLegX = EditorGUILayout.IntField("rightLeg.pos.x", (int)tackPoint.motionData_.mPos.rightLeg.pos.x); // var rightLegY = EditorGUILayout.IntField("rightLeg.pos.y", (int)tackPoint.motionData_.mPos.rightLeg.pos.y); var leftFootX = EditorGUILayout.IntField("leftFoot.pos.x", (int)tackPoint.motionData_.mPos.leftFoot.pos.x); var leftFootY = EditorGUILayout.IntField("leftFoot.pos.y", (int)tackPoint.motionData_.mPos.leftFoot.pos.y); var rightFootX = EditorGUILayout.IntField("rightFoot.pos.x", (int)tackPoint.motionData_.mPos.rightFoot.pos.x); var rightFootY = EditorGUILayout.IntField("rightFoot.pos.y", (int)tackPoint.motionData_.mPos.rightFoot.pos.y); // var antX = EditorGUILayout.IntField("ant.pos.x", (int)tackPoint.motionData_.mPos.ant.pos.x); // var antY = EditorGUILayout.IntField("ant.pos.y", (int)tackPoint.motionData_.mPos.ant.pos.y); var armX = EditorGUILayout.IntField("arm.pos.x", (int)tackPoint.motionData_.mPos.arm.pos.x); var legY = EditorGUILayout.IntField("leg.pos.x", (int)tackPoint.motionData_.mPos.leg.pos.x); var bodyCurveX = (enCurve)EditorGUILayout.EnumPopup("body.curveX", (enCurve)tackPoint.motionData_.mPos.body.curveX); var bodyCurveY = (enCurve)EditorGUILayout.EnumPopup("body.curveY", (enCurve)tackPoint.motionData_.mPos.body.curveY); var headCurveX = (enCurve)EditorGUILayout.EnumPopup("head.curveX", (enCurve)tackPoint.motionData_.mPos.head.curveX); var headCurveY = (enCurve)EditorGUILayout.EnumPopup("head.curveY", (enCurve)tackPoint.motionData_.mPos.head.curveY); // var leftArmCurveX = (enCurve)EditorGUILayout.EnumPopup("leftArm.curveX", (enCurve)tackPoint.motionData_.mPos.leftArm.curveX); // var leftArmCurveY = (enCurve)EditorGUILayout.EnumPopup("leftArm.curveY", (enCurve)tackPoint.motionData_.mPos.leftArm.curveY); // var rightArmCurveX = (enCurve)EditorGUILayout.EnumPopup("rightArm.curveX", (enCurve)tackPoint.motionData_.mPos.rightArm.curveX); // var rightArmCurveY = (enCurve)EditorGUILayout.EnumPopup("rightArm.curveY", (enCurve)tackPoint.motionData_.mPos.rightArm.curveY); var leftHandCurveX = (enCurve)EditorGUILayout.EnumPopup("leftHand.curveX", (enCurve)tackPoint.motionData_.mPos.leftHand.curveX); var leftHandCurveY = (enCurve)EditorGUILayout.EnumPopup("leftHand.curveY", (enCurve)tackPoint.motionData_.mPos.leftHand.curveY); var rightHandCurveX = (enCurve)EditorGUILayout.EnumPopup("rightHand.curveX", (enCurve)tackPoint.motionData_.mPos.rightHand.curveX); var rightHandCurveY = (enCurve)EditorGUILayout.EnumPopup("rightHand.curveY", (enCurve)tackPoint.motionData_.mPos.rightHand.curveY); // var leftLegCurveX = (enCurve)EditorGUILayout.EnumPopup("leftLeg.curveX", (enCurve)tackPoint.motionData_.mPos.leftLeg.curveX); // var leftLegCurveY = (enCurve)EditorGUILayout.EnumPopup("leftLeg.curveY", (enCurve)tackPoint.motionData_.mPos.leftLeg.curveY); // var rightLegCurveX = (enCurve)EditorGUILayout.EnumPopup("rightLeg.curveX", (enCurve)tackPoint.motionData_.mPos.rightLeg.curveX); // var rightLegCurveY = (enCurve)EditorGUILayout.EnumPopup("rightLeg.curveY", (enCurve)tackPoint.motionData_.mPos.rightLeg.curveY); var leftFootCurveX = (enCurve)EditorGUILayout.EnumPopup("leftFoot.curveX", (enCurve)tackPoint.motionData_.mPos.leftFoot.curveX); var leftFootCurveY = (enCurve)EditorGUILayout.EnumPopup("leftFoot.curveY", (enCurve)tackPoint.motionData_.mPos.leftFoot.curveY); var rightFootCurveX = (enCurve)EditorGUILayout.EnumPopup("rightFoot.curveX", (enCurve)tackPoint.motionData_.mPos.rightFoot.curveX); var rightFootCurveY = (enCurve)EditorGUILayout.EnumPopup("rightFoot.curveY", (enCurve)tackPoint.motionData_.mPos.rightFoot.curveY); // var AntCurveX = (enCurve)EditorGUILayout.EnumPopup("Ant.curveX", (enCurve)tackPoint.motionData_.mPos.ant.curveX); // var AntCurveY = (enCurve)EditorGUILayout.EnumPopup("Ant.curveY", (enCurve)tackPoint.motionData_.mPos.ant.curveY); var ArmCurveX = (enCurve)EditorGUILayout.EnumPopup("arm.curveX", (enCurve)tackPoint.motionData_.mPos.arm.curveX); var LegCurveX = (enCurve)EditorGUILayout.EnumPopup("leg.curveX", (enCurve)tackPoint.motionData_.mPos.leg.curveX); if (EditorGUI.EndChangeCheck()) { var lastData = tackPoint.motionData_.mPos; Action action = () => { tackPoint.motionData_.mPos.body.pos.x = bodyX; tackPoint.motionData_.mPos.body.pos.y = bodyY; tackPoint.motionData_.mPos.head.pos.x = headX; tackPoint.motionData_.mPos.head.pos.y = headY; // tackPoint.motionData_.mPos.leftArm.pos.x = leftArmX; // tackPoint.motionData_.mPos.leftArm.pos.y = leftArmY; // tackPoint.motionData_.mPos.rightArm.pos.x = rightArmX; // tackPoint.motionData_.mPos.rightArm.pos.y = rightArmY; tackPoint.motionData_.mPos.leftHand.pos.x = leftHandX; tackPoint.motionData_.mPos.leftHand.pos.y = leftHandY; tackPoint.motionData_.mPos.rightHand.pos.x = rightHandX; tackPoint.motionData_.mPos.rightHand.pos.y = rightHandY; // tackPoint.motionData_.mPos.leftLeg.pos.x = leftLegX; // tackPoint.motionData_.mPos.leftLeg.pos.y = leftLegY; // tackPoint.motionData_.mPos.rightLeg.pos.x = rightLegX; // tackPoint.motionData_.mPos.rightLeg.pos.y = rightLegY; tackPoint.motionData_.mPos.leftFoot.pos.x = leftFootX; tackPoint.motionData_.mPos.leftFoot.pos.y = leftFootY; tackPoint.motionData_.mPos.rightFoot.pos.x = rightFootX; tackPoint.motionData_.mPos.rightFoot.pos.y = rightFootY; // tackPoint.motionData_.mPos.ant.pos.x = antX; // tackPoint.motionData_.mPos.ant.pos.y = antY; tackPoint.motionData_.mPos.arm.pos.x = armX; tackPoint.motionData_.mPos.leg.pos.x = legY; tackPoint.motionData_.mPos.body.curveX = (int)bodyCurveX; tackPoint.motionData_.mPos.body.curveY = (int)bodyCurveY; tackPoint.motionData_.mPos.head.curveX = (int)headCurveX; tackPoint.motionData_.mPos.head.curveY = (int)headCurveY; // tackPoint.motionData_.mPos.leftArm.curveX = (int)leftArmCurveX; // tackPoint.motionData_.mPos.leftArm.curveY = (int)leftArmCurveY; // tackPoint.motionData_.mPos.rightArm.curveX = (int)rightArmCurveX; // tackPoint.motionData_.mPos.rightArm.curveY = (int)rightArmCurveY; tackPoint.motionData_.mPos.leftHand.curveX = (int)leftHandCurveX; tackPoint.motionData_.mPos.leftHand.curveY = (int)leftHandCurveY; tackPoint.motionData_.mPos.rightHand.curveX = (int)rightHandCurveX; tackPoint.motionData_.mPos.rightHand.curveY = (int)rightHandCurveY; // tackPoint.motionData_.mPos.leftLeg.curveX = (int)leftLegCurveX; // tackPoint.motionData_.mPos.leftLeg.curveY = (int)leftLegCurveY; // tackPoint.motionData_.mPos.rightLeg.curveX = (int)rightLegCurveX; // tackPoint.motionData_.mPos.rightLeg.curveY = (int)rightLegCurveY; tackPoint.motionData_.mPos.leftFoot.curveX = (int)leftFootCurveX; tackPoint.motionData_.mPos.leftFoot.curveY = (int)leftFootCurveY; tackPoint.motionData_.mPos.rightFoot.curveX = (int)rightFootCurveX; tackPoint.motionData_.mPos.rightFoot.curveY = (int)rightFootCurveY; // tackPoint.motionData_.mPos.ant.curveX = (int)AntCurveX; // tackPoint.motionData_.mPos.ant.curveY = (int)AntCurveY; tackPoint.motionData_.mPos.arm.curveX = (int)ArmCurveX; tackPoint.motionData_.mPos.leg.curveX = (int)LegCurveX; }; ARIMotionMainWindow.tackCmd_.Do( new MotionCommand(MethodBase.GetCurrentMethod().Name, () => { action(); }, () => { tackPoint.motionData_.mPos = lastData; })); TackPoint.Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_CHANGE, null)); } }
void Emit(OnTrackEvent onTrackEvent) { var type = onTrackEvent.eventType; // tack events. switch (type) { case OnTrackEvent.EventType.EVENT_UNSELECTED: { manipulateTargets = new ManipulateTargets(new List <string>()); Undo.RecordObject(this, "Unselect"); var activeAuto = GetActiveScore(); activeAuto.DeactivateAllObjects(); activeAuto.SetScoreInspector(); parent_.RepaintAllWindow(); return; } case OnTrackEvent.EventType.EVENT_OBJECT_SELECTED: { manipulateTargets = new ManipulateTargets(new List <string> { onTrackEvent.activeObjectId }); var activeAuto = GetActiveScore(); Undo.RecordObject(this, "Select"); activeAuto.ActivateObjectsAndDeactivateOthers(manipulateTargets.activeObjectIds); parent_.RepaintAllWindow(); return; } //各種タイムライン case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_POS: case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_TRANSFORM: case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_MOVE: case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_COLOR: case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_EFFECT: case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_PASSIVE: { int timelineType = 0; //各種タイムライン switch (type) { case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_POS: timelineType = (int)TimelineType.TL_POS; break; case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_TRANSFORM: timelineType = (int)TimelineType.TL_TRANSFORM; break; case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_MOVE: timelineType = (int)TimelineType.TL_MOVE; break; case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_COLOR: timelineType = (int)TimelineType.TL_COLOR; break; case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_EFFECT: timelineType = (int)TimelineType.TL_EFFECT; break; case OnTrackEvent.EventType.EVENT_SCORE_ADDTIMELINE_PASSIVE: timelineType = (int)TimelineType.TL_PASSIVE; break; } var activeAuto = GetActiveScore(); var tackPoints = new List <TackPoint>(); var newTimeline = new TimelineTrack(activeAuto.timelineTracks_.Count, timelineType, tackPoints); var newTimelineId = newTimeline.timelineId_; Undo.RecordObject(this, "Add Timeline"); //activeAuto.timelineTracks.Add(newTimeline); string id = MethodBase.GetCurrentMethod().Name; Action action = () => { activeAuto.timelineTracks_.Add(newTimeline); }; Action undo = () => { activeAuto.DeleteObjectById(newTimelineId, false); }; ARIMotionMainWindow.scoreCmd_.Do(new MotionCommand(id, action, undo)); parent_.NeedSave(); return; } case OnTrackEvent.EventType.EVENT_SCORE_BEFORESAVE: { Undo.RecordObject(this, "Update Score Title"); return; } case OnTrackEvent.EventType.EVENT_SCORE_SAVE: { parent_.NeedSave(); return; } /* * timeline events. */ case OnTrackEvent.EventType.EVENT_TIMELINE_ADDTACK: { eventStacks_.Add(onTrackEvent.Copy()); return; } case OnTrackEvent.EventType.EVENT_TIMELINE_PASTETACK: { eventStacks_.Add(onTrackEvent.Copy()); return; } case OnTrackEvent.EventType.EVENT_TIMELINE_DELETE: { var targetTimelineId = onTrackEvent.activeObjectId; var activeAuto = GetActiveScore(); Undo.RecordObject(this, "Delete Timeline"); string id = MethodBase.GetCurrentMethod().Name; Action action = () => { activeAuto.DeleteObjectById(targetTimelineId, false); }; Action undo = () => { activeAuto.DeleteObjectById(targetTimelineId, true); }; ARIMotionMainWindow.scoreCmd_.Do(new MotionCommand(id, action, undo)); //activeAuto.DeleteObjectById(targetTimelineId); parent_.NeedSave(); return; } case OnTrackEvent.EventType.EVENT_TIMELINE_BEFORESAVE: { Undo.RecordObject(this, "Update Timeline Title"); return; } case OnTrackEvent.EventType.EVENT_TIMELINE_SAVE: { parent_.NeedSave(); return; } /* * tack events. */ case OnTrackEvent.EventType.EVENT_TACK_MOVING: { var movingTackId = onTrackEvent.activeObjectId; var activeAuto = GetActiveScore(); activeAuto.SetMovingTackToTimelimes(movingTackId); break; } case OnTrackEvent.EventType.EVENT_TACK_MOVED: { Undo.RecordObject(this, "Move Tack"); return; } case OnTrackEvent.EventType.EVENT_TACK_MOVED_AFTER: { var targetTackId = onTrackEvent.activeObjectId; var activeAuto = GetActiveScore(); var activeTimelineIndex = activeAuto.GetTackContainedTimelineIndex(targetTackId); if (0 <= activeTimelineIndex) { //タックの移動後処理 activeAuto.timelineTracks_[activeTimelineIndex].UpdateByTackMoved(targetTackId); //Repaint(); parent_.NeedSave(); } return; } case OnTrackEvent.EventType.EVENT_TACK_DELETED: { var targetTackId = onTrackEvent.activeObjectId; var activeAuto = GetActiveScore(); Undo.RecordObject(this, "Delete Tack"); string id = MethodBase.GetCurrentMethod().Name; Action action = () => { activeAuto.DeleteObjectById(targetTackId, false); activeAuto.SqueezeTack(); }; Action undo = () => { activeAuto.DeleteObjectById(targetTackId, true); activeAuto.SqueezeTack(); }; ARIMotionMainWindow.scoreCmd_.Do(new MotionCommand(id, action, undo)); //Repaint(); parent_.NeedSave(); return; } case OnTrackEvent.EventType.EVENT_TACK_COPY: { var targetTackId = onTrackEvent.activeObjectId; var activeAuto = GetActiveScore(); clipTack_ = activeAuto.GetTackById(targetTackId); return; } case OnTrackEvent.EventType.EVENT_TACK_BEFORESAVE: { Undo.RecordObject(this, "Update Tack Title"); return; } case OnTrackEvent.EventType.EVENT_TACK_SAVE: { parent_.NeedSave(); return; } case OnTrackEvent.EventType.EVENT_TACK_CHANGE: { parent_.NeedSave(); parent_.subWindow_.SetupPartsData(false); //サブウインドウにも反映させる parent_.RepaintAllWindow(); return; } default: { //親に投げる ParentEmit(onTrackEvent); //Debug.LogError("no match type:" + type); break; } } }
//キー入力によるスパンの変更 void ChangeStartAll(bool isForwerd) { if (!HasValidScore()) { return; } var score = GetActiveScore(); if (manipulateTargets.activeObjectIds.Any()) { if (manipulateTargets.activeObjectIds.Count == 1) { var activeId = manipulateTargets.activeObjectIds[0]; List <TackPoint> tackPoints = null; if (IsTimelineId(activeId)) { TimelineTrack timelineTrack = score.TimelineById(activeId); tackPoints = timelineTrack.tackPoints_; } else if (IsTackId(activeId)) { var tack = score.TackById(activeId); tackPoints = score.TimelinesByType((TimelineType)tack.timelineType_); } if (tackPoints != null) { Undo.RecordObject(this, "ChangeSpan"); List <Action> cmdDo = new List <Action>(); List <Action> cmdUndo = new List <Action>(); string id = MethodBase.GetCurrentMethod().Name; foreach (var item in tackPoints) { TackPoint tack = item; int newStart = (isForwerd) ? item.start_ - 1 : item.start_ + 1; int lastStart = item.start_; Action action = () => { tack.UpdatePos(newStart, tack.span_); score.SqueezeTack(); }; Action undo = () => { tack.UpdatePos(lastStart, tack.span_); score.SqueezeTack(); }; //コマンドPos cmdDo.Add(action); cmdUndo.Add(undo); } cmdDo.Add(() => score.SqueezeTack()); cmdUndo.Add(() => score.SqueezeTack()); if (cmdDo.Any()) { ARIMotionMainWindow.tackCmd_.Do(new MotionCommand(id, () => { foreach (var cmd in cmdDo) { cmd(); } }, () => { foreach (var cmd in cmdUndo) { cmd(); } })); } Emit(new OnTrackEvent(OnTrackEvent.EventType.EVENT_TACK_SAVE, null)); parent_.RepaintAllWindow(); } } else { // select multiple objects. } } }