mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-12 14:00:53 +01:00
58 lines
No EOL
1.2 KiB
C++
58 lines
No EOL
1.2 KiB
C++
#pragma once
|
|
|
|
#include "server_common.h"
|
|
|
|
namespace f4mp
|
|
{
|
|
class Entity
|
|
{
|
|
public:
|
|
static Entity* Get(librg_entity* entity);
|
|
static Entity* Get(librg_event* event);
|
|
static Entity* Get(librg_peer* peer);
|
|
|
|
template<class T, class U> static T* GetAs(U entity);
|
|
|
|
static Entity* Create(librg_entity* entity);
|
|
static Entity* Create(librg_event* event);
|
|
|
|
template<class T>
|
|
static T* Create(librg_entity* entity, T* instance);
|
|
|
|
Entity();
|
|
virtual ~Entity();
|
|
|
|
virtual void OnConnectRequest(librg_event* event);
|
|
virtual void OnConnectAccept(librg_event* event);
|
|
virtual void OnConnectRefuse(librg_event* event);
|
|
virtual void OnDisonnect(librg_event* event);
|
|
|
|
virtual void OnEntityCreate(librg_event* event);
|
|
virtual void OnEntityUpdate(librg_event* event);
|
|
virtual void OnEntityRemove(librg_event* event);
|
|
|
|
virtual void OnClientUpdate(librg_event* event);
|
|
|
|
u32 GetEntityID() const;
|
|
void SetEntityID(u32 id);
|
|
|
|
private:
|
|
u32 entityID;
|
|
|
|
float angles[3];
|
|
};
|
|
|
|
template<class T, class U>
|
|
T* Entity::GetAs(U entity)
|
|
{
|
|
return dynamic_cast<T*>(Get(entity));
|
|
}
|
|
template<class T>
|
|
inline T* Entity::Create(librg_entity* entity, T* instance)
|
|
{
|
|
instance->SetEntityID(entity->id);
|
|
entity->user_data = instance;
|
|
|
|
return instance;
|
|
}
|
|
} |