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); }
////タックのデータをサブウインドウに移す // 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; }