From 74b3157dc6b814822b9aa45043123145c7d06d73 Mon Sep 17 00:00:00 2001
From: Ludovic Apvrille <ludovic.apvrille@telecom-paris.fr>
Date: Fri, 30 Apr 2021 13:30:11 +0200
Subject: [PATCH] Update on trace playing

---
 .../AvatarSpecificationSimulation.java        | 19 ++++++++++++++++++-
 src/main/java/myutil/CSVObject.java           |  5 +++++
 2 files changed, 23 insertions(+), 1 deletion(-)

diff --git a/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java b/src/main/java/avatartranslator/directsimulation/AvatarSpecificationSimulation.java
index 0410efb084..ad6c1438e3 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 c2851096cf..4da5d58d99 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());
 
-- 
GitLab