using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Runtime.InteropServices; using FlaxEngine; namespace Game { [StructLayout(LayoutKind.Sequential)] public struct PlayerInputState { public ulong frame; public float viewDeltaX, viewDeltaY; public float moveForward; public float moveRight; public bool attacking; public bool jumping; public Vector3 verificationPosition; public Vector3 verificationVelocity; public Vector3 verificationViewAngles; public Quaternion verificationOrientation; } [StructLayout(LayoutKind.Sequential)] public struct PlayerActorState { public Vector3 position; public Vector3 velocity; public Quaternion orientation; public Vector3 viewAngles; // yaw, pitch, roll } [StructLayout(LayoutKind.Sequential)] public struct PlayerState { public PlayerInputState input; public PlayerActorState actor; } public class PlayerInput { public PlayerState currentState; public ulong frame; public const byte DemoVer = 1; public virtual void OnUpdate() { } public virtual void OnFixedUpdate() { } public virtual void OnEndFrame() { } public virtual void RecordCurrentActorState(PlayerActorState actorState) { } public PlayerInputState GetCurrentInputState() { return currentState.input; } public PlayerActorState GetCurrentActorState() { return currentState.actor; } } }