Files
ScopEngine/Runtime/Includes/Core/NativeScript.h
Kbz-8 cd7e5ad26f yes
2025-06-16 15:18:27 +02:00

69 lines
3.1 KiB
C++

#ifndef __SCOP_NATIVE_SCRIPT__
#define __SCOP_NATIVE_SCRIPT__
#include <functional>
#include <Core/Script.h>
namespace Scop
{
class NativeActorScript : public ActorScript
{
public:
NativeActorScript(std::function<void(NonOwningPtr<class Actor>)> on_init, std::function<void(NonOwningPtr<class Scene>, NonOwningPtr<class Actor>, class Inputs&, float)> on_update, std::function<void(NonOwningPtr<class Actor>)> on_quit)
: f_on_init(std::move(on_init)), f_on_update(std::move(on_update)), f_on_quit(std::move(on_quit))
{}
inline void OnInit(NonOwningPtr<class Actor> actor) override { if(f_on_init) f_on_init(actor); }
inline void OnUpdate(NonOwningPtr<class Scene> scene, NonOwningPtr<class Actor> actor, class Inputs& input, float delta) override { if(f_on_update) f_on_update(scene, actor, input, delta); }
inline void OnQuit(NonOwningPtr<class Actor> actor) override { if(f_on_quit) f_on_quit(actor); }
~NativeActorScript() = default;
private:
std::function<void(NonOwningPtr<class Actor>)> f_on_init;
std::function<void(NonOwningPtr<class Scene>, NonOwningPtr<class Actor>, class Inputs&, float)> f_on_update;
std::function<void(NonOwningPtr<class Actor>)> f_on_quit;
};
class NativeSpriteScript : public SpriteScript
{
public:
NativeSpriteScript(std::function<void(NonOwningPtr<class Sprite>)> on_init, std::function<void(NonOwningPtr<class Scene>, NonOwningPtr<class Sprite>, class Inputs&, float)> on_update, std::function<void(NonOwningPtr<class Sprite>)> on_quit)
: f_on_init(std::move(on_init)), f_on_update(std::move(on_update)), f_on_quit(std::move(on_quit))
{}
inline void OnInit(NonOwningPtr<class Sprite> sprite) override { if(f_on_init) f_on_init(sprite); }
inline void OnUpdate(NonOwningPtr<class Scene> scene, NonOwningPtr<class Sprite> sprite, class Inputs& input, float delta) override { if(f_on_update) f_on_update(scene, sprite, input, delta); }
inline void OnQuit(NonOwningPtr<class Sprite> sprite) override { if(f_on_quit) f_on_quit(sprite); }
~NativeSpriteScript() = default;
private:
std::function<void(NonOwningPtr<class Sprite>)> f_on_init;
std::function<void(NonOwningPtr<class Scene>, NonOwningPtr<class Sprite>, class Inputs&, float)> f_on_update;
std::function<void(NonOwningPtr<class Sprite>)> f_on_quit;
};
class NativeNarratorScript : public NarratorScript
{
public:
NativeNarratorScript(std::function<void()> on_init, std::function<void(NonOwningPtr<class Scene>, class Inputs&, float)> on_update, std::function<void()> on_quit)
: f_on_init(std::move(on_init)), f_on_update(std::move(on_update)), f_on_quit(std::move(on_quit))
{}
inline void OnInit() override { if(f_on_init) f_on_init(); }
inline void OnUpdate(NonOwningPtr<class Scene> scene, class Inputs& input, float delta) override { if(f_on_update) f_on_update(scene, input, delta); }
inline void OnQuit() override { if(f_on_quit) f_on_quit(); }
~NativeNarratorScript() = default;
private:
std::function<void()> f_on_init;
std::function<void(NonOwningPtr<class Scene>, class Inputs&, float)> f_on_update;
std::function<void()> f_on_quit;
};
}
#endif