private void setEnginTrajectoryFromEditor(Trajectory tra, TrajectoryED traED) { if (tra != null) { tra.relToCharFrame = traED.characterFrameRelative; tra.noReverseStance = traED.noReverseStance; for (int j = 0; j < tra.getTrajectoryComponentCount(); j++) { TrajectoryComponent com = tra.getTrajectoryComponent(j); com.offset = traED.component[j].offset; com.reverseAngleOnLeftStance = traED.component[j].reverseAngleOnLeftStance; com.reverseAngleOnRightStance = traED.component[j].reverseAngleOnRightStance; if (Mathf.Abs(traED.component[j].balance.cd) > 0 || Mathf.Abs(traED.component[j].balance.cv) > 0) { com.bFeedback = new LinearBalanceFeedback(); com.bFeedback.feedbackProjectionAxis = traED.component[j].balance.feedbackProjectionAxis; com.bFeedback.cd = traED.component[j].balance.cd; com.bFeedback.cv = traED.component[j].balance.cv; com.bFeedback.reversedCD = traED.component[j].balance.reversedCD; com.bFeedback.reversedCV = traED.component[j].balance.reversedCV; com.bFeedback.dMin = traED.component[j].balance.dMin; com.bFeedback.dMax = traED.component[j].balance.dMax; com.bFeedback.vMin = traED.component[j].balance.vMin; com.bFeedback.vMax = traED.component[j].balance.vMax; } else { com.bFeedback = null; } com.baseTraj.clear(); for (int i = 0; i < traED.component[j].baseTrajectory.Length; i++) { com.baseTraj.addKnot(traED.component[j].baseTrajectory[i].t, traED.component[j].baseTrajectory[i].angle); } } } }
private void setEditorStateFromEngine(TrajectoryED traED, Trajectory tra) { if (tra != null) { traED.characterFrameRelative = tra.relToCharFrame; traED.noReverseStance = tra.noReverseStance; traED.component = new ComponentED[tra.getTrajectoryComponentCount()]; for (int j = 0; j < tra.getTrajectoryComponentCount(); j++) { TrajectoryComponent com = tra.getTrajectoryComponent(j); traED.component[j] = new ComponentED(); traED.component[j].offset = com.offset; traED.component[j].reverseAngleOnLeftStance = com.reverseAngleOnLeftStance; traED.component[j].reverseAngleOnRightStance = com.reverseAngleOnRightStance; if (com.bFeedback != null) { traED.component[j].balance = new BalanceED(); traED.component[j].balance.feedbackProjectionAxis = com.bFeedback.feedbackProjectionAxis; traED.component[j].balance.cd = com.bFeedback.cd; traED.component[j].balance.cv = com.bFeedback.cv; traED.component[j].balance.reversedCD = com.bFeedback.reversedCD; traED.component[j].balance.reversedCV = com.bFeedback.reversedCV; traED.component[j].balance.dMin = com.bFeedback.dMin; traED.component[j].balance.dMax = com.bFeedback.dMax; traED.component[j].balance.vMin = com.bFeedback.vMin; traED.component[j].balance.vMax = com.bFeedback.vMax; } else { traED.component[j].balance = new BalanceED(); traED.component[j].balance.feedbackProjectionAxis = Vector3.right; traED.component[j].balance.cd = 0; traED.component[j].balance.cv = 0; traED.component[j].balance.reversedCD = false; traED.component[j].balance.reversedCV = false; traED.component[j].balance.dMin = -100; traED.component[j].balance.dMax = 100; traED.component[j].balance.vMin = -100; traED.component[j].balance.vMax = 100; } traED.component[j].baseTrajectory = new TrajectoryDataED[com.baseTraj.getKnotCount()]; for (int i = 0; i < com.baseTraj.getKnotCount(); i++) { traED.component[j].baseTrajectory[i] = new TrajectoryDataED(); traED.component[j].baseTrajectory[i].t = com.baseTraj.getKnotPosition(i); traED.component[j].baseTrajectory[i].angle = com.baseTraj.getKnotValue(i); } } } else { traED.characterFrameRelative = false; traED.noReverseStance = false; traED.component = new ComponentED[1]; traED.component[0] = new ComponentED(); traED.component[0].offset = 0; traED.component[0].reverseAngleOnLeftStance = false; traED.component[0].reverseAngleOnRightStance = false; traED.component[0].balance = new BalanceED(); traED.component[0].balance.feedbackProjectionAxis = Vector3.right; traED.component[0].balance.cd = 0; traED.component[0].balance.cv = 0; traED.component[0].balance.reversedCD = false; traED.component[0].balance.reversedCV = false; traED.component[0].balance.dMin = -100; traED.component[0].balance.dMax = 100; traED.component[0].balance.vMin = -100; traED.component[0].balance.vMax = 100; traED.component[0].baseTrajectory = new TrajectoryDataED[0]; } }