Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/WolfireGames/overgrowth.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Online/time_interpolator.h')
-rw-r--r--Source/Online/time_interpolator.h63
1 files changed, 63 insertions, 0 deletions
diff --git a/Source/Online/time_interpolator.h b/Source/Online/time_interpolator.h
new file mode 100644
index 00000000..9150c7de
--- /dev/null
+++ b/Source/Online/time_interpolator.h
@@ -0,0 +1,63 @@
+//-----------------------------------------------------------------------------
+// Name: time_interpolator.h
+// Developer: Wolfire Games LLC
+// Description:
+// License: Read below
+//-----------------------------------------------------------------------------
+//
+// Copyright 2022 Wolfire Games LLC
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+//-----------------------------------------------------------------------------
+#pragma once
+
+class Timestamps {
+private:
+ float* timestamps;
+ int timestamp_size;
+ int timestamp_count;
+
+public:
+ Timestamps();
+ ~Timestamps();
+
+ void Clear();
+ void PushValue(float value);
+ void Pop();
+ void SetSize(int size);
+ int size();
+ float from_begin(int offset);
+ float from_end(int offset);
+};
+
+class TimeInterpolator {
+public:
+ Timestamps timestamps;
+
+ float virtual_host_walltime = 0.f;
+ float current_walltime = 0.f;
+ float host_walltime_offset = 0.f;
+
+ float interpolation_time = 0.f;
+ float interpolation_step = 0.f;
+
+ float full_interpolation = 0.f;
+ float host_walltime_offset_shift_acc = 0.f;
+ float host_walltime_offset_shift_vel = 0.f;
+
+ static float offset_shift_coefficient_factor;
+ static int target_window_size;
+
+ int Update();
+};