add 'on_physics_update' entity event
This commit is contained in:
@@ -130,6 +130,7 @@ namespace scripting {
|
||||
void on_entity_fall(const Entity& entity);
|
||||
void on_entity_save(const Entity& entity);
|
||||
void on_entities_update(int tps, int parts, int part);
|
||||
void on_entities_physics_update(int tps, int parts, int part);
|
||||
void on_entities_render(float delta);
|
||||
void on_sensor_enter(const Entity& entity, size_t index, entityid_t oid);
|
||||
void on_sensor_exit(const Entity& entity, size_t index, entityid_t oid);
|
||||
|
||||
@@ -279,6 +279,16 @@ void scripting::on_entities_update(int tps, int parts, int part) {
|
||||
lua::pop(L);
|
||||
}
|
||||
|
||||
void scripting::on_entities_physics_update(int tps, int parts, int part) {
|
||||
auto L = lua::get_main_state();
|
||||
lua::get_from(L, STDCOMP, "physics_update", true);
|
||||
lua::pushinteger(L, tps);
|
||||
lua::pushinteger(L, parts);
|
||||
lua::pushinteger(L, part);
|
||||
lua::call_nothrow(L, 3, 0);
|
||||
lua::pop(L);
|
||||
}
|
||||
|
||||
void scripting::on_entities_render(float delta) {
|
||||
auto L = lua::get_main_state();
|
||||
lua::get_from(L, STDCOMP, "render", true);
|
||||
|
||||
@@ -25,7 +25,10 @@
|
||||
static debug::Logger logger("entities");
|
||||
|
||||
Entities::Entities(Level& level)
|
||||
: level(level), sensorsTickClock(20, 3), updateTickClock(20, 3) {
|
||||
: level(level),
|
||||
sensorsTickClock(20, 3),
|
||||
updateTickClock(20, 3),
|
||||
physicsTickClock(60, 1) {
|
||||
}
|
||||
|
||||
std::optional<Entity> Entities::get(entityid_t id) {
|
||||
@@ -320,6 +323,13 @@ void Entities::update(float delta) {
|
||||
updateTickClock.getPart()
|
||||
);
|
||||
}
|
||||
if (physicsTickClock.update(delta)) {
|
||||
scripting::on_entities_physics_update(
|
||||
physicsTickClock.getTickRate(),
|
||||
physicsTickClock.getParts(),
|
||||
physicsTickClock.getPart()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
static void debug_render_skeleton(
|
||||
|
||||
@@ -39,6 +39,7 @@ class Entities {
|
||||
entityid_t nextID = 1;
|
||||
util::Clock sensorsTickClock;
|
||||
util::Clock updateTickClock;
|
||||
util::Clock physicsTickClock;
|
||||
|
||||
void updateSensors(
|
||||
Rigidbody& body, const Transform& tsf, std::vector<Sensor*>& sensors
|
||||
|
||||
Reference in New Issue
Block a user