//public string CheckCurrentStatus(RedirectedUnit[] otherUnits) //{ // List<Object2D> otherUsers = GetUsers(otherUnits); // if (status == "WALL_RESET") // { // if (!resetter.NeedWallReset(realUser, realSpace)) // { // status = "IDLE"; // resetter.NeedWallReset(realUser, realSpace); // } // } // else if (status == "USER_RESET") // { // if (!resetter.NeedUserReset(realUser, otherUsers)) // status = "IDLE"; // } // else if (status == "IDLE") // { // if (resetter.NeedWallReset(realUser, realSpace)) // { // resultData.AddWallReset(); // status = "WALL_RESET"; // } // else if (resetter.NeedUserReset(realUser, otherUsers)) // { // resultData.AddUserReset(); // status = "USER_RESET"; // } // else if (!GetEpisode().IsNotEnd()) // status = "END"; // } // return status; //} //public void Simulation(RedirectedUnit[] otherUnits) //{ // string currentStatus = CheckCurrentStatus(otherUnits); // switch (currentStatus) // { // case "IDLE": // Move(); // break; // case "WALL_RESET": // ApplyWallReset(); // break; // case "USER_RESET": // ApplyUserReset(); // break; // default: // break; // } //} //public void ApplyUserReset() //{ // resetter.ApplyReset(realUser, virtualUser, realSpace,"User"); // 필요하면 User Reset과 Wall Reset의 방법을 다르게 만들 수 있도록 이런 식으로 구현 //} //public void ApplyWallReset() //{ // resetter.ApplyReset(realUser, virtualUser, realSpace,"Wall"); //} public void Move() { (Vector2 deltaPosition, float deltaRotation) = controller.VirtualMove(realUser, virtualUser, virtualSpace); // 가상 유저를 이동 (시뮬레이션) (Redirector.GainType type, float degree) = redirector.ApplyRedirection(realUser, deltaPosition, deltaRotation); // 왜곡시킬 값을 계산 controller.RealMove(realUser, type, degree); // 실제 유저를 이동 resultData.setGains(type, redirector.GetApplidedGain(type)); resultData.AddElapsedTime(Time.fixedDeltaTime); }