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
 | 
