From 457cdf24489c20f0f9b9b9877bf9e875aa643f91 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Mon, 8 Apr 2024 11:16:28 +0200 Subject: wip --- src/critter-script.cpp | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'src/critter-script.cpp') diff --git a/src/critter-script.cpp b/src/critter-script.cpp index e2355a64..ede5c5d7 100644 --- a/src/critter-script.cpp +++ b/src/critter-script.cpp @@ -1,7 +1,46 @@ -#include "critter-script.hpp" +#include "critter-script.inl" +#include "compat/assert.hpp" namespace floormat { +namespace { +CORRADE_ALWAYS_INLINE +void touch_ptr(const std::shared_ptr& p) +{ + (void)p; +#if fm_ASAN + volatile char foo = *reinterpret_cast(&*p); + (void)foo; +//#else +// fm_debug_assert(p); +#endif +} + +struct empty_critter_script final : critter_script +{ + empty_critter_script(); + void on_init(const std::shared_ptr& c) override; + void on_update(const std::shared_ptr& c, size_t& i, const Ns& dt) override; + void on_destroy(const std::shared_ptr& c, script_destroy_reason reason) override; + void delete_self() noexcept override; +}; + +empty_critter_script::empty_critter_script() : critter_script{nullptr} {} +void empty_critter_script::on_init(const std::shared_ptr& p) { touch_ptr(p); } +void empty_critter_script::on_update(const std::shared_ptr& p, size_t&, const Ns&) { touch_ptr(p); } +void empty_critter_script::on_destroy(const std::shared_ptr& p, script_destroy_reason) { touch_ptr(p); } +void empty_critter_script::delete_self() noexcept {} + +empty_critter_script empty_script_ = {}; + +} // namespace + +critter_script* const critter_script::empty_script = &empty_script_; + +critter_script::critter_script(const std::shared_ptr&) {} +critter_script::~critter_script() noexcept {} + +template class Script; } // namespace floormat -- cgit v1.2.3