17void internal_m2n_load_scene(
const std::string& key)
24 auto& ec = ctx.get_cached<ecs>();
25 auto& am = ctx.get_cached<asset_manager>();
27 ec.get_scene().load_from(am.get_asset<scene_prefab>(key));
33void internal_m2n_load_scene_uid(
const hpp::uuid& uid)
40 auto& ec = ctx.get_cached<ecs>();
41 auto& am = ctx.get_cached<asset_manager>();
43 ec.get_scene().load_from(am.get_asset<scene_prefab>(uid));
49void internal_m2n_reload_scene()
56 auto& ec = ctx.get_cached<ecs>();
58 ec.get_scene().reload();
64void internal_m2n_create_scene(
const dotnet::object& this_ptr)
66 dotnet::ignore(this_ptr);
69void internal_m2n_destroy_scene(
const dotnet::object& this_ptr)
71 dotnet::ignore(this_ptr);
74auto internal_m2n_create_entity(
const std::string&
tag) -> entt::entity
77 auto& ec = ctx.get_cached<ecs>();
79 auto e = ec.get_scene().create_entity(
tag);
84auto internal_m2n_create_entity_from_prefab_uid(
const hpp::uuid& uid) -> entt::entity
87 auto& ec = ctx.get_cached<ecs>();
88 auto& am = ctx.get_cached<asset_manager>();
90 auto pfb = am.get_asset<prefab>(uid);
91 auto e = ec.get_scene().instantiate(pfb);
96auto internal_m2n_create_entity_from_prefab_key(
const std::string& key) -> entt::entity
99 auto& ec = ctx.get_cached<ecs>();
100 auto& am = ctx.get_cached<asset_manager>();
102 auto pfb = am.get_asset<prefab>(
key);
103 auto e = ec.get_scene().instantiate(pfb);
108auto internal_m2n_create_entity_from_prefab_uid_with_parent(
const hpp::uuid& uid, entt::entity parent) -> entt::entity
111 auto& ec = ctx.get_cached<ecs>();
112 auto& am = ctx.get_cached<asset_manager>();
114 auto pfb = am.get_asset<prefab>(uid);
116 auto e = ec.get_scene().instantiate(pfb, parent_handle);
121auto internal_m2n_create_entity_from_prefab_key_with_parent(
const std::string& key, entt::entity parent) -> entt::entity
124 auto& ec = ctx.get_cached<ecs>();
125 auto& am = ctx.get_cached<asset_manager>();
127 auto pfb = am.get_asset<prefab>(
key);
129 auto e = ec.get_scene().instantiate(pfb, parent_handle);
134auto internal_m2n_create_entity_from_prefab_uid_with_position(
const hpp::uuid& uid,
const math::vec3&
position) -> entt::entity
137 auto& ec = ctx.get_cached<ecs>();
138 auto& am = ctx.get_cached<asset_manager>();
140 auto pfb = am.get_asset<prefab>(uid);
141 auto e = ec.get_scene().instantiate(pfb);
143 if(
auto comp =
e.try_get<transform_component>())
145 comp->set_position_global(
position);
151auto internal_m2n_create_entity_from_prefab_key_with_position(
const std::string& key,
const math::vec3&
position) -> entt::entity
154 auto& ec = ctx.get_cached<ecs>();
155 auto& am = ctx.get_cached<asset_manager>();
157 auto pfb = am.get_asset<prefab>(
key);
158 auto e = ec.get_scene().instantiate(pfb);
160 if(
auto comp =
e.try_get<transform_component>())
162 comp->set_position_global(
position);
168auto internal_m2n_create_entity_from_prefab_uid_with_position_parent(
const hpp::uuid& uid,
170 entt::entity parent) -> entt::entity
173 auto& ec = ctx.get_cached<ecs>();
174 auto& am = ctx.get_cached<asset_manager>();
176 auto pfb = am.get_asset<prefab>(uid);
178 auto e = ec.get_scene().instantiate(pfb, parent_handle);
180 if(
auto comp =
e.try_get<transform_component>())
182 comp->set_position_global(
position);
188auto internal_m2n_create_entity_from_prefab_key_with_position_parent(
const std::string& key,
190 entt::entity parent) -> entt::entity
193 auto& ec = ctx.get_cached<ecs>();
194 auto& am = ctx.get_cached<asset_manager>();
196 auto pfb = am.get_asset<prefab>(
key);
198 auto e = ec.get_scene().instantiate(pfb, parent_handle);
200 if(
auto comp =
e.try_get<transform_component>())
202 comp->set_position_global(
position);
208auto internal_m2n_create_entity_from_prefab_uid_with_position_rotation_parent(
const hpp::uuid& uid,
211 entt::entity parent) -> entt::entity
214 auto& ec = ctx.get_cached<ecs>();
215 auto& am = ctx.get_cached<asset_manager>();
217 auto pfb = am.get_asset<prefab>(uid);
219 auto e = ec.get_scene().instantiate(pfb, parent_handle);
221 if(
auto comp =
e.try_get<transform_component>())
223 comp->set_position_global(
position);
224 comp->set_rotation_global(
rotation);
230auto internal_m2n_create_entity_from_prefab_key_with_position_rotation_parent(
const std::string& key,
233 entt::entity parent) -> entt::entity
236 auto& ec = ctx.get_cached<ecs>();
237 auto& am = ctx.get_cached<asset_manager>();
239 auto pfb = am.get_asset<prefab>(
key);
241 auto e = ec.get_scene().instantiate(pfb, parent_handle);
243 if(
auto comp =
e.try_get<transform_component>())
245 comp->set_position_global(
position);
246 comp->set_rotation_global(
rotation);
252auto internal_m2n_clone_entity(entt::entity
id) -> entt::entity
258 auto& ec = ctx.get_cached<ecs>();
260 auto cloned = ec.get_scene().clone_entity(e);
261 return cloned.entity();
268auto internal_m2n_destroy_entity_immediate(entt::entity
id) ->
bool
279auto internal_m2n_destroy_entity(entt::entity
id,
float seconds) ->
bool
281 seconds = std::max(0.0f, seconds);
284 auto dur = std::chrono::duration_cast<seq::duration_t>(secs);
287 delay.on_end.connect(
290 internal_m2n_destroy_entity_immediate(
id);
298auto internal_m2n_is_entity_valid(entt::entity
id) ->
bool
301 bool valid =
e.valid();
305auto internal_m2n_find_entity_by_name(
const std::string&
name) -> entt::entity
308 auto& ec = ctx.get_cached<ecs>();
309 auto& scn = ec.get_scene();
310 auto& registry = *scn.registry;
312 auto view = registry.view<tag_component>();
314 for(
const auto& e :
view)
316 if(registry.get<tag_component>(e).name ==
name)
326auto internal_m2n_find_entities_by_name(
const std::string&
name) -> hpp::small_vector<entt::entity>
329 auto& ec = ctx.get_cached<ecs>();
330 auto& scn = ec.get_scene();
331 auto& registry = *scn.registry;
333 auto view = registry.view<tag_component>();
335 hpp::small_vector<entt::entity> result;
336 for(
const auto& e :
view)
338 if(registry.get<tag_component>(e).name ==
name)
340 result.emplace_back(e);
347auto internal_m2n_find_entity_by_tag(
const std::string&
tag) -> entt::entity
350 auto& ec = ctx.get_cached<ecs>();
351 auto& scn = ec.get_scene();
352 auto& registry = *scn.registry;
354 auto view = registry.view<tag_component>();
356 for(
const auto& e :
view)
358 if(registry.get<tag_component>(e).tag ==
tag)
368auto internal_m2n_find_entities_by_tag(
const std::string&
tag) -> hpp::small_vector<entt::entity>
371 auto& ec = ctx.get_cached<ecs>();
372 auto& scn = ec.get_scene();
373 auto& registry = *scn.registry;
375 auto view = registry.view<tag_component>();
377 hpp::small_vector<entt::entity> result;
378 for(
const auto& e :
view)
380 if(registry.get<tag_component>(e).tag ==
tag)
382 result.emplace_back(e);
389struct native_comp_lut
395 std::function<bool(
size_t type_hash, entt::handle e)>
add_native;
396 std::function<bool(
size_t type_hash, entt::handle e)>
has_native;
399 static auto get_registry() -> std::unordered_map<size_t, native_comp_lut>&
401 static std::unordered_map<size_t, native_comp_lut> lut;
405 static auto get_action_table(
size_t type_hash) ->
const native_comp_lut&
407 const auto& registry = get_registry();
408 auto it = registry.find(type_hash);
409 if(it != registry.end())
414 static const native_comp_lut empty;
419 static auto register_native_component(
const std::string&
name)
421 size_t hash = dotnet::type::get_hash(
name);
423 lut.add_native = [hash](
size_t type_hash, entt::handle
e)
425 if(type_hash == hash)
427 auto& native =
e.get_or_emplace<T>();
434 lut.has_native = [hash](
size_t type_hash, entt::handle
e)
436 if(type_hash == hash)
438 return e.all_of<T>();
444 lut.remove_native = [hash](
size_t type_hash, entt::handle
e)
446 if(type_hash == hash)
448 return e.remove<T>() > 0;
454 get_registry()[hash] = lut;
458int register_componetns = []()
460 native_comp_lut::register_native_component<transform_component>(
"Unravel.Core.TransformComponent");
461 native_comp_lut::register_native_component<id_component>(
"Unravel.Core.IdComponent");
462 native_comp_lut::register_native_component<model_component>(
"Unravel.Core.ModelComponent");
463 native_comp_lut::register_native_component<camera_component>(
"Unravel.Core.CameraComponent");
464 native_comp_lut::register_native_component<light_component>(
"Unravel.Core.LightComponent");
465 native_comp_lut::register_native_component<reflection_probe_component>(
"Unravel.Core.ReflectionProbeComponent");
466 native_comp_lut::register_native_component<physics_component>(
"Unravel.Core.PhysicsComponent");
467 native_comp_lut::register_native_component<animation_component>(
"Unravel.Core.AnimationComponent");
468 native_comp_lut::register_native_component<audio_listener_component>(
"Unravel.Core.AudioListenerComponent");
469 native_comp_lut::register_native_component<audio_source_component>(
"Unravel.Core.AudioSourceComponent");
470 native_comp_lut::register_native_component<bone_component>(
"Unravel.Core.BoneComponent");
471 native_comp_lut::register_native_component<submesh_component>(
"Unravel.Core.SubmeshComponent");
472 native_comp_lut::register_native_component<text_component>(
"Unravel.Core.TextComponent");
473 native_comp_lut::register_native_component<particle_emitter_component>(
"Unravel.Core.ParticleEmitterComponent");
474 native_comp_lut::register_native_component<ui_document_component>(
"Unravel.Core.UIDocumentComponent");
475 native_comp_lut::register_native_component<character_controller_component>(
"Unravel.Core.CharacterControllerComponent");
480auto internal_add_native_component(
const dotnet::type&
type, entt::handle e, script_component& script_comp)
485 const auto& type_hash =
type.get_hash();
488 const auto& lut = native_comp_lut::get_action_table(type_hash);
491 add = lut.add_native(type_hash, e);
496 auto comp = script_comp.get_native_component(
type);
500 comp = script_comp.add_native_component(
type);
502 return comp.pinned->get_object();
508auto internal_get_native_component_impl(
const dotnet::type&
type,
510 script_component& script_comp,
511 bool exists) -> dotnet::object
513 auto comp = script_comp.get_native_component(
type);
518 comp = script_comp.add_native_component(
type);
520 return comp.pinned->get_object();
525 script_comp.remove_native_component(comp.pinned->get_object());
531auto internal_get_native_component(
const dotnet::type&
type, entt::handle e, script_component& script_comp)
534 const auto& type_hash =
type.get_hash();
540 const auto& lut = native_comp_lut::get_action_table(type_hash);
543 has = lut.has_native(type_hash, e);
549 return internal_get_native_component_impl(
type, e, script_comp, has);
555auto internal_remove_native_component(
const dotnet::object& obj, entt::handle e, script_component& script_comp)
558 const auto&
type = obj.get_type();
559 const auto& type_hash =
type.get_hash();
563 bool removed =
false;
564 const auto& lut = native_comp_lut::get_action_table(type_hash);
567 removed = lut.remove_native(type_hash, e);
572 return script_comp.remove_native_component(obj);
578auto internal_remove_native_component(
const dotnet::type&
type, entt::handle e, script_component& script_comp)
581 const auto& type_hash =
type.get_hash();
585 bool removed =
false;
586 const auto& lut = native_comp_lut::get_action_table(type_hash);
589 removed = lut.remove_native(type_hash, e);
594 return script_comp.remove_native_component(
type);
600auto internal_m2n_add_component(entt::entity
id,
const dotnet::type&
type) -> dotnet::object
608 auto& script_comp =
e.get_or_emplace<script_component>();
610 if(
auto native_comp = internal_add_native_component(
type, e, script_comp))
615 auto component = script_comp.add_script_component(
type);
616 return component.pinned->get_object();
619auto internal_m2n_get_component(entt::entity
id,
const dotnet::type&
type) -> dotnet::object
628 auto& script_comp =
e.get_or_emplace<script_component>();
630 if(
auto native_comp = internal_get_native_component(
type, e, script_comp))
635 auto component = script_comp.get_script_component(
type);
641 if(!component.is_marked_for_destroy())
643 return component.pinned->get_object();
651auto internal_m2n_get_components_impl(entt::entity
id,
const dotnet::type&
type) -> std::vector<dotnet::object>
660 auto& script_comp =
e.get_or_emplace<script_component>();
662 if(
auto native_comp = internal_get_native_component(
type, e, script_comp))
664 return {native_comp};
667 return script_comp.get_script_components(
type);
670auto internal_m2n_get_components(entt::entity
id,
const dotnet::type&
type) -> dotnet::array<dotnet::object>
672 auto components = internal_m2n_get_components_impl(
id,
type);
673 return dotnet::array<dotnet::object>(components,
type);
676auto internal_m2n_get_component_in_children(entt::entity
id,
const dotnet::type&
type) -> dotnet::object
678 auto comp = internal_m2n_get_component(
id,
type);
685 const auto&
children = comp->get_children();
688 if(
auto result = internal_m2n_get_component(child,
type))
698auto internal_m2n_get_components_in_children(entt::entity
id,
const dotnet::type&
type)
699 -> dotnet::array<dotnet::object>
701 auto components = internal_m2n_get_components_impl(
id,
type);
704 const auto&
children = comp->get_children();
707 auto child_components = internal_m2n_get_components_impl(child,
type);
708 std::move(child_components.begin(), child_components.end(), std::back_inserter(components));
711 return dotnet::array<dotnet::object>(components,
type);
714auto internal_m2n_get_transform_component(entt::entity
id,
const dotnet::type&
type) -> dotnet::object
723 auto& script_comp =
e.get_or_emplace<script_component>();
724 return internal_get_native_component_impl(
type, e, script_comp,
true);
727auto internal_m2n_get_name(entt::entity
id) ->
const std::string&
734 static const std::string empty;
738void internal_m2n_set_name(entt::entity
id,
const std::string&
name)
746auto internal_m2n_get_tag(entt::entity
id) ->
const std::string&
753 static const std::string empty;
757void internal_m2n_set_tag(entt::entity
id,
const std::string&
tag)
765auto internal_m2n_get_layers(entt::entity
id) ->
int
769 return comp->layers.mask;
775void internal_m2n_set_layers(entt::entity
id,
int mask)
779 comp->layers.mask =
mask;
783auto internal_m2n_get_active_global(entt::entity
id) ->
bool
787 return comp->is_active_global();
793auto internal_m2n_get_active_local(entt::entity
id) ->
bool
797 return comp->is_active();
803void internal_m2n_set_active_local(entt::entity
id,
bool active)
807 comp->set_active(active);
811auto internal_m2n_has_component(entt::entity
id,
const dotnet::type&
type) ->
bool
813 auto comp = internal_m2n_get_component(
id,
type);
818auto internal_m2n_find_entities_with_component(
const dotnet::type& component_type) -> hpp::small_vector<entt::entity>
821 auto& ec = ctx.get_cached<ecs>();
822 auto& scn = ec.get_scene();
823 auto& registry = *scn.registry;
825 hpp::small_vector<entt::entity> result;
828 for(
auto [
entity] : registry.storage<entt::entity>().each())
830 if(registry.valid(
entity))
833 auto comp = internal_m2n_get_component(
entity, component_type);
836 result.emplace_back(
entity);
844auto internal_m2n_find_entities_with_components(
const std::vector<dotnet::type>& component_types) -> hpp::small_vector<entt::entity>
847 auto& ec = ctx.get_cached<ecs>();
848 auto& scn = ec.get_scene();
849 auto& registry = *scn.registry;
851 hpp::small_vector<entt::entity> result;
853 if(component_types.empty())
859 for(
auto [
entity] : registry.storage<entt::entity>().each())
861 if(registry.valid(
entity))
863 bool has_all_components =
true;
866 for(
const auto& component_type : component_types)
868 auto comp = internal_m2n_get_component(
entity, component_type);
871 has_all_components =
false;
876 if(has_all_components)
878 result.emplace_back(
entity);
886auto internal_m2n_remove_component_instance(entt::entity
id,
const dotnet::object& comp) ->
bool
894 auto& script_comp =
e.get_or_emplace<script_component>();
896 if(internal_remove_native_component(comp, e, script_comp))
901 return script_comp.remove_script_component(comp);
904auto internal_m2n_remove_component_instance_delay(entt::entity
id,
const dotnet::object& comp,
float seconds_delay)
908 auto dur = std::chrono::duration_cast<seq::duration_t>(secs);
911 delay.on_end.connect(
914 internal_m2n_remove_component_instance(
id, comp);
922auto internal_m2n_remove_component(entt::entity
id,
const dotnet::type&
type) ->
bool
930 auto& script_comp =
e.get_or_emplace<script_component>();
932 if(internal_remove_native_component(
type, e, script_comp))
937 return script_comp.remove_script_component(
type);
940auto internal_m2n_remove_component_delay(entt::entity
id,
const dotnet::type&
type,
float seconds_delay) ->
bool
943 auto dur = std::chrono::duration_cast<seq::duration_t>(secs);
946 delay.on_end.connect(
949 internal_m2n_remove_component(
id,
type);
977 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Scene");
978 reg.add_internal_call(
"internal_m2n_load_scene", dotnet_internal_call(internal_m2n_load_scene));
979 reg.add_internal_call(
"internal_m2n_load_scene_uid", dotnet_internal_call(internal_m2n_load_scene_uid));
980 reg.add_internal_call(
"internal_m2n_reload_scene", dotnet_internal_call(internal_m2n_reload_scene));
981 reg.add_internal_call(
"internal_m2n_create_scene", dotnet_internal_call(internal_m2n_create_scene));
982 reg.add_internal_call(
"internal_m2n_destroy_scene", dotnet_internal_call(internal_m2n_destroy_scene));
983 reg.add_internal_call(
"internal_m2n_create_entity", dotnet_internal_call(internal_m2n_create_entity));
984 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_uid",
985 dotnet_internal_call(internal_m2n_create_entity_from_prefab_uid));
986 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_key",
987 dotnet_internal_call(internal_m2n_create_entity_from_prefab_key));
988 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_uid_with_parent",
989 dotnet_internal_call(internal_m2n_create_entity_from_prefab_uid_with_parent));
990 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_key_with_parent",
991 dotnet_internal_call(internal_m2n_create_entity_from_prefab_key_with_parent));
992 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_uid_with_position",
993 dotnet_internal_call(internal_m2n_create_entity_from_prefab_uid_with_position));
994 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_key_with_position",
995 dotnet_internal_call(internal_m2n_create_entity_from_prefab_key_with_position));
996 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_uid_with_position_parent",
997 dotnet_internal_call(internal_m2n_create_entity_from_prefab_uid_with_position_parent));
998 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_key_with_position_parent",
999 dotnet_internal_call(internal_m2n_create_entity_from_prefab_key_with_position_parent));
1000 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_uid_with_position_rotation_parent",
1001 dotnet_internal_call(internal_m2n_create_entity_from_prefab_uid_with_position_rotation_parent));
1002 reg.add_internal_call(
"internal_m2n_create_entity_from_prefab_key_with_position_rotation_parent",
1003 dotnet_internal_call(internal_m2n_create_entity_from_prefab_key_with_position_rotation_parent));
1004 reg.add_internal_call(
"internal_m2n_clone_entity", dotnet_internal_call(internal_m2n_clone_entity));
1005 reg.add_internal_call(
"internal_m2n_destroy_entity", dotnet_internal_call(internal_m2n_destroy_entity));
1006 reg.add_internal_call(
"internal_m2n_destroy_entity_immediate",
1007 dotnet_internal_call(internal_m2n_destroy_entity_immediate));
1009 reg.add_internal_call(
"internal_m2n_is_entity_valid", dotnet_internal_call(internal_m2n_is_entity_valid));
1010 reg.add_internal_call(
"internal_m2n_find_entity_by_name", dotnet_internal_call(internal_m2n_find_entity_by_name));
1011 reg.add_internal_call(
"internal_m2n_find_entities_by_name", dotnet_internal_call(internal_m2n_find_entities_by_name));
1012 reg.add_internal_call(
"internal_m2n_find_entity_by_tag", dotnet_internal_call(internal_m2n_find_entity_by_tag));
1013 reg.add_internal_call(
"internal_m2n_find_entities_by_tag", dotnet_internal_call(internal_m2n_find_entities_by_tag));
1014 reg.add_internal_call(
"internal_m2n_find_entities_with_component", dotnet_internal_call(internal_m2n_find_entities_with_component));
1015 reg.add_internal_call(
"internal_m2n_find_entities_with_components", dotnet_internal_call(internal_m2n_find_entities_with_components));
1022 auto reg = dotnet::internal_call_registry(
"Unravel.Core.Entity");
1023 reg.add_internal_call(
"internal_m2n_add_component", dotnet_internal_call(internal_m2n_add_component));
1024 reg.add_internal_call(
"internal_m2n_get_component", dotnet_internal_call(internal_m2n_get_component));
1025 reg.add_internal_call(
"internal_m2n_get_component_in_children",
1026 dotnet_internal_call(internal_m2n_get_component_in_children));
1027 reg.add_internal_call(
"internal_m2n_has_component", dotnet_internal_call(internal_m2n_has_component));
1028 reg.add_internal_call(
"internal_m2n_get_components", dotnet_internal_call(internal_m2n_get_components));
1029 reg.add_internal_call(
"internal_m2n_get_components_in_children",
1030 dotnet_internal_call(internal_m2n_get_components_in_children));
1032 reg.add_internal_call(
"internal_m2n_remove_component_instance",
1033 dotnet_internal_call(internal_m2n_remove_component_instance));
1034 reg.add_internal_call(
"internal_m2n_remove_component_instance_delay",
1035 dotnet_internal_call(internal_m2n_remove_component_instance_delay));
1037 reg.add_internal_call(
"internal_m2n_remove_component", dotnet_internal_call(internal_m2n_remove_component));
1038 reg.add_internal_call(
"internal_m2n_remove_component_delay",
1039 dotnet_internal_call(internal_m2n_remove_component_delay));
1041 reg.add_internal_call(
"internal_m2n_get_transform_component",
1042 dotnet_internal_call(internal_m2n_get_transform_component));
1043 reg.add_internal_call(
"internal_m2n_get_name", dotnet_internal_call(internal_m2n_get_name));
1044 reg.add_internal_call(
"internal_m2n_set_name", dotnet_internal_call(internal_m2n_set_name));
1045 reg.add_internal_call(
"internal_m2n_get_tag", dotnet_internal_call(internal_m2n_get_tag));
1046 reg.add_internal_call(
"internal_m2n_set_tag", dotnet_internal_call(internal_m2n_set_tag));
1047 reg.add_internal_call(
"internal_m2n_get_layers", dotnet_internal_call(internal_m2n_get_layers));
1048 reg.add_internal_call(
"internal_m2n_set_layers", dotnet_internal_call(internal_m2n_set_layers));
1050 reg.add_internal_call(
"internal_m2n_get_active_global", dotnet_internal_call(internal_m2n_get_active_global));
1051 reg.add_internal_call(
"internal_m2n_get_active_local", dotnet_internal_call(internal_m2n_get_active_local));
1052 reg.add_internal_call(
"internal_m2n_set_active_local", dotnet_internal_call(internal_m2n_set_active_local));
std::chrono::duration< float > delta_t
#define APPLOG_TRACE(...)
auto start(seq_action action, const seq_scope_policy &scope_policy, hpp::source_location location) -> seq_id_t
Starts a new action.
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.
@ mask
Hard alpha cutoff; casts cutout shadows.
void register_scene_script_bindings()
void raise_invalid_entity_exception()
auto get_entity_from_id(entt::entity id) -> entt::handle
void register_entity_script_bindings()
auto safe_get_component(entt::entity id) -> T *
bool is_valid(octet_iterator start, octet_iterator end)
std::vector< math::quat > rotation
std::function< bool(size_t type_hash, entt::handle e)> has_native
std::function< bool(size_t type_hash, entt::handle e)> remove_native
std::function< bool(size_t type_hash, entt::handle e)> add_native
static auto context() -> rtti::context &