19void internal_m2n_log_trace(
const std::string& message,
const std::string& func,
const std::string& file,
int line)
24void internal_m2n_log_info(
const std::string& message,
const std::string& func,
const std::string& file,
int line)
29void internal_m2n_log_warning(
const std::string& message,
const std::string& func,
const std::string& file,
int line)
34void internal_m2n_log_error(
const std::string& message,
const std::string& func,
const std::string& file,
int line)
41void internal_m2n_application_quit()
48 auto& ev = ctx.get_cached<events>();
49 ctx.get_cached<play_mode>().set_active(ctx,
false);
55void internal_m2n_set_time_scale(
float scale)
58 auto&
sim = ctx.get_cached<simulation>();
62void internal_m2n_profiler_add_record(
const std::string&
name,
float time_ms)
67 profiler->add_record(
name, time_ms);
71auto m2n_test_uuid(
const hpp::uuid& uid) -> hpp::uuid
73 APPLOG_INFO(
"{}:: From C# {}", __func__, hpp::to_string(uid));
76 APPLOG_INFO(
"{}:: New C++ {}", __func__, hpp::to_string(newuid));
81auto internal_m2n_layers_layer_to_name(
int layer) ->
const std::string&
84 auto& csettings = ctx.get<settings>();
86 if(
layer >= csettings.layer.layers.size())
88 dotnet::raise_exception(
"System",
"Exception", fmt::format(
"Layer index {} is out of bounds.",
layer));
90 static const std::string empty;
93 return csettings.layer.layers[
layer];
96auto internal_m2n_layers_name_to_layer(
const std::string&
name) ->
int
99 auto& csettings = ctx.get<settings>();
101 auto it = std::find(csettings.layer.layers.begin(), csettings.layer.layers.end(),
name);
102 if(it != csettings.layer.layers.end())
104 return static_cast<int>(std::distance(csettings.layer.layers.begin(), it));
117 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Log");
118 reg.add_internal_call(
"internal_m2n_log_trace", dotnet_internal_call(internal_m2n_log_trace));
119 reg.add_internal_call(
"internal_m2n_log_info", dotnet_internal_call(internal_m2n_log_info));
120 reg.add_internal_call(
"internal_m2n_log_warning", dotnet_internal_call(internal_m2n_log_warning));
121 reg.add_internal_call(
"internal_m2n_log_error", dotnet_internal_call(internal_m2n_log_error));
125 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Tests");
126 reg.add_internal_call(
"m2n_test_uuid", dotnet_internal_call(m2n_test_uuid));
130 auto reg = dotnet::internal_call_registry(
"Unravel.Core.LayerMask");
131 reg.add_internal_call(
"internal_m2n_layers_layer_to_name", dotnet_internal_call(internal_m2n_layers_layer_to_name));
132 reg.add_internal_call(
"internal_m2n_layers_name_to_layer", dotnet_internal_call(internal_m2n_layers_name_to_layer));
136 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Application");
137 reg.add_internal_call(
"internal_m2n_application_quit", dotnet_internal_call(internal_m2n_application_quit));
141 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Time");
142 reg.add_internal_call(
"internal_m2n_set_time_scale", dotnet_internal_call(internal_m2n_set_time_scale));
146 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Profiler");
147 reg.add_internal_call(
"internal_m2n_profiler_add_record", dotnet_internal_call(internal_m2n_profiler_add_record));
151 auto reg = dotnet::internal_call_registry(
"Unravel.Core.GCMonitor");
152 reg.add_internal_call(
"internal_m2n_get_dotnet_heap_size", dotnet_internal_call(dotnet::gc_get_heap_size));
153 reg.add_internal_call(
"internal_m2n_get_dotnet_used_size", dotnet_internal_call(dotnet::gc_get_used_size));
#define APPLOG_INFO_LOC(FILE_LOC, LINE_LOC, FUNC_LOC,...)
#define APPLOG_WARNING_LOC(FILE_LOC, LINE_LOC, FUNC_LOC,...)
#define APPLOG_ERROR_LOC(FILE_LOC, LINE_LOC, FUNC_LOC,...)
#define APPLOG_TRACE_LOC(FILE_LOC, LINE_LOC, FUNC_LOC,...)
#define APPLOG_TRACE(...)
auto queue(seq_action action, const seq_scope_policy &scope_policy, hpp::source_location location) -> seq_id_t
Queues a new action.
auto delay(const duration_t &duration, const sentinel_t &sentinel) -> seq_action
Creates a delay action.
auto get_app_profiler() -> performance_profiler *
auto generate_uuid() -> hpp::uuid
void register_core_runtime_script_bindings()
std::vector< float > scale
static auto context() -> rtti::context &