diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java index 0410efb08421219769df8cbe3375eb811f9d7f9f..ad6c1438e379dd5711b3dc5dc9e1853c3a976564 100644 --- a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java +++ b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java @@ -63,6 +63,8 @@ public class AvatarSpecificationSimulation { public final static int INDEX_UUID = 3; public final static int INDEX_CO_UUID = 4; public final static int INDEX_ATTRIBUTES = 8; + public final static int INDEX_FINAL_CLOCK_VALUE = 6; + public final static int INDEX_DURATION = 7; public final static int INITIALIZE = 0; public final static int RESET = 1; @@ -1236,6 +1238,8 @@ public class AvatarSpecificationSimulation { } public void postExecutedTransaction(AvatarSimulationPendingTransaction _aspt) { + clockValue = _aspt.clockValueAtEnd; + // If executing the transaction of a trace, then update according to the trace TraceManager.addDev("postExecutedTransaction of " + _aspt.toString()); if (_aspt.builtFromATrace()) { @@ -1262,10 +1266,23 @@ public class AvatarSpecificationSimulation { } } + + // Adapt the transaction clock + long clockValAtEnd = traceToPlay.getLong(_aspt.lineInTrace, INDEX_FINAL_CLOCK_VALUE); + int duration = traceToPlay.getInt(_aspt.lineInTrace, INDEX_DURATION); + TraceManager.addDev("clockValAtEnd:" + clockValAtEnd); + _aspt.clockValueAtEnd = clockValAtEnd; + _aspt.selectedDuration = duration; + _aspt.maxDuration = duration; + _aspt.durationSelected = true; + if (duration > 0) { + _aspt.hasClock = true; + } + clockValue = clockValAtEnd; } - clockValue = _aspt.clockValueAtEnd; + } diff --git a/src/main/java/myutil/CSVObject.java b/src/main/java/myutil/CSVObject.java index c2851096cf44814484d124d22242a59be2d5631f..4da5d58d997ce0da91f5ca3203ce527ae198b3ea 100644 --- a/src/main/java/myutil/CSVObject.java +++ b/src/main/java/myutil/CSVObject.java @@ -161,6 +161,11 @@ public class CSVObject { return Integer.decode(val); } + public long getLong(int line, int col) throws NumberFormatException { + String val = get(line, col); + return Long.decode(val); + } + public UUID getUUID(int line, int col) throws IllegalArgumentException { //TraceManager.addDev("Getting value at index " + line + "," + col + " nbOfLines:" + getNbOfLines() + " nbOfCol:" + getNbOfEltsPerLine());