MetaCore/SandboxProject/Scripts/Source/Mover.cpp
2026-08-07 10:57:07 +08:00

10 lines
1.1 KiB
C++

#include <MetaCoreScripting/MetaCoreScriptSdk.h>
#include <new>
struct Mover {};
static void* CreateMover() noexcept { return new (std::nothrow) Mover; }
static void DestroyMover(void* value) noexcept { delete static_cast<Mover*>(value); }
static const char* UpdateMover(void*, const MetaCoreScriptExecutionContextV1* context, double delta) noexcept { return MetaCoreScriptSdk::Guard([&] { MetaCoreScriptValueV1 speed{}; if(!context->Host->GetField(context->HostContext,context->Object,context->InstanceId,"speed",&speed)) return; MetaCoreScriptValueV1 position{}; if(!context->Host->GetProperty(context->HostContext,context->Object,"Transform","Position",&position)) return; position.Vec3[0]+=speed.NumberValue*delta; context->Host->SetProperty(context->HostContext,context->Object,"Transform","Position",&position); }); }
static const MetaCoreScriptFieldDescriptorV1 MoverFields[]={{"speed","Speed",MetaCoreScriptAbiValue_Float,"1.0"}};
static const MetaCoreScriptBehaviourDescriptorV1 MoverDescriptor={"MetaCoreSample.Mover","Mover",1,1,MoverFields,CreateMover,DestroyMover,nullptr,nullptr,UpdateMover,nullptr,nullptr};
MC_REGISTER_SCRIPT(Mover, MoverDescriptor);