User definition
This commit is contained in:
parent
9d2785541d
commit
57e3d7998b
@ -21,15 +21,13 @@ namespace deerith
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class sync_variable_t
|
class sync_variable_t : public sync_variable_base_t
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~sync_buffer_t() = default;
|
~sync_variable_t() override = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<sync_variable_entry_t<T>, BUFFER_SIZE> buffer;
|
std::array<sync_variable_entry_t<T>, BUFFER_SIZE> buffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <>
|
|
||||||
class sync_variable_t
|
|
||||||
}
|
}
|
||||||
@ -11,19 +11,14 @@ namespace deerith
|
|||||||
public:
|
public:
|
||||||
void *user_data = nullptr;
|
void *user_data = nullptr;
|
||||||
|
|
||||||
template <typename T>
|
void register_sync_variable(sync_variable_base_t *var);
|
||||||
void register_sync_variable(sync_variable_t<T> *var);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<sync_variable_base_t *> buffers;
|
std::vector<sync_variable_base_t *> buffers;
|
||||||
};
|
};
|
||||||
|
|
||||||
void register_user_sync_variables_init_callback(std::function<void(user_t &)>);
|
using user_registration_function = std::function<void(user_t &)>;
|
||||||
void register_user_sync_variables_shutdown_callback(std::function<void(user_t &)>);
|
|
||||||
}
|
|
||||||
|
|
||||||
template <typename T>
|
void register_user_sync_variables_init_callback(user_registration_function);
|
||||||
void deerith::user_t::register_sync_variable(sync_variable_t<T> *var)
|
void register_user_sync_variables_shutdown_callback(user_registration_function);
|
||||||
{
|
}
|
||||||
buffers.push_back(var);
|
|
||||||
}
|
|
||||||
|
|||||||
@ -1,6 +1,22 @@
|
|||||||
#include <deerith/universe/user.h>
|
#include <deerith/universe/user.h>
|
||||||
|
|
||||||
namespace deerit
|
namespace deerith
|
||||||
{
|
{
|
||||||
|
user_registration_function user_sync_variables_init_function;
|
||||||
|
user_registration_function user_sync_variables_shutdown_function;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void deerith::register_user_sync_variables_init_callback(user_registration_function fn)
|
||||||
|
{
|
||||||
|
user_sync_variables_init_function = fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
void deerith::register_user_sync_variables_shutdown_callback(user_registration_function fn)
|
||||||
|
{
|
||||||
|
user_sync_variables_shutdown_function = fn;
|
||||||
|
}
|
||||||
|
|
||||||
|
void deerith::user_t::register_sync_variable(sync_variable_base_t *var)
|
||||||
|
{
|
||||||
|
buffers.push_back(var);
|
||||||
|
}
|
||||||
@ -1,6 +1,6 @@
|
|||||||
file(GLOB_RECURSE SANDBOX_COMMON
|
file(GLOB_RECURSE SANDBOX_COMMON
|
||||||
CONFIGURE_DEPENDS
|
CONFIGURE_DEPENDS
|
||||||
src/common/*.cpp
|
src/runtime/*.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
file(GLOB_RECURSE SANDBOX_CLIENT
|
file(GLOB_RECURSE SANDBOX_CLIENT
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
#include <deerith/engine.h>
|
#include <deerith/engine.h>
|
||||||
|
|
||||||
|
#include "runtime/user_definition.h"
|
||||||
|
|
||||||
#ifdef DEERITH_CLIENT
|
#ifdef DEERITH_CLIENT
|
||||||
#include "client/window.h"
|
#include "client/window.h"
|
||||||
#endif
|
#endif
|
||||||
@ -12,6 +14,9 @@ int main(int args_count, const char **args)
|
|||||||
{
|
{
|
||||||
deerith::init_engine();
|
deerith::init_engine();
|
||||||
|
|
||||||
|
deerith::register_user_sync_variables_init_callback(user_sync_variables_init);
|
||||||
|
deerith::register_user_sync_variables_shutdown_callback(user_sync_variables_init);
|
||||||
|
|
||||||
#ifdef DEERITH_CLIENT
|
#ifdef DEERITH_CLIENT
|
||||||
start_window_loop();
|
start_window_loop();
|
||||||
#endif
|
#endif
|
||||||
@ -1,4 +1,5 @@
|
|||||||
#include "common/common.h"
|
#include "runtime/user_definition.h"
|
||||||
|
|
||||||
#include <deerith/universe/user.h>
|
#include <deerith/universe/user.h>
|
||||||
#include <deerith/core/log.h>
|
#include <deerith/core/log.h>
|
||||||
|
|
||||||
@ -17,9 +18,3 @@ void user_sync_variables_shutdown(deerith::user_t &user)
|
|||||||
delete ((sandbox_user_data_t *)user.user_data);
|
delete ((sandbox_user_data_t *)user.user_data);
|
||||||
user.user_data = nullptr;
|
user.user_data = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void client_definition()
|
|
||||||
{
|
|
||||||
deerith::register_user_sync_variables_init_callback(user_sync_variables_init);
|
|
||||||
deerith::register_user_sync_variables_shutdown_callback(user_sync_variables_shutdown);
|
|
||||||
}
|
|
||||||
@ -1,13 +1,10 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <deerith/universe/user.h>
|
#include <deerith/universe/user.h>
|
||||||
#include <deerith/network/sync_variable.h>
|
|
||||||
#include <deerith/universe/universe_definition.h>
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
struct sandbox_user_data_t
|
struct sandbox_user_data_t
|
||||||
{
|
{
|
||||||
deerith::sync_variable_t<glm::vec2> position_sync;
|
deerith::sync_variable_t<glm::vec2> position_sync;
|
||||||
};
|
};
|
||||||
|
|
||||||
void define_user();
|
void user_sync_variables_init(deerith::user_t &user);
|
||||||
|
void user_sync_variables_shutdown(deerith::user_t &user);
|
||||||
Loading…
x
Reference in New Issue
Block a user