76 lines
4.1 KiB
C++
76 lines
4.1 KiB
C++
#include "DeerCore/Scripting/Helpers.h"
|
|
#include "DeerRender/Scripting.h"
|
|
#include "DeerRender/Scripting/InternalAPI/Resources.h"
|
|
|
|
#include "DeerRender/FrameBuffer.h"
|
|
#include "DeerRender/Mesh.h"
|
|
#include "DeerRender/Resource.h"
|
|
#include "DeerRender/Shader.h"
|
|
#include "DeerRender/Texture.h"
|
|
#include "angelscript.h"
|
|
|
|
namespace Deer {
|
|
namespace Scripting {
|
|
extern asIScriptEngine* scriptEngine;
|
|
|
|
void registerResources();
|
|
|
|
void registerResourceStructs();
|
|
void registerResourceFunctions();
|
|
|
|
template <class T>
|
|
void registerResourceBasics(const char* objName) {
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, objName, "bool isValid() const", static_cast<bool (*)(Resource<T>&)>(&resource_isValid<T>));
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, objName, "string get_name() const property", static_cast<std::string (*)(Resource<T>&)>(&resource_getName<T>));
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, objName, "string get_path() const property", static_cast<std::string (*)(Resource<T>&)>(&resource_getPath<T>));
|
|
}
|
|
} // namespace Scripting
|
|
|
|
void Scripting::registerResourceStructs() {
|
|
AS_CHECK(scriptEngine->RegisterObjectType("GPUMesh", sizeof(Resource<GPUMesh>), asOBJ_VALUE | asOBJ_POD | asOBJ_APP_CLASS_ALLINTS | asGetTypeTraits<Resource<GPUMesh>>()));
|
|
AS_CHECK(scriptEngine->RegisterObjectType("Shader", sizeof(Resource<Shader>), asOBJ_VALUE | asOBJ_POD | asOBJ_APP_CLASS_ALLINTS | asGetTypeTraits<Resource<Shader>>()));
|
|
AS_CHECK(scriptEngine->RegisterObjectType("Texture", sizeof(Resource<Texture>), asOBJ_VALUE | asOBJ_POD | asOBJ_APP_CLASS_ALLINTS | asGetTypeTraits<Resource<Texture>>()));
|
|
AS_CHECK(scriptEngine->RegisterObjectType("FrameBuffer", sizeof(Resource<FrameBuffer>), asOBJ_VALUE | asOBJ_POD | asOBJ_APP_CLASS_ALLINTS | asGetTypeTraits<Resource<FrameBuffer>>()));
|
|
}
|
|
int frameBuffer_getWidth(Resource<FrameBuffer>&);
|
|
int frameBuffer_getHeight(Resource<FrameBuffer>&);
|
|
void frameBuffer_clearRGBA(int, int, int, int, Resource<FrameBuffer>&);
|
|
bool frameBuffer_isValid(Resource<FrameBuffer>&);
|
|
void frameBuffer_resize(int, int, Resource<FrameBuffer>&);
|
|
|
|
Resource<FrameBuffer> createFrameBuffer(const std::string name, int sixeX, int sizeY);
|
|
|
|
void Scripting::registerResourceFunctions() {
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "FrameBuffer", "int get_width() const property", frameBuffer_getWidth);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "FrameBuffer", "int get_height() const property", frameBuffer_getHeight);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "FrameBuffer", "bool isValid()", frameBuffer_isValid);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "FrameBuffer", "void resize(int, int)", frameBuffer_resize);
|
|
REGISTER_EXT_OBJECT_METHOD(scriptEngine, "FrameBuffer", "void clearRGBA(int, int, int, int)", frameBuffer_clearRGBA);
|
|
|
|
scriptEngine->SetDefaultNamespace("Resource");
|
|
REGISTER_GLOBAL_FUNC(scriptEngine, "FrameBuffer createFrameBuffer(string&in name, int sizeX, int sizeY)", createFrameBuffer);
|
|
scriptEngine->SetDefaultNamespace("");
|
|
}
|
|
/*
|
|
void ScriptSystem::registerResourceFunctions() {
|
|
scriptEngine->SetDefaultNamespace("Resource");
|
|
REGISTER_GLOBAL_FUNC("GPUMesh loadGPUMesh(string&in path)", ResourceManager<GPUMesh>::loadResource<ResourceDataSource>);
|
|
REGISTER_GLOBAL_FUNC("Shader loadShader(string&in path)", ResourceManager<Shader>::loadResource<ResourceDataSource>);
|
|
REGISTER_GLOBAL_FUNC("Texture loadTexture(string&in path)", ResourceManager<Texture>::loadResource<ResourceDataSource>);
|
|
|
|
REGISTER_GLOBAL_FUNC("array<string>@ getResourceFolders(string&in path)", StudioAPI::getResourceFolders);
|
|
REGISTER_GLOBAL_FUNC("array<string>@ getResourceFiles(string&in path)", StudioAPI::getResourceFiles);
|
|
REGISTER_GLOBAL_FUNC("ResourceType getResourceType(string&in path)", StudioAPI::getResourceType);
|
|
scriptEngine->SetDefaultNamespace("");
|
|
}
|
|
*/
|
|
|
|
void Scripting::registerResources() {
|
|
registerResourceStructs();
|
|
registerResourceBasics<GPUMesh>("GPUMesh");
|
|
registerResourceBasics<Shader>("Shader");
|
|
registerResourceBasics<Texture>("Texture");
|
|
registerResourceBasics<FrameBuffer>("FrameBuffer");
|
|
registerResourceFunctions();
|
|
}
|
|
} // namespace Deer
|