#ifndef DMSDK_GAMEOBJECT_SCRIPT_H
#define DMSDK_GAMEOBJECT_SCRIPT_H
extern "C"
{
#include <dmsdk/lua/lua.h>
#include <dmsdk/lua/lauxlib.h>
}
#include <dmsdk/dlib/message.h>
#include <dmsdk/ddf/ddf.h>
#include <dmsdk/gameobject/gameobject.h>
namespace dmMessage {
struct URL;
}
namespace dmGameObject
{
void GetComponentFromLua(lua_State* L, int index, const char* component_type, void** world, void** component, dmMessage::URL* url);
Result PostScriptMessage(const dmDDF::Descriptor* descriptor, const uint8_t* payload, uint32_t payload_size, const dmMessage::URL* sender, const dmMessage::URL* receiver, int function_ref, bool unref_function_after_call);
template <typename TDDFType>
Result PostDDF(const TDDFType* message, const dmMessage::URL* sender, const dmMessage::URL* receiver, int function_ref, bool unref_function_after_call)
{
dmArray<uint8_t> packed_message;
packed_message.SetCapacity(sizeof(TDDFType)); dmDDF::SaveMessageToArray(message, message->m_DDFDescriptor, packed_message);
return PostScriptMessage(message->m_DDFDescriptor, packed_message.Begin(), packed_message.Size(), sender, receiver, function_ref, unref_function_after_call);
}
}
#endif