LuaFile.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // Copyright (c) 2008-2022 the Urho3D project
  2. // License: MIT
  3. #pragma once
  4. #include "../Container/ArrayPtr.h"
  5. #include "../Resource/Resource.h"
  6. struct lua_State;
  7. namespace Urho3D
  8. {
  9. /// Lua file.
  10. class URHO3D_API LuaFile : public Resource
  11. {
  12. URHO3D_OBJECT(LuaFile, Resource);
  13. public:
  14. /// Construct.
  15. explicit LuaFile(Context* context);
  16. /// Destruct.
  17. ~LuaFile() override;
  18. /// Register object factory.
  19. /// @nobind
  20. static void RegisterObject(Context* context);
  21. /// Load resource from stream. May be called from a worker thread. Return true if successful.
  22. bool BeginLoad(Deserializer& source) override;
  23. /// Save resource. Return true if successful.
  24. bool Save(Serializer& dest) const override;
  25. /// Load buffer as chunk. Return true if the resource is successfully loaded as a Lua function on top of the stack.
  26. bool LoadChunk(lua_State* luaState);
  27. /// Load buffer as chunk and execute. Return true if successful.
  28. bool LoadAndExecute(lua_State* luaState);
  29. private:
  30. /// File size.
  31. unsigned size_;
  32. /// File data.
  33. SharedArrayPtr<char> data_;
  34. /// Has loaded.
  35. bool hasLoaded_;
  36. /// Has executed.
  37. bool hasExecuted_;
  38. };
  39. }