#include "DeerRender/Scripting/InternalAPI/Entity.h" #include "DeerCore/Scripting/ScriptEnvironmentContextData.h" #include "DeerCore/EntityEnviroment.h" #include "angelscript.h" namespace Deer { template T& Scripting::getContextEntityComponent(EntityHandle handle) { asIScriptContext* context = asGetActiveContext(); ScriptEnvironmentContextData* environmentData = (ScriptEnvironmentContextData*)context->GetUserData(); if (handle.environmentId == 0) { return environmentData->world->entityEnvironment->getEntity(handle.entityId).getComponent(); } // Implement entity reference of other environments return environmentData->world->entityEnvironment->getEntity(handle.entityId).getComponent(); } // MESH COMPONENT bool Scripting::mesh_isActive(EntityHandle& handle) { MeshComponent& meshComponent = getContextEntityComponent(handle); return meshComponent.active; } void Scripting::mesh_setActive(bool state, EntityHandle& handle) { MeshComponent& meshComponent = getContextEntityComponent(handle); meshComponent.active = state; } bool Scripting::mesh_hasMesh(EntityHandle& handle) { MeshComponent& meshComponent = getContextEntityComponent(handle); return meshComponent.mesh.isValid(); } void Scripting::mesh_clear(EntityHandle& handle) { MeshComponent& meshComponent = getContextEntityComponent(handle); meshComponent.mesh = Resource(); } Resource Scripting::mesh_getMesh(EntityHandle& handle) { MeshComponent& meshComponent = getContextEntityComponent(handle); return meshComponent.mesh; } void Scripting::mesh_setMesh(Resource mesh, EntityHandle& handle) { MeshComponent& meshComponent = getContextEntityComponent(handle); meshComponent.mesh = mesh; } // SHADER bool Scripting::shader_hasShader(EntityHandle& handle) { ShaderComponent& shaderComponent = getContextEntityComponent(handle); return shaderComponent.shader.isValid(); } void Scripting::shader_clear(EntityHandle& handle) { ShaderComponent& shaderComponent = getContextEntityComponent(handle); shaderComponent.shader = Resource(); } Resource Scripting::shader_getShader(EntityHandle& handle) { ShaderComponent& shaderComponent = getContextEntityComponent(handle); return shaderComponent.shader; } void Scripting::shader_setShader(Resource shader, EntityHandle& handle) { ShaderComponent& shaderComponent = getContextEntityComponent(handle); shaderComponent.shader = shader; } Resource Scripting::shader_getTexture(EntityHandle& handle) { ShaderComponent& shaderComponent = getContextEntityComponent(handle); return shaderComponent.texture; } void Scripting::shader_setTexture(Resource texture, EntityHandle& handle) { ShaderComponent& shaderComponent = getContextEntityComponent(handle); shaderComponent.texture = texture; } // CAMERA float Scripting::camera_getFov(EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); return cameraComponent.fov; } float Scripting::camera_getAspectRation(EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); return cameraComponent.aspect; } float Scripting::camera_getNearZ(EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); return cameraComponent.nearZ; } float Scripting::camera_getFarZ(EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); return cameraComponent.farZ; } void Scripting::camera_setFov(float fov, EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); cameraComponent.fov = fov; } void Scripting::camera_setAspectRation(float ratio, EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); cameraComponent.aspect = ratio; } void Scripting::camera_setNearZ(float nearZ, EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); cameraComponent.nearZ = nearZ; } void Scripting::camera_setFarZ(float farZ, EntityHandle& handle) { CameraComponent& cameraComponent = getContextEntityComponent(handle); cameraComponent.farZ = farZ; } } // namespace Deer