55 lines
2.0 KiB
C++
55 lines
2.0 KiB
C++
#pragma once
|
|
|
|
#include "NetworkPerception.h"
|
|
#include "Perception.h"
|
|
#include "Roboid.h"
|
|
#include "Types.h"
|
|
|
|
namespace Passer {
|
|
namespace RoboidControl {
|
|
|
|
/// @brief Interface for synchronizaing state between clients across a network
|
|
class NetworkSync {
|
|
public:
|
|
/// @brief Retreive and send the roboid state
|
|
/// @param roboid The roboid for which the state is updated
|
|
virtual void NetworkUpdate(Roboid *roboid) = 0;
|
|
/// @brief Inform that the given object is no longer being tracked
|
|
/// @param obj
|
|
virtual void DestroyObject(TrackedObject *obj) = 0;
|
|
|
|
/// @brief The id of a Pose message
|
|
static const char PoseMsg = 0x10;
|
|
/// @brief A bit pattern for the pose, stating that this message contains a
|
|
/// position in world coordinates
|
|
static const char Pose_Position = 0x01;
|
|
/// @brief A bit pattern for the pose, stating that this message contains an
|
|
/// orientation in world coordinates
|
|
static const char Pose_Orientation = 0x02;
|
|
/// @brief A bit pattern for the pose, stating that this messsage contains a
|
|
/// linear velocity in world coordinates
|
|
static const char Pose_LinearVelocity = 0x04;
|
|
/// @brief A bit pattern for the pose, stating that this message contains an
|
|
/// angular velocity in world coordinates
|
|
static const char Pose_AngularVelocity = 0x08;
|
|
|
|
static const char DestroyMsg = 0x20;
|
|
|
|
typedef void (*SendBuffer)(UInt8 *buffer, UInt16 bufferSize);
|
|
|
|
void SendPoseMsg(SendBuffer sendBuffer, Roboid *roboid);
|
|
void SendDestroyObject(SendBuffer sendBuffer, TrackedObject *obj);
|
|
|
|
void PublishTrackedObjects(SendBuffer sendBuffer, TrackedObject **objects);
|
|
|
|
protected:
|
|
NetworkPerception *networkPerception;
|
|
void PublishTrackedObject(SendBuffer sendBuffer, TrackedObject *object);
|
|
|
|
void SendVector3(unsigned char *data, int startIndex, Vector3 v);
|
|
void SendSingle100(unsigned char *data, int startIndex, float value);
|
|
void SendInt32(unsigned char *data, int startIndex, Int32 value);
|
|
};
|
|
|
|
} // namespace RoboidControl
|
|
} // namespace Passer
|