Merge pull request #53227 from Calinou/rename-getornull
Rename RID's `getornull()` to `get_or_null()`
This commit is contained in:
commit
ac7505e277
|
@ -151,7 +151,7 @@ public:
|
||||||
return _allocate_rid();
|
return _allocate_rid();
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ T *getornull(const RID &p_rid, bool p_initialize = false) {
|
_FORCE_INLINE_ T *get_or_null(const RID &p_rid, bool p_initialize = false) {
|
||||||
if (p_rid == RID()) {
|
if (p_rid == RID()) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -210,12 +210,12 @@ public:
|
||||||
return ptr;
|
return ptr;
|
||||||
}
|
}
|
||||||
void initialize_rid(RID p_rid) {
|
void initialize_rid(RID p_rid) {
|
||||||
T *mem = getornull(p_rid, true);
|
T *mem = get_or_null(p_rid, true);
|
||||||
ERR_FAIL_COND(!mem);
|
ERR_FAIL_COND(!mem);
|
||||||
memnew_placement(mem, T);
|
memnew_placement(mem, T);
|
||||||
}
|
}
|
||||||
void initialize_rid(RID p_rid, const T &p_value) {
|
void initialize_rid(RID p_rid, const T &p_value) {
|
||||||
T *mem = getornull(p_rid, true);
|
T *mem = get_or_null(p_rid, true);
|
||||||
ERR_FAIL_COND(!mem);
|
ERR_FAIL_COND(!mem);
|
||||||
memnew_placement(mem, T(p_value));
|
memnew_placement(mem, T(p_value));
|
||||||
}
|
}
|
||||||
|
@ -399,8 +399,8 @@ public:
|
||||||
alloc.initialize_rid(p_rid, p_ptr);
|
alloc.initialize_rid(p_rid, p_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ T *getornull(const RID &p_rid) {
|
_FORCE_INLINE_ T *get_or_null(const RID &p_rid) {
|
||||||
T **ptr = alloc.getornull(p_rid);
|
T **ptr = alloc.get_or_null(p_rid);
|
||||||
if (unlikely(!ptr)) {
|
if (unlikely(!ptr)) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -408,7 +408,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ void replace(const RID &p_rid, T *p_new_ptr) {
|
_FORCE_INLINE_ void replace(const RID &p_rid, T *p_new_ptr) {
|
||||||
T **ptr = alloc.getornull(p_rid);
|
T **ptr = alloc.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND(!ptr);
|
ERR_FAIL_COND(!ptr);
|
||||||
*ptr = p_new_ptr;
|
*ptr = p_new_ptr;
|
||||||
}
|
}
|
||||||
|
@ -469,8 +469,8 @@ public:
|
||||||
alloc.initialize_rid(p_rid, p_ptr);
|
alloc.initialize_rid(p_rid, p_ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ T *getornull(const RID &p_rid) {
|
_FORCE_INLINE_ T *get_or_null(const RID &p_rid) {
|
||||||
return alloc.getornull(p_rid);
|
return alloc.get_or_null(p_rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool owns(const RID &p_rid) {
|
_FORCE_INLINE_ bool owns(const RID &p_rid) {
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
RenderingDeviceVulkan::Buffer *RenderingDeviceVulkan::_get_buffer_from_owner(RID p_buffer, VkPipelineStageFlags &r_stage_mask, VkAccessFlags &r_access_mask, uint32_t p_post_barrier) {
|
RenderingDeviceVulkan::Buffer *RenderingDeviceVulkan::_get_buffer_from_owner(RID p_buffer, VkPipelineStageFlags &r_stage_mask, VkAccessFlags &r_access_mask, uint32_t p_post_barrier) {
|
||||||
Buffer *buffer = nullptr;
|
Buffer *buffer = nullptr;
|
||||||
if (vertex_buffer_owner.owns(p_buffer)) {
|
if (vertex_buffer_owner.owns(p_buffer)) {
|
||||||
buffer = vertex_buffer_owner.getornull(p_buffer);
|
buffer = vertex_buffer_owner.get_or_null(p_buffer);
|
||||||
|
|
||||||
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_INPUT_BIT;
|
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_INPUT_BIT;
|
||||||
r_access_mask |= VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT;
|
r_access_mask |= VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT;
|
||||||
|
@ -64,7 +64,7 @@ RenderingDeviceVulkan::Buffer *RenderingDeviceVulkan::_get_buffer_from_owner(RID
|
||||||
} else if (index_buffer_owner.owns(p_buffer)) {
|
} else if (index_buffer_owner.owns(p_buffer)) {
|
||||||
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_INPUT_BIT;
|
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_INPUT_BIT;
|
||||||
r_access_mask |= VK_ACCESS_INDEX_READ_BIT;
|
r_access_mask |= VK_ACCESS_INDEX_READ_BIT;
|
||||||
buffer = index_buffer_owner.getornull(p_buffer);
|
buffer = index_buffer_owner.get_or_null(p_buffer);
|
||||||
} else if (uniform_buffer_owner.owns(p_buffer)) {
|
} else if (uniform_buffer_owner.owns(p_buffer)) {
|
||||||
if (p_post_barrier & BARRIER_MASK_RASTER) {
|
if (p_post_barrier & BARRIER_MASK_RASTER) {
|
||||||
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||||
|
@ -73,7 +73,7 @@ RenderingDeviceVulkan::Buffer *RenderingDeviceVulkan::_get_buffer_from_owner(RID
|
||||||
r_stage_mask |= VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
|
r_stage_mask |= VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT;
|
||||||
}
|
}
|
||||||
r_access_mask |= VK_ACCESS_UNIFORM_READ_BIT;
|
r_access_mask |= VK_ACCESS_UNIFORM_READ_BIT;
|
||||||
buffer = uniform_buffer_owner.getornull(p_buffer);
|
buffer = uniform_buffer_owner.get_or_null(p_buffer);
|
||||||
} else if (texture_buffer_owner.owns(p_buffer)) {
|
} else if (texture_buffer_owner.owns(p_buffer)) {
|
||||||
if (p_post_barrier & BARRIER_MASK_RASTER) {
|
if (p_post_barrier & BARRIER_MASK_RASTER) {
|
||||||
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||||
|
@ -84,9 +84,9 @@ RenderingDeviceVulkan::Buffer *RenderingDeviceVulkan::_get_buffer_from_owner(RID
|
||||||
r_access_mask |= VK_ACCESS_SHADER_READ_BIT;
|
r_access_mask |= VK_ACCESS_SHADER_READ_BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = &texture_buffer_owner.getornull(p_buffer)->buffer;
|
buffer = &texture_buffer_owner.get_or_null(p_buffer)->buffer;
|
||||||
} else if (storage_buffer_owner.owns(p_buffer)) {
|
} else if (storage_buffer_owner.owns(p_buffer)) {
|
||||||
buffer = storage_buffer_owner.getornull(p_buffer);
|
buffer = storage_buffer_owner.get_or_null(p_buffer);
|
||||||
if (p_post_barrier & BARRIER_MASK_RASTER) {
|
if (p_post_barrier & BARRIER_MASK_RASTER) {
|
||||||
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
r_stage_mask |= VK_PIPELINE_STAGE_VERTEX_SHADER_BIT | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT;
|
||||||
r_access_mask |= VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT;
|
r_access_mask |= VK_ACCESS_SHADER_READ_BIT | VK_ACCESS_SHADER_WRITE_BIT;
|
||||||
|
@ -2048,12 +2048,12 @@ RID RenderingDeviceVulkan::texture_create(const TextureFormat &p_format, const T
|
||||||
RID RenderingDeviceVulkan::texture_create_shared(const TextureView &p_view, RID p_with_texture) {
|
RID RenderingDeviceVulkan::texture_create_shared(const TextureView &p_view, RID p_with_texture) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *src_texture = texture_owner.getornull(p_with_texture);
|
Texture *src_texture = texture_owner.get_or_null(p_with_texture);
|
||||||
ERR_FAIL_COND_V(!src_texture, RID());
|
ERR_FAIL_COND_V(!src_texture, RID());
|
||||||
|
|
||||||
if (src_texture->owner.is_valid()) { //ahh this is a share
|
if (src_texture->owner.is_valid()) { //ahh this is a share
|
||||||
p_with_texture = src_texture->owner;
|
p_with_texture = src_texture->owner;
|
||||||
src_texture = texture_owner.getornull(src_texture->owner);
|
src_texture = texture_owner.get_or_null(src_texture->owner);
|
||||||
ERR_FAIL_COND_V(!src_texture, RID()); //this is a bug
|
ERR_FAIL_COND_V(!src_texture, RID()); //this is a bug
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2173,12 +2173,12 @@ RID RenderingDeviceVulkan::texture_create_shared(const TextureView &p_view, RID
|
||||||
RID RenderingDeviceVulkan::texture_create_shared_from_slice(const TextureView &p_view, RID p_with_texture, uint32_t p_layer, uint32_t p_mipmap, TextureSliceType p_slice_type) {
|
RID RenderingDeviceVulkan::texture_create_shared_from_slice(const TextureView &p_view, RID p_with_texture, uint32_t p_layer, uint32_t p_mipmap, TextureSliceType p_slice_type) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *src_texture = texture_owner.getornull(p_with_texture);
|
Texture *src_texture = texture_owner.get_or_null(p_with_texture);
|
||||||
ERR_FAIL_COND_V(!src_texture, RID());
|
ERR_FAIL_COND_V(!src_texture, RID());
|
||||||
|
|
||||||
if (src_texture->owner.is_valid()) { //ahh this is a share
|
if (src_texture->owner.is_valid()) { //ahh this is a share
|
||||||
p_with_texture = src_texture->owner;
|
p_with_texture = src_texture->owner;
|
||||||
src_texture = texture_owner.getornull(src_texture->owner);
|
src_texture = texture_owner.get_or_null(src_texture->owner);
|
||||||
ERR_FAIL_COND_V(!src_texture, RID()); //this is a bug
|
ERR_FAIL_COND_V(!src_texture, RID()); //this is a bug
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2299,12 +2299,12 @@ Error RenderingDeviceVulkan::_texture_update(RID p_texture, uint32_t p_layer, co
|
||||||
ERR_FAIL_COND_V_MSG((draw_list || compute_list) && !p_use_setup_queue, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG((draw_list || compute_list) && !p_use_setup_queue, ERR_INVALID_PARAMETER,
|
||||||
"Updating textures is forbidden during creation of a draw or compute list");
|
"Updating textures is forbidden during creation of a draw or compute list");
|
||||||
|
|
||||||
Texture *texture = texture_owner.getornull(p_texture);
|
Texture *texture = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND_V(!texture, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(!texture, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
if (texture->owner != RID()) {
|
if (texture->owner != RID()) {
|
||||||
p_texture = texture->owner;
|
p_texture = texture->owner;
|
||||||
texture = texture_owner.getornull(texture->owner);
|
texture = texture_owner.get_or_null(texture->owner);
|
||||||
ERR_FAIL_COND_V(!texture, ERR_BUG); //this is a bug
|
ERR_FAIL_COND_V(!texture, ERR_BUG); //this is a bug
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2601,7 +2601,7 @@ Vector<uint8_t> RenderingDeviceVulkan::_texture_get_data_from_image(Texture *tex
|
||||||
Vector<uint8_t> RenderingDeviceVulkan::texture_get_data(RID p_texture, uint32_t p_layer) {
|
Vector<uint8_t> RenderingDeviceVulkan::texture_get_data(RID p_texture, uint32_t p_layer) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *tex = texture_owner.getornull(p_texture);
|
Texture *tex = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND_V(!tex, Vector<uint8_t>());
|
ERR_FAIL_COND_V(!tex, Vector<uint8_t>());
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(tex->bound, Vector<uint8_t>(),
|
ERR_FAIL_COND_V_MSG(tex->bound, Vector<uint8_t>(),
|
||||||
|
@ -2731,7 +2731,7 @@ Vector<uint8_t> RenderingDeviceVulkan::texture_get_data(RID p_texture, uint32_t
|
||||||
bool RenderingDeviceVulkan::texture_is_shared(RID p_texture) {
|
bool RenderingDeviceVulkan::texture_is_shared(RID p_texture) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *tex = texture_owner.getornull(p_texture);
|
Texture *tex = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND_V(!tex, false);
|
ERR_FAIL_COND_V(!tex, false);
|
||||||
return tex->owner.is_valid();
|
return tex->owner.is_valid();
|
||||||
}
|
}
|
||||||
|
@ -2743,7 +2743,7 @@ bool RenderingDeviceVulkan::texture_is_valid(RID p_texture) {
|
||||||
Size2i RenderingDeviceVulkan::texture_size(RID p_texture) {
|
Size2i RenderingDeviceVulkan::texture_size(RID p_texture) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *tex = texture_owner.getornull(p_texture);
|
Texture *tex = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND_V(!tex, Size2i());
|
ERR_FAIL_COND_V(!tex, Size2i());
|
||||||
return Size2i(tex->width, tex->height);
|
return Size2i(tex->width, tex->height);
|
||||||
}
|
}
|
||||||
|
@ -2751,7 +2751,7 @@ Size2i RenderingDeviceVulkan::texture_size(RID p_texture) {
|
||||||
Error RenderingDeviceVulkan::texture_copy(RID p_from_texture, RID p_to_texture, const Vector3 &p_from, const Vector3 &p_to, const Vector3 &p_size, uint32_t p_src_mipmap, uint32_t p_dst_mipmap, uint32_t p_src_layer, uint32_t p_dst_layer, uint32_t p_post_barrier) {
|
Error RenderingDeviceVulkan::texture_copy(RID p_from_texture, RID p_to_texture, const Vector3 &p_from, const Vector3 &p_to, const Vector3 &p_size, uint32_t p_src_mipmap, uint32_t p_dst_mipmap, uint32_t p_src_layer, uint32_t p_dst_layer, uint32_t p_post_barrier) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *src_tex = texture_owner.getornull(p_from_texture);
|
Texture *src_tex = texture_owner.get_or_null(p_from_texture);
|
||||||
ERR_FAIL_COND_V(!src_tex, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(!src_tex, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(src_tex->bound, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG(src_tex->bound, ERR_INVALID_PARAMETER,
|
||||||
|
@ -2772,7 +2772,7 @@ Error RenderingDeviceVulkan::texture_copy(RID p_from_texture, RID p_to_texture,
|
||||||
ERR_FAIL_COND_V(p_src_mipmap >= src_tex->mipmaps, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(p_src_mipmap >= src_tex->mipmaps, ERR_INVALID_PARAMETER);
|
||||||
ERR_FAIL_COND_V(p_src_layer >= src_layer_count, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(p_src_layer >= src_layer_count, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
Texture *dst_tex = texture_owner.getornull(p_to_texture);
|
Texture *dst_tex = texture_owner.get_or_null(p_to_texture);
|
||||||
ERR_FAIL_COND_V(!dst_tex, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(!dst_tex, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(dst_tex->bound, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG(dst_tex->bound, ERR_INVALID_PARAMETER,
|
||||||
|
@ -2939,7 +2939,7 @@ Error RenderingDeviceVulkan::texture_copy(RID p_from_texture, RID p_to_texture,
|
||||||
Error RenderingDeviceVulkan::texture_resolve_multisample(RID p_from_texture, RID p_to_texture, uint32_t p_post_barrier) {
|
Error RenderingDeviceVulkan::texture_resolve_multisample(RID p_from_texture, RID p_to_texture, uint32_t p_post_barrier) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *src_tex = texture_owner.getornull(p_from_texture);
|
Texture *src_tex = texture_owner.get_or_null(p_from_texture);
|
||||||
ERR_FAIL_COND_V(!src_tex, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(!src_tex, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(src_tex->bound, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG(src_tex->bound, ERR_INVALID_PARAMETER,
|
||||||
|
@ -2950,7 +2950,7 @@ Error RenderingDeviceVulkan::texture_resolve_multisample(RID p_from_texture, RID
|
||||||
ERR_FAIL_COND_V_MSG(src_tex->type != TEXTURE_TYPE_2D, ERR_INVALID_PARAMETER, "Source texture must be 2D (or a slice of a 3D/Cube texture)");
|
ERR_FAIL_COND_V_MSG(src_tex->type != TEXTURE_TYPE_2D, ERR_INVALID_PARAMETER, "Source texture must be 2D (or a slice of a 3D/Cube texture)");
|
||||||
ERR_FAIL_COND_V_MSG(src_tex->samples == TEXTURE_SAMPLES_1, ERR_INVALID_PARAMETER, "Source texture must be multisampled.");
|
ERR_FAIL_COND_V_MSG(src_tex->samples == TEXTURE_SAMPLES_1, ERR_INVALID_PARAMETER, "Source texture must be multisampled.");
|
||||||
|
|
||||||
Texture *dst_tex = texture_owner.getornull(p_to_texture);
|
Texture *dst_tex = texture_owner.get_or_null(p_to_texture);
|
||||||
ERR_FAIL_COND_V(!dst_tex, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(!dst_tex, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(dst_tex->bound, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG(dst_tex->bound, ERR_INVALID_PARAMETER,
|
||||||
|
@ -3110,7 +3110,7 @@ Error RenderingDeviceVulkan::texture_resolve_multisample(RID p_from_texture, RID
|
||||||
Error RenderingDeviceVulkan::texture_clear(RID p_texture, const Color &p_color, uint32_t p_base_mipmap, uint32_t p_mipmaps, uint32_t p_base_layer, uint32_t p_layers, uint32_t p_post_barrier) {
|
Error RenderingDeviceVulkan::texture_clear(RID p_texture, const Color &p_color, uint32_t p_base_mipmap, uint32_t p_mipmaps, uint32_t p_base_layer, uint32_t p_layers, uint32_t p_post_barrier) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Texture *src_tex = texture_owner.getornull(p_texture);
|
Texture *src_tex = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND_V(!src_tex, ERR_INVALID_PARAMETER);
|
ERR_FAIL_COND_V(!src_tex, ERR_INVALID_PARAMETER);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(src_tex->bound, ERR_INVALID_PARAMETER,
|
ERR_FAIL_COND_V_MSG(src_tex->bound, ERR_INVALID_PARAMETER,
|
||||||
|
@ -3880,7 +3880,7 @@ RID RenderingDeviceVulkan::framebuffer_create(const Vector<RID> &p_texture_attac
|
||||||
FramebufferPass pass;
|
FramebufferPass pass;
|
||||||
|
|
||||||
for (int i = 0; i < p_texture_attachments.size(); i++) {
|
for (int i = 0; i < p_texture_attachments.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(p_texture_attachments[i]);
|
Texture *texture = texture_owner.get_or_null(p_texture_attachments[i]);
|
||||||
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture index supplied for framebuffer (" + itos(i) + ") is not a valid texture.");
|
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture index supplied for framebuffer (" + itos(i) + ") is not a valid texture.");
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(texture->layers != p_view_count, RID(), "Layers of our texture doesn't match view count for this framebuffer");
|
ERR_FAIL_COND_V_MSG(texture->layers != p_view_count, RID(), "Layers of our texture doesn't match view count for this framebuffer");
|
||||||
|
@ -3905,7 +3905,7 @@ RID RenderingDeviceVulkan::framebuffer_create_multipass(const Vector<RID> &p_tex
|
||||||
Size2i size;
|
Size2i size;
|
||||||
|
|
||||||
for (int i = 0; i < p_texture_attachments.size(); i++) {
|
for (int i = 0; i < p_texture_attachments.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(p_texture_attachments[i]);
|
Texture *texture = texture_owner.get_or_null(p_texture_attachments[i]);
|
||||||
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture index supplied for framebuffer (" + itos(i) + ") is not a valid texture.");
|
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture index supplied for framebuffer (" + itos(i) + ") is not a valid texture.");
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(texture->layers != p_view_count, RID(), "Layers of our texture doesn't match view count for this framebuffer");
|
ERR_FAIL_COND_V_MSG(texture->layers != p_view_count, RID(), "Layers of our texture doesn't match view count for this framebuffer");
|
||||||
|
@ -3951,7 +3951,7 @@ RID RenderingDeviceVulkan::framebuffer_create_multipass(const Vector<RID> &p_tex
|
||||||
RenderingDevice::FramebufferFormatID RenderingDeviceVulkan::framebuffer_get_format(RID p_framebuffer) {
|
RenderingDevice::FramebufferFormatID RenderingDeviceVulkan::framebuffer_get_format(RID p_framebuffer) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
Framebuffer *framebuffer = framebuffer_owner.getornull(p_framebuffer);
|
Framebuffer *framebuffer = framebuffer_owner.get_or_null(p_framebuffer);
|
||||||
ERR_FAIL_COND_V(!framebuffer, INVALID_ID);
|
ERR_FAIL_COND_V(!framebuffer, INVALID_ID);
|
||||||
|
|
||||||
return framebuffer->format_id;
|
return framebuffer->format_id;
|
||||||
|
@ -4101,7 +4101,7 @@ RID RenderingDeviceVulkan::vertex_array_create(uint32_t p_vertex_count, VertexFo
|
||||||
vertex_array.description = p_vertex_format;
|
vertex_array.description = p_vertex_format;
|
||||||
vertex_array.max_instances_allowed = 0xFFFFFFFF; //by default as many as you want
|
vertex_array.max_instances_allowed = 0xFFFFFFFF; //by default as many as you want
|
||||||
for (int i = 0; i < p_src_buffers.size(); i++) {
|
for (int i = 0; i < p_src_buffers.size(); i++) {
|
||||||
Buffer *buffer = vertex_buffer_owner.getornull(p_src_buffers[i]);
|
Buffer *buffer = vertex_buffer_owner.get_or_null(p_src_buffers[i]);
|
||||||
|
|
||||||
//validate with buffer
|
//validate with buffer
|
||||||
{
|
{
|
||||||
|
@ -4197,7 +4197,7 @@ RID RenderingDeviceVulkan::index_array_create(RID p_index_buffer, uint32_t p_ind
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!index_buffer_owner.owns(p_index_buffer), RID());
|
ERR_FAIL_COND_V(!index_buffer_owner.owns(p_index_buffer), RID());
|
||||||
|
|
||||||
IndexBuffer *index_buffer = index_buffer_owner.getornull(p_index_buffer);
|
IndexBuffer *index_buffer = index_buffer_owner.get_or_null(p_index_buffer);
|
||||||
|
|
||||||
ERR_FAIL_COND_V(p_index_count == 0, RID());
|
ERR_FAIL_COND_V(p_index_count == 0, RID());
|
||||||
ERR_FAIL_COND_V(p_index_offset + p_index_count > index_buffer->index_count, RID());
|
ERR_FAIL_COND_V(p_index_offset + p_index_count > index_buffer->index_count, RID());
|
||||||
|
@ -4241,7 +4241,7 @@ static VkShaderStageFlagBits shader_stage_masks[RenderingDevice::SHADER_STAGE_MA
|
||||||
|
|
||||||
String RenderingDeviceVulkan::_shader_uniform_debug(RID p_shader, int p_set) {
|
String RenderingDeviceVulkan::_shader_uniform_debug(RID p_shader, int p_set) {
|
||||||
String ret;
|
String ret;
|
||||||
const Shader *shader = shader_owner.getornull(p_shader);
|
const Shader *shader = shader_owner.get_or_null(p_shader);
|
||||||
ERR_FAIL_COND_V(!shader, String());
|
ERR_FAIL_COND_V(!shader, String());
|
||||||
for (int i = 0; i < shader->sets.size(); i++) {
|
for (int i = 0; i < shader->sets.size(); i++) {
|
||||||
if (p_set >= 0 && i != p_set) {
|
if (p_set >= 0 && i != p_set) {
|
||||||
|
@ -5272,7 +5272,7 @@ RID RenderingDeviceVulkan::shader_create_from_bytecode(const Vector<uint8_t> &p_
|
||||||
uint32_t RenderingDeviceVulkan::shader_get_vertex_input_attribute_mask(RID p_shader) {
|
uint32_t RenderingDeviceVulkan::shader_get_vertex_input_attribute_mask(RID p_shader) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
const Shader *shader = shader_owner.getornull(p_shader);
|
const Shader *shader = shader_owner.get_or_null(p_shader);
|
||||||
ERR_FAIL_COND_V(!shader, 0);
|
ERR_FAIL_COND_V(!shader, 0);
|
||||||
return shader->vertex_input_mask;
|
return shader->vertex_input_mask;
|
||||||
}
|
}
|
||||||
|
@ -5494,7 +5494,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
|
|
||||||
ERR_FAIL_COND_V(p_uniforms.size() == 0, RID());
|
ERR_FAIL_COND_V(p_uniforms.size() == 0, RID());
|
||||||
|
|
||||||
Shader *shader = shader_owner.getornull(p_shader);
|
Shader *shader = shader_owner.get_or_null(p_shader);
|
||||||
ERR_FAIL_COND_V(!shader, RID());
|
ERR_FAIL_COND_V(!shader, RID());
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(p_shader_set >= (uint32_t)shader->sets.size() || shader->sets[p_shader_set].uniform_info.size() == 0, RID(),
|
ERR_FAIL_COND_V_MSG(p_shader_set >= (uint32_t)shader->sets.size() || shader->sets[p_shader_set].uniform_info.size() == 0, RID(),
|
||||||
|
@ -5563,7 +5563,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkDescriptorImageInfo> image_info;
|
Vector<VkDescriptorImageInfo> image_info;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j++) {
|
for (int j = 0; j < uniform.ids.size(); j++) {
|
||||||
VkSampler *sampler = sampler_owner.getornull(uniform.ids[j]);
|
VkSampler *sampler = sampler_owner.get_or_null(uniform.ids[j]);
|
||||||
ERR_FAIL_COND_V_MSG(!sampler, RID(), "Sampler (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid sampler.");
|
ERR_FAIL_COND_V_MSG(!sampler, RID(), "Sampler (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid sampler.");
|
||||||
|
|
||||||
VkDescriptorImageInfo img_info;
|
VkDescriptorImageInfo img_info;
|
||||||
|
@ -5596,10 +5596,10 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkDescriptorImageInfo> image_info;
|
Vector<VkDescriptorImageInfo> image_info;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j += 2) {
|
for (int j = 0; j < uniform.ids.size(); j += 2) {
|
||||||
VkSampler *sampler = sampler_owner.getornull(uniform.ids[j + 0]);
|
VkSampler *sampler = sampler_owner.get_or_null(uniform.ids[j + 0]);
|
||||||
ERR_FAIL_COND_V_MSG(!sampler, RID(), "SamplerBuffer (binding: " + itos(uniform.binding) + ", index " + itos(j + 1) + ") is not a valid sampler.");
|
ERR_FAIL_COND_V_MSG(!sampler, RID(), "SamplerBuffer (binding: " + itos(uniform.binding) + ", index " + itos(j + 1) + ") is not a valid sampler.");
|
||||||
|
|
||||||
Texture *texture = texture_owner.getornull(uniform.ids[j + 1]);
|
Texture *texture = texture_owner.get_or_null(uniform.ids[j + 1]);
|
||||||
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(!(texture->usage_flags & TEXTURE_USAGE_SAMPLING_BIT), RID(),
|
ERR_FAIL_COND_V_MSG(!(texture->usage_flags & TEXTURE_USAGE_SAMPLING_BIT), RID(),
|
||||||
|
@ -5621,7 +5621,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
mutable_sampled_textures.push_back(texture);
|
mutable_sampled_textures.push_back(texture);
|
||||||
}
|
}
|
||||||
if (texture->owner.is_valid()) {
|
if (texture->owner.is_valid()) {
|
||||||
texture = texture_owner.getornull(texture->owner);
|
texture = texture_owner.get_or_null(texture->owner);
|
||||||
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5652,7 +5652,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkDescriptorImageInfo> image_info;
|
Vector<VkDescriptorImageInfo> image_info;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j++) {
|
for (int j = 0; j < uniform.ids.size(); j++) {
|
||||||
Texture *texture = texture_owner.getornull(uniform.ids[j]);
|
Texture *texture = texture_owner.get_or_null(uniform.ids[j]);
|
||||||
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
ERR_FAIL_COND_V_MSG(!texture, RID(), "Texture (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(!(texture->usage_flags & TEXTURE_USAGE_SAMPLING_BIT), RID(),
|
ERR_FAIL_COND_V_MSG(!(texture->usage_flags & TEXTURE_USAGE_SAMPLING_BIT), RID(),
|
||||||
|
@ -5675,7 +5675,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (texture->owner.is_valid()) {
|
if (texture->owner.is_valid()) {
|
||||||
texture = texture_owner.getornull(texture->owner);
|
texture = texture_owner.get_or_null(texture->owner);
|
||||||
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5705,7 +5705,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkDescriptorImageInfo> image_info;
|
Vector<VkDescriptorImageInfo> image_info;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j++) {
|
for (int j = 0; j < uniform.ids.size(); j++) {
|
||||||
Texture *texture = texture_owner.getornull(uniform.ids[j]);
|
Texture *texture = texture_owner.get_or_null(uniform.ids[j]);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(!texture, RID(),
|
ERR_FAIL_COND_V_MSG(!texture, RID(),
|
||||||
"Image (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
"Image (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
||||||
|
@ -5723,7 +5723,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (texture->owner.is_valid()) {
|
if (texture->owner.is_valid()) {
|
||||||
texture = texture_owner.getornull(texture->owner);
|
texture = texture_owner.get_or_null(texture->owner);
|
||||||
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5755,7 +5755,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkBufferView> buffer_view;
|
Vector<VkBufferView> buffer_view;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j++) {
|
for (int j = 0; j < uniform.ids.size(); j++) {
|
||||||
TextureBuffer *buffer = texture_buffer_owner.getornull(uniform.ids[j]);
|
TextureBuffer *buffer = texture_buffer_owner.get_or_null(uniform.ids[j]);
|
||||||
ERR_FAIL_COND_V_MSG(!buffer, RID(), "Texture Buffer (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture buffer.");
|
ERR_FAIL_COND_V_MSG(!buffer, RID(), "Texture Buffer (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture buffer.");
|
||||||
|
|
||||||
buffer_info.push_back(buffer->buffer.buffer_info);
|
buffer_info.push_back(buffer->buffer.buffer_info);
|
||||||
|
@ -5786,10 +5786,10 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkBufferView> buffer_view;
|
Vector<VkBufferView> buffer_view;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j += 2) {
|
for (int j = 0; j < uniform.ids.size(); j += 2) {
|
||||||
VkSampler *sampler = sampler_owner.getornull(uniform.ids[j + 0]);
|
VkSampler *sampler = sampler_owner.get_or_null(uniform.ids[j + 0]);
|
||||||
ERR_FAIL_COND_V_MSG(!sampler, RID(), "SamplerBuffer (binding: " + itos(uniform.binding) + ", index " + itos(j + 1) + ") is not a valid sampler.");
|
ERR_FAIL_COND_V_MSG(!sampler, RID(), "SamplerBuffer (binding: " + itos(uniform.binding) + ", index " + itos(j + 1) + ") is not a valid sampler.");
|
||||||
|
|
||||||
TextureBuffer *buffer = texture_buffer_owner.getornull(uniform.ids[j + 1]);
|
TextureBuffer *buffer = texture_buffer_owner.get_or_null(uniform.ids[j + 1]);
|
||||||
|
|
||||||
VkDescriptorImageInfo img_info;
|
VkDescriptorImageInfo img_info;
|
||||||
img_info.sampler = *sampler;
|
img_info.sampler = *sampler;
|
||||||
|
@ -5821,7 +5821,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
ERR_FAIL_COND_V_MSG(uniform.ids.size() != 1, RID(),
|
ERR_FAIL_COND_V_MSG(uniform.ids.size() != 1, RID(),
|
||||||
"Uniform buffer supplied (binding: " + itos(uniform.binding) + ") must provide one ID (" + itos(uniform.ids.size()) + " provided).");
|
"Uniform buffer supplied (binding: " + itos(uniform.binding) + ") must provide one ID (" + itos(uniform.ids.size()) + " provided).");
|
||||||
|
|
||||||
Buffer *buffer = uniform_buffer_owner.getornull(uniform.ids[0]);
|
Buffer *buffer = uniform_buffer_owner.get_or_null(uniform.ids[0]);
|
||||||
ERR_FAIL_COND_V_MSG(!buffer, RID(), "Uniform buffer supplied (binding: " + itos(uniform.binding) + ") is invalid.");
|
ERR_FAIL_COND_V_MSG(!buffer, RID(), "Uniform buffer supplied (binding: " + itos(uniform.binding) + ") is invalid.");
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(buffer->size != (uint32_t)set_uniform.length, RID(),
|
ERR_FAIL_COND_V_MSG(buffer->size != (uint32_t)set_uniform.length, RID(),
|
||||||
|
@ -5842,9 +5842,9 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Buffer *buffer = nullptr;
|
Buffer *buffer = nullptr;
|
||||||
|
|
||||||
if (storage_buffer_owner.owns(uniform.ids[0])) {
|
if (storage_buffer_owner.owns(uniform.ids[0])) {
|
||||||
buffer = storage_buffer_owner.getornull(uniform.ids[0]);
|
buffer = storage_buffer_owner.get_or_null(uniform.ids[0]);
|
||||||
} else if (vertex_buffer_owner.owns(uniform.ids[0])) {
|
} else if (vertex_buffer_owner.owns(uniform.ids[0])) {
|
||||||
buffer = vertex_buffer_owner.getornull(uniform.ids[0]);
|
buffer = vertex_buffer_owner.get_or_null(uniform.ids[0]);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(!(buffer->usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT), RID(), "Vertex buffer supplied (binding: " + itos(uniform.binding) + ") was not created with storage flag.");
|
ERR_FAIL_COND_V_MSG(!(buffer->usage & VK_BUFFER_USAGE_STORAGE_BUFFER_BIT), RID(), "Vertex buffer supplied (binding: " + itos(uniform.binding) + ") was not created with storage flag.");
|
||||||
}
|
}
|
||||||
|
@ -5875,7 +5875,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
Vector<VkDescriptorImageInfo> image_info;
|
Vector<VkDescriptorImageInfo> image_info;
|
||||||
|
|
||||||
for (int j = 0; j < uniform.ids.size(); j++) {
|
for (int j = 0; j < uniform.ids.size(); j++) {
|
||||||
Texture *texture = texture_owner.getornull(uniform.ids[j]);
|
Texture *texture = texture_owner.get_or_null(uniform.ids[j]);
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(!texture, RID(),
|
ERR_FAIL_COND_V_MSG(!texture, RID(),
|
||||||
"InputAttachment (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
"InputAttachment (binding: " + itos(uniform.binding) + ", index " + itos(j) + ") is not a valid texture.");
|
||||||
|
@ -5888,7 +5888,7 @@ RID RenderingDeviceVulkan::uniform_set_create(const Vector<Uniform> &p_uniforms,
|
||||||
img_info.imageView = texture->view;
|
img_info.imageView = texture->view;
|
||||||
|
|
||||||
if (texture->owner.is_valid()) {
|
if (texture->owner.is_valid()) {
|
||||||
texture = texture_owner.getornull(texture->owner);
|
texture = texture_owner.get_or_null(texture->owner);
|
||||||
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
ERR_FAIL_COND_V(!texture, RID()); //bug, should never happen
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5977,7 +5977,7 @@ bool RenderingDeviceVulkan::uniform_set_is_valid(RID p_uniform_set) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderingDeviceVulkan::uniform_set_set_invalidation_callback(RID p_uniform_set, UniformSetInvalidatedCallback p_callback, void *p_userdata) {
|
void RenderingDeviceVulkan::uniform_set_set_invalidation_callback(RID p_uniform_set, UniformSetInvalidatedCallback p_callback, void *p_userdata) {
|
||||||
UniformSet *us = uniform_set_owner.getornull(p_uniform_set);
|
UniformSet *us = uniform_set_owner.get_or_null(p_uniform_set);
|
||||||
ERR_FAIL_COND(!us);
|
ERR_FAIL_COND(!us);
|
||||||
us->invalidated_callback = p_callback;
|
us->invalidated_callback = p_callback;
|
||||||
us->invalidated_callback_userdata = p_userdata;
|
us->invalidated_callback_userdata = p_userdata;
|
||||||
|
@ -6126,7 +6126,7 @@ RID RenderingDeviceVulkan::render_pipeline_create(RID p_shader, FramebufferForma
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
//needs a shader
|
//needs a shader
|
||||||
Shader *shader = shader_owner.getornull(p_shader);
|
Shader *shader = shader_owner.get_or_null(p_shader);
|
||||||
ERR_FAIL_COND_V(!shader, RID());
|
ERR_FAIL_COND_V(!shader, RID());
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(shader->is_compute, RID(),
|
ERR_FAIL_COND_V_MSG(shader->is_compute, RID(),
|
||||||
|
@ -6568,7 +6568,7 @@ RID RenderingDeviceVulkan::compute_pipeline_create(RID p_shader, const Vector<Pi
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
|
|
||||||
//needs a shader
|
//needs a shader
|
||||||
Shader *shader = shader_owner.getornull(p_shader);
|
Shader *shader = shader_owner.get_or_null(p_shader);
|
||||||
ERR_FAIL_COND_V(!shader, RID());
|
ERR_FAIL_COND_V(!shader, RID());
|
||||||
|
|
||||||
ERR_FAIL_COND_V_MSG(!shader->is_compute, RID(),
|
ERR_FAIL_COND_V_MSG(!shader->is_compute, RID(),
|
||||||
|
@ -6779,7 +6779,7 @@ Error RenderingDeviceVulkan::_draw_list_setup_framebuffer(Framebuffer *p_framebu
|
||||||
framebuffer_create_info.renderPass = version.render_pass;
|
framebuffer_create_info.renderPass = version.render_pass;
|
||||||
Vector<VkImageView> attachments;
|
Vector<VkImageView> attachments;
|
||||||
for (int i = 0; i < p_framebuffer->texture_ids.size(); i++) {
|
for (int i = 0; i < p_framebuffer->texture_ids.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(p_framebuffer->texture_ids[i]);
|
Texture *texture = texture_owner.get_or_null(p_framebuffer->texture_ids[i]);
|
||||||
ERR_FAIL_COND_V(!texture, ERR_BUG);
|
ERR_FAIL_COND_V(!texture, ERR_BUG);
|
||||||
attachments.push_back(texture->view);
|
attachments.push_back(texture->view);
|
||||||
ERR_FAIL_COND_V(texture->width != p_framebuffer->size.width, ERR_BUG);
|
ERR_FAIL_COND_V(texture->width != p_framebuffer->size.width, ERR_BUG);
|
||||||
|
@ -6831,7 +6831,7 @@ Error RenderingDeviceVulkan::_draw_list_render_pass_begin(Framebuffer *framebuff
|
||||||
{
|
{
|
||||||
int color_index = 0;
|
int color_index = 0;
|
||||||
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(framebuffer->texture_ids[i]);
|
Texture *texture = texture_owner.get_or_null(framebuffer->texture_ids[i]);
|
||||||
VkClearValue clear_value;
|
VkClearValue clear_value;
|
||||||
|
|
||||||
if (color_index < p_clear_colors.size() && texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
if (color_index < p_clear_colors.size() && texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
||||||
|
@ -6859,7 +6859,7 @@ Error RenderingDeviceVulkan::_draw_list_render_pass_begin(Framebuffer *framebuff
|
||||||
render_pass_begin.pClearValues = clear_values.ptr();
|
render_pass_begin.pClearValues = clear_values.ptr();
|
||||||
|
|
||||||
for (int i = 0; i < p_storage_textures.size(); i++) {
|
for (int i = 0; i < p_storage_textures.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(p_storage_textures[i]);
|
Texture *texture = texture_owner.get_or_null(p_storage_textures[i]);
|
||||||
ERR_CONTINUE_MSG(!(texture->usage_flags & TEXTURE_USAGE_STORAGE_BIT), "Supplied storage texture " + itos(i) + " for draw list is not set to be used for storage.");
|
ERR_CONTINUE_MSG(!(texture->usage_flags & TEXTURE_USAGE_STORAGE_BIT), "Supplied storage texture " + itos(i) + " for draw list is not set to be used for storage.");
|
||||||
|
|
||||||
if (texture->usage_flags & TEXTURE_USAGE_SAMPLING_BIT) {
|
if (texture->usage_flags & TEXTURE_USAGE_SAMPLING_BIT) {
|
||||||
|
@ -6897,7 +6897,7 @@ Error RenderingDeviceVulkan::_draw_list_render_pass_begin(Framebuffer *framebuff
|
||||||
draw_list_unbind_depth_textures = p_final_depth_action != FINAL_ACTION_CONTINUE;
|
draw_list_unbind_depth_textures = p_final_depth_action != FINAL_ACTION_CONTINUE;
|
||||||
|
|
||||||
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(framebuffer->texture_ids[i]);
|
Texture *texture = texture_owner.get_or_null(framebuffer->texture_ids[i]);
|
||||||
texture->bound = true;
|
texture->bound = true;
|
||||||
draw_list_bound_textures.push_back(framebuffer->texture_ids[i]);
|
draw_list_bound_textures.push_back(framebuffer->texture_ids[i]);
|
||||||
}
|
}
|
||||||
|
@ -6909,7 +6909,7 @@ void RenderingDeviceVulkan::_draw_list_insert_clear_region(DrawList *draw_list,
|
||||||
Vector<VkClearAttachment> clear_attachments;
|
Vector<VkClearAttachment> clear_attachments;
|
||||||
int color_index = 0;
|
int color_index = 0;
|
||||||
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(framebuffer->texture_ids[i]);
|
Texture *texture = texture_owner.get_or_null(framebuffer->texture_ids[i]);
|
||||||
VkClearAttachment clear_at = {};
|
VkClearAttachment clear_at = {};
|
||||||
|
|
||||||
if (p_clear_color && texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
if (p_clear_color && texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
||||||
|
@ -6952,7 +6952,7 @@ RenderingDevice::DrawListID RenderingDeviceVulkan::draw_list_begin(RID p_framebu
|
||||||
ERR_FAIL_COND_V_MSG(draw_list != nullptr, INVALID_ID, "Only one draw list can be active at the same time.");
|
ERR_FAIL_COND_V_MSG(draw_list != nullptr, INVALID_ID, "Only one draw list can be active at the same time.");
|
||||||
ERR_FAIL_COND_V_MSG(compute_list != nullptr && !compute_list->state.allow_draw_overlap, INVALID_ID, "Only one draw/compute list can be active at the same time.");
|
ERR_FAIL_COND_V_MSG(compute_list != nullptr && !compute_list->state.allow_draw_overlap, INVALID_ID, "Only one draw/compute list can be active at the same time.");
|
||||||
|
|
||||||
Framebuffer *framebuffer = framebuffer_owner.getornull(p_framebuffer);
|
Framebuffer *framebuffer = framebuffer_owner.get_or_null(p_framebuffer);
|
||||||
ERR_FAIL_COND_V(!framebuffer, INVALID_ID);
|
ERR_FAIL_COND_V(!framebuffer, INVALID_ID);
|
||||||
|
|
||||||
Point2i viewport_offset;
|
Point2i viewport_offset;
|
||||||
|
@ -6993,7 +6993,7 @@ RenderingDevice::DrawListID RenderingDeviceVulkan::draw_list_begin(RID p_framebu
|
||||||
|
|
||||||
int color_count = 0;
|
int color_count = 0;
|
||||||
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(framebuffer->texture_ids[i]);
|
Texture *texture = texture_owner.get_or_null(framebuffer->texture_ids[i]);
|
||||||
|
|
||||||
if (texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
if (texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
||||||
color_count++;
|
color_count++;
|
||||||
|
@ -7056,7 +7056,7 @@ Error RenderingDeviceVulkan::draw_list_begin_split(RID p_framebuffer, uint32_t p
|
||||||
|
|
||||||
ERR_FAIL_COND_V(p_splits < 1, ERR_INVALID_DECLARATION);
|
ERR_FAIL_COND_V(p_splits < 1, ERR_INVALID_DECLARATION);
|
||||||
|
|
||||||
Framebuffer *framebuffer = framebuffer_owner.getornull(p_framebuffer);
|
Framebuffer *framebuffer = framebuffer_owner.get_or_null(p_framebuffer);
|
||||||
ERR_FAIL_COND_V(!framebuffer, ERR_INVALID_DECLARATION);
|
ERR_FAIL_COND_V(!framebuffer, ERR_INVALID_DECLARATION);
|
||||||
|
|
||||||
Point2i viewport_offset;
|
Point2i viewport_offset;
|
||||||
|
@ -7091,7 +7091,7 @@ Error RenderingDeviceVulkan::draw_list_begin_split(RID p_framebuffer, uint32_t p
|
||||||
|
|
||||||
int color_count = 0;
|
int color_count = 0;
|
||||||
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
for (int i = 0; i < framebuffer->texture_ids.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(framebuffer->texture_ids[i]);
|
Texture *texture = texture_owner.get_or_null(framebuffer->texture_ids[i]);
|
||||||
|
|
||||||
if (texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
if (texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT) {
|
||||||
color_count++;
|
color_count++;
|
||||||
|
@ -7192,7 +7192,7 @@ void RenderingDeviceVulkan::draw_list_bind_render_pipeline(DrawListID p_list, RI
|
||||||
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const RenderPipeline *pipeline = render_pipeline_owner.getornull(p_render_pipeline);
|
const RenderPipeline *pipeline = render_pipeline_owner.get_or_null(p_render_pipeline);
|
||||||
ERR_FAIL_COND(!pipeline);
|
ERR_FAIL_COND(!pipeline);
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
ERR_FAIL_COND(pipeline->validation.framebuffer_format != draw_list_framebuffer_format && pipeline->validation.render_pass != draw_list_current_subpass);
|
ERR_FAIL_COND(pipeline->validation.framebuffer_format != draw_list_framebuffer_format && pipeline->validation.render_pass != draw_list_current_subpass);
|
||||||
|
@ -7267,7 +7267,7 @@ void RenderingDeviceVulkan::draw_list_bind_uniform_set(DrawListID p_list, RID p_
|
||||||
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const UniformSet *uniform_set = uniform_set_owner.getornull(p_uniform_set);
|
const UniformSet *uniform_set = uniform_set_owner.get_or_null(p_uniform_set);
|
||||||
ERR_FAIL_COND(!uniform_set);
|
ERR_FAIL_COND(!uniform_set);
|
||||||
|
|
||||||
if (p_index > dl->state.set_count) {
|
if (p_index > dl->state.set_count) {
|
||||||
|
@ -7315,7 +7315,7 @@ void RenderingDeviceVulkan::draw_list_bind_vertex_array(DrawListID p_list, RID p
|
||||||
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const VertexArray *vertex_array = vertex_array_owner.getornull(p_vertex_array);
|
const VertexArray *vertex_array = vertex_array_owner.get_or_null(p_vertex_array);
|
||||||
ERR_FAIL_COND(!vertex_array);
|
ERR_FAIL_COND(!vertex_array);
|
||||||
|
|
||||||
if (dl->state.vertex_array == p_vertex_array) {
|
if (dl->state.vertex_array == p_vertex_array) {
|
||||||
|
@ -7339,7 +7339,7 @@ void RenderingDeviceVulkan::draw_list_bind_index_array(DrawListID p_list, RID p_
|
||||||
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
ERR_FAIL_COND_MSG(!dl->validation.active, "Submitted Draw Lists can no longer be modified.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
const IndexArray *index_array = index_array_owner.getornull(p_index_array);
|
const IndexArray *index_array = index_array_owner.get_or_null(p_index_array);
|
||||||
ERR_FAIL_COND(!index_array);
|
ERR_FAIL_COND(!index_array);
|
||||||
|
|
||||||
if (dl->state.index_array == p_index_array) {
|
if (dl->state.index_array == p_index_array) {
|
||||||
|
@ -7425,7 +7425,7 @@ void RenderingDeviceVulkan::draw_list_draw(DrawListID p_list, bool p_use_indices
|
||||||
if (dl->state.sets[i].uniform_set_format == 0) {
|
if (dl->state.sets[i].uniform_set_format == 0) {
|
||||||
ERR_FAIL_MSG("Uniforms were never supplied for set (" + itos(i) + ") at the time of drawing, which are required by the pipeline");
|
ERR_FAIL_MSG("Uniforms were never supplied for set (" + itos(i) + ") at the time of drawing, which are required by the pipeline");
|
||||||
} else if (uniform_set_owner.owns(dl->state.sets[i].uniform_set)) {
|
} else if (uniform_set_owner.owns(dl->state.sets[i].uniform_set)) {
|
||||||
UniformSet *us = uniform_set_owner.getornull(dl->state.sets[i].uniform_set);
|
UniformSet *us = uniform_set_owner.get_or_null(dl->state.sets[i].uniform_set);
|
||||||
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + "):\n" + _shader_uniform_debug(us->shader_id, us->shader_set) + "\nare not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(dl->state.pipeline_shader));
|
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + "):\n" + _shader_uniform_debug(us->shader_id, us->shader_set) + "\nare not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(dl->state.pipeline_shader));
|
||||||
} else {
|
} else {
|
||||||
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + ", which was was just freed) are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(dl->state.pipeline_shader));
|
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + ", which was was just freed) are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(dl->state.pipeline_shader));
|
||||||
|
@ -7696,7 +7696,7 @@ void RenderingDeviceVulkan::draw_list_end(uint32_t p_post_barrier) {
|
||||||
vkCmdEndRenderPass(frames[frame].draw_command_buffer);
|
vkCmdEndRenderPass(frames[frame].draw_command_buffer);
|
||||||
|
|
||||||
for (int i = 0; i < draw_list_bound_textures.size(); i++) {
|
for (int i = 0; i < draw_list_bound_textures.size(); i++) {
|
||||||
Texture *texture = texture_owner.getornull(draw_list_bound_textures[i]);
|
Texture *texture = texture_owner.get_or_null(draw_list_bound_textures[i]);
|
||||||
ERR_CONTINUE(!texture); //wtf
|
ERR_CONTINUE(!texture); //wtf
|
||||||
if (draw_list_unbind_color_textures && (texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT)) {
|
if (draw_list_unbind_color_textures && (texture->usage_flags & TEXTURE_USAGE_COLOR_ATTACHMENT_BIT)) {
|
||||||
texture->bound = false;
|
texture->bound = false;
|
||||||
|
@ -7744,7 +7744,7 @@ void RenderingDeviceVulkan::draw_list_end(uint32_t p_post_barrier) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint32_t i = 0; i < image_barrier_count; i++) {
|
for (uint32_t i = 0; i < image_barrier_count; i++) {
|
||||||
Texture *texture = texture_owner.getornull(draw_list_storage_textures[i]);
|
Texture *texture = texture_owner.get_or_null(draw_list_storage_textures[i]);
|
||||||
|
|
||||||
VkImageMemoryBarrier &image_memory_barrier = image_barriers[i];
|
VkImageMemoryBarrier &image_memory_barrier = image_barriers[i];
|
||||||
image_memory_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
image_memory_barrier.sType = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER;
|
||||||
|
@ -7810,7 +7810,7 @@ void RenderingDeviceVulkan::compute_list_bind_compute_pipeline(ComputeListID p_l
|
||||||
|
|
||||||
ComputeList *cl = compute_list;
|
ComputeList *cl = compute_list;
|
||||||
|
|
||||||
const ComputePipeline *pipeline = compute_pipeline_owner.getornull(p_compute_pipeline);
|
const ComputePipeline *pipeline = compute_pipeline_owner.get_or_null(p_compute_pipeline);
|
||||||
ERR_FAIL_COND(!pipeline);
|
ERR_FAIL_COND(!pipeline);
|
||||||
|
|
||||||
if (p_compute_pipeline == cl->state.pipeline) {
|
if (p_compute_pipeline == cl->state.pipeline) {
|
||||||
|
@ -7883,7 +7883,7 @@ void RenderingDeviceVulkan::compute_list_bind_uniform_set(ComputeListID p_list,
|
||||||
ERR_FAIL_COND_MSG(!cl->validation.active, "Submitted Compute Lists can no longer be modified.");
|
ERR_FAIL_COND_MSG(!cl->validation.active, "Submitted Compute Lists can no longer be modified.");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
UniformSet *uniform_set = uniform_set_owner.getornull(p_uniform_set);
|
UniformSet *uniform_set = uniform_set_owner.get_or_null(p_uniform_set);
|
||||||
ERR_FAIL_COND(!uniform_set);
|
ERR_FAIL_COND(!uniform_set);
|
||||||
|
|
||||||
if (p_index > cl->state.set_count) {
|
if (p_index > cl->state.set_count) {
|
||||||
|
@ -8082,7 +8082,7 @@ void RenderingDeviceVulkan::compute_list_dispatch(ComputeListID p_list, uint32_t
|
||||||
if (cl->state.sets[i].uniform_set_format == 0) {
|
if (cl->state.sets[i].uniform_set_format == 0) {
|
||||||
ERR_FAIL_MSG("Uniforms were never supplied for set (" + itos(i) + ") at the time of drawing, which are required by the pipeline");
|
ERR_FAIL_MSG("Uniforms were never supplied for set (" + itos(i) + ") at the time of drawing, which are required by the pipeline");
|
||||||
} else if (uniform_set_owner.owns(cl->state.sets[i].uniform_set)) {
|
} else if (uniform_set_owner.owns(cl->state.sets[i].uniform_set)) {
|
||||||
UniformSet *us = uniform_set_owner.getornull(cl->state.sets[i].uniform_set);
|
UniformSet *us = uniform_set_owner.get_or_null(cl->state.sets[i].uniform_set);
|
||||||
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + "):\n" + _shader_uniform_debug(us->shader_id, us->shader_set) + "\nare not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + "):\n" + _shader_uniform_debug(us->shader_id, us->shader_set) + "\nare not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
||||||
} else {
|
} else {
|
||||||
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + ", which was was just freed) are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + ", which was was just freed) are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
||||||
|
@ -8125,7 +8125,7 @@ void RenderingDeviceVulkan::compute_list_dispatch_indirect(ComputeListID p_list,
|
||||||
ERR_FAIL_COND(!compute_list);
|
ERR_FAIL_COND(!compute_list);
|
||||||
|
|
||||||
ComputeList *cl = compute_list;
|
ComputeList *cl = compute_list;
|
||||||
Buffer *buffer = storage_buffer_owner.getornull(p_buffer);
|
Buffer *buffer = storage_buffer_owner.get_or_null(p_buffer);
|
||||||
ERR_FAIL_COND(!buffer);
|
ERR_FAIL_COND(!buffer);
|
||||||
|
|
||||||
ERR_FAIL_COND_MSG(!(buffer->usage & STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT), "Buffer provided was not created to do indirect dispatch.");
|
ERR_FAIL_COND_MSG(!(buffer->usage & STORAGE_BUFFER_USAGE_DISPATCH_INDIRECT), "Buffer provided was not created to do indirect dispatch.");
|
||||||
|
@ -8159,7 +8159,7 @@ void RenderingDeviceVulkan::compute_list_dispatch_indirect(ComputeListID p_list,
|
||||||
if (cl->state.sets[i].uniform_set_format == 0) {
|
if (cl->state.sets[i].uniform_set_format == 0) {
|
||||||
ERR_FAIL_MSG("Uniforms were never supplied for set (" + itos(i) + ") at the time of drawing, which are required by the pipeline");
|
ERR_FAIL_MSG("Uniforms were never supplied for set (" + itos(i) + ") at the time of drawing, which are required by the pipeline");
|
||||||
} else if (uniform_set_owner.owns(cl->state.sets[i].uniform_set)) {
|
} else if (uniform_set_owner.owns(cl->state.sets[i].uniform_set)) {
|
||||||
UniformSet *us = uniform_set_owner.getornull(cl->state.sets[i].uniform_set);
|
UniformSet *us = uniform_set_owner.get_or_null(cl->state.sets[i].uniform_set);
|
||||||
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + "):\n" + _shader_uniform_debug(us->shader_id, us->shader_set) + "\nare not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + "):\n" + _shader_uniform_debug(us->shader_id, us->shader_set) + "\nare not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
||||||
} else {
|
} else {
|
||||||
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + ", which was was just freed) are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
ERR_FAIL_MSG("Uniforms supplied for set (" + itos(i) + ", which was was just freed) are not the same format as required by the pipeline shader. Pipeline shader requires the following bindings:\n" + _shader_uniform_debug(cl->state.pipeline_shader));
|
||||||
|
@ -8371,25 +8371,25 @@ void RenderingDeviceVulkan::draw_list_render_secondary_to_framebuffer(ID p_frame
|
||||||
void RenderingDeviceVulkan::_free_internal(RID p_id) {
|
void RenderingDeviceVulkan::_free_internal(RID p_id) {
|
||||||
//push everything so it's disposed of next time this frame index is processed (means, it's safe to do it)
|
//push everything so it's disposed of next time this frame index is processed (means, it's safe to do it)
|
||||||
if (texture_owner.owns(p_id)) {
|
if (texture_owner.owns(p_id)) {
|
||||||
Texture *texture = texture_owner.getornull(p_id);
|
Texture *texture = texture_owner.get_or_null(p_id);
|
||||||
frames[frame].textures_to_dispose_of.push_back(*texture);
|
frames[frame].textures_to_dispose_of.push_back(*texture);
|
||||||
texture_owner.free(p_id);
|
texture_owner.free(p_id);
|
||||||
} else if (framebuffer_owner.owns(p_id)) {
|
} else if (framebuffer_owner.owns(p_id)) {
|
||||||
Framebuffer *framebuffer = framebuffer_owner.getornull(p_id);
|
Framebuffer *framebuffer = framebuffer_owner.get_or_null(p_id);
|
||||||
frames[frame].framebuffers_to_dispose_of.push_back(*framebuffer);
|
frames[frame].framebuffers_to_dispose_of.push_back(*framebuffer);
|
||||||
framebuffer_owner.free(p_id);
|
framebuffer_owner.free(p_id);
|
||||||
} else if (sampler_owner.owns(p_id)) {
|
} else if (sampler_owner.owns(p_id)) {
|
||||||
VkSampler *sampler = sampler_owner.getornull(p_id);
|
VkSampler *sampler = sampler_owner.get_or_null(p_id);
|
||||||
frames[frame].samplers_to_dispose_of.push_back(*sampler);
|
frames[frame].samplers_to_dispose_of.push_back(*sampler);
|
||||||
sampler_owner.free(p_id);
|
sampler_owner.free(p_id);
|
||||||
} else if (vertex_buffer_owner.owns(p_id)) {
|
} else if (vertex_buffer_owner.owns(p_id)) {
|
||||||
Buffer *vertex_buffer = vertex_buffer_owner.getornull(p_id);
|
Buffer *vertex_buffer = vertex_buffer_owner.get_or_null(p_id);
|
||||||
frames[frame].buffers_to_dispose_of.push_back(*vertex_buffer);
|
frames[frame].buffers_to_dispose_of.push_back(*vertex_buffer);
|
||||||
vertex_buffer_owner.free(p_id);
|
vertex_buffer_owner.free(p_id);
|
||||||
} else if (vertex_array_owner.owns(p_id)) {
|
} else if (vertex_array_owner.owns(p_id)) {
|
||||||
vertex_array_owner.free(p_id);
|
vertex_array_owner.free(p_id);
|
||||||
} else if (index_buffer_owner.owns(p_id)) {
|
} else if (index_buffer_owner.owns(p_id)) {
|
||||||
IndexBuffer *index_buffer = index_buffer_owner.getornull(p_id);
|
IndexBuffer *index_buffer = index_buffer_owner.get_or_null(p_id);
|
||||||
Buffer b;
|
Buffer b;
|
||||||
b.allocation = index_buffer->allocation;
|
b.allocation = index_buffer->allocation;
|
||||||
b.buffer = index_buffer->buffer;
|
b.buffer = index_buffer->buffer;
|
||||||
|
@ -8400,24 +8400,24 @@ void RenderingDeviceVulkan::_free_internal(RID p_id) {
|
||||||
} else if (index_array_owner.owns(p_id)) {
|
} else if (index_array_owner.owns(p_id)) {
|
||||||
index_array_owner.free(p_id);
|
index_array_owner.free(p_id);
|
||||||
} else if (shader_owner.owns(p_id)) {
|
} else if (shader_owner.owns(p_id)) {
|
||||||
Shader *shader = shader_owner.getornull(p_id);
|
Shader *shader = shader_owner.get_or_null(p_id);
|
||||||
frames[frame].shaders_to_dispose_of.push_back(*shader);
|
frames[frame].shaders_to_dispose_of.push_back(*shader);
|
||||||
shader_owner.free(p_id);
|
shader_owner.free(p_id);
|
||||||
} else if (uniform_buffer_owner.owns(p_id)) {
|
} else if (uniform_buffer_owner.owns(p_id)) {
|
||||||
Buffer *uniform_buffer = uniform_buffer_owner.getornull(p_id);
|
Buffer *uniform_buffer = uniform_buffer_owner.get_or_null(p_id);
|
||||||
frames[frame].buffers_to_dispose_of.push_back(*uniform_buffer);
|
frames[frame].buffers_to_dispose_of.push_back(*uniform_buffer);
|
||||||
uniform_buffer_owner.free(p_id);
|
uniform_buffer_owner.free(p_id);
|
||||||
} else if (texture_buffer_owner.owns(p_id)) {
|
} else if (texture_buffer_owner.owns(p_id)) {
|
||||||
TextureBuffer *texture_buffer = texture_buffer_owner.getornull(p_id);
|
TextureBuffer *texture_buffer = texture_buffer_owner.get_or_null(p_id);
|
||||||
frames[frame].buffers_to_dispose_of.push_back(texture_buffer->buffer);
|
frames[frame].buffers_to_dispose_of.push_back(texture_buffer->buffer);
|
||||||
frames[frame].buffer_views_to_dispose_of.push_back(texture_buffer->view);
|
frames[frame].buffer_views_to_dispose_of.push_back(texture_buffer->view);
|
||||||
texture_buffer_owner.free(p_id);
|
texture_buffer_owner.free(p_id);
|
||||||
} else if (storage_buffer_owner.owns(p_id)) {
|
} else if (storage_buffer_owner.owns(p_id)) {
|
||||||
Buffer *storage_buffer = storage_buffer_owner.getornull(p_id);
|
Buffer *storage_buffer = storage_buffer_owner.get_or_null(p_id);
|
||||||
frames[frame].buffers_to_dispose_of.push_back(*storage_buffer);
|
frames[frame].buffers_to_dispose_of.push_back(*storage_buffer);
|
||||||
storage_buffer_owner.free(p_id);
|
storage_buffer_owner.free(p_id);
|
||||||
} else if (uniform_set_owner.owns(p_id)) {
|
} else if (uniform_set_owner.owns(p_id)) {
|
||||||
UniformSet *uniform_set = uniform_set_owner.getornull(p_id);
|
UniformSet *uniform_set = uniform_set_owner.get_or_null(p_id);
|
||||||
frames[frame].uniform_sets_to_dispose_of.push_back(*uniform_set);
|
frames[frame].uniform_sets_to_dispose_of.push_back(*uniform_set);
|
||||||
if (uniform_set->invalidated_callback != nullptr) {
|
if (uniform_set->invalidated_callback != nullptr) {
|
||||||
uniform_set->invalidated_callback(p_id, uniform_set->invalidated_callback_userdata);
|
uniform_set->invalidated_callback(p_id, uniform_set->invalidated_callback_userdata);
|
||||||
|
@ -8425,11 +8425,11 @@ void RenderingDeviceVulkan::_free_internal(RID p_id) {
|
||||||
|
|
||||||
uniform_set_owner.free(p_id);
|
uniform_set_owner.free(p_id);
|
||||||
} else if (render_pipeline_owner.owns(p_id)) {
|
} else if (render_pipeline_owner.owns(p_id)) {
|
||||||
RenderPipeline *pipeline = render_pipeline_owner.getornull(p_id);
|
RenderPipeline *pipeline = render_pipeline_owner.get_or_null(p_id);
|
||||||
frames[frame].render_pipelines_to_dispose_of.push_back(*pipeline);
|
frames[frame].render_pipelines_to_dispose_of.push_back(*pipeline);
|
||||||
render_pipeline_owner.free(p_id);
|
render_pipeline_owner.free(p_id);
|
||||||
} else if (compute_pipeline_owner.owns(p_id)) {
|
} else if (compute_pipeline_owner.owns(p_id)) {
|
||||||
ComputePipeline *pipeline = compute_pipeline_owner.getornull(p_id);
|
ComputePipeline *pipeline = compute_pipeline_owner.get_or_null(p_id);
|
||||||
frames[frame].compute_pipelines_to_dispose_of.push_back(*pipeline);
|
frames[frame].compute_pipelines_to_dispose_of.push_back(*pipeline);
|
||||||
compute_pipeline_owner.free(p_id);
|
compute_pipeline_owner.free(p_id);
|
||||||
} else {
|
} else {
|
||||||
|
@ -8448,49 +8448,49 @@ void RenderingDeviceVulkan::free(RID p_id) {
|
||||||
// We just expose the resources that are owned and can be accessed easily.
|
// We just expose the resources that are owned and can be accessed easily.
|
||||||
void RenderingDeviceVulkan::set_resource_name(RID p_id, const String p_name) {
|
void RenderingDeviceVulkan::set_resource_name(RID p_id, const String p_name) {
|
||||||
if (texture_owner.owns(p_id)) {
|
if (texture_owner.owns(p_id)) {
|
||||||
Texture *texture = texture_owner.getornull(p_id);
|
Texture *texture = texture_owner.get_or_null(p_id);
|
||||||
if (texture->owner.is_null()) {
|
if (texture->owner.is_null()) {
|
||||||
// Don't set the source texture's name when calling on a texture view
|
// Don't set the source texture's name when calling on a texture view
|
||||||
context->set_object_name(VK_OBJECT_TYPE_IMAGE, uint64_t(texture->image), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_IMAGE, uint64_t(texture->image), p_name);
|
||||||
}
|
}
|
||||||
context->set_object_name(VK_OBJECT_TYPE_IMAGE_VIEW, uint64_t(texture->view), p_name + " View");
|
context->set_object_name(VK_OBJECT_TYPE_IMAGE_VIEW, uint64_t(texture->view), p_name + " View");
|
||||||
} else if (framebuffer_owner.owns(p_id)) {
|
} else if (framebuffer_owner.owns(p_id)) {
|
||||||
//Framebuffer *framebuffer = framebuffer_owner.getornull(p_id);
|
//Framebuffer *framebuffer = framebuffer_owner.get_or_null(p_id);
|
||||||
// Not implemented for now as the relationship between Framebuffer and RenderPass is very complex
|
// Not implemented for now as the relationship between Framebuffer and RenderPass is very complex
|
||||||
} else if (sampler_owner.owns(p_id)) {
|
} else if (sampler_owner.owns(p_id)) {
|
||||||
VkSampler *sampler = sampler_owner.getornull(p_id);
|
VkSampler *sampler = sampler_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_SAMPLER, uint64_t(*sampler), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_SAMPLER, uint64_t(*sampler), p_name);
|
||||||
} else if (vertex_buffer_owner.owns(p_id)) {
|
} else if (vertex_buffer_owner.owns(p_id)) {
|
||||||
Buffer *vertex_buffer = vertex_buffer_owner.getornull(p_id);
|
Buffer *vertex_buffer = vertex_buffer_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(vertex_buffer->buffer), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(vertex_buffer->buffer), p_name);
|
||||||
} else if (index_buffer_owner.owns(p_id)) {
|
} else if (index_buffer_owner.owns(p_id)) {
|
||||||
IndexBuffer *index_buffer = index_buffer_owner.getornull(p_id);
|
IndexBuffer *index_buffer = index_buffer_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(index_buffer->buffer), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(index_buffer->buffer), p_name);
|
||||||
} else if (shader_owner.owns(p_id)) {
|
} else if (shader_owner.owns(p_id)) {
|
||||||
Shader *shader = shader_owner.getornull(p_id);
|
Shader *shader = shader_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_PIPELINE_LAYOUT, uint64_t(shader->pipeline_layout), p_name + " Pipeline Layout");
|
context->set_object_name(VK_OBJECT_TYPE_PIPELINE_LAYOUT, uint64_t(shader->pipeline_layout), p_name + " Pipeline Layout");
|
||||||
for (int i = 0; i < shader->sets.size(); i++) {
|
for (int i = 0; i < shader->sets.size(); i++) {
|
||||||
context->set_object_name(VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, uint64_t(shader->sets[i].descriptor_set_layout), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT, uint64_t(shader->sets[i].descriptor_set_layout), p_name);
|
||||||
}
|
}
|
||||||
} else if (uniform_buffer_owner.owns(p_id)) {
|
} else if (uniform_buffer_owner.owns(p_id)) {
|
||||||
Buffer *uniform_buffer = uniform_buffer_owner.getornull(p_id);
|
Buffer *uniform_buffer = uniform_buffer_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(uniform_buffer->buffer), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(uniform_buffer->buffer), p_name);
|
||||||
} else if (texture_buffer_owner.owns(p_id)) {
|
} else if (texture_buffer_owner.owns(p_id)) {
|
||||||
TextureBuffer *texture_buffer = texture_buffer_owner.getornull(p_id);
|
TextureBuffer *texture_buffer = texture_buffer_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(texture_buffer->buffer.buffer), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(texture_buffer->buffer.buffer), p_name);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_BUFFER_VIEW, uint64_t(texture_buffer->view), p_name + " View");
|
context->set_object_name(VK_OBJECT_TYPE_BUFFER_VIEW, uint64_t(texture_buffer->view), p_name + " View");
|
||||||
} else if (storage_buffer_owner.owns(p_id)) {
|
} else if (storage_buffer_owner.owns(p_id)) {
|
||||||
Buffer *storage_buffer = storage_buffer_owner.getornull(p_id);
|
Buffer *storage_buffer = storage_buffer_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(storage_buffer->buffer), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_BUFFER, uint64_t(storage_buffer->buffer), p_name);
|
||||||
} else if (uniform_set_owner.owns(p_id)) {
|
} else if (uniform_set_owner.owns(p_id)) {
|
||||||
UniformSet *uniform_set = uniform_set_owner.getornull(p_id);
|
UniformSet *uniform_set = uniform_set_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_DESCRIPTOR_SET, uint64_t(uniform_set->descriptor_set), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_DESCRIPTOR_SET, uint64_t(uniform_set->descriptor_set), p_name);
|
||||||
} else if (render_pipeline_owner.owns(p_id)) {
|
} else if (render_pipeline_owner.owns(p_id)) {
|
||||||
RenderPipeline *pipeline = render_pipeline_owner.getornull(p_id);
|
RenderPipeline *pipeline = render_pipeline_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_PIPELINE, uint64_t(pipeline->pipeline), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_PIPELINE, uint64_t(pipeline->pipeline), p_name);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_PIPELINE_LAYOUT, uint64_t(pipeline->pipeline_layout), p_name + " Layout");
|
context->set_object_name(VK_OBJECT_TYPE_PIPELINE_LAYOUT, uint64_t(pipeline->pipeline_layout), p_name + " Layout");
|
||||||
} else if (compute_pipeline_owner.owns(p_id)) {
|
} else if (compute_pipeline_owner.owns(p_id)) {
|
||||||
ComputePipeline *pipeline = compute_pipeline_owner.getornull(p_id);
|
ComputePipeline *pipeline = compute_pipeline_owner.get_or_null(p_id);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_PIPELINE, uint64_t(pipeline->pipeline), p_name);
|
context->set_object_name(VK_OBJECT_TYPE_PIPELINE, uint64_t(pipeline->pipeline), p_name);
|
||||||
context->set_object_name(VK_OBJECT_TYPE_PIPELINE_LAYOUT, uint64_t(pipeline->pipeline_layout), p_name + " Layout");
|
context->set_object_name(VK_OBJECT_TYPE_PIPELINE_LAYOUT, uint64_t(pipeline->pipeline_layout), p_name + " Layout");
|
||||||
} else {
|
} else {
|
||||||
|
@ -9037,31 +9037,31 @@ uint64_t RenderingDeviceVulkan::get_driver_resource(DriverResource p_resource, R
|
||||||
return context->get_graphics_queue_family_index();
|
return context->get_graphics_queue_family_index();
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_IMAGE: {
|
case DRIVER_RESOURCE_VULKAN_IMAGE: {
|
||||||
Texture *tex = texture_owner.getornull(p_rid);
|
Texture *tex = texture_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(tex, 0);
|
ERR_FAIL_NULL_V(tex, 0);
|
||||||
|
|
||||||
return (uint64_t)tex->image;
|
return (uint64_t)tex->image;
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_IMAGE_VIEW: {
|
case DRIVER_RESOURCE_VULKAN_IMAGE_VIEW: {
|
||||||
Texture *tex = texture_owner.getornull(p_rid);
|
Texture *tex = texture_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(tex, 0);
|
ERR_FAIL_NULL_V(tex, 0);
|
||||||
|
|
||||||
return (uint64_t)tex->view;
|
return (uint64_t)tex->view;
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_IMAGE_NATIVE_TEXTURE_FORMAT: {
|
case DRIVER_RESOURCE_VULKAN_IMAGE_NATIVE_TEXTURE_FORMAT: {
|
||||||
Texture *tex = texture_owner.getornull(p_rid);
|
Texture *tex = texture_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(tex, 0);
|
ERR_FAIL_NULL_V(tex, 0);
|
||||||
|
|
||||||
return vulkan_formats[tex->format];
|
return vulkan_formats[tex->format];
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_SAMPLER: {
|
case DRIVER_RESOURCE_VULKAN_SAMPLER: {
|
||||||
VkSampler *sampler = sampler_owner.getornull(p_rid);
|
VkSampler *sampler = sampler_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(sampler, 0);
|
ERR_FAIL_NULL_V(sampler, 0);
|
||||||
|
|
||||||
return uint64_t(*sampler);
|
return uint64_t(*sampler);
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_DESCRIPTOR_SET: {
|
case DRIVER_RESOURCE_VULKAN_DESCRIPTOR_SET: {
|
||||||
UniformSet *uniform_set = uniform_set_owner.getornull(p_rid);
|
UniformSet *uniform_set = uniform_set_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(uniform_set, 0);
|
ERR_FAIL_NULL_V(uniform_set, 0);
|
||||||
|
|
||||||
return uint64_t(uniform_set->descriptor_set);
|
return uint64_t(uniform_set->descriptor_set);
|
||||||
|
@ -9069,15 +9069,15 @@ uint64_t RenderingDeviceVulkan::get_driver_resource(DriverResource p_resource, R
|
||||||
case DRIVER_RESOURCE_VULKAN_BUFFER: {
|
case DRIVER_RESOURCE_VULKAN_BUFFER: {
|
||||||
Buffer *buffer = nullptr;
|
Buffer *buffer = nullptr;
|
||||||
if (vertex_buffer_owner.owns(p_rid)) {
|
if (vertex_buffer_owner.owns(p_rid)) {
|
||||||
buffer = vertex_buffer_owner.getornull(p_rid);
|
buffer = vertex_buffer_owner.get_or_null(p_rid);
|
||||||
} else if (index_buffer_owner.owns(p_rid)) {
|
} else if (index_buffer_owner.owns(p_rid)) {
|
||||||
buffer = index_buffer_owner.getornull(p_rid);
|
buffer = index_buffer_owner.get_or_null(p_rid);
|
||||||
} else if (uniform_buffer_owner.owns(p_rid)) {
|
} else if (uniform_buffer_owner.owns(p_rid)) {
|
||||||
buffer = uniform_buffer_owner.getornull(p_rid);
|
buffer = uniform_buffer_owner.get_or_null(p_rid);
|
||||||
} else if (texture_buffer_owner.owns(p_rid)) {
|
} else if (texture_buffer_owner.owns(p_rid)) {
|
||||||
buffer = &texture_buffer_owner.getornull(p_rid)->buffer;
|
buffer = &texture_buffer_owner.get_or_null(p_rid)->buffer;
|
||||||
} else if (storage_buffer_owner.owns(p_rid)) {
|
} else if (storage_buffer_owner.owns(p_rid)) {
|
||||||
buffer = storage_buffer_owner.getornull(p_rid);
|
buffer = storage_buffer_owner.get_or_null(p_rid);
|
||||||
}
|
}
|
||||||
|
|
||||||
ERR_FAIL_NULL_V(buffer, 0);
|
ERR_FAIL_NULL_V(buffer, 0);
|
||||||
|
@ -9085,13 +9085,13 @@ uint64_t RenderingDeviceVulkan::get_driver_resource(DriverResource p_resource, R
|
||||||
return uint64_t(buffer->buffer);
|
return uint64_t(buffer->buffer);
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_COMPUTE_PIPELINE: {
|
case DRIVER_RESOURCE_VULKAN_COMPUTE_PIPELINE: {
|
||||||
ComputePipeline *compute_pipeline = compute_pipeline_owner.getornull(p_rid);
|
ComputePipeline *compute_pipeline = compute_pipeline_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(compute_pipeline, 0);
|
ERR_FAIL_NULL_V(compute_pipeline, 0);
|
||||||
|
|
||||||
return uint64_t(compute_pipeline->pipeline);
|
return uint64_t(compute_pipeline->pipeline);
|
||||||
}; break;
|
}; break;
|
||||||
case DRIVER_RESOURCE_VULKAN_RENDER_PIPELINE: {
|
case DRIVER_RESOURCE_VULKAN_RENDER_PIPELINE: {
|
||||||
RenderPipeline *render_pipeline = render_pipeline_owner.getornull(p_rid);
|
RenderPipeline *render_pipeline = render_pipeline_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_NULL_V(render_pipeline, 0);
|
ERR_FAIL_NULL_V(render_pipeline, 0);
|
||||||
|
|
||||||
return uint64_t(render_pipeline->pipeline);
|
return uint64_t(render_pipeline->pipeline);
|
||||||
|
|
|
@ -2084,12 +2084,12 @@ RID VulkanContext::local_device_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
VkDevice VulkanContext::local_device_get_vk_device(RID p_local_device) {
|
VkDevice VulkanContext::local_device_get_vk_device(RID p_local_device) {
|
||||||
LocalDevice *ld = local_device_owner.getornull(p_local_device);
|
LocalDevice *ld = local_device_owner.get_or_null(p_local_device);
|
||||||
return ld->device;
|
return ld->device;
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanContext::local_device_push_command_buffers(RID p_local_device, const VkCommandBuffer *p_buffers, int p_count) {
|
void VulkanContext::local_device_push_command_buffers(RID p_local_device, const VkCommandBuffer *p_buffers, int p_count) {
|
||||||
LocalDevice *ld = local_device_owner.getornull(p_local_device);
|
LocalDevice *ld = local_device_owner.get_or_null(p_local_device);
|
||||||
ERR_FAIL_COND(ld->waiting);
|
ERR_FAIL_COND(ld->waiting);
|
||||||
|
|
||||||
VkSubmitInfo submit_info;
|
VkSubmitInfo submit_info;
|
||||||
|
@ -2119,7 +2119,7 @@ void VulkanContext::local_device_push_command_buffers(RID p_local_device, const
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanContext::local_device_sync(RID p_local_device) {
|
void VulkanContext::local_device_sync(RID p_local_device) {
|
||||||
LocalDevice *ld = local_device_owner.getornull(p_local_device);
|
LocalDevice *ld = local_device_owner.get_or_null(p_local_device);
|
||||||
ERR_FAIL_COND(!ld->waiting);
|
ERR_FAIL_COND(!ld->waiting);
|
||||||
|
|
||||||
vkDeviceWaitIdle(ld->device);
|
vkDeviceWaitIdle(ld->device);
|
||||||
|
@ -2127,7 +2127,7 @@ void VulkanContext::local_device_sync(RID p_local_device) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void VulkanContext::local_device_free(RID p_local_device) {
|
void VulkanContext::local_device_free(RID p_local_device) {
|
||||||
LocalDevice *ld = local_device_owner.getornull(p_local_device);
|
LocalDevice *ld = local_device_owner.get_or_null(p_local_device);
|
||||||
vkDestroyDevice(ld->device, nullptr);
|
vkDestroyDevice(ld->device, nullptr);
|
||||||
local_device_owner.free(p_local_device);
|
local_device_owner.free(p_local_device);
|
||||||
}
|
}
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -122,7 +122,7 @@ int BulletPhysicsDirectSpaceState::intersect_shape(const RID &p_shape, const Tra
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->getornull(p_shape);
|
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale_abs(), p_margin);
|
btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale_abs(), p_margin);
|
||||||
|
@ -158,7 +158,7 @@ bool BulletPhysicsDirectSpaceState::cast_motion(const RID &p_shape, const Transf
|
||||||
btVector3 bt_motion;
|
btVector3 bt_motion;
|
||||||
G_TO_B(p_motion, bt_motion);
|
G_TO_B(p_motion, bt_motion);
|
||||||
|
|
||||||
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->getornull(p_shape);
|
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, false);
|
ERR_FAIL_COND_V(!shape, false);
|
||||||
|
|
||||||
btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale(), p_margin);
|
btCollisionShape *btShape = shape->create_bt_shape(p_xform.basis.get_scale(), p_margin);
|
||||||
|
@ -219,7 +219,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform3D
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->getornull(p_shape);
|
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, false);
|
ERR_FAIL_COND_V(!shape, false);
|
||||||
|
|
||||||
btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale_abs(), p_margin);
|
btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale_abs(), p_margin);
|
||||||
|
@ -251,7 +251,7 @@ bool BulletPhysicsDirectSpaceState::collide_shape(RID p_shape, const Transform3D
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
bool BulletPhysicsDirectSpaceState::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||||
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->getornull(p_shape);
|
ShapeBullet *shape = space->get_physics_server()->get_shape_owner()->get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, false);
|
ERR_FAIL_COND_V(!shape, false);
|
||||||
|
|
||||||
btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale_abs(), p_margin);
|
btCollisionShape *btShape = shape->create_bt_shape(p_shape_xform.basis.get_scale_abs(), p_margin);
|
||||||
|
|
|
@ -133,13 +133,13 @@ RID GodotNavigationServer::map_create() const {
|
||||||
GodotNavigationServer *mut_this = const_cast<GodotNavigationServer *>(this);
|
GodotNavigationServer *mut_this = const_cast<GodotNavigationServer *>(this);
|
||||||
MutexLock lock(mut_this->operations_mutex);
|
MutexLock lock(mut_this->operations_mutex);
|
||||||
RID rid = map_owner.make_rid();
|
RID rid = map_owner.make_rid();
|
||||||
NavMap *space = map_owner.getornull(rid);
|
NavMap *space = map_owner.get_or_null(rid);
|
||||||
space->set_self(rid);
|
space->set_self(rid);
|
||||||
return rid;
|
return rid;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(map_set_active, RID, p_map, bool, p_active) {
|
COMMAND_2(map_set_active, RID, p_map, bool, p_active) {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND(map == nullptr);
|
ERR_FAIL_COND(map == nullptr);
|
||||||
|
|
||||||
if (p_active) {
|
if (p_active) {
|
||||||
|
@ -156,84 +156,84 @@ COMMAND_2(map_set_active, RID, p_map, bool, p_active) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GodotNavigationServer::map_is_active(RID p_map) const {
|
bool GodotNavigationServer::map_is_active(RID p_map) const {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, false);
|
ERR_FAIL_COND_V(map == nullptr, false);
|
||||||
|
|
||||||
return active_maps.find(map) >= 0;
|
return active_maps.find(map) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(map_set_up, RID, p_map, Vector3, p_up) {
|
COMMAND_2(map_set_up, RID, p_map, Vector3, p_up) {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND(map == nullptr);
|
ERR_FAIL_COND(map == nullptr);
|
||||||
|
|
||||||
map->set_up(p_up);
|
map->set_up(p_up);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 GodotNavigationServer::map_get_up(RID p_map) const {
|
Vector3 GodotNavigationServer::map_get_up(RID p_map) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
||||||
|
|
||||||
return map->get_up();
|
return map->get_up();
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(map_set_cell_size, RID, p_map, real_t, p_cell_size) {
|
COMMAND_2(map_set_cell_size, RID, p_map, real_t, p_cell_size) {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND(map == nullptr);
|
ERR_FAIL_COND(map == nullptr);
|
||||||
|
|
||||||
map->set_cell_size(p_cell_size);
|
map->set_cell_size(p_cell_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t GodotNavigationServer::map_get_cell_size(RID p_map) const {
|
real_t GodotNavigationServer::map_get_cell_size(RID p_map) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, 0);
|
ERR_FAIL_COND_V(map == nullptr, 0);
|
||||||
|
|
||||||
return map->get_cell_size();
|
return map->get_cell_size();
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(map_set_edge_connection_margin, RID, p_map, real_t, p_connection_margin) {
|
COMMAND_2(map_set_edge_connection_margin, RID, p_map, real_t, p_connection_margin) {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND(map == nullptr);
|
ERR_FAIL_COND(map == nullptr);
|
||||||
|
|
||||||
map->set_edge_connection_margin(p_connection_margin);
|
map->set_edge_connection_margin(p_connection_margin);
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t GodotNavigationServer::map_get_edge_connection_margin(RID p_map) const {
|
real_t GodotNavigationServer::map_get_edge_connection_margin(RID p_map) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, 0);
|
ERR_FAIL_COND_V(map == nullptr, 0);
|
||||||
|
|
||||||
return map->get_edge_connection_margin();
|
return map->get_edge_connection_margin();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<Vector3> GodotNavigationServer::map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_layers) const {
|
Vector<Vector3> GodotNavigationServer::map_get_path(RID p_map, Vector3 p_origin, Vector3 p_destination, bool p_optimize, uint32_t p_layers) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, Vector<Vector3>());
|
ERR_FAIL_COND_V(map == nullptr, Vector<Vector3>());
|
||||||
|
|
||||||
return map->get_path(p_origin, p_destination, p_optimize, p_layers);
|
return map->get_path(p_origin, p_destination, p_optimize, p_layers);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 GodotNavigationServer::map_get_closest_point_to_segment(RID p_map, const Vector3 &p_from, const Vector3 &p_to, const bool p_use_collision) const {
|
Vector3 GodotNavigationServer::map_get_closest_point_to_segment(RID p_map, const Vector3 &p_from, const Vector3 &p_to, const bool p_use_collision) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
||||||
|
|
||||||
return map->get_closest_point_to_segment(p_from, p_to, p_use_collision);
|
return map->get_closest_point_to_segment(p_from, p_to, p_use_collision);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 GodotNavigationServer::map_get_closest_point(RID p_map, const Vector3 &p_point) const {
|
Vector3 GodotNavigationServer::map_get_closest_point(RID p_map, const Vector3 &p_point) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
||||||
|
|
||||||
return map->get_closest_point(p_point);
|
return map->get_closest_point(p_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 GodotNavigationServer::map_get_closest_point_normal(RID p_map, const Vector3 &p_point) const {
|
Vector3 GodotNavigationServer::map_get_closest_point_normal(RID p_map, const Vector3 &p_point) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
ERR_FAIL_COND_V(map == nullptr, Vector3());
|
||||||
|
|
||||||
return map->get_closest_point_normal(p_point);
|
return map->get_closest_point_normal(p_point);
|
||||||
}
|
}
|
||||||
|
|
||||||
RID GodotNavigationServer::map_get_closest_point_owner(RID p_map, const Vector3 &p_point) const {
|
RID GodotNavigationServer::map_get_closest_point_owner(RID p_map, const Vector3 &p_point) const {
|
||||||
const NavMap *map = map_owner.getornull(p_map);
|
const NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND_V(map == nullptr, RID());
|
ERR_FAIL_COND_V(map == nullptr, RID());
|
||||||
|
|
||||||
return map->get_closest_point_owner(p_point);
|
return map->get_closest_point_owner(p_point);
|
||||||
|
@ -243,13 +243,13 @@ RID GodotNavigationServer::region_create() const {
|
||||||
GodotNavigationServer *mut_this = const_cast<GodotNavigationServer *>(this);
|
GodotNavigationServer *mut_this = const_cast<GodotNavigationServer *>(this);
|
||||||
MutexLock lock(mut_this->operations_mutex);
|
MutexLock lock(mut_this->operations_mutex);
|
||||||
RID rid = region_owner.make_rid();
|
RID rid = region_owner.make_rid();
|
||||||
NavRegion *reg = region_owner.getornull(rid);
|
NavRegion *reg = region_owner.get_or_null(rid);
|
||||||
reg->set_self(rid);
|
reg->set_self(rid);
|
||||||
return rid;
|
return rid;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(region_set_map, RID, p_region, RID, p_map) {
|
COMMAND_2(region_set_map, RID, p_region, RID, p_map) {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND(region == nullptr);
|
ERR_FAIL_COND(region == nullptr);
|
||||||
|
|
||||||
if (region->get_map() != nullptr) {
|
if (region->get_map() != nullptr) {
|
||||||
|
@ -262,7 +262,7 @@ COMMAND_2(region_set_map, RID, p_region, RID, p_map) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_map.is_valid()) {
|
if (p_map.is_valid()) {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND(map == nullptr);
|
ERR_FAIL_COND(map == nullptr);
|
||||||
|
|
||||||
map->add_region(region);
|
map->add_region(region);
|
||||||
|
@ -271,28 +271,28 @@ COMMAND_2(region_set_map, RID, p_region, RID, p_map) {
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(region_set_transform, RID, p_region, Transform3D, p_transform) {
|
COMMAND_2(region_set_transform, RID, p_region, Transform3D, p_transform) {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND(region == nullptr);
|
ERR_FAIL_COND(region == nullptr);
|
||||||
|
|
||||||
region->set_transform(p_transform);
|
region->set_transform(p_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(region_set_layers, RID, p_region, uint32_t, p_layers) {
|
COMMAND_2(region_set_layers, RID, p_region, uint32_t, p_layers) {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND(region == nullptr);
|
ERR_FAIL_COND(region == nullptr);
|
||||||
|
|
||||||
region->set_layers(p_layers);
|
region->set_layers(p_layers);
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t GodotNavigationServer::region_get_layers(RID p_region) const {
|
uint32_t GodotNavigationServer::region_get_layers(RID p_region) const {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND_V(region == nullptr, 0);
|
ERR_FAIL_COND_V(region == nullptr, 0);
|
||||||
|
|
||||||
return region->get_layers();
|
return region->get_layers();
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(region_set_navmesh, RID, p_region, Ref<NavigationMesh>, p_nav_mesh) {
|
COMMAND_2(region_set_navmesh, RID, p_region, Ref<NavigationMesh>, p_nav_mesh) {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND(region == nullptr);
|
ERR_FAIL_COND(region == nullptr);
|
||||||
|
|
||||||
region->set_mesh(p_nav_mesh);
|
region->set_mesh(p_nav_mesh);
|
||||||
|
@ -309,21 +309,21 @@ void GodotNavigationServer::region_bake_navmesh(Ref<NavigationMesh> r_mesh, Node
|
||||||
}
|
}
|
||||||
|
|
||||||
int GodotNavigationServer::region_get_connections_count(RID p_region) const {
|
int GodotNavigationServer::region_get_connections_count(RID p_region) const {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND_V(!region, 0);
|
ERR_FAIL_COND_V(!region, 0);
|
||||||
|
|
||||||
return region->get_connections_count();
|
return region->get_connections_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 GodotNavigationServer::region_get_connection_pathway_start(RID p_region, int p_connection_id) const {
|
Vector3 GodotNavigationServer::region_get_connection_pathway_start(RID p_region, int p_connection_id) const {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND_V(!region, Vector3());
|
ERR_FAIL_COND_V(!region, Vector3());
|
||||||
|
|
||||||
return region->get_connection_pathway_start(p_connection_id);
|
return region->get_connection_pathway_start(p_connection_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 GodotNavigationServer::region_get_connection_pathway_end(RID p_region, int p_connection_id) const {
|
Vector3 GodotNavigationServer::region_get_connection_pathway_end(RID p_region, int p_connection_id) const {
|
||||||
NavRegion *region = region_owner.getornull(p_region);
|
NavRegion *region = region_owner.get_or_null(p_region);
|
||||||
ERR_FAIL_COND_V(!region, Vector3());
|
ERR_FAIL_COND_V(!region, Vector3());
|
||||||
|
|
||||||
return region->get_connection_pathway_end(p_connection_id);
|
return region->get_connection_pathway_end(p_connection_id);
|
||||||
|
@ -333,13 +333,13 @@ RID GodotNavigationServer::agent_create() const {
|
||||||
GodotNavigationServer *mut_this = const_cast<GodotNavigationServer *>(this);
|
GodotNavigationServer *mut_this = const_cast<GodotNavigationServer *>(this);
|
||||||
MutexLock lock(mut_this->operations_mutex);
|
MutexLock lock(mut_this->operations_mutex);
|
||||||
RID rid = agent_owner.make_rid();
|
RID rid = agent_owner.make_rid();
|
||||||
RvoAgent *agent = agent_owner.getornull(rid);
|
RvoAgent *agent = agent_owner.get_or_null(rid);
|
||||||
agent->set_self(rid);
|
agent->set_self(rid);
|
||||||
return rid;
|
return rid;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_map, RID, p_agent, RID, p_map) {
|
COMMAND_2(agent_set_map, RID, p_agent, RID, p_map) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
if (agent->get_map()) {
|
if (agent->get_map()) {
|
||||||
|
@ -353,7 +353,7 @@ COMMAND_2(agent_set_map, RID, p_agent, RID, p_map) {
|
||||||
agent->set_map(nullptr);
|
agent->set_map(nullptr);
|
||||||
|
|
||||||
if (p_map.is_valid()) {
|
if (p_map.is_valid()) {
|
||||||
NavMap *map = map_owner.getornull(p_map);
|
NavMap *map = map_owner.get_or_null(p_map);
|
||||||
ERR_FAIL_COND(map == nullptr);
|
ERR_FAIL_COND(map == nullptr);
|
||||||
|
|
||||||
agent->set_map(map);
|
agent->set_map(map);
|
||||||
|
@ -366,77 +366,77 @@ COMMAND_2(agent_set_map, RID, p_agent, RID, p_map) {
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist) {
|
COMMAND_2(agent_set_neighbor_dist, RID, p_agent, real_t, p_dist) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->neighborDist_ = p_dist;
|
agent->get_agent()->neighborDist_ = p_dist;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_max_neighbors, RID, p_agent, int, p_count) {
|
COMMAND_2(agent_set_max_neighbors, RID, p_agent, int, p_count) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->maxNeighbors_ = p_count;
|
agent->get_agent()->maxNeighbors_ = p_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_time_horizon, RID, p_agent, real_t, p_time) {
|
COMMAND_2(agent_set_time_horizon, RID, p_agent, real_t, p_time) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->timeHorizon_ = p_time;
|
agent->get_agent()->timeHorizon_ = p_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_radius, RID, p_agent, real_t, p_radius) {
|
COMMAND_2(agent_set_radius, RID, p_agent, real_t, p_radius) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->radius_ = p_radius;
|
agent->get_agent()->radius_ = p_radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_max_speed, RID, p_agent, real_t, p_max_speed) {
|
COMMAND_2(agent_set_max_speed, RID, p_agent, real_t, p_max_speed) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->maxSpeed_ = p_max_speed;
|
agent->get_agent()->maxSpeed_ = p_max_speed;
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_velocity, RID, p_agent, Vector3, p_velocity) {
|
COMMAND_2(agent_set_velocity, RID, p_agent, Vector3, p_velocity) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->velocity_ = RVO::Vector3(p_velocity.x, p_velocity.y, p_velocity.z);
|
agent->get_agent()->velocity_ = RVO::Vector3(p_velocity.x, p_velocity.y, p_velocity.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_target_velocity, RID, p_agent, Vector3, p_velocity) {
|
COMMAND_2(agent_set_target_velocity, RID, p_agent, Vector3, p_velocity) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->prefVelocity_ = RVO::Vector3(p_velocity.x, p_velocity.y, p_velocity.z);
|
agent->get_agent()->prefVelocity_ = RVO::Vector3(p_velocity.x, p_velocity.y, p_velocity.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_position, RID, p_agent, Vector3, p_position) {
|
COMMAND_2(agent_set_position, RID, p_agent, Vector3, p_position) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->position_ = RVO::Vector3(p_position.x, p_position.y, p_position.z);
|
agent->get_agent()->position_ = RVO::Vector3(p_position.x, p_position.y, p_position.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_2(agent_set_ignore_y, RID, p_agent, bool, p_ignore) {
|
COMMAND_2(agent_set_ignore_y, RID, p_agent, bool, p_ignore) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->get_agent()->ignore_y_ = p_ignore;
|
agent->get_agent()->ignore_y_ = p_ignore;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GodotNavigationServer::agent_is_map_changed(RID p_agent) const {
|
bool GodotNavigationServer::agent_is_map_changed(RID p_agent) const {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND_V(agent == nullptr, false);
|
ERR_FAIL_COND_V(agent == nullptr, false);
|
||||||
|
|
||||||
return agent->is_map_changed();
|
return agent->is_map_changed();
|
||||||
}
|
}
|
||||||
|
|
||||||
COMMAND_4(agent_set_callback, RID, p_agent, Object *, p_receiver, StringName, p_method, Variant, p_udata) {
|
COMMAND_4(agent_set_callback, RID, p_agent, Object *, p_receiver, StringName, p_method, Variant, p_udata) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_agent);
|
RvoAgent *agent = agent_owner.get_or_null(p_agent);
|
||||||
ERR_FAIL_COND(agent == nullptr);
|
ERR_FAIL_COND(agent == nullptr);
|
||||||
|
|
||||||
agent->set_callback(p_receiver == nullptr ? ObjectID() : p_receiver->get_instance_id(), p_method, p_udata);
|
agent->set_callback(p_receiver == nullptr ? ObjectID() : p_receiver->get_instance_id(), p_method, p_udata);
|
||||||
|
@ -452,7 +452,7 @@ COMMAND_4(agent_set_callback, RID, p_agent, Object *, p_receiver, StringName, p_
|
||||||
|
|
||||||
COMMAND_1(free, RID, p_object) {
|
COMMAND_1(free, RID, p_object) {
|
||||||
if (map_owner.owns(p_object)) {
|
if (map_owner.owns(p_object)) {
|
||||||
NavMap *map = map_owner.getornull(p_object);
|
NavMap *map = map_owner.get_or_null(p_object);
|
||||||
|
|
||||||
// Removes any assigned region
|
// Removes any assigned region
|
||||||
std::vector<NavRegion *> regions = map->get_regions();
|
std::vector<NavRegion *> regions = map->get_regions();
|
||||||
|
@ -474,7 +474,7 @@ COMMAND_1(free, RID, p_object) {
|
||||||
map_owner.free(p_object);
|
map_owner.free(p_object);
|
||||||
|
|
||||||
} else if (region_owner.owns(p_object)) {
|
} else if (region_owner.owns(p_object)) {
|
||||||
NavRegion *region = region_owner.getornull(p_object);
|
NavRegion *region = region_owner.get_or_null(p_object);
|
||||||
|
|
||||||
// Removes this region from the map if assigned
|
// Removes this region from the map if assigned
|
||||||
if (region->get_map() != nullptr) {
|
if (region->get_map() != nullptr) {
|
||||||
|
@ -485,7 +485,7 @@ COMMAND_1(free, RID, p_object) {
|
||||||
region_owner.free(p_object);
|
region_owner.free(p_object);
|
||||||
|
|
||||||
} else if (agent_owner.owns(p_object)) {
|
} else if (agent_owner.owns(p_object)) {
|
||||||
RvoAgent *agent = agent_owner.getornull(p_object);
|
RvoAgent *agent = agent_owner.get_or_null(p_object);
|
||||||
|
|
||||||
// Removes this agent from the map if assigned
|
// Removes this agent from the map if assigned
|
||||||
if (agent->get_map() != nullptr) {
|
if (agent->get_map() != nullptr) {
|
||||||
|
|
|
@ -207,7 +207,7 @@ void RaycastOcclusionCull::occluder_initialize(RID p_occluder) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RaycastOcclusionCull::occluder_set_mesh(RID p_occluder, const PackedVector3Array &p_vertices, const PackedInt32Array &p_indices) {
|
void RaycastOcclusionCull::occluder_set_mesh(RID p_occluder, const PackedVector3Array &p_vertices, const PackedInt32Array &p_indices) {
|
||||||
Occluder *occluder = occluder_owner.getornull(p_occluder);
|
Occluder *occluder = occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
|
|
||||||
occluder->vertices = p_vertices;
|
occluder->vertices = p_vertices;
|
||||||
|
@ -228,7 +228,7 @@ void RaycastOcclusionCull::occluder_set_mesh(RID p_occluder, const PackedVector3
|
||||||
}
|
}
|
||||||
|
|
||||||
void RaycastOcclusionCull::free_occluder(RID p_occluder) {
|
void RaycastOcclusionCull::free_occluder(RID p_occluder) {
|
||||||
Occluder *occluder = occluder_owner.getornull(p_occluder);
|
Occluder *occluder = occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
memdelete(occluder);
|
memdelete(occluder);
|
||||||
occluder_owner.free(p_occluder);
|
occluder_owner.free(p_occluder);
|
||||||
|
@ -268,7 +268,7 @@ void RaycastOcclusionCull::scenario_set_instance(RID p_scenario, RID p_instance,
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
|
|
||||||
if (instance.occluder != p_occluder) {
|
if (instance.occluder != p_occluder) {
|
||||||
Occluder *old_occluder = occluder_owner.getornull(instance.occluder);
|
Occluder *old_occluder = occluder_owner.get_or_null(instance.occluder);
|
||||||
if (old_occluder) {
|
if (old_occluder) {
|
||||||
old_occluder->users.erase(InstanceID(p_scenario, p_instance));
|
old_occluder->users.erase(InstanceID(p_scenario, p_instance));
|
||||||
}
|
}
|
||||||
|
@ -276,7 +276,7 @@ void RaycastOcclusionCull::scenario_set_instance(RID p_scenario, RID p_instance,
|
||||||
instance.occluder = p_occluder;
|
instance.occluder = p_occluder;
|
||||||
|
|
||||||
if (p_occluder.is_valid()) {
|
if (p_occluder.is_valid()) {
|
||||||
Occluder *occluder = occluder_owner.getornull(p_occluder);
|
Occluder *occluder = occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
occluder->users.insert(InstanceID(p_scenario, p_instance));
|
occluder->users.insert(InstanceID(p_scenario, p_instance));
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ void RaycastOcclusionCull::scenario_remove_instance(RID p_scenario, RID p_instan
|
||||||
OccluderInstance &instance = scenario.instances[p_instance];
|
OccluderInstance &instance = scenario.instances[p_instance];
|
||||||
|
|
||||||
if (!instance.removed) {
|
if (!instance.removed) {
|
||||||
Occluder *occluder = occluder_owner.getornull(instance.occluder);
|
Occluder *occluder = occluder_owner.get_or_null(instance.occluder);
|
||||||
if (occluder) {
|
if (occluder) {
|
||||||
occluder->users.erase(InstanceID(p_scenario, p_instance));
|
occluder->users.erase(InstanceID(p_scenario, p_instance));
|
||||||
}
|
}
|
||||||
|
@ -330,7 +330,7 @@ void RaycastOcclusionCull::Scenario::_update_dirty_instance(int p_idx, RID *p_in
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Occluder *occ = raycast_singleton->occluder_owner.getornull(occ_inst->occluder);
|
Occluder *occ = raycast_singleton->occluder_owner.get_or_null(occ_inst->occluder);
|
||||||
|
|
||||||
if (!occ) {
|
if (!occ) {
|
||||||
return;
|
return;
|
||||||
|
@ -446,7 +446,7 @@ bool RaycastOcclusionCull::Scenario::update(ThreadWorkPool &p_thread_pool) {
|
||||||
const RID *inst_rid = nullptr;
|
const RID *inst_rid = nullptr;
|
||||||
while ((inst_rid = instances.next(inst_rid))) {
|
while ((inst_rid = instances.next(inst_rid))) {
|
||||||
OccluderInstance *occ_inst = instances.getptr(*inst_rid);
|
OccluderInstance *occ_inst = instances.getptr(*inst_rid);
|
||||||
Occluder *occ = raycast_singleton->occluder_owner.getornull(occ_inst->occluder);
|
Occluder *occ = raycast_singleton->occluder_owner.get_or_null(occ_inst->occluder);
|
||||||
|
|
||||||
if (!occ || !occ_inst->enabled) {
|
if (!occ || !occ_inst->enabled) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -333,11 +333,11 @@ String TextServerAdvanced::get_name() const {
|
||||||
void TextServerAdvanced::free(RID p_rid) {
|
void TextServerAdvanced::free(RID p_rid) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
if (font_owner.owns(p_rid)) {
|
if (font_owner.owns(p_rid)) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_rid);
|
||||||
font_owner.free(p_rid);
|
font_owner.free(p_rid);
|
||||||
memdelete(fd);
|
memdelete(fd);
|
||||||
} else if (shaped_owner.owns(p_rid)) {
|
} else if (shaped_owner.owns(p_rid)) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_rid);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_rid);
|
||||||
shaped_owner.free(p_rid);
|
shaped_owner.free(p_rid);
|
||||||
memdelete(sd);
|
memdelete(sd);
|
||||||
}
|
}
|
||||||
|
@ -1596,7 +1596,7 @@ _FORCE_INLINE_ void TextServerAdvanced::_font_clear_cache(FontDataAdvanced *p_fo
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_font_t *TextServerAdvanced::_font_get_hb_handle(RID p_font_rid, int p_size) const {
|
hb_font_t *TextServerAdvanced::_font_get_hb_handle(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, nullptr);
|
ERR_FAIL_COND_V(!fd, nullptr);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1614,7 +1614,7 @@ RID TextServerAdvanced::create_font() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_data(RID p_font_rid, const PackedByteArray &p_data) {
|
void TextServerAdvanced::font_set_data(RID p_font_rid, const PackedByteArray &p_data) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1625,7 +1625,7 @@ void TextServerAdvanced::font_set_data(RID p_font_rid, const PackedByteArray &p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_data_ptr(RID p_font_rid, const uint8_t *p_data_ptr, size_t p_data_size) {
|
void TextServerAdvanced::font_set_data_ptr(RID p_font_rid, const uint8_t *p_data_ptr, size_t p_data_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1636,7 +1636,7 @@ void TextServerAdvanced::font_set_data_ptr(RID p_font_rid, const uint8_t *p_data
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_antialiased(RID p_font_rid, bool p_antialiased) {
|
void TextServerAdvanced::font_set_antialiased(RID p_font_rid, bool p_antialiased) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1647,7 +1647,7 @@ void TextServerAdvanced::font_set_antialiased(RID p_font_rid, bool p_antialiased
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_is_antialiased(RID p_font_rid) const {
|
bool TextServerAdvanced::font_is_antialiased(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1655,7 +1655,7 @@ bool TextServerAdvanced::font_is_antialiased(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_multichannel_signed_distance_field(RID p_font_rid, bool p_msdf) {
|
void TextServerAdvanced::font_set_multichannel_signed_distance_field(RID p_font_rid, bool p_msdf) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1666,7 +1666,7 @@ void TextServerAdvanced::font_set_multichannel_signed_distance_field(RID p_font_
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_is_multichannel_signed_distance_field(RID p_font_rid) const {
|
bool TextServerAdvanced::font_is_multichannel_signed_distance_field(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1674,7 +1674,7 @@ bool TextServerAdvanced::font_is_multichannel_signed_distance_field(RID p_font_r
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_msdf_pixel_range(RID p_font_rid, int p_msdf_pixel_range) {
|
void TextServerAdvanced::font_set_msdf_pixel_range(RID p_font_rid, int p_msdf_pixel_range) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1685,7 +1685,7 @@ void TextServerAdvanced::font_set_msdf_pixel_range(RID p_font_rid, int p_msdf_pi
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerAdvanced::font_get_msdf_pixel_range(RID p_font_rid) const {
|
int TextServerAdvanced::font_get_msdf_pixel_range(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1693,7 +1693,7 @@ int TextServerAdvanced::font_get_msdf_pixel_range(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_msdf_size(RID p_font_rid, int p_msdf_size) {
|
void TextServerAdvanced::font_set_msdf_size(RID p_font_rid, int p_msdf_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1704,7 +1704,7 @@ void TextServerAdvanced::font_set_msdf_size(RID p_font_rid, int p_msdf_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerAdvanced::font_get_msdf_size(RID p_font_rid) const {
|
int TextServerAdvanced::font_get_msdf_size(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1712,7 +1712,7 @@ int TextServerAdvanced::font_get_msdf_size(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_fixed_size(RID p_font_rid, int p_fixed_size) {
|
void TextServerAdvanced::font_set_fixed_size(RID p_font_rid, int p_fixed_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1722,7 +1722,7 @@ void TextServerAdvanced::font_set_fixed_size(RID p_font_rid, int p_fixed_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerAdvanced::font_get_fixed_size(RID p_font_rid) const {
|
int TextServerAdvanced::font_get_fixed_size(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1730,7 +1730,7 @@ int TextServerAdvanced::font_get_fixed_size(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_force_autohinter(RID p_font_rid, bool p_force_autohinter) {
|
void TextServerAdvanced::font_set_force_autohinter(RID p_font_rid, bool p_force_autohinter) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1741,7 +1741,7 @@ void TextServerAdvanced::font_set_force_autohinter(RID p_font_rid, bool p_force_
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_is_force_autohinter(RID p_font_rid) const {
|
bool TextServerAdvanced::font_is_force_autohinter(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1749,7 +1749,7 @@ bool TextServerAdvanced::font_is_force_autohinter(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_hinting(RID p_font_rid, TextServer::Hinting p_hinting) {
|
void TextServerAdvanced::font_set_hinting(RID p_font_rid, TextServer::Hinting p_hinting) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1760,7 +1760,7 @@ void TextServerAdvanced::font_set_hinting(RID p_font_rid, TextServer::Hinting p_
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::Hinting TextServerAdvanced::font_get_hinting(RID p_font_rid) const {
|
TextServer::Hinting TextServerAdvanced::font_get_hinting(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, HINTING_NONE);
|
ERR_FAIL_COND_V(!fd, HINTING_NONE);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1768,7 +1768,7 @@ TextServer::Hinting TextServerAdvanced::font_get_hinting(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_variation_coordinates(RID p_font_rid, const Dictionary &p_variation_coordinates) {
|
void TextServerAdvanced::font_set_variation_coordinates(RID p_font_rid, const Dictionary &p_variation_coordinates) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1779,7 +1779,7 @@ void TextServerAdvanced::font_set_variation_coordinates(RID p_font_rid, const Di
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary TextServerAdvanced::font_get_variation_coordinates(RID p_font_rid) const {
|
Dictionary TextServerAdvanced::font_get_variation_coordinates(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Dictionary());
|
ERR_FAIL_COND_V(!fd, Dictionary());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1787,7 +1787,7 @@ Dictionary TextServerAdvanced::font_get_variation_coordinates(RID p_font_rid) co
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_oversampling(RID p_font_rid, real_t p_oversampling) {
|
void TextServerAdvanced::font_set_oversampling(RID p_font_rid, real_t p_oversampling) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1798,7 +1798,7 @@ void TextServerAdvanced::font_set_oversampling(RID p_font_rid, real_t p_oversamp
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::font_get_oversampling(RID p_font_rid) const {
|
real_t TextServerAdvanced::font_get_oversampling(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1806,7 +1806,7 @@ real_t TextServerAdvanced::font_get_oversampling(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TextServerAdvanced::font_get_size_cache_list(RID p_font_rid) const {
|
Array TextServerAdvanced::font_get_size_cache_list(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Array());
|
ERR_FAIL_COND_V(!fd, Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1818,7 +1818,7 @@ Array TextServerAdvanced::font_get_size_cache_list(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_clear_size_cache(RID p_font_rid) {
|
void TextServerAdvanced::font_clear_size_cache(RID p_font_rid) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1829,7 +1829,7 @@ void TextServerAdvanced::font_clear_size_cache(RID p_font_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_remove_size_cache(RID p_font_rid, const Vector2i &p_size) {
|
void TextServerAdvanced::font_remove_size_cache(RID p_font_rid, const Vector2i &p_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1840,7 +1840,7 @@ void TextServerAdvanced::font_remove_size_cache(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_ascent(RID p_font_rid, int p_size, real_t p_ascent) {
|
void TextServerAdvanced::font_set_ascent(RID p_font_rid, int p_size, real_t p_ascent) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1851,7 +1851,7 @@ void TextServerAdvanced::font_set_ascent(RID p_font_rid, int p_size, real_t p_as
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::font_get_ascent(RID p_font_rid, int p_size) const {
|
real_t TextServerAdvanced::font_get_ascent(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1867,7 +1867,7 @@ real_t TextServerAdvanced::font_get_ascent(RID p_font_rid, int p_size) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_descent(RID p_font_rid, int p_size, real_t p_descent) {
|
void TextServerAdvanced::font_set_descent(RID p_font_rid, int p_size, real_t p_descent) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
Vector2i size = _get_size(fd, p_size);
|
Vector2i size = _get_size(fd, p_size);
|
||||||
|
@ -1877,7 +1877,7 @@ void TextServerAdvanced::font_set_descent(RID p_font_rid, int p_size, real_t p_d
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::font_get_descent(RID p_font_rid, int p_size) const {
|
real_t TextServerAdvanced::font_get_descent(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1893,7 +1893,7 @@ real_t TextServerAdvanced::font_get_descent(RID p_font_rid, int p_size) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_underline_position(RID p_font_rid, int p_size, real_t p_underline_position) {
|
void TextServerAdvanced::font_set_underline_position(RID p_font_rid, int p_size, real_t p_underline_position) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1904,7 +1904,7 @@ void TextServerAdvanced::font_set_underline_position(RID p_font_rid, int p_size,
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::font_get_underline_position(RID p_font_rid, int p_size) const {
|
real_t TextServerAdvanced::font_get_underline_position(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1920,7 +1920,7 @@ real_t TextServerAdvanced::font_get_underline_position(RID p_font_rid, int p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_underline_thickness(RID p_font_rid, int p_size, real_t p_underline_thickness) {
|
void TextServerAdvanced::font_set_underline_thickness(RID p_font_rid, int p_size, real_t p_underline_thickness) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1931,7 +1931,7 @@ void TextServerAdvanced::font_set_underline_thickness(RID p_font_rid, int p_size
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::font_get_underline_thickness(RID p_font_rid, int p_size) const {
|
real_t TextServerAdvanced::font_get_underline_thickness(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1947,7 +1947,7 @@ real_t TextServerAdvanced::font_get_underline_thickness(RID p_font_rid, int p_si
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_scale(RID p_font_rid, int p_size, real_t p_scale) {
|
void TextServerAdvanced::font_set_scale(RID p_font_rid, int p_size, real_t p_scale) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1958,7 +1958,7 @@ void TextServerAdvanced::font_set_scale(RID p_font_rid, int p_size, real_t p_sca
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::font_get_scale(RID p_font_rid, int p_size) const {
|
real_t TextServerAdvanced::font_get_scale(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1974,7 +1974,7 @@ real_t TextServerAdvanced::font_get_scale(RID p_font_rid, int p_size) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing, int p_value) {
|
void TextServerAdvanced::font_set_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing, int p_value) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1995,7 +1995,7 @@ void TextServerAdvanced::font_set_spacing(RID p_font_rid, int p_size, TextServer
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerAdvanced::font_get_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing) const {
|
int TextServerAdvanced::font_get_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0);
|
ERR_FAIL_COND_V(!fd, 0);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2026,7 +2026,7 @@ int TextServerAdvanced::font_get_spacing(RID p_font_rid, int p_size, TextServer:
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerAdvanced::font_get_texture_count(RID p_font_rid, const Vector2i &p_size) const {
|
int TextServerAdvanced::font_get_texture_count(RID p_font_rid, const Vector2i &p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0);
|
ERR_FAIL_COND_V(!fd, 0);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2038,7 +2038,7 @@ int TextServerAdvanced::font_get_texture_count(RID p_font_rid, const Vector2i &p
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_clear_textures(RID p_font_rid, const Vector2i &p_size) {
|
void TextServerAdvanced::font_clear_textures(RID p_font_rid, const Vector2i &p_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
Vector2i size = _get_size_outline(fd, p_size);
|
Vector2i size = _get_size_outline(fd, p_size);
|
||||||
|
@ -2048,7 +2048,7 @@ void TextServerAdvanced::font_clear_textures(RID p_font_rid, const Vector2i &p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_remove_texture(RID p_font_rid, const Vector2i &p_size, int p_texture_index) {
|
void TextServerAdvanced::font_remove_texture(RID p_font_rid, const Vector2i &p_size, int p_texture_index) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2060,7 +2060,7 @@ void TextServerAdvanced::font_remove_texture(RID p_font_rid, const Vector2i &p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const Ref<Image> &p_image) {
|
void TextServerAdvanced::font_set_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const Ref<Image> &p_image) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
ERR_FAIL_COND(p_image.is_null());
|
ERR_FAIL_COND(p_image.is_null());
|
||||||
|
|
||||||
|
@ -2086,7 +2086,7 @@ void TextServerAdvanced::font_set_texture_image(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Image> TextServerAdvanced::font_get_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
Ref<Image> TextServerAdvanced::font_get_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Ref<Image>());
|
ERR_FAIL_COND_V(!fd, Ref<Image>());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2101,7 +2101,7 @@ Ref<Image> TextServerAdvanced::font_get_texture_image(RID p_font_rid, const Vect
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const PackedInt32Array &p_offset) {
|
void TextServerAdvanced::font_set_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const PackedInt32Array &p_offset) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2116,7 +2116,7 @@ void TextServerAdvanced::font_set_texture_offsets(RID p_font_rid, const Vector2i
|
||||||
}
|
}
|
||||||
|
|
||||||
PackedInt32Array TextServerAdvanced::font_get_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
PackedInt32Array TextServerAdvanced::font_get_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, PackedInt32Array());
|
ERR_FAIL_COND_V(!fd, PackedInt32Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2129,7 +2129,7 @@ PackedInt32Array TextServerAdvanced::font_get_texture_offsets(RID p_font_rid, co
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TextServerAdvanced::font_get_glyph_list(RID p_font_rid, const Vector2i &p_size) const {
|
Array TextServerAdvanced::font_get_glyph_list(RID p_font_rid, const Vector2i &p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Array());
|
ERR_FAIL_COND_V(!fd, Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2146,7 +2146,7 @@ Array TextServerAdvanced::font_get_glyph_list(RID p_font_rid, const Vector2i &p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_clear_glyphs(RID p_font_rid, const Vector2i &p_size) {
|
void TextServerAdvanced::font_clear_glyphs(RID p_font_rid, const Vector2i &p_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2157,7 +2157,7 @@ void TextServerAdvanced::font_clear_glyphs(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_remove_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) {
|
void TextServerAdvanced::font_remove_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2168,7 +2168,7 @@ void TextServerAdvanced::font_remove_glyph(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerAdvanced::font_get_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph) const {
|
Vector2 TextServerAdvanced::font_get_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2189,7 +2189,7 @@ Vector2 TextServerAdvanced::font_get_glyph_advance(RID p_font_rid, int p_size, i
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph, const Vector2 &p_advance) {
|
void TextServerAdvanced::font_set_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph, const Vector2 &p_advance) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2204,7 +2204,7 @@ void TextServerAdvanced::font_set_glyph_advance(RID p_font_rid, int p_size, int3
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerAdvanced::font_get_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
Vector2 TextServerAdvanced::font_get_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2225,7 +2225,7 @@ Vector2 TextServerAdvanced::font_get_glyph_offset(RID p_font_rid, const Vector2i
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_offset) {
|
void TextServerAdvanced::font_set_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_offset) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2240,7 +2240,7 @@ void TextServerAdvanced::font_set_glyph_offset(RID p_font_rid, const Vector2i &p
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerAdvanced::font_get_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
Vector2 TextServerAdvanced::font_get_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2261,7 +2261,7 @@ Vector2 TextServerAdvanced::font_get_glyph_size(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_gl_size) {
|
void TextServerAdvanced::font_set_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_gl_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2276,7 +2276,7 @@ void TextServerAdvanced::font_set_glyph_size(RID p_font_rid, const Vector2i &p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect2 TextServerAdvanced::font_get_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
Rect2 TextServerAdvanced::font_get_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Rect2());
|
ERR_FAIL_COND_V(!fd, Rect2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2292,7 +2292,7 @@ Rect2 TextServerAdvanced::font_get_glyph_uv_rect(RID p_font_rid, const Vector2i
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Rect2 &p_uv_rect) {
|
void TextServerAdvanced::font_set_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Rect2 &p_uv_rect) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2307,7 +2307,7 @@ void TextServerAdvanced::font_set_glyph_uv_rect(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerAdvanced::font_get_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
int TextServerAdvanced::font_get_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, -1);
|
ERR_FAIL_COND_V(!fd, -1);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2323,7 +2323,7 @@ int TextServerAdvanced::font_get_glyph_texture_idx(RID p_font_rid, const Vector2
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, int p_texture_idx) {
|
void TextServerAdvanced::font_set_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, int p_texture_idx) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2338,7 +2338,7 @@ void TextServerAdvanced::font_set_glyph_texture_idx(RID p_font_rid, const Vector
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_get_glyph_contours(RID p_font_rid, int p_size, int32_t p_index, Vector<Vector3> &r_points, Vector<int32_t> &r_contours, bool &r_orientation) const {
|
bool TextServerAdvanced::font_get_glyph_contours(RID p_font_rid, int p_size, int32_t p_index, Vector<Vector3> &r_points, Vector<int32_t> &r_contours, bool &r_orientation) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2372,7 +2372,7 @@ bool TextServerAdvanced::font_get_glyph_contours(RID p_font_rid, int p_size, int
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TextServerAdvanced::font_get_kerning_list(RID p_font_rid, int p_size) const {
|
Array TextServerAdvanced::font_get_kerning_list(RID p_font_rid, int p_size) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Array());
|
ERR_FAIL_COND_V(!fd, Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2388,7 +2388,7 @@ Array TextServerAdvanced::font_get_kerning_list(RID p_font_rid, int p_size) cons
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_clear_kerning_map(RID p_font_rid, int p_size) {
|
void TextServerAdvanced::font_clear_kerning_map(RID p_font_rid, int p_size) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2399,7 +2399,7 @@ void TextServerAdvanced::font_clear_kerning_map(RID p_font_rid, int p_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_remove_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) {
|
void TextServerAdvanced::font_remove_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2410,7 +2410,7 @@ void TextServerAdvanced::font_remove_kerning(RID p_font_rid, int p_size, const V
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair, const Vector2 &p_kerning) {
|
void TextServerAdvanced::font_set_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair, const Vector2 &p_kerning) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2421,7 +2421,7 @@ void TextServerAdvanced::font_set_kerning(RID p_font_rid, int p_size, const Vect
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerAdvanced::font_get_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) const {
|
Vector2 TextServerAdvanced::font_get_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2454,7 +2454,7 @@ Vector2 TextServerAdvanced::font_get_kerning(RID p_font_rid, int p_size, const V
|
||||||
}
|
}
|
||||||
|
|
||||||
int32_t TextServerAdvanced::font_get_glyph_index(RID p_font_rid, int p_size, char32_t p_char, char32_t p_variation_selector) const {
|
int32_t TextServerAdvanced::font_get_glyph_index(RID p_font_rid, int p_size, char32_t p_char, char32_t p_variation_selector) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0);
|
ERR_FAIL_COND_V(!fd, 0);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2477,7 +2477,7 @@ int32_t TextServerAdvanced::font_get_glyph_index(RID p_font_rid, int p_size, cha
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_has_char(RID p_font_rid, char32_t p_char) const {
|
bool TextServerAdvanced::font_has_char(RID p_font_rid, char32_t p_char) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2495,7 +2495,7 @@ bool TextServerAdvanced::font_has_char(RID p_font_rid, char32_t p_char) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
String TextServerAdvanced::font_get_supported_chars(RID p_font_rid) const {
|
String TextServerAdvanced::font_get_supported_chars(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, String());
|
ERR_FAIL_COND_V(!fd, String());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2529,7 +2529,7 @@ String TextServerAdvanced::font_get_supported_chars(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_render_range(RID p_font_rid, const Vector2i &p_size, char32_t p_start, char32_t p_end) {
|
void TextServerAdvanced::font_render_range(RID p_font_rid, const Vector2i &p_size, char32_t p_start, char32_t p_end) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2547,7 +2547,7 @@ void TextServerAdvanced::font_render_range(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_render_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_index) {
|
void TextServerAdvanced::font_render_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_index) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2557,7 +2557,7 @@ void TextServerAdvanced::font_render_glyph(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_draw_glyph(RID p_font_rid, RID p_canvas, int p_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
void TextServerAdvanced::font_draw_glyph(RID p_font_rid, RID p_canvas, int p_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2597,7 +2597,7 @@ void TextServerAdvanced::font_draw_glyph(RID p_font_rid, RID p_canvas, int p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_draw_glyph_outline(RID p_font_rid, RID p_canvas, int p_size, int p_outline_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
void TextServerAdvanced::font_draw_glyph_outline(RID p_font_rid, RID p_canvas, int p_size, int p_outline_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2637,7 +2637,7 @@ void TextServerAdvanced::font_draw_glyph_outline(RID p_font_rid, RID p_canvas, i
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_is_language_supported(RID p_font_rid, const String &p_language) const {
|
bool TextServerAdvanced::font_is_language_supported(RID p_font_rid, const String &p_language) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2649,7 +2649,7 @@ bool TextServerAdvanced::font_is_language_supported(RID p_font_rid, const String
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_language_support_override(RID p_font_rid, const String &p_language, bool p_supported) {
|
void TextServerAdvanced::font_set_language_support_override(RID p_font_rid, const String &p_language, bool p_supported) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2657,7 +2657,7 @@ void TextServerAdvanced::font_set_language_support_override(RID p_font_rid, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_get_language_support_override(RID p_font_rid, const String &p_language) {
|
bool TextServerAdvanced::font_get_language_support_override(RID p_font_rid, const String &p_language) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2665,7 +2665,7 @@ bool TextServerAdvanced::font_get_language_support_override(RID p_font_rid, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_remove_language_support_override(RID p_font_rid, const String &p_language) {
|
void TextServerAdvanced::font_remove_language_support_override(RID p_font_rid, const String &p_language) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2673,7 +2673,7 @@ void TextServerAdvanced::font_remove_language_support_override(RID p_font_rid, c
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> TextServerAdvanced::font_get_language_support_overrides(RID p_font_rid) {
|
Vector<String> TextServerAdvanced::font_get_language_support_overrides(RID p_font_rid) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector<String>());
|
ERR_FAIL_COND_V(!fd, Vector<String>());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2685,7 +2685,7 @@ Vector<String> TextServerAdvanced::font_get_language_support_overrides(RID p_fon
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_is_script_supported(RID p_font_rid, const String &p_script) const {
|
bool TextServerAdvanced::font_is_script_supported(RID p_font_rid, const String &p_script) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2699,7 +2699,7 @@ bool TextServerAdvanced::font_is_script_supported(RID p_font_rid, const String &
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_set_script_support_override(RID p_font_rid, const String &p_script, bool p_supported) {
|
void TextServerAdvanced::font_set_script_support_override(RID p_font_rid, const String &p_script, bool p_supported) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2707,7 +2707,7 @@ void TextServerAdvanced::font_set_script_support_override(RID p_font_rid, const
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::font_get_script_support_override(RID p_font_rid, const String &p_script) {
|
bool TextServerAdvanced::font_get_script_support_override(RID p_font_rid, const String &p_script) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2715,7 +2715,7 @@ bool TextServerAdvanced::font_get_script_support_override(RID p_font_rid, const
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::font_remove_script_support_override(RID p_font_rid, const String &p_script) {
|
void TextServerAdvanced::font_remove_script_support_override(RID p_font_rid, const String &p_script) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2723,7 +2723,7 @@ void TextServerAdvanced::font_remove_script_support_override(RID p_font_rid, con
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> TextServerAdvanced::font_get_script_support_overrides(RID p_font_rid) {
|
Vector<String> TextServerAdvanced::font_get_script_support_overrides(RID p_font_rid) {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector<String>());
|
ERR_FAIL_COND_V(!fd, Vector<String>());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2735,7 +2735,7 @@ Vector<String> TextServerAdvanced::font_get_script_support_overrides(RID p_font_
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary TextServerAdvanced::font_supported_feature_list(RID p_font_rid) const {
|
Dictionary TextServerAdvanced::font_supported_feature_list(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Dictionary());
|
ERR_FAIL_COND_V(!fd, Dictionary());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2745,7 +2745,7 @@ Dictionary TextServerAdvanced::font_supported_feature_list(RID p_font_rid) const
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary TextServerAdvanced::font_supported_variation_list(RID p_font_rid) const {
|
Dictionary TextServerAdvanced::font_supported_variation_list(RID p_font_rid) const {
|
||||||
FontDataAdvanced *fd = font_owner.getornull(p_font_rid);
|
FontDataAdvanced *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Dictionary());
|
ERR_FAIL_COND_V(!fd, Dictionary());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -2776,7 +2776,7 @@ void TextServerAdvanced::font_set_global_oversampling(real_t p_oversampling) {
|
||||||
List<RID> text_bufs;
|
List<RID> text_bufs;
|
||||||
shaped_owner.get_owned_list(&text_bufs);
|
shaped_owner.get_owned_list(&text_bufs);
|
||||||
for (const RID &E : text_bufs) {
|
for (const RID &E : text_bufs) {
|
||||||
invalidate(shaped_owner.getornull(E));
|
invalidate(shaped_owner.get_or_null(E));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2837,7 +2837,7 @@ void TextServerAdvanced::invalidate(TextServerAdvanced::ShapedTextDataAdvanced *
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::full_copy(ShapedTextDataAdvanced *p_shaped) {
|
void TextServerAdvanced::full_copy(ShapedTextDataAdvanced *p_shaped) {
|
||||||
ShapedTextDataAdvanced *parent = shaped_owner.getornull(p_shaped->parent);
|
ShapedTextDataAdvanced *parent = shaped_owner.get_or_null(p_shaped->parent);
|
||||||
|
|
||||||
for (Map<Variant, ShapedTextData::EmbeddedObject>::Element *E = parent->objects.front(); E; E = E->next()) {
|
for (Map<Variant, ShapedTextData::EmbeddedObject>::Element *E = parent->objects.front(); E; E = E->next()) {
|
||||||
if (E->get().pos >= p_shaped->start && E->get().pos < p_shaped->end) {
|
if (E->get().pos >= p_shaped->start && E->get().pos < p_shaped->end) {
|
||||||
|
@ -2868,7 +2868,7 @@ RID TextServerAdvanced::create_shaped_text(TextServer::Direction p_direction, Te
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_clear(RID p_shaped) {
|
void TextServerAdvanced::shaped_text_clear(RID p_shaped) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2883,7 +2883,7 @@ void TextServerAdvanced::shaped_text_clear(RID p_shaped) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_set_direction(RID p_shaped, TextServer::Direction p_direction) {
|
void TextServerAdvanced::shaped_text_set_direction(RID p_shaped, TextServer::Direction p_direction) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2897,7 +2897,7 @@ void TextServerAdvanced::shaped_text_set_direction(RID p_shaped, TextServer::Dir
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::Direction TextServerAdvanced::shaped_text_get_direction(RID p_shaped) const {
|
TextServer::Direction TextServerAdvanced::shaped_text_get_direction(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, TextServer::DIRECTION_LTR);
|
ERR_FAIL_COND_V(!sd, TextServer::DIRECTION_LTR);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2905,7 +2905,7 @@ TextServer::Direction TextServerAdvanced::shaped_text_get_direction(RID p_shaped
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_set_bidi_override(RID p_shaped, const Vector<Vector2i> &p_override) {
|
void TextServerAdvanced::shaped_text_set_bidi_override(RID p_shaped, const Vector<Vector2i> &p_override) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2917,7 +2917,7 @@ void TextServerAdvanced::shaped_text_set_bidi_override(RID p_shaped, const Vecto
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_set_orientation(RID p_shaped, TextServer::Orientation p_orientation) {
|
void TextServerAdvanced::shaped_text_set_orientation(RID p_shaped, TextServer::Orientation p_orientation) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2931,7 +2931,7 @@ void TextServerAdvanced::shaped_text_set_orientation(RID p_shaped, TextServer::O
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_set_preserve_invalid(RID p_shaped, bool p_enabled) {
|
void TextServerAdvanced::shaped_text_set_preserve_invalid(RID p_shaped, bool p_enabled) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2943,7 +2943,7 @@ void TextServerAdvanced::shaped_text_set_preserve_invalid(RID p_shaped, bool p_e
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_get_preserve_invalid(RID p_shaped) const {
|
bool TextServerAdvanced::shaped_text_get_preserve_invalid(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2951,7 +2951,7 @@ bool TextServerAdvanced::shaped_text_get_preserve_invalid(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_set_preserve_control(RID p_shaped, bool p_enabled) {
|
void TextServerAdvanced::shaped_text_set_preserve_control(RID p_shaped, bool p_enabled) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2965,7 +2965,7 @@ void TextServerAdvanced::shaped_text_set_preserve_control(RID p_shaped, bool p_e
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_get_preserve_control(RID p_shaped) const {
|
bool TextServerAdvanced::shaped_text_get_preserve_control(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2973,7 +2973,7 @@ bool TextServerAdvanced::shaped_text_get_preserve_control(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::Orientation TextServerAdvanced::shaped_text_get_orientation(RID p_shaped) const {
|
TextServer::Orientation TextServerAdvanced::shaped_text_get_orientation(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, TextServer::ORIENTATION_HORIZONTAL);
|
ERR_FAIL_COND_V(!sd, TextServer::ORIENTATION_HORIZONTAL);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2981,13 +2981,13 @@ TextServer::Orientation TextServerAdvanced::shaped_text_get_orientation(RID p_sh
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_add_string(RID p_shaped, const String &p_text, const Vector<RID> &p_fonts, int p_size, const Dictionary &p_opentype_features, const String &p_language) {
|
bool TextServerAdvanced::shaped_text_add_string(RID p_shaped, const String &p_text, const Vector<RID> &p_fonts, int p_size, const Dictionary &p_opentype_features, const String &p_language) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
ERR_FAIL_COND_V(p_size <= 0, false);
|
ERR_FAIL_COND_V(p_size <= 0, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
for (int i = 0; i < p_fonts.size(); i++) {
|
for (int i = 0; i < p_fonts.size(); i++) {
|
||||||
ERR_FAIL_COND_V(!font_owner.getornull(p_fonts[i]), false);
|
ERR_FAIL_COND_V(!font_owner.get_or_null(p_fonts[i]), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_text.is_empty()) {
|
if (p_text.is_empty()) {
|
||||||
|
@ -3016,7 +3016,7 @@ bool TextServerAdvanced::shaped_text_add_string(RID p_shaped, const String &p_te
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_add_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align, int p_length) {
|
bool TextServerAdvanced::shaped_text_add_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align, int p_length) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
ERR_FAIL_COND_V(p_key == Variant(), false);
|
ERR_FAIL_COND_V(p_key == Variant(), false);
|
||||||
ERR_FAIL_COND_V(sd->objects.has(p_key), false);
|
ERR_FAIL_COND_V(sd->objects.has(p_key), false);
|
||||||
|
@ -3045,7 +3045,7 @@ bool TextServerAdvanced::shaped_text_add_object(RID p_shaped, Variant p_key, con
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_resize_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align) {
|
bool TextServerAdvanced::shaped_text_resize_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3178,7 +3178,7 @@ bool TextServerAdvanced::shaped_text_resize_object(RID p_shaped, Variant p_key,
|
||||||
}
|
}
|
||||||
|
|
||||||
RID TextServerAdvanced::shaped_text_substr(RID p_shaped, int p_start, int p_length) const {
|
RID TextServerAdvanced::shaped_text_substr(RID p_shaped, int p_start, int p_length) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, RID());
|
ERR_FAIL_COND_V(!sd, RID());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3371,7 +3371,7 @@ RID TextServerAdvanced::shaped_text_substr(RID p_shaped, int p_start, int p_leng
|
||||||
}
|
}
|
||||||
|
|
||||||
RID TextServerAdvanced::shaped_text_get_parent(RID p_shaped) const {
|
RID TextServerAdvanced::shaped_text_get_parent(RID p_shaped) const {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, RID());
|
ERR_FAIL_COND_V(!sd, RID());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3379,7 +3379,7 @@ RID TextServerAdvanced::shaped_text_get_parent(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_fit_to_width(RID p_shaped, real_t p_width, uint8_t /*JustificationFlag*/ p_jst_flags) {
|
real_t TextServerAdvanced::shaped_text_fit_to_width(RID p_shaped, real_t p_width, uint8_t /*JustificationFlag*/ p_jst_flags) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3515,7 +3515,7 @@ real_t TextServerAdvanced::shaped_text_fit_to_width(RID p_shaped, real_t p_width
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_tab_align(RID p_shaped, const Vector<real_t> &p_tab_stops) {
|
real_t TextServerAdvanced::shaped_text_tab_align(RID p_shaped, const Vector<real_t> &p_tab_stops) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3565,7 +3565,7 @@ real_t TextServerAdvanced::shaped_text_tab_align(RID p_shaped, const Vector<real
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerAdvanced::shaped_text_overrun_trim_to_width(RID p_shaped_line, real_t p_width, uint8_t p_trim_flags) {
|
void TextServerAdvanced::shaped_text_overrun_trim_to_width(RID p_shaped_line, real_t p_width, uint8_t p_trim_flags) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped_line);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped_line);
|
||||||
ERR_FAIL_COND_MSG(!sd, "ShapedTextDataAdvanced invalid.");
|
ERR_FAIL_COND_MSG(!sd, "ShapedTextDataAdvanced invalid.");
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3692,7 +3692,7 @@ void TextServerAdvanced::shaped_text_overrun_trim_to_width(RID p_shaped_line, re
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::TrimData TextServerAdvanced::shaped_text_get_trim_data(RID p_shaped) const {
|
TextServer::TrimData TextServerAdvanced::shaped_text_get_trim_data(RID p_shaped) const {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V_MSG(!sd, TrimData(), "ShapedTextDataAdvanced invalid.");
|
ERR_FAIL_COND_V_MSG(!sd, TrimData(), "ShapedTextDataAdvanced invalid.");
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3700,7 +3700,7 @@ TextServer::TrimData TextServerAdvanced::shaped_text_get_trim_data(RID p_shaped)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_update_breaks(RID p_shaped) {
|
bool TextServerAdvanced::shaped_text_update_breaks(RID p_shaped) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3892,7 +3892,7 @@ _FORCE_INLINE_ int _generate_kashida_justification_opportunies(const String &p_d
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_update_justification_ops(RID p_shaped) {
|
bool TextServerAdvanced::shaped_text_update_justification_ops(RID p_shaped) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4249,7 +4249,7 @@ void TextServerAdvanced::_shape_run(ShapedTextDataAdvanced *p_sd, int32_t p_star
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_shape(RID p_shaped) {
|
bool TextServerAdvanced::shaped_text_shape(RID p_shaped) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4479,7 +4479,7 @@ bool TextServerAdvanced::shaped_text_shape(RID p_shaped) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerAdvanced::shaped_text_is_ready(RID p_shaped) const {
|
bool TextServerAdvanced::shaped_text_is_ready(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4487,7 +4487,7 @@ bool TextServerAdvanced::shaped_text_is_ready(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<TextServer::Glyph> TextServerAdvanced::shaped_text_get_glyphs(RID p_shaped) const {
|
Vector<TextServer::Glyph> TextServerAdvanced::shaped_text_get_glyphs(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4498,7 +4498,7 @@ Vector<TextServer::Glyph> TextServerAdvanced::shaped_text_get_glyphs(RID p_shape
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2i TextServerAdvanced::shaped_text_get_range(RID p_shaped) const {
|
Vector2i TextServerAdvanced::shaped_text_get_range(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Vector2i());
|
ERR_FAIL_COND_V(!sd, Vector2i());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4506,7 +4506,7 @@ Vector2i TextServerAdvanced::shaped_text_get_range(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<TextServer::Glyph> TextServerAdvanced::shaped_text_sort_logical(RID p_shaped) {
|
Vector<TextServer::Glyph> TextServerAdvanced::shaped_text_sort_logical(RID p_shaped) {
|
||||||
ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4525,7 +4525,7 @@ Vector<TextServer::Glyph> TextServerAdvanced::shaped_text_sort_logical(RID p_sha
|
||||||
|
|
||||||
Array TextServerAdvanced::shaped_text_get_objects(RID p_shaped) const {
|
Array TextServerAdvanced::shaped_text_get_objects(RID p_shaped) const {
|
||||||
Array ret;
|
Array ret;
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, ret);
|
ERR_FAIL_COND_V(!sd, ret);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4537,7 +4537,7 @@ Array TextServerAdvanced::shaped_text_get_objects(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect2 TextServerAdvanced::shaped_text_get_object_rect(RID p_shaped, Variant p_key) const {
|
Rect2 TextServerAdvanced::shaped_text_get_object_rect(RID p_shaped, Variant p_key) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Rect2());
|
ERR_FAIL_COND_V(!sd, Rect2());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4549,7 +4549,7 @@ Rect2 TextServerAdvanced::shaped_text_get_object_rect(RID p_shaped, Variant p_ke
|
||||||
}
|
}
|
||||||
|
|
||||||
Size2 TextServerAdvanced::shaped_text_get_size(RID p_shaped) const {
|
Size2 TextServerAdvanced::shaped_text_get_size(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Size2());
|
ERR_FAIL_COND_V(!sd, Size2());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4564,7 +4564,7 @@ Size2 TextServerAdvanced::shaped_text_get_size(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_get_ascent(RID p_shaped) const {
|
real_t TextServerAdvanced::shaped_text_get_ascent(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4575,7 +4575,7 @@ real_t TextServerAdvanced::shaped_text_get_ascent(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_get_descent(RID p_shaped) const {
|
real_t TextServerAdvanced::shaped_text_get_descent(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4586,7 +4586,7 @@ real_t TextServerAdvanced::shaped_text_get_descent(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_get_width(RID p_shaped) const {
|
real_t TextServerAdvanced::shaped_text_get_width(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4597,7 +4597,7 @@ real_t TextServerAdvanced::shaped_text_get_width(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_get_underline_position(RID p_shaped) const {
|
real_t TextServerAdvanced::shaped_text_get_underline_position(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -4609,7 +4609,7 @@ real_t TextServerAdvanced::shaped_text_get_underline_position(RID p_shaped) cons
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerAdvanced::shaped_text_get_underline_thickness(RID p_shaped) const {
|
real_t TextServerAdvanced::shaped_text_get_underline_thickness(RID p_shaped) const {
|
||||||
const ShapedTextDataAdvanced *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextDataAdvanced *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
|
|
@ -80,11 +80,11 @@ String TextServerFallback::get_name() const {
|
||||||
void TextServerFallback::free(RID p_rid) {
|
void TextServerFallback::free(RID p_rid) {
|
||||||
_THREAD_SAFE_METHOD_
|
_THREAD_SAFE_METHOD_
|
||||||
if (font_owner.owns(p_rid)) {
|
if (font_owner.owns(p_rid)) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_rid);
|
||||||
font_owner.free(p_rid);
|
font_owner.free(p_rid);
|
||||||
memdelete(fd);
|
memdelete(fd);
|
||||||
} else if (shaped_owner.owns(p_rid)) {
|
} else if (shaped_owner.owns(p_rid)) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_rid);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_rid);
|
||||||
shaped_owner.free(p_rid);
|
shaped_owner.free(p_rid);
|
||||||
memdelete(sd);
|
memdelete(sd);
|
||||||
}
|
}
|
||||||
|
@ -811,7 +811,7 @@ RID TextServerFallback::create_font() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_data(RID p_font_rid, const PackedByteArray &p_data) {
|
void TextServerFallback::font_set_data(RID p_font_rid, const PackedByteArray &p_data) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -822,7 +822,7 @@ void TextServerFallback::font_set_data(RID p_font_rid, const PackedByteArray &p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_data_ptr(RID p_font_rid, const uint8_t *p_data_ptr, size_t p_data_size) {
|
void TextServerFallback::font_set_data_ptr(RID p_font_rid, const uint8_t *p_data_ptr, size_t p_data_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -833,7 +833,7 @@ void TextServerFallback::font_set_data_ptr(RID p_font_rid, const uint8_t *p_data
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_antialiased(RID p_font_rid, bool p_antialiased) {
|
void TextServerFallback::font_set_antialiased(RID p_font_rid, bool p_antialiased) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -844,7 +844,7 @@ void TextServerFallback::font_set_antialiased(RID p_font_rid, bool p_antialiased
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_is_antialiased(RID p_font_rid) const {
|
bool TextServerFallback::font_is_antialiased(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -852,7 +852,7 @@ bool TextServerFallback::font_is_antialiased(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_multichannel_signed_distance_field(RID p_font_rid, bool p_msdf) {
|
void TextServerFallback::font_set_multichannel_signed_distance_field(RID p_font_rid, bool p_msdf) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -863,7 +863,7 @@ void TextServerFallback::font_set_multichannel_signed_distance_field(RID p_font_
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_is_multichannel_signed_distance_field(RID p_font_rid) const {
|
bool TextServerFallback::font_is_multichannel_signed_distance_field(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -871,7 +871,7 @@ bool TextServerFallback::font_is_multichannel_signed_distance_field(RID p_font_r
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_msdf_pixel_range(RID p_font_rid, int p_msdf_pixel_range) {
|
void TextServerFallback::font_set_msdf_pixel_range(RID p_font_rid, int p_msdf_pixel_range) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -882,7 +882,7 @@ void TextServerFallback::font_set_msdf_pixel_range(RID p_font_rid, int p_msdf_pi
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerFallback::font_get_msdf_pixel_range(RID p_font_rid) const {
|
int TextServerFallback::font_get_msdf_pixel_range(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -890,7 +890,7 @@ int TextServerFallback::font_get_msdf_pixel_range(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_msdf_size(RID p_font_rid, int p_msdf_size) {
|
void TextServerFallback::font_set_msdf_size(RID p_font_rid, int p_msdf_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -901,7 +901,7 @@ void TextServerFallback::font_set_msdf_size(RID p_font_rid, int p_msdf_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerFallback::font_get_msdf_size(RID p_font_rid) const {
|
int TextServerFallback::font_get_msdf_size(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -909,7 +909,7 @@ int TextServerFallback::font_get_msdf_size(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_fixed_size(RID p_font_rid, int p_fixed_size) {
|
void TextServerFallback::font_set_fixed_size(RID p_font_rid, int p_fixed_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -919,7 +919,7 @@ void TextServerFallback::font_set_fixed_size(RID p_font_rid, int p_fixed_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerFallback::font_get_fixed_size(RID p_font_rid) const {
|
int TextServerFallback::font_get_fixed_size(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -927,7 +927,7 @@ int TextServerFallback::font_get_fixed_size(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_force_autohinter(RID p_font_rid, bool p_force_autohinter) {
|
void TextServerFallback::font_set_force_autohinter(RID p_font_rid, bool p_force_autohinter) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -938,7 +938,7 @@ void TextServerFallback::font_set_force_autohinter(RID p_font_rid, bool p_force_
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_is_force_autohinter(RID p_font_rid) const {
|
bool TextServerFallback::font_is_force_autohinter(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -946,7 +946,7 @@ bool TextServerFallback::font_is_force_autohinter(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_hinting(RID p_font_rid, TextServer::Hinting p_hinting) {
|
void TextServerFallback::font_set_hinting(RID p_font_rid, TextServer::Hinting p_hinting) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -957,7 +957,7 @@ void TextServerFallback::font_set_hinting(RID p_font_rid, TextServer::Hinting p_
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::Hinting TextServerFallback::font_get_hinting(RID p_font_rid) const {
|
TextServer::Hinting TextServerFallback::font_get_hinting(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, HINTING_NONE);
|
ERR_FAIL_COND_V(!fd, HINTING_NONE);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -965,7 +965,7 @@ TextServer::Hinting TextServerFallback::font_get_hinting(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_variation_coordinates(RID p_font_rid, const Dictionary &p_variation_coordinates) {
|
void TextServerFallback::font_set_variation_coordinates(RID p_font_rid, const Dictionary &p_variation_coordinates) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -976,7 +976,7 @@ void TextServerFallback::font_set_variation_coordinates(RID p_font_rid, const Di
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary TextServerFallback::font_get_variation_coordinates(RID p_font_rid) const {
|
Dictionary TextServerFallback::font_get_variation_coordinates(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Dictionary());
|
ERR_FAIL_COND_V(!fd, Dictionary());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -984,7 +984,7 @@ Dictionary TextServerFallback::font_get_variation_coordinates(RID p_font_rid) co
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_oversampling(RID p_font_rid, real_t p_oversampling) {
|
void TextServerFallback::font_set_oversampling(RID p_font_rid, real_t p_oversampling) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -995,7 +995,7 @@ void TextServerFallback::font_set_oversampling(RID p_font_rid, real_t p_oversamp
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::font_get_oversampling(RID p_font_rid) const {
|
real_t TextServerFallback::font_get_oversampling(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1003,7 +1003,7 @@ real_t TextServerFallback::font_get_oversampling(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TextServerFallback::font_get_size_cache_list(RID p_font_rid) const {
|
Array TextServerFallback::font_get_size_cache_list(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Array());
|
ERR_FAIL_COND_V(!fd, Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1015,7 +1015,7 @@ Array TextServerFallback::font_get_size_cache_list(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_clear_size_cache(RID p_font_rid) {
|
void TextServerFallback::font_clear_size_cache(RID p_font_rid) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1026,7 +1026,7 @@ void TextServerFallback::font_clear_size_cache(RID p_font_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_remove_size_cache(RID p_font_rid, const Vector2i &p_size) {
|
void TextServerFallback::font_remove_size_cache(RID p_font_rid, const Vector2i &p_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1037,7 +1037,7 @@ void TextServerFallback::font_remove_size_cache(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_ascent(RID p_font_rid, int p_size, real_t p_ascent) {
|
void TextServerFallback::font_set_ascent(RID p_font_rid, int p_size, real_t p_ascent) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1048,7 +1048,7 @@ void TextServerFallback::font_set_ascent(RID p_font_rid, int p_size, real_t p_as
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::font_get_ascent(RID p_font_rid, int p_size) const {
|
real_t TextServerFallback::font_get_ascent(RID p_font_rid, int p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1064,7 +1064,7 @@ real_t TextServerFallback::font_get_ascent(RID p_font_rid, int p_size) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_descent(RID p_font_rid, int p_size, real_t p_descent) {
|
void TextServerFallback::font_set_descent(RID p_font_rid, int p_size, real_t p_descent) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
Vector2i size = _get_size(fd, p_size);
|
Vector2i size = _get_size(fd, p_size);
|
||||||
|
@ -1074,7 +1074,7 @@ void TextServerFallback::font_set_descent(RID p_font_rid, int p_size, real_t p_d
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::font_get_descent(RID p_font_rid, int p_size) const {
|
real_t TextServerFallback::font_get_descent(RID p_font_rid, int p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1090,7 +1090,7 @@ real_t TextServerFallback::font_get_descent(RID p_font_rid, int p_size) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_underline_position(RID p_font_rid, int p_size, real_t p_underline_position) {
|
void TextServerFallback::font_set_underline_position(RID p_font_rid, int p_size, real_t p_underline_position) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1101,7 +1101,7 @@ void TextServerFallback::font_set_underline_position(RID p_font_rid, int p_size,
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::font_get_underline_position(RID p_font_rid, int p_size) const {
|
real_t TextServerFallback::font_get_underline_position(RID p_font_rid, int p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1117,7 +1117,7 @@ real_t TextServerFallback::font_get_underline_position(RID p_font_rid, int p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_underline_thickness(RID p_font_rid, int p_size, real_t p_underline_thickness) {
|
void TextServerFallback::font_set_underline_thickness(RID p_font_rid, int p_size, real_t p_underline_thickness) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1128,7 +1128,7 @@ void TextServerFallback::font_set_underline_thickness(RID p_font_rid, int p_size
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::font_get_underline_thickness(RID p_font_rid, int p_size) const {
|
real_t TextServerFallback::font_get_underline_thickness(RID p_font_rid, int p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1144,7 +1144,7 @@ real_t TextServerFallback::font_get_underline_thickness(RID p_font_rid, int p_si
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_scale(RID p_font_rid, int p_size, real_t p_scale) {
|
void TextServerFallback::font_set_scale(RID p_font_rid, int p_size, real_t p_scale) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1155,7 +1155,7 @@ void TextServerFallback::font_set_scale(RID p_font_rid, int p_size, real_t p_sca
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::font_get_scale(RID p_font_rid, int p_size) const {
|
real_t TextServerFallback::font_get_scale(RID p_font_rid, int p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0.f);
|
ERR_FAIL_COND_V(!fd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1171,7 +1171,7 @@ real_t TextServerFallback::font_get_scale(RID p_font_rid, int p_size) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing, int p_value) {
|
void TextServerFallback::font_set_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing, int p_value) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1192,7 +1192,7 @@ void TextServerFallback::font_set_spacing(RID p_font_rid, int p_size, TextServer
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerFallback::font_get_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing) const {
|
int TextServerFallback::font_get_spacing(RID p_font_rid, int p_size, TextServer::SpacingType p_spacing) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0);
|
ERR_FAIL_COND_V(!fd, 0);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1223,7 +1223,7 @@ int TextServerFallback::font_get_spacing(RID p_font_rid, int p_size, TextServer:
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerFallback::font_get_texture_count(RID p_font_rid, const Vector2i &p_size) const {
|
int TextServerFallback::font_get_texture_count(RID p_font_rid, const Vector2i &p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, 0);
|
ERR_FAIL_COND_V(!fd, 0);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1235,7 +1235,7 @@ int TextServerFallback::font_get_texture_count(RID p_font_rid, const Vector2i &p
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_clear_textures(RID p_font_rid, const Vector2i &p_size) {
|
void TextServerFallback::font_clear_textures(RID p_font_rid, const Vector2i &p_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
Vector2i size = _get_size_outline(fd, p_size);
|
Vector2i size = _get_size_outline(fd, p_size);
|
||||||
|
@ -1245,7 +1245,7 @@ void TextServerFallback::font_clear_textures(RID p_font_rid, const Vector2i &p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_remove_texture(RID p_font_rid, const Vector2i &p_size, int p_texture_index) {
|
void TextServerFallback::font_remove_texture(RID p_font_rid, const Vector2i &p_size, int p_texture_index) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1257,7 +1257,7 @@ void TextServerFallback::font_remove_texture(RID p_font_rid, const Vector2i &p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const Ref<Image> &p_image) {
|
void TextServerFallback::font_set_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const Ref<Image> &p_image) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
ERR_FAIL_COND(p_image.is_null());
|
ERR_FAIL_COND(p_image.is_null());
|
||||||
|
|
||||||
|
@ -1283,7 +1283,7 @@ void TextServerFallback::font_set_texture_image(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
Ref<Image> TextServerFallback::font_get_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
Ref<Image> TextServerFallback::font_get_texture_image(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Ref<Image>());
|
ERR_FAIL_COND_V(!fd, Ref<Image>());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1298,7 +1298,7 @@ Ref<Image> TextServerFallback::font_get_texture_image(RID p_font_rid, const Vect
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const PackedInt32Array &p_offset) {
|
void TextServerFallback::font_set_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index, const PackedInt32Array &p_offset) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1313,7 +1313,7 @@ void TextServerFallback::font_set_texture_offsets(RID p_font_rid, const Vector2i
|
||||||
}
|
}
|
||||||
|
|
||||||
PackedInt32Array TextServerFallback::font_get_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
PackedInt32Array TextServerFallback::font_get_texture_offsets(RID p_font_rid, const Vector2i &p_size, int p_texture_index) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, PackedInt32Array());
|
ERR_FAIL_COND_V(!fd, PackedInt32Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1326,7 +1326,7 @@ PackedInt32Array TextServerFallback::font_get_texture_offsets(RID p_font_rid, co
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TextServerFallback::font_get_glyph_list(RID p_font_rid, const Vector2i &p_size) const {
|
Array TextServerFallback::font_get_glyph_list(RID p_font_rid, const Vector2i &p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Array());
|
ERR_FAIL_COND_V(!fd, Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1343,7 +1343,7 @@ Array TextServerFallback::font_get_glyph_list(RID p_font_rid, const Vector2i &p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_clear_glyphs(RID p_font_rid, const Vector2i &p_size) {
|
void TextServerFallback::font_clear_glyphs(RID p_font_rid, const Vector2i &p_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1354,7 +1354,7 @@ void TextServerFallback::font_clear_glyphs(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_remove_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) {
|
void TextServerFallback::font_remove_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1365,7 +1365,7 @@ void TextServerFallback::font_remove_glyph(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerFallback::font_get_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph) const {
|
Vector2 TextServerFallback::font_get_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1386,7 +1386,7 @@ Vector2 TextServerFallback::font_get_glyph_advance(RID p_font_rid, int p_size, i
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph, const Vector2 &p_advance) {
|
void TextServerFallback::font_set_glyph_advance(RID p_font_rid, int p_size, int32_t p_glyph, const Vector2 &p_advance) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1401,7 +1401,7 @@ void TextServerFallback::font_set_glyph_advance(RID p_font_rid, int p_size, int3
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerFallback::font_get_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
Vector2 TextServerFallback::font_get_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1422,7 +1422,7 @@ Vector2 TextServerFallback::font_get_glyph_offset(RID p_font_rid, const Vector2i
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_offset) {
|
void TextServerFallback::font_set_glyph_offset(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_offset) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1437,7 +1437,7 @@ void TextServerFallback::font_set_glyph_offset(RID p_font_rid, const Vector2i &p
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerFallback::font_get_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
Vector2 TextServerFallback::font_get_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1458,7 +1458,7 @@ Vector2 TextServerFallback::font_get_glyph_size(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_gl_size) {
|
void TextServerFallback::font_set_glyph_size(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Vector2 &p_gl_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1473,7 +1473,7 @@ void TextServerFallback::font_set_glyph_size(RID p_font_rid, const Vector2i &p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect2 TextServerFallback::font_get_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
Rect2 TextServerFallback::font_get_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Rect2());
|
ERR_FAIL_COND_V(!fd, Rect2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1489,7 +1489,7 @@ Rect2 TextServerFallback::font_get_glyph_uv_rect(RID p_font_rid, const Vector2i
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Rect2 &p_uv_rect) {
|
void TextServerFallback::font_set_glyph_uv_rect(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, const Rect2 &p_uv_rect) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1504,7 +1504,7 @@ void TextServerFallback::font_set_glyph_uv_rect(RID p_font_rid, const Vector2i &
|
||||||
}
|
}
|
||||||
|
|
||||||
int TextServerFallback::font_get_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
int TextServerFallback::font_get_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, -1);
|
ERR_FAIL_COND_V(!fd, -1);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1520,7 +1520,7 @@ int TextServerFallback::font_get_glyph_texture_idx(RID p_font_rid, const Vector2
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, int p_texture_idx) {
|
void TextServerFallback::font_set_glyph_texture_idx(RID p_font_rid, const Vector2i &p_size, int32_t p_glyph, int p_texture_idx) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1535,7 +1535,7 @@ void TextServerFallback::font_set_glyph_texture_idx(RID p_font_rid, const Vector
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_get_glyph_contours(RID p_font_rid, int p_size, int32_t p_index, Vector<Vector3> &r_points, Vector<int32_t> &r_contours, bool &r_orientation) const {
|
bool TextServerFallback::font_get_glyph_contours(RID p_font_rid, int p_size, int32_t p_index, Vector<Vector3> &r_points, Vector<int32_t> &r_contours, bool &r_orientation) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1569,7 +1569,7 @@ bool TextServerFallback::font_get_glyph_contours(RID p_font_rid, int p_size, int
|
||||||
}
|
}
|
||||||
|
|
||||||
Array TextServerFallback::font_get_kerning_list(RID p_font_rid, int p_size) const {
|
Array TextServerFallback::font_get_kerning_list(RID p_font_rid, int p_size) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Array());
|
ERR_FAIL_COND_V(!fd, Array());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1585,7 +1585,7 @@ Array TextServerFallback::font_get_kerning_list(RID p_font_rid, int p_size) cons
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_clear_kerning_map(RID p_font_rid, int p_size) {
|
void TextServerFallback::font_clear_kerning_map(RID p_font_rid, int p_size) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1596,7 +1596,7 @@ void TextServerFallback::font_clear_kerning_map(RID p_font_rid, int p_size) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_remove_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) {
|
void TextServerFallback::font_remove_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1607,7 +1607,7 @@ void TextServerFallback::font_remove_kerning(RID p_font_rid, int p_size, const V
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair, const Vector2 &p_kerning) {
|
void TextServerFallback::font_set_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair, const Vector2 &p_kerning) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1618,7 +1618,7 @@ void TextServerFallback::font_set_kerning(RID p_font_rid, int p_size, const Vect
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2 TextServerFallback::font_get_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) const {
|
Vector2 TextServerFallback::font_get_kerning(RID p_font_rid, int p_size, const Vector2i &p_glyph_pair) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector2());
|
ERR_FAIL_COND_V(!fd, Vector2());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1657,7 +1657,7 @@ int32_t TextServerFallback::font_get_glyph_index(RID p_font_rid, int p_size, cha
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_has_char(RID p_font_rid, char32_t p_char) const {
|
bool TextServerFallback::font_has_char(RID p_font_rid, char32_t p_char) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1675,7 +1675,7 @@ bool TextServerFallback::font_has_char(RID p_font_rid, char32_t p_char) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
String TextServerFallback::font_get_supported_chars(RID p_font_rid) const {
|
String TextServerFallback::font_get_supported_chars(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, String());
|
ERR_FAIL_COND_V(!fd, String());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1709,7 +1709,7 @@ String TextServerFallback::font_get_supported_chars(RID p_font_rid) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_render_range(RID p_font_rid, const Vector2i &p_size, char32_t p_start, char32_t p_end) {
|
void TextServerFallback::font_render_range(RID p_font_rid, const Vector2i &p_size, char32_t p_start, char32_t p_end) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1721,7 +1721,7 @@ void TextServerFallback::font_render_range(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_render_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_index) {
|
void TextServerFallback::font_render_glyph(RID p_font_rid, const Vector2i &p_size, int32_t p_index) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1731,7 +1731,7 @@ void TextServerFallback::font_render_glyph(RID p_font_rid, const Vector2i &p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_draw_glyph(RID p_font_rid, RID p_canvas, int p_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
void TextServerFallback::font_draw_glyph(RID p_font_rid, RID p_canvas, int p_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1771,7 +1771,7 @@ void TextServerFallback::font_draw_glyph(RID p_font_rid, RID p_canvas, int p_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_draw_glyph_outline(RID p_font_rid, RID p_canvas, int p_size, int p_outline_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
void TextServerFallback::font_draw_glyph_outline(RID p_font_rid, RID p_canvas, int p_size, int p_outline_size, const Vector2 &p_pos, int32_t p_index, const Color &p_color) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1811,7 +1811,7 @@ void TextServerFallback::font_draw_glyph_outline(RID p_font_rid, RID p_canvas, i
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_is_language_supported(RID p_font_rid, const String &p_language) const {
|
bool TextServerFallback::font_is_language_supported(RID p_font_rid, const String &p_language) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1823,7 +1823,7 @@ bool TextServerFallback::font_is_language_supported(RID p_font_rid, const String
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_language_support_override(RID p_font_rid, const String &p_language, bool p_supported) {
|
void TextServerFallback::font_set_language_support_override(RID p_font_rid, const String &p_language, bool p_supported) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1831,7 +1831,7 @@ void TextServerFallback::font_set_language_support_override(RID p_font_rid, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_get_language_support_override(RID p_font_rid, const String &p_language) {
|
bool TextServerFallback::font_get_language_support_override(RID p_font_rid, const String &p_language) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1839,7 +1839,7 @@ bool TextServerFallback::font_get_language_support_override(RID p_font_rid, cons
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_remove_language_support_override(RID p_font_rid, const String &p_language) {
|
void TextServerFallback::font_remove_language_support_override(RID p_font_rid, const String &p_language) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1847,7 +1847,7 @@ void TextServerFallback::font_remove_language_support_override(RID p_font_rid, c
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> TextServerFallback::font_get_language_support_overrides(RID p_font_rid) {
|
Vector<String> TextServerFallback::font_get_language_support_overrides(RID p_font_rid) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector<String>());
|
ERR_FAIL_COND_V(!fd, Vector<String>());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1859,7 +1859,7 @@ Vector<String> TextServerFallback::font_get_language_support_overrides(RID p_fon
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_is_script_supported(RID p_font_rid, const String &p_script) const {
|
bool TextServerFallback::font_is_script_supported(RID p_font_rid, const String &p_script) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1871,7 +1871,7 @@ bool TextServerFallback::font_is_script_supported(RID p_font_rid, const String &
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_set_script_support_override(RID p_font_rid, const String &p_script, bool p_supported) {
|
void TextServerFallback::font_set_script_support_override(RID p_font_rid, const String &p_script, bool p_supported) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1879,7 +1879,7 @@ void TextServerFallback::font_set_script_support_override(RID p_font_rid, const
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::font_get_script_support_override(RID p_font_rid, const String &p_script) {
|
bool TextServerFallback::font_get_script_support_override(RID p_font_rid, const String &p_script) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, false);
|
ERR_FAIL_COND_V(!fd, false);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1887,7 +1887,7 @@ bool TextServerFallback::font_get_script_support_override(RID p_font_rid, const
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::font_remove_script_support_override(RID p_font_rid, const String &p_script) {
|
void TextServerFallback::font_remove_script_support_override(RID p_font_rid, const String &p_script) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND(!fd);
|
ERR_FAIL_COND(!fd);
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1897,7 +1897,7 @@ void TextServerFallback::font_remove_script_support_override(RID p_font_rid, con
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<String> TextServerFallback::font_get_script_support_overrides(RID p_font_rid) {
|
Vector<String> TextServerFallback::font_get_script_support_overrides(RID p_font_rid) {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Vector<String>());
|
ERR_FAIL_COND_V(!fd, Vector<String>());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1913,7 +1913,7 @@ Dictionary TextServerFallback::font_supported_feature_list(RID p_font_rid) const
|
||||||
}
|
}
|
||||||
|
|
||||||
Dictionary TextServerFallback::font_supported_variation_list(RID p_font_rid) const {
|
Dictionary TextServerFallback::font_supported_variation_list(RID p_font_rid) const {
|
||||||
FontDataFallback *fd = font_owner.getornull(p_font_rid);
|
FontDataFallback *fd = font_owner.get_or_null(p_font_rid);
|
||||||
ERR_FAIL_COND_V(!fd, Dictionary());
|
ERR_FAIL_COND_V(!fd, Dictionary());
|
||||||
|
|
||||||
MutexLock lock(fd->mutex);
|
MutexLock lock(fd->mutex);
|
||||||
|
@ -1944,7 +1944,7 @@ void TextServerFallback::font_set_global_oversampling(real_t p_oversampling) {
|
||||||
List<RID> text_bufs;
|
List<RID> text_bufs;
|
||||||
shaped_owner.get_owned_list(&text_bufs);
|
shaped_owner.get_owned_list(&text_bufs);
|
||||||
for (const RID &E : text_bufs) {
|
for (const RID &E : text_bufs) {
|
||||||
invalidate(shaped_owner.getornull(E));
|
invalidate(shaped_owner.get_or_null(E));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1969,7 +1969,7 @@ void TextServerFallback::invalidate(ShapedTextData *p_shaped) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::full_copy(ShapedTextData *p_shaped) {
|
void TextServerFallback::full_copy(ShapedTextData *p_shaped) {
|
||||||
ShapedTextData *parent = shaped_owner.getornull(p_shaped->parent);
|
ShapedTextData *parent = shaped_owner.get_or_null(p_shaped->parent);
|
||||||
|
|
||||||
for (Map<Variant, ShapedTextData::EmbeddedObject>::Element *E = parent->objects.front(); E; E = E->next()) {
|
for (Map<Variant, ShapedTextData::EmbeddedObject>::Element *E = parent->objects.front(); E; E = E->next()) {
|
||||||
if (E->get().pos >= p_shaped->start && E->get().pos < p_shaped->end) {
|
if (E->get().pos >= p_shaped->start && E->get().pos < p_shaped->end) {
|
||||||
|
@ -2000,7 +2000,7 @@ RID TextServerFallback::create_shaped_text(TextServer::Direction p_direction, Te
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::shaped_text_clear(RID p_shaped) {
|
void TextServerFallback::shaped_text_clear(RID p_shaped) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2024,7 +2024,7 @@ TextServer::Direction TextServerFallback::shaped_text_get_direction(RID p_shaped
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::shaped_text_set_orientation(RID p_shaped, TextServer::Orientation p_orientation) {
|
void TextServerFallback::shaped_text_set_orientation(RID p_shaped, TextServer::Orientation p_orientation) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2042,7 +2042,7 @@ void TextServerFallback::shaped_text_set_bidi_override(RID p_shaped, const Vecto
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::Orientation TextServerFallback::shaped_text_get_orientation(RID p_shaped) const {
|
TextServer::Orientation TextServerFallback::shaped_text_get_orientation(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, TextServer::ORIENTATION_HORIZONTAL);
|
ERR_FAIL_COND_V(!sd, TextServer::ORIENTATION_HORIZONTAL);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2050,7 +2050,7 @@ TextServer::Orientation TextServerFallback::shaped_text_get_orientation(RID p_sh
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::shaped_text_set_preserve_invalid(RID p_shaped, bool p_enabled) {
|
void TextServerFallback::shaped_text_set_preserve_invalid(RID p_shaped, bool p_enabled) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
@ -2064,7 +2064,7 @@ void TextServerFallback::shaped_text_set_preserve_invalid(RID p_shaped, bool p_e
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_get_preserve_invalid(RID p_shaped) const {
|
bool TextServerFallback::shaped_text_get_preserve_invalid(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2072,7 +2072,7 @@ bool TextServerFallback::shaped_text_get_preserve_invalid(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::shaped_text_set_preserve_control(RID p_shaped, bool p_enabled) {
|
void TextServerFallback::shaped_text_set_preserve_control(RID p_shaped, bool p_enabled) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND(!sd);
|
ERR_FAIL_COND(!sd);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2086,7 +2086,7 @@ void TextServerFallback::shaped_text_set_preserve_control(RID p_shaped, bool p_e
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_get_preserve_control(RID p_shaped) const {
|
bool TextServerFallback::shaped_text_get_preserve_control(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2094,14 +2094,14 @@ bool TextServerFallback::shaped_text_get_preserve_control(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_add_string(RID p_shaped, const String &p_text, const Vector<RID> &p_fonts, int p_size, const Dictionary &p_opentype_features, const String &p_language) {
|
bool TextServerFallback::shaped_text_add_string(RID p_shaped, const String &p_text, const Vector<RID> &p_fonts, int p_size, const Dictionary &p_opentype_features, const String &p_language) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
ERR_FAIL_COND_V(p_size <= 0, false);
|
ERR_FAIL_COND_V(p_size <= 0, false);
|
||||||
|
|
||||||
for (int i = 0; i < p_fonts.size(); i++) {
|
for (int i = 0; i < p_fonts.size(); i++) {
|
||||||
ERR_FAIL_COND_V(!font_owner.getornull(p_fonts[i]), false);
|
ERR_FAIL_COND_V(!font_owner.get_or_null(p_fonts[i]), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_text.is_empty()) {
|
if (p_text.is_empty()) {
|
||||||
|
@ -2141,7 +2141,7 @@ bool TextServerFallback::shaped_text_add_string(RID p_shaped, const String &p_te
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_add_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align, int p_length) {
|
bool TextServerFallback::shaped_text_add_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align, int p_length) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2172,7 +2172,7 @@ bool TextServerFallback::shaped_text_add_object(RID p_shaped, Variant p_key, con
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_resize_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align) {
|
bool TextServerFallback::shaped_text_resize_object(RID p_shaped, Variant p_key, const Size2 &p_size, InlineAlign p_inline_align) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2305,7 +2305,7 @@ bool TextServerFallback::shaped_text_resize_object(RID p_shaped, Variant p_key,
|
||||||
}
|
}
|
||||||
|
|
||||||
RID TextServerFallback::shaped_text_substr(RID p_shaped, int p_start, int p_length) const {
|
RID TextServerFallback::shaped_text_substr(RID p_shaped, int p_start, int p_length) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, RID());
|
ERR_FAIL_COND_V(!sd, RID());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2459,7 +2459,7 @@ RID TextServerFallback::shaped_text_substr(RID p_shaped, int p_start, int p_leng
|
||||||
}
|
}
|
||||||
|
|
||||||
RID TextServerFallback::shaped_text_get_parent(RID p_shaped) const {
|
RID TextServerFallback::shaped_text_get_parent(RID p_shaped) const {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, RID());
|
ERR_FAIL_COND_V(!sd, RID());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2467,7 +2467,7 @@ RID TextServerFallback::shaped_text_get_parent(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_fit_to_width(RID p_shaped, real_t p_width, uint8_t /*JustificationFlag*/ p_jst_flags) {
|
real_t TextServerFallback::shaped_text_fit_to_width(RID p_shaped, real_t p_width, uint8_t /*JustificationFlag*/ p_jst_flags) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2547,7 +2547,7 @@ real_t TextServerFallback::shaped_text_fit_to_width(RID p_shaped, real_t p_width
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_tab_align(RID p_shaped, const Vector<real_t> &p_tab_stops) {
|
real_t TextServerFallback::shaped_text_tab_align(RID p_shaped, const Vector<real_t> &p_tab_stops) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2597,7 +2597,7 @@ real_t TextServerFallback::shaped_text_tab_align(RID p_shaped, const Vector<real
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_update_breaks(RID p_shaped) {
|
bool TextServerFallback::shaped_text_update_breaks(RID p_shaped) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2638,7 +2638,7 @@ bool TextServerFallback::shaped_text_update_breaks(RID p_shaped) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_update_justification_ops(RID p_shaped) {
|
bool TextServerFallback::shaped_text_update_justification_ops(RID p_shaped) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2654,7 +2654,7 @@ bool TextServerFallback::shaped_text_update_justification_ops(RID p_shaped) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextServerFallback::shaped_text_overrun_trim_to_width(RID p_shaped_line, real_t p_width, uint8_t p_trim_flags) {
|
void TextServerFallback::shaped_text_overrun_trim_to_width(RID p_shaped_line, real_t p_width, uint8_t p_trim_flags) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped_line);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped_line);
|
||||||
ERR_FAIL_COND_MSG(!sd, "ShapedTextDataFallback invalid.");
|
ERR_FAIL_COND_MSG(!sd, "ShapedTextDataFallback invalid.");
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2771,7 +2771,7 @@ void TextServerFallback::shaped_text_overrun_trim_to_width(RID p_shaped_line, re
|
||||||
}
|
}
|
||||||
|
|
||||||
TextServer::TrimData TextServerFallback::shaped_text_get_trim_data(RID p_shaped) const {
|
TextServer::TrimData TextServerFallback::shaped_text_get_trim_data(RID p_shaped) const {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V_MSG(!sd, TrimData(), "ShapedTextDataFallback invalid.");
|
ERR_FAIL_COND_V_MSG(!sd, TrimData(), "ShapedTextDataFallback invalid.");
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2779,7 +2779,7 @@ TextServer::TrimData TextServerFallback::shaped_text_get_trim_data(RID p_shaped)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_shape(RID p_shaped) {
|
bool TextServerFallback::shaped_text_shape(RID p_shaped) {
|
||||||
ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2973,7 +2973,7 @@ bool TextServerFallback::shaped_text_shape(RID p_shaped) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TextServerFallback::shaped_text_is_ready(RID p_shaped) const {
|
bool TextServerFallback::shaped_text_is_ready(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, false);
|
ERR_FAIL_COND_V(!sd, false);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2981,7 +2981,7 @@ bool TextServerFallback::shaped_text_is_ready(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<TextServer::Glyph> TextServerFallback::shaped_text_get_glyphs(RID p_shaped) const {
|
Vector<TextServer::Glyph> TextServerFallback::shaped_text_get_glyphs(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -2992,7 +2992,7 @@ Vector<TextServer::Glyph> TextServerFallback::shaped_text_get_glyphs(RID p_shape
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector2i TextServerFallback::shaped_text_get_range(RID p_shaped) const {
|
Vector2i TextServerFallback::shaped_text_get_range(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Vector2i());
|
ERR_FAIL_COND_V(!sd, Vector2i());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3000,7 +3000,7 @@ Vector2i TextServerFallback::shaped_text_get_range(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<TextServer::Glyph> TextServerFallback::shaped_text_sort_logical(RID p_shaped) {
|
Vector<TextServer::Glyph> TextServerFallback::shaped_text_sort_logical(RID p_shaped) {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
ERR_FAIL_COND_V(!sd, Vector<TextServer::Glyph>());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3013,7 +3013,7 @@ Vector<TextServer::Glyph> TextServerFallback::shaped_text_sort_logical(RID p_sha
|
||||||
|
|
||||||
Array TextServerFallback::shaped_text_get_objects(RID p_shaped) const {
|
Array TextServerFallback::shaped_text_get_objects(RID p_shaped) const {
|
||||||
Array ret;
|
Array ret;
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, ret);
|
ERR_FAIL_COND_V(!sd, ret);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3025,7 +3025,7 @@ Array TextServerFallback::shaped_text_get_objects(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect2 TextServerFallback::shaped_text_get_object_rect(RID p_shaped, Variant p_key) const {
|
Rect2 TextServerFallback::shaped_text_get_object_rect(RID p_shaped, Variant p_key) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Rect2());
|
ERR_FAIL_COND_V(!sd, Rect2());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3037,7 +3037,7 @@ Rect2 TextServerFallback::shaped_text_get_object_rect(RID p_shaped, Variant p_ke
|
||||||
}
|
}
|
||||||
|
|
||||||
Size2 TextServerFallback::shaped_text_get_size(RID p_shaped) const {
|
Size2 TextServerFallback::shaped_text_get_size(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, Size2());
|
ERR_FAIL_COND_V(!sd, Size2());
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3052,7 +3052,7 @@ Size2 TextServerFallback::shaped_text_get_size(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_get_ascent(RID p_shaped) const {
|
real_t TextServerFallback::shaped_text_get_ascent(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3063,7 +3063,7 @@ real_t TextServerFallback::shaped_text_get_ascent(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_get_descent(RID p_shaped) const {
|
real_t TextServerFallback::shaped_text_get_descent(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3074,7 +3074,7 @@ real_t TextServerFallback::shaped_text_get_descent(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_get_width(RID p_shaped) const {
|
real_t TextServerFallback::shaped_text_get_width(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3085,7 +3085,7 @@ real_t TextServerFallback::shaped_text_get_width(RID p_shaped) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_get_underline_position(RID p_shaped) const {
|
real_t TextServerFallback::shaped_text_get_underline_position(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
@ -3097,7 +3097,7 @@ real_t TextServerFallback::shaped_text_get_underline_position(RID p_shaped) cons
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t TextServerFallback::shaped_text_get_underline_thickness(RID p_shaped) const {
|
real_t TextServerFallback::shaped_text_get_underline_thickness(RID p_shaped) const {
|
||||||
const ShapedTextData *sd = shaped_owner.getornull(p_shaped);
|
const ShapedTextData *sd = shaped_owner.get_or_null(p_shaped);
|
||||||
ERR_FAIL_COND_V(!sd, 0.f);
|
ERR_FAIL_COND_V(!sd, 0.f);
|
||||||
|
|
||||||
MutexLock lock(sd->mutex);
|
MutexLock lock(sd->mutex);
|
||||||
|
|
|
@ -175,7 +175,7 @@ Variant PhysicsDirectBodyState2DSW::get_contact_collider_shape_metadata(int p_co
|
||||||
if (!PhysicsServer2DSW::singletonsw->body_owner.owns(body->contacts[p_contact_idx].collider)) {
|
if (!PhysicsServer2DSW::singletonsw->body_owner.owns(body->contacts[p_contact_idx].collider)) {
|
||||||
return Variant();
|
return Variant();
|
||||||
}
|
}
|
||||||
Body2DSW *other = PhysicsServer2DSW::singletonsw->body_owner.getornull(body->contacts[p_contact_idx].collider);
|
Body2DSW *other = PhysicsServer2DSW::singletonsw->body_owner.get_or_null(body->contacts[p_contact_idx].collider);
|
||||||
|
|
||||||
int sidx = body->contacts[p_contact_idx].collider_shape;
|
int sidx = body->contacts[p_contact_idx].collider_shape;
|
||||||
if (sidx < 0 || sidx >= other->get_shape_count()) {
|
if (sidx < 0 || sidx >= other->get_shape_count()) {
|
||||||
|
|
|
@ -112,32 +112,32 @@ RID PhysicsServer2DSW::concave_polygon_shape_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::shape_set_data(RID p_shape, const Variant &p_data) {
|
void PhysicsServer2DSW::shape_set_data(RID p_shape, const Variant &p_data) {
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_shape);
|
Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND(!shape);
|
ERR_FAIL_COND(!shape);
|
||||||
shape->set_data(p_data);
|
shape->set_data(p_data);
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::shape_set_custom_solver_bias(RID p_shape, real_t p_bias) {
|
void PhysicsServer2DSW::shape_set_custom_solver_bias(RID p_shape, real_t p_bias) {
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_shape);
|
Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND(!shape);
|
ERR_FAIL_COND(!shape);
|
||||||
shape->set_custom_bias(p_bias);
|
shape->set_custom_bias(p_bias);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsServer2D::ShapeType PhysicsServer2DSW::shape_get_type(RID p_shape) const {
|
PhysicsServer2D::ShapeType PhysicsServer2DSW::shape_get_type(RID p_shape) const {
|
||||||
const Shape2DSW *shape = shape_owner.getornull(p_shape);
|
const Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, SHAPE_CUSTOM);
|
ERR_FAIL_COND_V(!shape, SHAPE_CUSTOM);
|
||||||
return shape->get_type();
|
return shape->get_type();
|
||||||
};
|
};
|
||||||
|
|
||||||
Variant PhysicsServer2DSW::shape_get_data(RID p_shape) const {
|
Variant PhysicsServer2DSW::shape_get_data(RID p_shape) const {
|
||||||
const Shape2DSW *shape = shape_owner.getornull(p_shape);
|
const Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, Variant());
|
ERR_FAIL_COND_V(!shape, Variant());
|
||||||
ERR_FAIL_COND_V(!shape->is_configured(), Variant());
|
ERR_FAIL_COND_V(!shape->is_configured(), Variant());
|
||||||
return shape->get_data();
|
return shape->get_data();
|
||||||
};
|
};
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::shape_get_custom_solver_bias(RID p_shape) const {
|
real_t PhysicsServer2DSW::shape_get_custom_solver_bias(RID p_shape) const {
|
||||||
const Shape2DSW *shape = shape_owner.getornull(p_shape);
|
const Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
return shape->get_custom_bias();
|
return shape->get_custom_bias();
|
||||||
}
|
}
|
||||||
|
@ -193,9 +193,9 @@ void PhysicsServer2DSW::_shape_col_cbk(const Vector2 &p_point_A, const Vector2 &
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsServer2DSW::shape_collide(RID p_shape_A, const Transform2D &p_xform_A, const Vector2 &p_motion_A, RID p_shape_B, const Transform2D &p_xform_B, const Vector2 &p_motion_B, Vector2 *r_results, int p_result_max, int &r_result_count) {
|
bool PhysicsServer2DSW::shape_collide(RID p_shape_A, const Transform2D &p_xform_A, const Vector2 &p_motion_A, RID p_shape_B, const Transform2D &p_xform_B, const Vector2 &p_motion_B, Vector2 *r_results, int p_result_max, int &r_result_count) {
|
||||||
Shape2DSW *shape_A = shape_owner.getornull(p_shape_A);
|
Shape2DSW *shape_A = shape_owner.get_or_null(p_shape_A);
|
||||||
ERR_FAIL_COND_V(!shape_A, false);
|
ERR_FAIL_COND_V(!shape_A, false);
|
||||||
Shape2DSW *shape_B = shape_owner.getornull(p_shape_B);
|
Shape2DSW *shape_B = shape_owner.get_or_null(p_shape_B);
|
||||||
ERR_FAIL_COND_V(!shape_B, false);
|
ERR_FAIL_COND_V(!shape_B, false);
|
||||||
|
|
||||||
if (p_result_max == 0) {
|
if (p_result_max == 0) {
|
||||||
|
@ -218,7 +218,7 @@ RID PhysicsServer2DSW::space_create() {
|
||||||
RID id = space_owner.make_rid(space);
|
RID id = space_owner.make_rid(space);
|
||||||
space->set_self(id);
|
space->set_self(id);
|
||||||
RID area_id = area_create();
|
RID area_id = area_create();
|
||||||
Area2DSW *area = area_owner.getornull(area_id);
|
Area2DSW *area = area_owner.get_or_null(area_id);
|
||||||
ERR_FAIL_COND_V(!area, RID());
|
ERR_FAIL_COND_V(!area, RID());
|
||||||
space->set_default_area(area);
|
space->set_default_area(area);
|
||||||
area->set_space(space);
|
area->set_space(space);
|
||||||
|
@ -228,7 +228,7 @@ RID PhysicsServer2DSW::space_create() {
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::space_set_active(RID p_space, bool p_active) {
|
void PhysicsServer2DSW::space_set_active(RID p_space, bool p_active) {
|
||||||
Space2DSW *space = space_owner.getornull(p_space);
|
Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND(!space);
|
ERR_FAIL_COND(!space);
|
||||||
if (p_active) {
|
if (p_active) {
|
||||||
active_spaces.insert(space);
|
active_spaces.insert(space);
|
||||||
|
@ -238,45 +238,45 @@ void PhysicsServer2DSW::space_set_active(RID p_space, bool p_active) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsServer2DSW::space_is_active(RID p_space) const {
|
bool PhysicsServer2DSW::space_is_active(RID p_space) const {
|
||||||
const Space2DSW *space = space_owner.getornull(p_space);
|
const Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND_V(!space, false);
|
ERR_FAIL_COND_V(!space, false);
|
||||||
|
|
||||||
return active_spaces.has(space);
|
return active_spaces.has(space);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::space_set_param(RID p_space, SpaceParameter p_param, real_t p_value) {
|
void PhysicsServer2DSW::space_set_param(RID p_space, SpaceParameter p_param, real_t p_value) {
|
||||||
Space2DSW *space = space_owner.getornull(p_space);
|
Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND(!space);
|
ERR_FAIL_COND(!space);
|
||||||
|
|
||||||
space->set_param(p_param, p_value);
|
space->set_param(p_param, p_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::space_get_param(RID p_space, SpaceParameter p_param) const {
|
real_t PhysicsServer2DSW::space_get_param(RID p_space, SpaceParameter p_param) const {
|
||||||
const Space2DSW *space = space_owner.getornull(p_space);
|
const Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND_V(!space, 0);
|
ERR_FAIL_COND_V(!space, 0);
|
||||||
return space->get_param(p_param);
|
return space->get_param(p_param);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::space_set_debug_contacts(RID p_space, int p_max_contacts) {
|
void PhysicsServer2DSW::space_set_debug_contacts(RID p_space, int p_max_contacts) {
|
||||||
Space2DSW *space = space_owner.getornull(p_space);
|
Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND(!space);
|
ERR_FAIL_COND(!space);
|
||||||
space->set_debug_contacts(p_max_contacts);
|
space->set_debug_contacts(p_max_contacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<Vector2> PhysicsServer2DSW::space_get_contacts(RID p_space) const {
|
Vector<Vector2> PhysicsServer2DSW::space_get_contacts(RID p_space) const {
|
||||||
Space2DSW *space = space_owner.getornull(p_space);
|
Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND_V(!space, Vector<Vector2>());
|
ERR_FAIL_COND_V(!space, Vector<Vector2>());
|
||||||
return space->get_debug_contacts();
|
return space->get_debug_contacts();
|
||||||
}
|
}
|
||||||
|
|
||||||
int PhysicsServer2DSW::space_get_contact_count(RID p_space) const {
|
int PhysicsServer2DSW::space_get_contact_count(RID p_space) const {
|
||||||
Space2DSW *space = space_owner.getornull(p_space);
|
Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND_V(!space, 0);
|
ERR_FAIL_COND_V(!space, 0);
|
||||||
return space->get_debug_contact_count();
|
return space->get_debug_contact_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsDirectSpaceState2D *PhysicsServer2DSW::space_get_direct_state(RID p_space) {
|
PhysicsDirectSpaceState2D *PhysicsServer2DSW::space_get_direct_state(RID p_space) {
|
||||||
Space2DSW *space = space_owner.getornull(p_space);
|
Space2DSW *space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND_V(!space, nullptr);
|
ERR_FAIL_COND_V(!space, nullptr);
|
||||||
ERR_FAIL_COND_V_MSG((using_threads && !doing_sync) || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
|
ERR_FAIL_COND_V_MSG((using_threads && !doing_sync) || space->is_locked(), nullptr, "Space state is inaccessible right now, wait for iteration or physics process notification.");
|
||||||
|
|
||||||
|
@ -291,12 +291,12 @@ RID PhysicsServer2DSW::area_create() {
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_space(RID p_area, RID p_space) {
|
void PhysicsServer2DSW::area_set_space(RID p_area, RID p_space) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
Space2DSW *space = nullptr;
|
Space2DSW *space = nullptr;
|
||||||
if (p_space.is_valid()) {
|
if (p_space.is_valid()) {
|
||||||
space = space_owner.getornull(p_space);
|
space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND(!space);
|
ERR_FAIL_COND(!space);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -309,7 +309,7 @@ void PhysicsServer2DSW::area_set_space(RID p_area, RID p_space) {
|
||||||
};
|
};
|
||||||
|
|
||||||
RID PhysicsServer2DSW::area_get_space(RID p_area) const {
|
RID PhysicsServer2DSW::area_get_space(RID p_area) const {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, RID());
|
ERR_FAIL_COND_V(!area, RID());
|
||||||
|
|
||||||
Space2DSW *space = area->get_space();
|
Space2DSW *space = area->get_space();
|
||||||
|
@ -320,34 +320,34 @@ RID PhysicsServer2DSW::area_get_space(RID p_area) const {
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) {
|
void PhysicsServer2DSW::area_set_space_override_mode(RID p_area, AreaSpaceOverrideMode p_mode) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->set_space_override_mode(p_mode);
|
area->set_space_override_mode(p_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsServer2D::AreaSpaceOverrideMode PhysicsServer2DSW::area_get_space_override_mode(RID p_area) const {
|
PhysicsServer2D::AreaSpaceOverrideMode PhysicsServer2DSW::area_get_space_override_mode(RID p_area) const {
|
||||||
const Area2DSW *area = area_owner.getornull(p_area);
|
const Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, AREA_SPACE_OVERRIDE_DISABLED);
|
ERR_FAIL_COND_V(!area, AREA_SPACE_OVERRIDE_DISABLED);
|
||||||
|
|
||||||
return area->get_space_override_mode();
|
return area->get_space_override_mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_add_shape(RID p_area, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
|
void PhysicsServer2DSW::area_add_shape(RID p_area, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_shape);
|
Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND(!shape);
|
ERR_FAIL_COND(!shape);
|
||||||
|
|
||||||
area->add_shape(shape, p_transform, p_disabled);
|
area->add_shape(shape, p_transform, p_disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
|
void PhysicsServer2DSW::area_set_shape(RID p_area, int p_shape_idx, RID p_shape) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_shape);
|
Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND(!shape);
|
ERR_FAIL_COND(!shape);
|
||||||
ERR_FAIL_COND(!shape->is_configured());
|
ERR_FAIL_COND(!shape->is_configured());
|
||||||
|
|
||||||
|
@ -355,14 +355,14 @@ void PhysicsServer2DSW::area_set_shape(RID p_area, int p_shape_idx, RID p_shape)
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform2D &p_transform) {
|
void PhysicsServer2DSW::area_set_shape_transform(RID p_area, int p_shape_idx, const Transform2D &p_transform) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->set_shape_transform(p_shape_idx, p_transform);
|
area->set_shape_transform(p_shape_idx, p_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_shape_disabled(RID p_area, int p_shape, bool p_disabled) {
|
void PhysicsServer2DSW::area_set_shape_disabled(RID p_area, int p_shape, bool p_disabled) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
ERR_FAIL_INDEX(p_shape, area->get_shape_count());
|
ERR_FAIL_INDEX(p_shape, area->get_shape_count());
|
||||||
FLUSH_QUERY_CHECK(area);
|
FLUSH_QUERY_CHECK(area);
|
||||||
|
@ -371,14 +371,14 @@ void PhysicsServer2DSW::area_set_shape_disabled(RID p_area, int p_shape, bool p_
|
||||||
}
|
}
|
||||||
|
|
||||||
int PhysicsServer2DSW::area_get_shape_count(RID p_area) const {
|
int PhysicsServer2DSW::area_get_shape_count(RID p_area) const {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, -1);
|
ERR_FAIL_COND_V(!area, -1);
|
||||||
|
|
||||||
return area->get_shape_count();
|
return area->get_shape_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
RID PhysicsServer2DSW::area_get_shape(RID p_area, int p_shape_idx) const {
|
RID PhysicsServer2DSW::area_get_shape(RID p_area, int p_shape_idx) const {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, RID());
|
ERR_FAIL_COND_V(!area, RID());
|
||||||
|
|
||||||
Shape2DSW *shape = area->get_shape(p_shape_idx);
|
Shape2DSW *shape = area->get_shape(p_shape_idx);
|
||||||
|
@ -388,21 +388,21 @@ RID PhysicsServer2DSW::area_get_shape(RID p_area, int p_shape_idx) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Transform2D PhysicsServer2DSW::area_get_shape_transform(RID p_area, int p_shape_idx) const {
|
Transform2D PhysicsServer2DSW::area_get_shape_transform(RID p_area, int p_shape_idx) const {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, Transform2D());
|
ERR_FAIL_COND_V(!area, Transform2D());
|
||||||
|
|
||||||
return area->get_shape_transform(p_shape_idx);
|
return area->get_shape_transform(p_shape_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_remove_shape(RID p_area, int p_shape_idx) {
|
void PhysicsServer2DSW::area_remove_shape(RID p_area, int p_shape_idx) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->remove_shape(p_shape_idx);
|
area->remove_shape(p_shape_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_clear_shapes(RID p_area) {
|
void PhysicsServer2DSW::area_clear_shapes(RID p_area) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
while (area->get_shape_count()) {
|
while (area->get_shape_count()) {
|
||||||
|
@ -412,86 +412,86 @@ void PhysicsServer2DSW::area_clear_shapes(RID p_area) {
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_attach_object_instance_id(RID p_area, ObjectID p_id) {
|
void PhysicsServer2DSW::area_attach_object_instance_id(RID p_area, ObjectID p_id) {
|
||||||
if (space_owner.owns(p_area)) {
|
if (space_owner.owns(p_area)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_area);
|
Space2DSW *space = space_owner.get_or_null(p_area);
|
||||||
p_area = space->get_default_area()->get_self();
|
p_area = space->get_default_area()->get_self();
|
||||||
}
|
}
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
area->set_instance_id(p_id);
|
area->set_instance_id(p_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectID PhysicsServer2DSW::area_get_object_instance_id(RID p_area) const {
|
ObjectID PhysicsServer2DSW::area_get_object_instance_id(RID p_area) const {
|
||||||
if (space_owner.owns(p_area)) {
|
if (space_owner.owns(p_area)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_area);
|
Space2DSW *space = space_owner.get_or_null(p_area);
|
||||||
p_area = space->get_default_area()->get_self();
|
p_area = space->get_default_area()->get_self();
|
||||||
}
|
}
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, ObjectID());
|
ERR_FAIL_COND_V(!area, ObjectID());
|
||||||
return area->get_instance_id();
|
return area->get_instance_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_attach_canvas_instance_id(RID p_area, ObjectID p_id) {
|
void PhysicsServer2DSW::area_attach_canvas_instance_id(RID p_area, ObjectID p_id) {
|
||||||
if (space_owner.owns(p_area)) {
|
if (space_owner.owns(p_area)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_area);
|
Space2DSW *space = space_owner.get_or_null(p_area);
|
||||||
p_area = space->get_default_area()->get_self();
|
p_area = space->get_default_area()->get_self();
|
||||||
}
|
}
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
area->set_canvas_instance_id(p_id);
|
area->set_canvas_instance_id(p_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
ObjectID PhysicsServer2DSW::area_get_canvas_instance_id(RID p_area) const {
|
ObjectID PhysicsServer2DSW::area_get_canvas_instance_id(RID p_area) const {
|
||||||
if (space_owner.owns(p_area)) {
|
if (space_owner.owns(p_area)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_area);
|
Space2DSW *space = space_owner.get_or_null(p_area);
|
||||||
p_area = space->get_default_area()->get_self();
|
p_area = space->get_default_area()->get_self();
|
||||||
}
|
}
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, ObjectID());
|
ERR_FAIL_COND_V(!area, ObjectID());
|
||||||
return area->get_canvas_instance_id();
|
return area->get_canvas_instance_id();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) {
|
void PhysicsServer2DSW::area_set_param(RID p_area, AreaParameter p_param, const Variant &p_value) {
|
||||||
if (space_owner.owns(p_area)) {
|
if (space_owner.owns(p_area)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_area);
|
Space2DSW *space = space_owner.get_or_null(p_area);
|
||||||
p_area = space->get_default_area()->get_self();
|
p_area = space->get_default_area()->get_self();
|
||||||
}
|
}
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
area->set_param(p_param, p_value);
|
area->set_param(p_param, p_value);
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_transform(RID p_area, const Transform2D &p_transform) {
|
void PhysicsServer2DSW::area_set_transform(RID p_area, const Transform2D &p_transform) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
area->set_transform(p_transform);
|
area->set_transform(p_transform);
|
||||||
};
|
};
|
||||||
|
|
||||||
Variant PhysicsServer2DSW::area_get_param(RID p_area, AreaParameter p_param) const {
|
Variant PhysicsServer2DSW::area_get_param(RID p_area, AreaParameter p_param) const {
|
||||||
if (space_owner.owns(p_area)) {
|
if (space_owner.owns(p_area)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_area);
|
Space2DSW *space = space_owner.get_or_null(p_area);
|
||||||
p_area = space->get_default_area()->get_self();
|
p_area = space->get_default_area()->get_self();
|
||||||
}
|
}
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, Variant());
|
ERR_FAIL_COND_V(!area, Variant());
|
||||||
|
|
||||||
return area->get_param(p_param);
|
return area->get_param(p_param);
|
||||||
};
|
};
|
||||||
|
|
||||||
Transform2D PhysicsServer2DSW::area_get_transform(RID p_area) const {
|
Transform2D PhysicsServer2DSW::area_get_transform(RID p_area) const {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND_V(!area, Transform2D());
|
ERR_FAIL_COND_V(!area, Transform2D());
|
||||||
|
|
||||||
return area->get_transform();
|
return area->get_transform();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_pickable(RID p_area, bool p_pickable) {
|
void PhysicsServer2DSW::area_set_pickable(RID p_area, bool p_pickable) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
area->set_pickable(p_pickable);
|
area->set_pickable(p_pickable);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_monitorable(RID p_area, bool p_monitorable) {
|
void PhysicsServer2DSW::area_set_monitorable(RID p_area, bool p_monitorable) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
FLUSH_QUERY_CHECK(area);
|
FLUSH_QUERY_CHECK(area);
|
||||||
|
|
||||||
|
@ -499,28 +499,28 @@ void PhysicsServer2DSW::area_set_monitorable(RID p_area, bool p_monitorable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_collision_mask(RID p_area, uint32_t p_mask) {
|
void PhysicsServer2DSW::area_set_collision_mask(RID p_area, uint32_t p_mask) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->set_collision_mask(p_mask);
|
area->set_collision_mask(p_mask);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_collision_layer(RID p_area, uint32_t p_layer) {
|
void PhysicsServer2DSW::area_set_collision_layer(RID p_area, uint32_t p_layer) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->set_collision_layer(p_layer);
|
area->set_collision_layer(p_layer);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
|
void PhysicsServer2DSW::area_set_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->set_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
|
area->set_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::area_set_area_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
|
void PhysicsServer2DSW::area_set_area_monitor_callback(RID p_area, Object *p_receiver, const StringName &p_method) {
|
||||||
Area2DSW *area = area_owner.getornull(p_area);
|
Area2DSW *area = area_owner.get_or_null(p_area);
|
||||||
ERR_FAIL_COND(!area);
|
ERR_FAIL_COND(!area);
|
||||||
|
|
||||||
area->set_area_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
|
area->set_area_monitor_callback(p_receiver ? p_receiver->get_instance_id() : ObjectID(), p_method);
|
||||||
|
@ -536,11 +536,11 @@ RID PhysicsServer2DSW::body_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_space(RID p_body, RID p_space) {
|
void PhysicsServer2DSW::body_set_space(RID p_body, RID p_space) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
Space2DSW *space = nullptr;
|
Space2DSW *space = nullptr;
|
||||||
if (p_space.is_valid()) {
|
if (p_space.is_valid()) {
|
||||||
space = space_owner.getornull(p_space);
|
space = space_owner.get_or_null(p_space);
|
||||||
ERR_FAIL_COND(!space);
|
ERR_FAIL_COND(!space);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -553,7 +553,7 @@ void PhysicsServer2DSW::body_set_space(RID p_body, RID p_space) {
|
||||||
};
|
};
|
||||||
|
|
||||||
RID PhysicsServer2DSW::body_get_space(RID p_body) const {
|
RID PhysicsServer2DSW::body_get_space(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, RID());
|
ERR_FAIL_COND_V(!body, RID());
|
||||||
|
|
||||||
Space2DSW *space = body->get_space();
|
Space2DSW *space = body->get_space();
|
||||||
|
@ -564,7 +564,7 @@ RID PhysicsServer2DSW::body_get_space(RID p_body) const {
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_mode(RID p_body, BodyMode p_mode) {
|
void PhysicsServer2DSW::body_set_mode(RID p_body, BodyMode p_mode) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
FLUSH_QUERY_CHECK(body);
|
FLUSH_QUERY_CHECK(body);
|
||||||
|
|
||||||
|
@ -572,27 +572,27 @@ void PhysicsServer2DSW::body_set_mode(RID p_body, BodyMode p_mode) {
|
||||||
};
|
};
|
||||||
|
|
||||||
PhysicsServer2D::BodyMode PhysicsServer2DSW::body_get_mode(RID p_body) const {
|
PhysicsServer2D::BodyMode PhysicsServer2DSW::body_get_mode(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, BODY_MODE_STATIC);
|
ERR_FAIL_COND_V(!body, BODY_MODE_STATIC);
|
||||||
|
|
||||||
return body->get_mode();
|
return body->get_mode();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_add_shape(RID p_body, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
|
void PhysicsServer2DSW::body_add_shape(RID p_body, RID p_shape, const Transform2D &p_transform, bool p_disabled) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_shape);
|
Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND(!shape);
|
ERR_FAIL_COND(!shape);
|
||||||
|
|
||||||
body->add_shape(shape, p_transform, p_disabled);
|
body->add_shape(shape, p_transform, p_disabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
|
void PhysicsServer2DSW::body_set_shape(RID p_body, int p_shape_idx, RID p_shape) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_shape);
|
Shape2DSW *shape = shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND(!shape);
|
ERR_FAIL_COND(!shape);
|
||||||
ERR_FAIL_COND(!shape->is_configured());
|
ERR_FAIL_COND(!shape->is_configured());
|
||||||
|
|
||||||
|
@ -600,33 +600,33 @@ void PhysicsServer2DSW::body_set_shape(RID p_body, int p_shape_idx, RID p_shape)
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform2D &p_transform) {
|
void PhysicsServer2DSW::body_set_shape_transform(RID p_body, int p_shape_idx, const Transform2D &p_transform) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_shape_transform(p_shape_idx, p_transform);
|
body->set_shape_transform(p_shape_idx, p_transform);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_shape_metadata(RID p_body, int p_shape_idx, const Variant &p_metadata) {
|
void PhysicsServer2DSW::body_set_shape_metadata(RID p_body, int p_shape_idx, const Variant &p_metadata) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_shape_metadata(p_shape_idx, p_metadata);
|
body->set_shape_metadata(p_shape_idx, p_metadata);
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant PhysicsServer2DSW::body_get_shape_metadata(RID p_body, int p_shape_idx) const {
|
Variant PhysicsServer2DSW::body_get_shape_metadata(RID p_body, int p_shape_idx) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, Variant());
|
ERR_FAIL_COND_V(!body, Variant());
|
||||||
return body->get_shape_metadata(p_shape_idx);
|
return body->get_shape_metadata(p_shape_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
int PhysicsServer2DSW::body_get_shape_count(RID p_body) const {
|
int PhysicsServer2DSW::body_get_shape_count(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, -1);
|
ERR_FAIL_COND_V(!body, -1);
|
||||||
|
|
||||||
return body->get_shape_count();
|
return body->get_shape_count();
|
||||||
}
|
}
|
||||||
|
|
||||||
RID PhysicsServer2DSW::body_get_shape(RID p_body, int p_shape_idx) const {
|
RID PhysicsServer2DSW::body_get_shape(RID p_body, int p_shape_idx) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, RID());
|
ERR_FAIL_COND_V(!body, RID());
|
||||||
|
|
||||||
Shape2DSW *shape = body->get_shape(p_shape_idx);
|
Shape2DSW *shape = body->get_shape(p_shape_idx);
|
||||||
|
@ -636,21 +636,21 @@ RID PhysicsServer2DSW::body_get_shape(RID p_body, int p_shape_idx) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
Transform2D PhysicsServer2DSW::body_get_shape_transform(RID p_body, int p_shape_idx) const {
|
Transform2D PhysicsServer2DSW::body_get_shape_transform(RID p_body, int p_shape_idx) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, Transform2D());
|
ERR_FAIL_COND_V(!body, Transform2D());
|
||||||
|
|
||||||
return body->get_shape_transform(p_shape_idx);
|
return body->get_shape_transform(p_shape_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_remove_shape(RID p_body, int p_shape_idx) {
|
void PhysicsServer2DSW::body_remove_shape(RID p_body, int p_shape_idx) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->remove_shape(p_shape_idx);
|
body->remove_shape(p_shape_idx);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_clear_shapes(RID p_body) {
|
void PhysicsServer2DSW::body_clear_shapes(RID p_body) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
while (body->get_shape_count()) {
|
while (body->get_shape_count()) {
|
||||||
|
@ -659,7 +659,7 @@ void PhysicsServer2DSW::body_clear_shapes(RID p_body) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) {
|
void PhysicsServer2DSW::body_set_shape_disabled(RID p_body, int p_shape_idx, bool p_disabled) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
|
ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
|
||||||
FLUSH_QUERY_CHECK(body);
|
FLUSH_QUERY_CHECK(body);
|
||||||
|
@ -668,7 +668,7 @@ void PhysicsServer2DSW::body_set_shape_disabled(RID p_body, int p_shape_idx, boo
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_shape_as_one_way_collision(RID p_body, int p_shape_idx, bool p_enable, real_t p_margin) {
|
void PhysicsServer2DSW::body_set_shape_as_one_way_collision(RID p_body, int p_shape_idx, bool p_enable, real_t p_margin) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
|
ERR_FAIL_INDEX(p_shape_idx, body->get_shape_count());
|
||||||
FLUSH_QUERY_CHECK(body);
|
FLUSH_QUERY_CHECK(body);
|
||||||
|
@ -677,109 +677,109 @@ void PhysicsServer2DSW::body_set_shape_as_one_way_collision(RID p_body, int p_sh
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_continuous_collision_detection_mode(RID p_body, CCDMode p_mode) {
|
void PhysicsServer2DSW::body_set_continuous_collision_detection_mode(RID p_body, CCDMode p_mode) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_continuous_collision_detection_mode(p_mode);
|
body->set_continuous_collision_detection_mode(p_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsServer2DSW::CCDMode PhysicsServer2DSW::body_get_continuous_collision_detection_mode(RID p_body) const {
|
PhysicsServer2DSW::CCDMode PhysicsServer2DSW::body_get_continuous_collision_detection_mode(RID p_body) const {
|
||||||
const Body2DSW *body = body_owner.getornull(p_body);
|
const Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, CCD_MODE_DISABLED);
|
ERR_FAIL_COND_V(!body, CCD_MODE_DISABLED);
|
||||||
|
|
||||||
return body->get_continuous_collision_detection_mode();
|
return body->get_continuous_collision_detection_mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_attach_object_instance_id(RID p_body, ObjectID p_id) {
|
void PhysicsServer2DSW::body_attach_object_instance_id(RID p_body, ObjectID p_id) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_instance_id(p_id);
|
body->set_instance_id(p_id);
|
||||||
};
|
};
|
||||||
|
|
||||||
ObjectID PhysicsServer2DSW::body_get_object_instance_id(RID p_body) const {
|
ObjectID PhysicsServer2DSW::body_get_object_instance_id(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, ObjectID());
|
ERR_FAIL_COND_V(!body, ObjectID());
|
||||||
|
|
||||||
return body->get_instance_id();
|
return body->get_instance_id();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_attach_canvas_instance_id(RID p_body, ObjectID p_id) {
|
void PhysicsServer2DSW::body_attach_canvas_instance_id(RID p_body, ObjectID p_id) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_canvas_instance_id(p_id);
|
body->set_canvas_instance_id(p_id);
|
||||||
};
|
};
|
||||||
|
|
||||||
ObjectID PhysicsServer2DSW::body_get_canvas_instance_id(RID p_body) const {
|
ObjectID PhysicsServer2DSW::body_get_canvas_instance_id(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, ObjectID());
|
ERR_FAIL_COND_V(!body, ObjectID());
|
||||||
|
|
||||||
return body->get_canvas_instance_id();
|
return body->get_canvas_instance_id();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_collision_layer(RID p_body, uint32_t p_layer) {
|
void PhysicsServer2DSW::body_set_collision_layer(RID p_body, uint32_t p_layer) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_collision_layer(p_layer);
|
body->set_collision_layer(p_layer);
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t PhysicsServer2DSW::body_get_collision_layer(RID p_body) const {
|
uint32_t PhysicsServer2DSW::body_get_collision_layer(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, 0);
|
ERR_FAIL_COND_V(!body, 0);
|
||||||
|
|
||||||
return body->get_collision_layer();
|
return body->get_collision_layer();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_collision_mask(RID p_body, uint32_t p_mask) {
|
void PhysicsServer2DSW::body_set_collision_mask(RID p_body, uint32_t p_mask) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_collision_mask(p_mask);
|
body->set_collision_mask(p_mask);
|
||||||
};
|
};
|
||||||
|
|
||||||
uint32_t PhysicsServer2DSW::body_get_collision_mask(RID p_body) const {
|
uint32_t PhysicsServer2DSW::body_get_collision_mask(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, 0);
|
ERR_FAIL_COND_V(!body, 0);
|
||||||
|
|
||||||
return body->get_collision_mask();
|
return body->get_collision_mask();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) {
|
void PhysicsServer2DSW::body_set_param(RID p_body, BodyParameter p_param, const Variant &p_value) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_param(p_param, p_value);
|
body->set_param(p_param, p_value);
|
||||||
};
|
};
|
||||||
|
|
||||||
Variant PhysicsServer2DSW::body_get_param(RID p_body, BodyParameter p_param) const {
|
Variant PhysicsServer2DSW::body_get_param(RID p_body, BodyParameter p_param) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, 0);
|
ERR_FAIL_COND_V(!body, 0);
|
||||||
|
|
||||||
return body->get_param(p_param);
|
return body->get_param(p_param);
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_reset_mass_properties(RID p_body) {
|
void PhysicsServer2DSW::body_reset_mass_properties(RID p_body) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
return body->reset_mass_properties();
|
return body->reset_mass_properties();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
|
void PhysicsServer2DSW::body_set_state(RID p_body, BodyState p_state, const Variant &p_variant) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_state(p_state, p_variant);
|
body->set_state(p_state, p_variant);
|
||||||
};
|
};
|
||||||
|
|
||||||
Variant PhysicsServer2DSW::body_get_state(RID p_body, BodyState p_state) const {
|
Variant PhysicsServer2DSW::body_get_state(RID p_body, BodyState p_state) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, Variant());
|
ERR_FAIL_COND_V(!body, Variant());
|
||||||
|
|
||||||
return body->get_state(p_state);
|
return body->get_state(p_state);
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_applied_force(RID p_body, const Vector2 &p_force) {
|
void PhysicsServer2DSW::body_set_applied_force(RID p_body, const Vector2 &p_force) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_applied_force(p_force);
|
body->set_applied_force(p_force);
|
||||||
|
@ -787,13 +787,13 @@ void PhysicsServer2DSW::body_set_applied_force(RID p_body, const Vector2 &p_forc
|
||||||
};
|
};
|
||||||
|
|
||||||
Vector2 PhysicsServer2DSW::body_get_applied_force(RID p_body) const {
|
Vector2 PhysicsServer2DSW::body_get_applied_force(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, Vector2());
|
ERR_FAIL_COND_V(!body, Vector2());
|
||||||
return body->get_applied_force();
|
return body->get_applied_force();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_applied_torque(RID p_body, real_t p_torque) {
|
void PhysicsServer2DSW::body_set_applied_torque(RID p_body, real_t p_torque) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_applied_torque(p_torque);
|
body->set_applied_torque(p_torque);
|
||||||
|
@ -801,14 +801,14 @@ void PhysicsServer2DSW::body_set_applied_torque(RID p_body, real_t p_torque) {
|
||||||
};
|
};
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::body_get_applied_torque(RID p_body) const {
|
real_t PhysicsServer2DSW::body_get_applied_torque(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, 0);
|
ERR_FAIL_COND_V(!body, 0);
|
||||||
|
|
||||||
return body->get_applied_torque();
|
return body->get_applied_torque();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_apply_central_impulse(RID p_body, const Vector2 &p_impulse) {
|
void PhysicsServer2DSW::body_apply_central_impulse(RID p_body, const Vector2 &p_impulse) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->apply_central_impulse(p_impulse);
|
body->apply_central_impulse(p_impulse);
|
||||||
|
@ -816,7 +816,7 @@ void PhysicsServer2DSW::body_apply_central_impulse(RID p_body, const Vector2 &p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_apply_torque_impulse(RID p_body, real_t p_torque) {
|
void PhysicsServer2DSW::body_apply_torque_impulse(RID p_body, real_t p_torque) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
_update_shapes();
|
_update_shapes();
|
||||||
|
@ -826,7 +826,7 @@ void PhysicsServer2DSW::body_apply_torque_impulse(RID p_body, real_t p_torque) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_apply_impulse(RID p_body, const Vector2 &p_impulse, const Vector2 &p_position) {
|
void PhysicsServer2DSW::body_apply_impulse(RID p_body, const Vector2 &p_impulse, const Vector2 &p_position) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
_update_shapes();
|
_update_shapes();
|
||||||
|
@ -836,7 +836,7 @@ void PhysicsServer2DSW::body_apply_impulse(RID p_body, const Vector2 &p_impulse,
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_add_central_force(RID p_body, const Vector2 &p_force) {
|
void PhysicsServer2DSW::body_add_central_force(RID p_body, const Vector2 &p_force) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->add_central_force(p_force);
|
body->add_central_force(p_force);
|
||||||
|
@ -844,7 +844,7 @@ void PhysicsServer2DSW::body_add_central_force(RID p_body, const Vector2 &p_forc
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_add_force(RID p_body, const Vector2 &p_force, const Vector2 &p_position) {
|
void PhysicsServer2DSW::body_add_force(RID p_body, const Vector2 &p_force, const Vector2 &p_position) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->add_force(p_force, p_position);
|
body->add_force(p_force, p_position);
|
||||||
|
@ -852,7 +852,7 @@ void PhysicsServer2DSW::body_add_force(RID p_body, const Vector2 &p_force, const
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_add_torque(RID p_body, real_t p_torque) {
|
void PhysicsServer2DSW::body_add_torque(RID p_body, real_t p_torque) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->add_torque(p_torque);
|
body->add_torque(p_torque);
|
||||||
|
@ -860,7 +860,7 @@ void PhysicsServer2DSW::body_add_torque(RID p_body, real_t p_torque) {
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_axis_velocity(RID p_body, const Vector2 &p_axis_velocity) {
|
void PhysicsServer2DSW::body_set_axis_velocity(RID p_body, const Vector2 &p_axis_velocity) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
_update_shapes();
|
_update_shapes();
|
||||||
|
@ -874,7 +874,7 @@ void PhysicsServer2DSW::body_set_axis_velocity(RID p_body, const Vector2 &p_axis
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_add_collision_exception(RID p_body, RID p_body_b) {
|
void PhysicsServer2DSW::body_add_collision_exception(RID p_body, RID p_body_b) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->add_exception(p_body_b);
|
body->add_exception(p_body_b);
|
||||||
|
@ -882,7 +882,7 @@ void PhysicsServer2DSW::body_add_collision_exception(RID p_body, RID p_body_b) {
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_remove_collision_exception(RID p_body, RID p_body_b) {
|
void PhysicsServer2DSW::body_remove_collision_exception(RID p_body, RID p_body_b) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->remove_exception(p_body_b);
|
body->remove_exception(p_body_b);
|
||||||
|
@ -890,7 +890,7 @@ void PhysicsServer2DSW::body_remove_collision_exception(RID p_body, RID p_body_b
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
|
void PhysicsServer2DSW::body_get_collision_exceptions(RID p_body, List<RID> *p_exceptions) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
for (int i = 0; i < body->get_exceptions().size(); i++) {
|
for (int i = 0; i < body->get_exceptions().size(); i++) {
|
||||||
|
@ -899,55 +899,55 @@ void PhysicsServer2DSW::body_get_collision_exceptions(RID p_body, List<RID> *p_e
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_contacts_reported_depth_threshold(RID p_body, real_t p_threshold) {
|
void PhysicsServer2DSW::body_set_contacts_reported_depth_threshold(RID p_body, real_t p_threshold) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
};
|
};
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::body_get_contacts_reported_depth_threshold(RID p_body) const {
|
real_t PhysicsServer2DSW::body_get_contacts_reported_depth_threshold(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, 0);
|
ERR_FAIL_COND_V(!body, 0);
|
||||||
return 0;
|
return 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_omit_force_integration(RID p_body, bool p_omit) {
|
void PhysicsServer2DSW::body_set_omit_force_integration(RID p_body, bool p_omit) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
|
|
||||||
body->set_omit_force_integration(p_omit);
|
body->set_omit_force_integration(p_omit);
|
||||||
};
|
};
|
||||||
|
|
||||||
bool PhysicsServer2DSW::body_is_omitting_force_integration(RID p_body) const {
|
bool PhysicsServer2DSW::body_is_omitting_force_integration(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, false);
|
ERR_FAIL_COND_V(!body, false);
|
||||||
return body->get_omit_force_integration();
|
return body->get_omit_force_integration();
|
||||||
};
|
};
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_max_contacts_reported(RID p_body, int p_contacts) {
|
void PhysicsServer2DSW::body_set_max_contacts_reported(RID p_body, int p_contacts) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_max_contacts_reported(p_contacts);
|
body->set_max_contacts_reported(p_contacts);
|
||||||
}
|
}
|
||||||
|
|
||||||
int PhysicsServer2DSW::body_get_max_contacts_reported(RID p_body) const {
|
int PhysicsServer2DSW::body_get_max_contacts_reported(RID p_body) const {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, -1);
|
ERR_FAIL_COND_V(!body, -1);
|
||||||
return body->get_max_contacts_reported();
|
return body->get_max_contacts_reported();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_state_sync_callback(RID p_body, void *p_instance, BodyStateCallback p_callback) {
|
void PhysicsServer2DSW::body_set_state_sync_callback(RID p_body, void *p_instance, BodyStateCallback p_callback) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_state_sync_callback(p_instance, p_callback);
|
body->set_state_sync_callback(p_instance, p_callback);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_force_integration_callback(RID p_body, const Callable &p_callable, const Variant &p_udata) {
|
void PhysicsServer2DSW::body_set_force_integration_callback(RID p_body, const Callable &p_callable, const Variant &p_udata) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_force_integration_callback(p_callable, p_udata);
|
body->set_force_integration_callback(p_callable, p_udata);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsServer2DSW::body_collide_shape(RID p_body, int p_body_shape, RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, Vector2 *r_results, int p_result_max, int &r_result_count) {
|
bool PhysicsServer2DSW::body_collide_shape(RID p_body, int p_body_shape, RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, Vector2 *r_results, int p_result_max, int &r_result_count) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, false);
|
ERR_FAIL_COND_V(!body, false);
|
||||||
ERR_FAIL_INDEX_V(p_body_shape, body->get_shape_count(), false);
|
ERR_FAIL_INDEX_V(p_body_shape, body->get_shape_count(), false);
|
||||||
|
|
||||||
|
@ -955,13 +955,13 @@ bool PhysicsServer2DSW::body_collide_shape(RID p_body, int p_body_shape, RID p_s
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::body_set_pickable(RID p_body, bool p_pickable) {
|
void PhysicsServer2DSW::body_set_pickable(RID p_body, bool p_pickable) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND(!body);
|
ERR_FAIL_COND(!body);
|
||||||
body->set_pickable(p_pickable);
|
body->set_pickable(p_pickable);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsServer2DSW::body_test_motion(RID p_body, const Transform2D &p_from, const Vector2 &p_motion, real_t p_margin, MotionResult *r_result, bool p_collide_separation_ray, const Set<RID> &p_exclude) {
|
bool PhysicsServer2DSW::body_test_motion(RID p_body, const Transform2D &p_from, const Vector2 &p_motion, real_t p_margin, MotionResult *r_result, bool p_collide_separation_ray, const Set<RID> &p_exclude) {
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, false);
|
ERR_FAIL_COND_V(!body, false);
|
||||||
ERR_FAIL_COND_V(!body->get_space(), false);
|
ERR_FAIL_COND_V(!body->get_space(), false);
|
||||||
ERR_FAIL_COND_V(body->get_space()->is_locked(), false);
|
ERR_FAIL_COND_V(body->get_space()->is_locked(), false);
|
||||||
|
@ -974,7 +974,7 @@ bool PhysicsServer2DSW::body_test_motion(RID p_body, const Transform2D &p_from,
|
||||||
PhysicsDirectBodyState2D *PhysicsServer2DSW::body_get_direct_state(RID p_body) {
|
PhysicsDirectBodyState2D *PhysicsServer2DSW::body_get_direct_state(RID p_body) {
|
||||||
ERR_FAIL_COND_V_MSG((using_threads && !doing_sync), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
|
ERR_FAIL_COND_V_MSG((using_threads && !doing_sync), nullptr, "Body state is inaccessible right now, wait for iteration or physics process notification.");
|
||||||
|
|
||||||
Body2DSW *body = body_owner.getornull(p_body);
|
Body2DSW *body = body_owner.get_or_null(p_body);
|
||||||
ERR_FAIL_COND_V(!body, nullptr);
|
ERR_FAIL_COND_V(!body, nullptr);
|
||||||
|
|
||||||
ERR_FAIL_COND_V(!body->get_space(), nullptr);
|
ERR_FAIL_COND_V(!body->get_space(), nullptr);
|
||||||
|
@ -993,7 +993,7 @@ RID PhysicsServer2DSW::joint_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::joint_clear(RID p_joint) {
|
void PhysicsServer2DSW::joint_clear(RID p_joint) {
|
||||||
Joint2DSW *joint = joint_owner.getornull(p_joint);
|
Joint2DSW *joint = joint_owner.get_or_null(p_joint);
|
||||||
if (joint->get_type() != JOINT_TYPE_MAX) {
|
if (joint->get_type() != JOINT_TYPE_MAX) {
|
||||||
Joint2DSW *empty_joint = memnew(Joint2DSW);
|
Joint2DSW *empty_joint = memnew(Joint2DSW);
|
||||||
empty_joint->copy_settings_from(joint);
|
empty_joint->copy_settings_from(joint);
|
||||||
|
@ -1004,7 +1004,7 @@ void PhysicsServer2DSW::joint_clear(RID p_joint) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::joint_set_param(RID p_joint, JointParam p_param, real_t p_value) {
|
void PhysicsServer2DSW::joint_set_param(RID p_joint, JointParam p_param, real_t p_value) {
|
||||||
Joint2DSW *joint = joint_owner.getornull(p_joint);
|
Joint2DSW *joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(!joint);
|
ERR_FAIL_COND(!joint);
|
||||||
|
|
||||||
switch (p_param) {
|
switch (p_param) {
|
||||||
|
@ -1021,7 +1021,7 @@ void PhysicsServer2DSW::joint_set_param(RID p_joint, JointParam p_param, real_t
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::joint_get_param(RID p_joint, JointParam p_param) const {
|
real_t PhysicsServer2DSW::joint_get_param(RID p_joint, JointParam p_param) const {
|
||||||
const Joint2DSW *joint = joint_owner.getornull(p_joint);
|
const Joint2DSW *joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND_V(!joint, -1);
|
ERR_FAIL_COND_V(!joint, -1);
|
||||||
|
|
||||||
switch (p_param) {
|
switch (p_param) {
|
||||||
|
@ -1040,7 +1040,7 @@ real_t PhysicsServer2DSW::joint_get_param(RID p_joint, JointParam p_param) const
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
|
void PhysicsServer2DSW::joint_disable_collisions_between_bodies(RID p_joint, const bool p_disable) {
|
||||||
Joint2DSW *joint = joint_owner.getornull(p_joint);
|
Joint2DSW *joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(!joint);
|
ERR_FAIL_COND(!joint);
|
||||||
|
|
||||||
joint->disable_collisions_between_bodies(p_disable);
|
joint->disable_collisions_between_bodies(p_disable);
|
||||||
|
@ -1060,22 +1060,22 @@ void PhysicsServer2DSW::joint_disable_collisions_between_bodies(RID p_joint, con
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsServer2DSW::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
|
bool PhysicsServer2DSW::joint_is_disabled_collisions_between_bodies(RID p_joint) const {
|
||||||
const Joint2DSW *joint = joint_owner.getornull(p_joint);
|
const Joint2DSW *joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND_V(!joint, true);
|
ERR_FAIL_COND_V(!joint, true);
|
||||||
|
|
||||||
return joint->is_disabled_collisions_between_bodies();
|
return joint->is_disabled_collisions_between_bodies();
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::joint_make_pin(RID p_joint, const Vector2 &p_pos, RID p_body_a, RID p_body_b) {
|
void PhysicsServer2DSW::joint_make_pin(RID p_joint, const Vector2 &p_pos, RID p_body_a, RID p_body_b) {
|
||||||
Body2DSW *A = body_owner.getornull(p_body_a);
|
Body2DSW *A = body_owner.get_or_null(p_body_a);
|
||||||
ERR_FAIL_COND(!A);
|
ERR_FAIL_COND(!A);
|
||||||
Body2DSW *B = nullptr;
|
Body2DSW *B = nullptr;
|
||||||
if (body_owner.owns(p_body_b)) {
|
if (body_owner.owns(p_body_b)) {
|
||||||
B = body_owner.getornull(p_body_b);
|
B = body_owner.get_or_null(p_body_b);
|
||||||
ERR_FAIL_COND(!B);
|
ERR_FAIL_COND(!B);
|
||||||
}
|
}
|
||||||
|
|
||||||
Joint2DSW *prev_joint = joint_owner.getornull(p_joint);
|
Joint2DSW *prev_joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(prev_joint == nullptr);
|
ERR_FAIL_COND(prev_joint == nullptr);
|
||||||
|
|
||||||
Joint2DSW *joint = memnew(PinJoint2DSW(p_pos, A, B));
|
Joint2DSW *joint = memnew(PinJoint2DSW(p_pos, A, B));
|
||||||
|
@ -1086,13 +1086,13 @@ void PhysicsServer2DSW::joint_make_pin(RID p_joint, const Vector2 &p_pos, RID p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::joint_make_groove(RID p_joint, const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, RID p_body_a, RID p_body_b) {
|
void PhysicsServer2DSW::joint_make_groove(RID p_joint, const Vector2 &p_a_groove1, const Vector2 &p_a_groove2, const Vector2 &p_b_anchor, RID p_body_a, RID p_body_b) {
|
||||||
Body2DSW *A = body_owner.getornull(p_body_a);
|
Body2DSW *A = body_owner.get_or_null(p_body_a);
|
||||||
ERR_FAIL_COND(!A);
|
ERR_FAIL_COND(!A);
|
||||||
|
|
||||||
Body2DSW *B = body_owner.getornull(p_body_b);
|
Body2DSW *B = body_owner.get_or_null(p_body_b);
|
||||||
ERR_FAIL_COND(!B);
|
ERR_FAIL_COND(!B);
|
||||||
|
|
||||||
Joint2DSW *prev_joint = joint_owner.getornull(p_joint);
|
Joint2DSW *prev_joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(prev_joint == nullptr);
|
ERR_FAIL_COND(prev_joint == nullptr);
|
||||||
|
|
||||||
Joint2DSW *joint = memnew(GrooveJoint2DSW(p_a_groove1, p_a_groove2, p_b_anchor, A, B));
|
Joint2DSW *joint = memnew(GrooveJoint2DSW(p_a_groove1, p_a_groove2, p_b_anchor, A, B));
|
||||||
|
@ -1103,13 +1103,13 @@ void PhysicsServer2DSW::joint_make_groove(RID p_joint, const Vector2 &p_a_groove
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::joint_make_damped_spring(RID p_joint, const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, RID p_body_a, RID p_body_b) {
|
void PhysicsServer2DSW::joint_make_damped_spring(RID p_joint, const Vector2 &p_anchor_a, const Vector2 &p_anchor_b, RID p_body_a, RID p_body_b) {
|
||||||
Body2DSW *A = body_owner.getornull(p_body_a);
|
Body2DSW *A = body_owner.get_or_null(p_body_a);
|
||||||
ERR_FAIL_COND(!A);
|
ERR_FAIL_COND(!A);
|
||||||
|
|
||||||
Body2DSW *B = body_owner.getornull(p_body_b);
|
Body2DSW *B = body_owner.get_or_null(p_body_b);
|
||||||
ERR_FAIL_COND(!B);
|
ERR_FAIL_COND(!B);
|
||||||
|
|
||||||
Joint2DSW *prev_joint = joint_owner.getornull(p_joint);
|
Joint2DSW *prev_joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(prev_joint == nullptr);
|
ERR_FAIL_COND(prev_joint == nullptr);
|
||||||
|
|
||||||
Joint2DSW *joint = memnew(DampedSpringJoint2DSW(p_anchor_a, p_anchor_b, A, B));
|
Joint2DSW *joint = memnew(DampedSpringJoint2DSW(p_anchor_a, p_anchor_b, A, B));
|
||||||
|
@ -1120,7 +1120,7 @@ void PhysicsServer2DSW::joint_make_damped_spring(RID p_joint, const Vector2 &p_a
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::pin_joint_set_param(RID p_joint, PinJointParam p_param, real_t p_value) {
|
void PhysicsServer2DSW::pin_joint_set_param(RID p_joint, PinJointParam p_param, real_t p_value) {
|
||||||
Joint2DSW *j = joint_owner.getornull(p_joint);
|
Joint2DSW *j = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(!j);
|
ERR_FAIL_COND(!j);
|
||||||
ERR_FAIL_COND(j->get_type() != JOINT_TYPE_PIN);
|
ERR_FAIL_COND(j->get_type() != JOINT_TYPE_PIN);
|
||||||
|
|
||||||
|
@ -1129,7 +1129,7 @@ void PhysicsServer2DSW::pin_joint_set_param(RID p_joint, PinJointParam p_param,
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::pin_joint_get_param(RID p_joint, PinJointParam p_param) const {
|
real_t PhysicsServer2DSW::pin_joint_get_param(RID p_joint, PinJointParam p_param) const {
|
||||||
Joint2DSW *j = joint_owner.getornull(p_joint);
|
Joint2DSW *j = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND_V(!j, 0);
|
ERR_FAIL_COND_V(!j, 0);
|
||||||
ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_PIN, 0);
|
ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_PIN, 0);
|
||||||
|
|
||||||
|
@ -1138,7 +1138,7 @@ real_t PhysicsServer2DSW::pin_joint_get_param(RID p_joint, PinJointParam p_param
|
||||||
}
|
}
|
||||||
|
|
||||||
void PhysicsServer2DSW::damped_spring_joint_set_param(RID p_joint, DampedSpringParam p_param, real_t p_value) {
|
void PhysicsServer2DSW::damped_spring_joint_set_param(RID p_joint, DampedSpringParam p_param, real_t p_value) {
|
||||||
Joint2DSW *j = joint_owner.getornull(p_joint);
|
Joint2DSW *j = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND(!j);
|
ERR_FAIL_COND(!j);
|
||||||
ERR_FAIL_COND(j->get_type() != JOINT_TYPE_DAMPED_SPRING);
|
ERR_FAIL_COND(j->get_type() != JOINT_TYPE_DAMPED_SPRING);
|
||||||
|
|
||||||
|
@ -1147,7 +1147,7 @@ void PhysicsServer2DSW::damped_spring_joint_set_param(RID p_joint, DampedSpringP
|
||||||
}
|
}
|
||||||
|
|
||||||
real_t PhysicsServer2DSW::damped_spring_joint_get_param(RID p_joint, DampedSpringParam p_param) const {
|
real_t PhysicsServer2DSW::damped_spring_joint_get_param(RID p_joint, DampedSpringParam p_param) const {
|
||||||
Joint2DSW *j = joint_owner.getornull(p_joint);
|
Joint2DSW *j = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND_V(!j, 0);
|
ERR_FAIL_COND_V(!j, 0);
|
||||||
ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_DAMPED_SPRING, 0);
|
ERR_FAIL_COND_V(j->get_type() != JOINT_TYPE_DAMPED_SPRING, 0);
|
||||||
|
|
||||||
|
@ -1156,7 +1156,7 @@ real_t PhysicsServer2DSW::damped_spring_joint_get_param(RID p_joint, DampedSprin
|
||||||
}
|
}
|
||||||
|
|
||||||
PhysicsServer2D::JointType PhysicsServer2DSW::joint_get_type(RID p_joint) const {
|
PhysicsServer2D::JointType PhysicsServer2DSW::joint_get_type(RID p_joint) const {
|
||||||
Joint2DSW *joint = joint_owner.getornull(p_joint);
|
Joint2DSW *joint = joint_owner.get_or_null(p_joint);
|
||||||
ERR_FAIL_COND_V(!joint, JOINT_TYPE_PIN);
|
ERR_FAIL_COND_V(!joint, JOINT_TYPE_PIN);
|
||||||
|
|
||||||
return joint->get_type();
|
return joint->get_type();
|
||||||
|
@ -1166,7 +1166,7 @@ void PhysicsServer2DSW::free(RID p_rid) {
|
||||||
_update_shapes(); // just in case
|
_update_shapes(); // just in case
|
||||||
|
|
||||||
if (shape_owner.owns(p_rid)) {
|
if (shape_owner.owns(p_rid)) {
|
||||||
Shape2DSW *shape = shape_owner.getornull(p_rid);
|
Shape2DSW *shape = shape_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
while (shape->get_owners().size()) {
|
while (shape->get_owners().size()) {
|
||||||
ShapeOwner2DSW *so = shape->get_owners().front()->key();
|
ShapeOwner2DSW *so = shape->get_owners().front()->key();
|
||||||
|
@ -1176,7 +1176,7 @@ void PhysicsServer2DSW::free(RID p_rid) {
|
||||||
shape_owner.free(p_rid);
|
shape_owner.free(p_rid);
|
||||||
memdelete(shape);
|
memdelete(shape);
|
||||||
} else if (body_owner.owns(p_rid)) {
|
} else if (body_owner.owns(p_rid)) {
|
||||||
Body2DSW *body = body_owner.getornull(p_rid);
|
Body2DSW *body = body_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (body->get_state_query())
|
if (body->get_state_query())
|
||||||
|
@ -1196,7 +1196,7 @@ void PhysicsServer2DSW::free(RID p_rid) {
|
||||||
memdelete(body);
|
memdelete(body);
|
||||||
|
|
||||||
} else if (area_owner.owns(p_rid)) {
|
} else if (area_owner.owns(p_rid)) {
|
||||||
Area2DSW *area = area_owner.getornull(p_rid);
|
Area2DSW *area = area_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if (area->get_monitor_query())
|
if (area->get_monitor_query())
|
||||||
|
@ -1212,7 +1212,7 @@ void PhysicsServer2DSW::free(RID p_rid) {
|
||||||
area_owner.free(p_rid);
|
area_owner.free(p_rid);
|
||||||
memdelete(area);
|
memdelete(area);
|
||||||
} else if (space_owner.owns(p_rid)) {
|
} else if (space_owner.owns(p_rid)) {
|
||||||
Space2DSW *space = space_owner.getornull(p_rid);
|
Space2DSW *space = space_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
while (space->get_objects().size()) {
|
while (space->get_objects().size()) {
|
||||||
CollisionObject2DSW *co = (CollisionObject2DSW *)space->get_objects().front()->get();
|
CollisionObject2DSW *co = (CollisionObject2DSW *)space->get_objects().front()->get();
|
||||||
|
@ -1224,7 +1224,7 @@ void PhysicsServer2DSW::free(RID p_rid) {
|
||||||
space_owner.free(p_rid);
|
space_owner.free(p_rid);
|
||||||
memdelete(space);
|
memdelete(space);
|
||||||
} else if (joint_owner.owns(p_rid)) {
|
} else if (joint_owner.owns(p_rid)) {
|
||||||
Joint2DSW *joint = joint_owner.getornull(p_rid);
|
Joint2DSW *joint = joint_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
joint_owner.free(p_rid);
|
joint_owner.free(p_rid);
|
||||||
memdelete(joint);
|
memdelete(joint);
|
||||||
|
|
|
@ -206,7 +206,7 @@ int PhysicsDirectSpaceState2DSW::intersect_shape(const RID &p_shape, const Trans
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
Rect2 aabb = p_xform.xform(shape->get_aabb());
|
Rect2 aabb = p_xform.xform(shape->get_aabb());
|
||||||
|
@ -251,7 +251,7 @@ int PhysicsDirectSpaceState2DSW::intersect_shape(const RID &p_shape, const Trans
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsDirectSpaceState2DSW::cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
bool PhysicsDirectSpaceState2DSW::cast_motion(const RID &p_shape, const Transform2D &p_xform, const Vector2 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||||
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, false);
|
ERR_FAIL_COND_V(!shape, false);
|
||||||
|
|
||||||
Rect2 aabb = p_xform.xform(shape->get_aabb());
|
Rect2 aabb = p_xform.xform(shape->get_aabb());
|
||||||
|
@ -338,7 +338,7 @@ bool PhysicsDirectSpaceState2DSW::collide_shape(RID p_shape, const Transform2D &
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
Rect2 aabb = p_shape_xform.xform(shape->get_aabb());
|
Rect2 aabb = p_shape_xform.xform(shape->get_aabb());
|
||||||
|
@ -435,7 +435,7 @@ static void _rest_cbk_result(const Vector2 &p_point_A, const Vector2 &p_point_B,
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
bool PhysicsDirectSpaceState2DSW::rest_info(RID p_shape, const Transform2D &p_shape_xform, const Vector2 &p_motion, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||||
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape2DSW *shape = PhysicsServer2DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
real_t min_contact_depth = p_margin * TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR;
|
real_t min_contact_depth = p_margin * TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -187,7 +187,7 @@ int PhysicsDirectSpaceState3DSW::intersect_shape(const RID &p_shape, const Trans
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
AABB aabb = p_xform.xform(shape->get_aabb());
|
AABB aabb = p_xform.xform(shape->get_aabb());
|
||||||
|
@ -238,7 +238,7 @@ int PhysicsDirectSpaceState3DSW::intersect_shape(const RID &p_shape, const Trans
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transform3D &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, ShapeRestInfo *r_info) {
|
bool PhysicsDirectSpaceState3DSW::cast_motion(const RID &p_shape, const Transform3D &p_xform, const Vector3 &p_motion, real_t p_margin, real_t &p_closest_safe, real_t &p_closest_unsafe, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas, ShapeRestInfo *r_info) {
|
||||||
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, false);
|
ERR_FAIL_COND_V(!shape, false);
|
||||||
|
|
||||||
AABB aabb = p_xform.xform(shape->get_aabb());
|
AABB aabb = p_xform.xform(shape->get_aabb());
|
||||||
|
@ -361,7 +361,7 @@ bool PhysicsDirectSpaceState3DSW::collide_shape(RID p_shape, const Transform3D &
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
AABB aabb = p_shape_xform.xform(shape->get_aabb());
|
AABB aabb = p_shape_xform.xform(shape->get_aabb());
|
||||||
|
@ -487,7 +487,7 @@ static void _rest_cbk_result(const Vector3 &p_point_A, int p_index_A, const Vect
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_shape_xform, real_t p_margin, ShapeRestInfo *r_info, const Set<RID> &p_exclude, uint32_t p_collision_mask, bool p_collide_with_bodies, bool p_collide_with_areas) {
|
||||||
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.getornull(p_shape);
|
Shape3DSW *shape = PhysicsServer3DSW::singletonsw->shape_owner.get_or_null(p_shape);
|
||||||
ERR_FAIL_COND_V(!shape, 0);
|
ERR_FAIL_COND_V(!shape, 0);
|
||||||
|
|
||||||
real_t min_contact_depth = p_margin * TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR;
|
real_t min_contact_depth = p_margin * TEST_MOTION_MIN_CONTACT_DEPTH_FACTOR;
|
||||||
|
@ -543,9 +543,9 @@ bool PhysicsDirectSpaceState3DSW::rest_info(RID p_shape, const Transform3D &p_sh
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 PhysicsDirectSpaceState3DSW::get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const {
|
Vector3 PhysicsDirectSpaceState3DSW::get_closest_point_to_object_volume(RID p_object, const Vector3 p_point) const {
|
||||||
CollisionObject3DSW *obj = PhysicsServer3DSW::singletonsw->area_owner.getornull(p_object);
|
CollisionObject3DSW *obj = PhysicsServer3DSW::singletonsw->area_owner.get_or_null(p_object);
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
obj = PhysicsServer3DSW::singletonsw->body_owner.getornull(p_object);
|
obj = PhysicsServer3DSW::singletonsw->body_owner.get_or_null(p_object);
|
||||||
}
|
}
|
||||||
ERR_FAIL_COND_V(!obj, Vector3());
|
ERR_FAIL_COND_V(!obj, Vector3());
|
||||||
|
|
||||||
|
|
|
@ -224,7 +224,7 @@ public:
|
||||||
return texture_owner.make_rid(texture);
|
return texture_owner.make_rid(texture);
|
||||||
}
|
}
|
||||||
void texture_2d_initialize(RID p_texture, const Ref<Image> &p_image) override {
|
void texture_2d_initialize(RID p_texture, const Ref<Image> &p_image) override {
|
||||||
DummyTexture *t = texture_owner.getornull(p_texture);
|
DummyTexture *t = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND(!t);
|
ERR_FAIL_COND(!t);
|
||||||
t->image = p_image->duplicate();
|
t->image = p_image->duplicate();
|
||||||
}
|
}
|
||||||
|
@ -241,7 +241,7 @@ public:
|
||||||
void texture_3d_placeholder_initialize(RID p_texture) override {}
|
void texture_3d_placeholder_initialize(RID p_texture) override {}
|
||||||
|
|
||||||
Ref<Image> texture_2d_get(RID p_texture) const override {
|
Ref<Image> texture_2d_get(RID p_texture) const override {
|
||||||
DummyTexture *t = texture_owner.getornull(p_texture);
|
DummyTexture *t = texture_owner.get_or_null(p_texture);
|
||||||
ERR_FAIL_COND_V(!t, Ref<Image>());
|
ERR_FAIL_COND_V(!t, Ref<Image>());
|
||||||
return t->image;
|
return t->image;
|
||||||
}
|
}
|
||||||
|
@ -661,7 +661,7 @@ public:
|
||||||
bool free(RID p_rid) override {
|
bool free(RID p_rid) override {
|
||||||
if (texture_owner.owns(p_rid)) {
|
if (texture_owner.owns(p_rid)) {
|
||||||
// delete the texture
|
// delete the texture
|
||||||
DummyTexture *texture = texture_owner.getornull(p_rid);
|
DummyTexture *texture = texture_owner.get_or_null(p_rid);
|
||||||
texture_owner.free(p_rid);
|
texture_owner.free(p_rid);
|
||||||
memdelete(texture);
|
memdelete(texture);
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -100,7 +100,7 @@ void _collect_ysort_children(RendererCanvasCull::Item *p_canvas_item, Transform2
|
||||||
void _mark_ysort_dirty(RendererCanvasCull::Item *ysort_owner, RID_Owner<RendererCanvasCull::Item, true> &canvas_item_owner) {
|
void _mark_ysort_dirty(RendererCanvasCull::Item *ysort_owner, RID_Owner<RendererCanvasCull::Item, true> &canvas_item_owner) {
|
||||||
do {
|
do {
|
||||||
ysort_owner->ysort_children_count = -1;
|
ysort_owner->ysort_children_count = -1;
|
||||||
ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.getornull(ysort_owner->parent) : nullptr;
|
ysort_owner = canvas_item_owner.owns(ysort_owner->parent) ? canvas_item_owner.get_or_null(ysort_owner->parent) : nullptr;
|
||||||
} while (ysort_owner && ysort_owner->sort_y);
|
} while (ysort_owner && ysort_owner->sort_y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -396,9 +396,9 @@ void RendererCanvasCull::canvas_initialize(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_set_item_mirroring(RID p_canvas, RID p_item, const Point2 &p_mirroring) {
|
void RendererCanvasCull::canvas_set_item_mirroring(RID p_canvas, RID p_item, const Point2 &p_mirroring) {
|
||||||
Canvas *canvas = canvas_owner.getornull(p_canvas);
|
Canvas *canvas = canvas_owner.get_or_null(p_canvas);
|
||||||
ERR_FAIL_COND(!canvas);
|
ERR_FAIL_COND(!canvas);
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
int idx = canvas->find_item(canvas_item);
|
int idx = canvas->find_item(canvas_item);
|
||||||
|
@ -407,7 +407,7 @@ void RendererCanvasCull::canvas_set_item_mirroring(RID p_canvas, RID p_item, con
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_set_modulate(RID p_canvas, const Color &p_color) {
|
void RendererCanvasCull::canvas_set_modulate(RID p_canvas, const Color &p_color) {
|
||||||
Canvas *canvas = canvas_owner.getornull(p_canvas);
|
Canvas *canvas = canvas_owner.get_or_null(p_canvas);
|
||||||
ERR_FAIL_COND(!canvas);
|
ERR_FAIL_COND(!canvas);
|
||||||
canvas->modulate = p_color;
|
canvas->modulate = p_color;
|
||||||
}
|
}
|
||||||
|
@ -417,7 +417,7 @@ void RendererCanvasCull::canvas_set_disable_scale(bool p_disable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_set_parent(RID p_canvas, RID p_parent, float p_scale) {
|
void RendererCanvasCull::canvas_set_parent(RID p_canvas, RID p_parent, float p_scale) {
|
||||||
Canvas *canvas = canvas_owner.getornull(p_canvas);
|
Canvas *canvas = canvas_owner.get_or_null(p_canvas);
|
||||||
ERR_FAIL_COND(!canvas);
|
ERR_FAIL_COND(!canvas);
|
||||||
|
|
||||||
canvas->parent = p_parent;
|
canvas->parent = p_parent;
|
||||||
|
@ -432,15 +432,15 @@ void RendererCanvasCull::canvas_item_initialize(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_parent(RID p_item, RID p_parent) {
|
void RendererCanvasCull::canvas_item_set_parent(RID p_item, RID p_parent) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
if (canvas_item->parent.is_valid()) {
|
if (canvas_item->parent.is_valid()) {
|
||||||
if (canvas_owner.owns(canvas_item->parent)) {
|
if (canvas_owner.owns(canvas_item->parent)) {
|
||||||
Canvas *canvas = canvas_owner.getornull(canvas_item->parent);
|
Canvas *canvas = canvas_owner.get_or_null(canvas_item->parent);
|
||||||
canvas->erase_item(canvas_item);
|
canvas->erase_item(canvas_item);
|
||||||
} else if (canvas_item_owner.owns(canvas_item->parent)) {
|
} else if (canvas_item_owner.owns(canvas_item->parent)) {
|
||||||
Item *item_owner = canvas_item_owner.getornull(canvas_item->parent);
|
Item *item_owner = canvas_item_owner.get_or_null(canvas_item->parent);
|
||||||
item_owner->child_items.erase(canvas_item);
|
item_owner->child_items.erase(canvas_item);
|
||||||
|
|
||||||
if (item_owner->sort_y) {
|
if (item_owner->sort_y) {
|
||||||
|
@ -453,13 +453,13 @@ void RendererCanvasCull::canvas_item_set_parent(RID p_item, RID p_parent) {
|
||||||
|
|
||||||
if (p_parent.is_valid()) {
|
if (p_parent.is_valid()) {
|
||||||
if (canvas_owner.owns(p_parent)) {
|
if (canvas_owner.owns(p_parent)) {
|
||||||
Canvas *canvas = canvas_owner.getornull(p_parent);
|
Canvas *canvas = canvas_owner.get_or_null(p_parent);
|
||||||
Canvas::ChildItem ci;
|
Canvas::ChildItem ci;
|
||||||
ci.item = canvas_item;
|
ci.item = canvas_item;
|
||||||
canvas->child_items.push_back(ci);
|
canvas->child_items.push_back(ci);
|
||||||
canvas->children_order_dirty = true;
|
canvas->children_order_dirty = true;
|
||||||
} else if (canvas_item_owner.owns(p_parent)) {
|
} else if (canvas_item_owner.owns(p_parent)) {
|
||||||
Item *item_owner = canvas_item_owner.getornull(p_parent);
|
Item *item_owner = canvas_item_owner.get_or_null(p_parent);
|
||||||
item_owner->child_items.push_back(canvas_item);
|
item_owner->child_items.push_back(canvas_item);
|
||||||
item_owner->children_order_dirty = true;
|
item_owner->children_order_dirty = true;
|
||||||
|
|
||||||
|
@ -476,7 +476,7 @@ void RendererCanvasCull::canvas_item_set_parent(RID p_item, RID p_parent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_visible(RID p_item, bool p_visible) {
|
void RendererCanvasCull::canvas_item_set_visible(RID p_item, bool p_visible) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->visible = p_visible;
|
canvas_item->visible = p_visible;
|
||||||
|
@ -485,35 +485,35 @@ void RendererCanvasCull::canvas_item_set_visible(RID p_item, bool p_visible) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_light_mask(RID p_item, int p_mask) {
|
void RendererCanvasCull::canvas_item_set_light_mask(RID p_item, int p_mask) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->light_mask = p_mask;
|
canvas_item->light_mask = p_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_transform(RID p_item, const Transform2D &p_transform) {
|
void RendererCanvasCull::canvas_item_set_transform(RID p_item, const Transform2D &p_transform) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->xform = p_transform;
|
canvas_item->xform = p_transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_clip(RID p_item, bool p_clip) {
|
void RendererCanvasCull::canvas_item_set_clip(RID p_item, bool p_clip) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->clip = p_clip;
|
canvas_item->clip = p_clip;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_distance_field_mode(RID p_item, bool p_enable) {
|
void RendererCanvasCull::canvas_item_set_distance_field_mode(RID p_item, bool p_enable) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->distance_field = p_enable;
|
canvas_item->distance_field = p_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_custom_rect(RID p_item, bool p_custom_rect, const Rect2 &p_rect) {
|
void RendererCanvasCull::canvas_item_set_custom_rect(RID p_item, bool p_custom_rect, const Rect2 &p_rect) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->custom_rect = p_custom_rect;
|
canvas_item->custom_rect = p_custom_rect;
|
||||||
|
@ -521,35 +521,35 @@ void RendererCanvasCull::canvas_item_set_custom_rect(RID p_item, bool p_custom_r
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_modulate(RID p_item, const Color &p_color) {
|
void RendererCanvasCull::canvas_item_set_modulate(RID p_item, const Color &p_color) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->modulate = p_color;
|
canvas_item->modulate = p_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_self_modulate(RID p_item, const Color &p_color) {
|
void RendererCanvasCull::canvas_item_set_self_modulate(RID p_item, const Color &p_color) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->self_modulate = p_color;
|
canvas_item->self_modulate = p_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_draw_behind_parent(RID p_item, bool p_enable) {
|
void RendererCanvasCull::canvas_item_set_draw_behind_parent(RID p_item, bool p_enable) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->behind = p_enable;
|
canvas_item->behind = p_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_update_when_visible(RID p_item, bool p_update) {
|
void RendererCanvasCull::canvas_item_set_update_when_visible(RID p_item, bool p_update) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->update_when_visible = p_update;
|
canvas_item->update_when_visible = p_update;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_line(RID p_item, const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width) {
|
void RendererCanvasCull::canvas_item_add_line(RID p_item, const Point2 &p_from, const Point2 &p_to, const Color &p_color, float p_width) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandPrimitive *line = canvas_item->alloc_command<Item::CommandPrimitive>();
|
Item::CommandPrimitive *line = canvas_item->alloc_command<Item::CommandPrimitive>();
|
||||||
|
@ -573,7 +573,7 @@ void RendererCanvasCull::canvas_item_add_line(RID p_item, const Point2 &p_from,
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_polyline(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, float p_width, bool p_antialiased) {
|
void RendererCanvasCull::canvas_item_add_polyline(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, float p_width, bool p_antialiased) {
|
||||||
ERR_FAIL_COND(p_points.size() < 2);
|
ERR_FAIL_COND(p_points.size() < 2);
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Color color = Color(1, 1, 1, 1);
|
Color color = Color(1, 1, 1, 1);
|
||||||
|
@ -714,7 +714,7 @@ void RendererCanvasCull::canvas_item_add_polyline(RID p_item, const Vector<Point
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_multiline(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, float p_width) {
|
void RendererCanvasCull::canvas_item_add_multiline(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, float p_width) {
|
||||||
ERR_FAIL_COND(p_points.size() < 2);
|
ERR_FAIL_COND(p_points.size() < 2);
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandPolygon *pline = canvas_item->alloc_command<Item::CommandPolygon>();
|
Item::CommandPolygon *pline = canvas_item->alloc_command<Item::CommandPolygon>();
|
||||||
|
@ -730,7 +730,7 @@ void RendererCanvasCull::canvas_item_add_multiline(RID p_item, const Vector<Poin
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_rect(RID p_item, const Rect2 &p_rect, const Color &p_color) {
|
void RendererCanvasCull::canvas_item_add_rect(RID p_item, const Rect2 &p_rect, const Color &p_color) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
||||||
|
@ -740,7 +740,7 @@ void RendererCanvasCull::canvas_item_add_rect(RID p_item, const Rect2 &p_rect, c
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_circle(RID p_item, const Point2 &p_pos, float p_radius, const Color &p_color) {
|
void RendererCanvasCull::canvas_item_add_circle(RID p_item, const Point2 &p_pos, float p_radius, const Color &p_color) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandPolygon *circle = canvas_item->alloc_command<Item::CommandPolygon>();
|
Item::CommandPolygon *circle = canvas_item->alloc_command<Item::CommandPolygon>();
|
||||||
|
@ -776,7 +776,7 @@ void RendererCanvasCull::canvas_item_add_circle(RID p_item, const Point2 &p_pos,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_texture_rect(RID p_item, const Rect2 &p_rect, RID p_texture, bool p_tile, const Color &p_modulate, bool p_transpose) {
|
void RendererCanvasCull::canvas_item_add_texture_rect(RID p_item, const Rect2 &p_rect, RID p_texture, bool p_tile, const Color &p_modulate, bool p_transpose) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
||||||
|
@ -807,7 +807,7 @@ void RendererCanvasCull::canvas_item_add_texture_rect(RID p_item, const Rect2 &p
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_msdf_texture_rect_region(RID p_item, const Rect2 &p_rect, RID p_texture, const Rect2 &p_src_rect, const Color &p_modulate, int p_outline_size, float p_px_range) {
|
void RendererCanvasCull::canvas_item_add_msdf_texture_rect_region(RID p_item, const Rect2 &p_rect, RID p_texture, const Rect2 &p_src_rect, const Color &p_modulate, int p_outline_size, float p_px_range) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
||||||
|
@ -841,7 +841,7 @@ void RendererCanvasCull::canvas_item_add_msdf_texture_rect_region(RID p_item, co
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_texture_rect_region(RID p_item, const Rect2 &p_rect, RID p_texture, const Rect2 &p_src_rect, const Color &p_modulate, bool p_transpose, bool p_clip_uv) {
|
void RendererCanvasCull::canvas_item_add_texture_rect_region(RID p_item, const Rect2 &p_rect, RID p_texture, const Rect2 &p_src_rect, const Color &p_modulate, bool p_transpose, bool p_clip_uv) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
Item::CommandRect *rect = canvas_item->alloc_command<Item::CommandRect>();
|
||||||
|
@ -882,7 +882,7 @@ void RendererCanvasCull::canvas_item_add_texture_rect_region(RID p_item, const R
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_nine_patch(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector2 &p_topleft, const Vector2 &p_bottomright, RS::NinePatchAxisMode p_x_axis_mode, RS::NinePatchAxisMode p_y_axis_mode, bool p_draw_center, const Color &p_modulate) {
|
void RendererCanvasCull::canvas_item_add_nine_patch(RID p_item, const Rect2 &p_rect, const Rect2 &p_source, RID p_texture, const Vector2 &p_topleft, const Vector2 &p_bottomright, RS::NinePatchAxisMode p_x_axis_mode, RS::NinePatchAxisMode p_y_axis_mode, bool p_draw_center, const Color &p_modulate) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandNinePatch *style = canvas_item->alloc_command<Item::CommandNinePatch>();
|
Item::CommandNinePatch *style = canvas_item->alloc_command<Item::CommandNinePatch>();
|
||||||
|
@ -906,7 +906,7 @@ void RendererCanvasCull::canvas_item_add_primitive(RID p_item, const Vector<Poin
|
||||||
uint32_t pc = p_points.size();
|
uint32_t pc = p_points.size();
|
||||||
ERR_FAIL_COND(pc == 0 || pc > 4);
|
ERR_FAIL_COND(pc == 0 || pc > 4);
|
||||||
|
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandPrimitive *prim = canvas_item->alloc_command<Item::CommandPrimitive>();
|
Item::CommandPrimitive *prim = canvas_item->alloc_command<Item::CommandPrimitive>();
|
||||||
|
@ -932,7 +932,7 @@ void RendererCanvasCull::canvas_item_add_primitive(RID p_item, const Vector<Poin
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture) {
|
void RendererCanvasCull::canvas_item_add_polygon(RID p_item, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, RID p_texture) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
int pointcount = p_points.size();
|
int pointcount = p_points.size();
|
||||||
|
@ -953,7 +953,7 @@ void RendererCanvasCull::canvas_item_add_polygon(RID p_item, const Vector<Point2
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, const Vector<int> &p_bones, const Vector<float> &p_weights, RID p_texture, int p_count) {
|
void RendererCanvasCull::canvas_item_add_triangle_array(RID p_item, const Vector<int> &p_indices, const Vector<Point2> &p_points, const Vector<Color> &p_colors, const Vector<Point2> &p_uvs, const Vector<int> &p_bones, const Vector<float> &p_weights, RID p_texture, int p_count) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
int vertex_count = p_points.size();
|
int vertex_count = p_points.size();
|
||||||
|
@ -976,7 +976,7 @@ void RendererCanvasCull::canvas_item_add_triangle_array(RID p_item, const Vector
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform) {
|
void RendererCanvasCull::canvas_item_add_set_transform(RID p_item, const Transform2D &p_transform) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandTransform *tr = canvas_item->alloc_command<Item::CommandTransform>();
|
Item::CommandTransform *tr = canvas_item->alloc_command<Item::CommandTransform>();
|
||||||
|
@ -985,7 +985,7 @@ void RendererCanvasCull::canvas_item_add_set_transform(RID p_item, const Transfo
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_mesh(RID p_item, const RID &p_mesh, const Transform2D &p_transform, const Color &p_modulate, RID p_texture) {
|
void RendererCanvasCull::canvas_item_add_mesh(RID p_item, const RID &p_mesh, const Transform2D &p_transform, const Color &p_modulate, RID p_texture) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
ERR_FAIL_COND(!p_mesh.is_valid());
|
ERR_FAIL_COND(!p_mesh.is_valid());
|
||||||
|
|
||||||
|
@ -1004,7 +1004,7 @@ void RendererCanvasCull::canvas_item_add_mesh(RID p_item, const RID &p_mesh, con
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_particles(RID p_item, RID p_particles, RID p_texture) {
|
void RendererCanvasCull::canvas_item_add_particles(RID p_item, RID p_particles, RID p_texture) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandParticles *part = canvas_item->alloc_command<Item::CommandParticles>();
|
Item::CommandParticles *part = canvas_item->alloc_command<Item::CommandParticles>();
|
||||||
|
@ -1018,7 +1018,7 @@ void RendererCanvasCull::canvas_item_add_particles(RID p_item, RID p_particles,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture) {
|
void RendererCanvasCull::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p_texture) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandMultiMesh *mm = canvas_item->alloc_command<Item::CommandMultiMesh>();
|
Item::CommandMultiMesh *mm = canvas_item->alloc_command<Item::CommandMultiMesh>();
|
||||||
|
@ -1029,7 +1029,7 @@ void RendererCanvasCull::canvas_item_add_multimesh(RID p_item, RID p_mesh, RID p
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_clip_ignore(RID p_item, bool p_ignore) {
|
void RendererCanvasCull::canvas_item_add_clip_ignore(RID p_item, bool p_ignore) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandClipIgnore *ci = canvas_item->alloc_command<Item::CommandClipIgnore>();
|
Item::CommandClipIgnore *ci = canvas_item->alloc_command<Item::CommandClipIgnore>();
|
||||||
|
@ -1038,7 +1038,7 @@ void RendererCanvasCull::canvas_item_add_clip_ignore(RID p_item, bool p_ignore)
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_add_animation_slice(RID p_item, double p_animation_length, double p_slice_begin, double p_slice_end, double p_offset) {
|
void RendererCanvasCull::canvas_item_add_animation_slice(RID p_item, double p_animation_length, double p_slice_begin, double p_slice_end, double p_offset) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
Item::CommandAnimationSlice *as = canvas_item->alloc_command<Item::CommandAnimationSlice>();
|
Item::CommandAnimationSlice *as = canvas_item->alloc_command<Item::CommandAnimationSlice>();
|
||||||
|
@ -1050,7 +1050,7 @@ void RendererCanvasCull::canvas_item_add_animation_slice(RID p_item, double p_an
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_sort_children_by_y(RID p_item, bool p_enable) {
|
void RendererCanvasCull::canvas_item_set_sort_children_by_y(RID p_item, bool p_enable) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->sort_y = p_enable;
|
canvas_item->sort_y = p_enable;
|
||||||
|
@ -1061,21 +1061,21 @@ void RendererCanvasCull::canvas_item_set_sort_children_by_y(RID p_item, bool p_e
|
||||||
void RendererCanvasCull::canvas_item_set_z_index(RID p_item, int p_z) {
|
void RendererCanvasCull::canvas_item_set_z_index(RID p_item, int p_z) {
|
||||||
ERR_FAIL_COND(p_z < RS::CANVAS_ITEM_Z_MIN || p_z > RS::CANVAS_ITEM_Z_MAX);
|
ERR_FAIL_COND(p_z < RS::CANVAS_ITEM_Z_MIN || p_z > RS::CANVAS_ITEM_Z_MAX);
|
||||||
|
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->z_index = p_z;
|
canvas_item->z_index = p_z;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) {
|
void RendererCanvasCull::canvas_item_set_z_as_relative_to_parent(RID p_item, bool p_enable) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->z_relative = p_enable;
|
canvas_item->z_relative = p_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_attach_skeleton(RID p_item, RID p_skeleton) {
|
void RendererCanvasCull::canvas_item_attach_skeleton(RID p_item, RID p_skeleton) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
if (canvas_item->skeleton == p_skeleton) {
|
if (canvas_item->skeleton == p_skeleton) {
|
||||||
return;
|
return;
|
||||||
|
@ -1104,7 +1104,7 @@ void RendererCanvasCull::canvas_item_attach_skeleton(RID p_item, RID p_skeleton)
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2 &p_rect) {
|
void RendererCanvasCull::canvas_item_set_copy_to_backbuffer(RID p_item, bool p_enable, const Rect2 &p_rect) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
if (p_enable && (canvas_item->copy_back_buffer == nullptr)) {
|
if (p_enable && (canvas_item->copy_back_buffer == nullptr)) {
|
||||||
canvas_item->copy_back_buffer = memnew(RendererCanvasRender::Item::CopyBackBuffer);
|
canvas_item->copy_back_buffer = memnew(RendererCanvasRender::Item::CopyBackBuffer);
|
||||||
|
@ -1121,25 +1121,25 @@ void RendererCanvasCull::canvas_item_set_copy_to_backbuffer(RID p_item, bool p_e
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_clear(RID p_item) {
|
void RendererCanvasCull::canvas_item_clear(RID p_item) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->clear();
|
canvas_item->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_draw_index(RID p_item, int p_index) {
|
void RendererCanvasCull::canvas_item_set_draw_index(RID p_item, int p_index) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->index = p_index;
|
canvas_item->index = p_index;
|
||||||
|
|
||||||
if (canvas_item_owner.owns(canvas_item->parent)) {
|
if (canvas_item_owner.owns(canvas_item->parent)) {
|
||||||
Item *canvas_item_parent = canvas_item_owner.getornull(canvas_item->parent);
|
Item *canvas_item_parent = canvas_item_owner.get_or_null(canvas_item->parent);
|
||||||
canvas_item_parent->children_order_dirty = true;
|
canvas_item_parent->children_order_dirty = true;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Canvas *canvas = canvas_owner.getornull(canvas_item->parent);
|
Canvas *canvas = canvas_owner.get_or_null(canvas_item->parent);
|
||||||
if (canvas) {
|
if (canvas) {
|
||||||
canvas->children_order_dirty = true;
|
canvas->children_order_dirty = true;
|
||||||
return;
|
return;
|
||||||
|
@ -1147,21 +1147,21 @@ void RendererCanvasCull::canvas_item_set_draw_index(RID p_item, int p_index) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_material(RID p_item, RID p_material) {
|
void RendererCanvasCull::canvas_item_set_material(RID p_item, RID p_material) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->material = p_material;
|
canvas_item->material = p_material;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_use_parent_material(RID p_item, bool p_enable) {
|
void RendererCanvasCull::canvas_item_set_use_parent_material(RID p_item, bool p_enable) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
canvas_item->use_parent_material = p_enable;
|
canvas_item->use_parent_material = p_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_visibility_notifier(RID p_item, bool p_enable, const Rect2 &p_area, const Callable &p_enter_callable, const Callable &p_exit_callable) {
|
void RendererCanvasCull::canvas_item_set_visibility_notifier(RID p_item, bool p_enable, const Rect2 &p_area, const Callable &p_enter_callable, const Callable &p_exit_callable) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
if (p_enable) {
|
if (p_enable) {
|
||||||
|
@ -1181,7 +1181,7 @@ void RendererCanvasCull::canvas_item_set_visibility_notifier(RID p_item, bool p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_canvas_group_mode(RID p_item, RS::CanvasGroupMode p_mode, float p_clear_margin, bool p_fit_empty, float p_fit_margin, bool p_blur_mipmaps) {
|
void RendererCanvasCull::canvas_item_set_canvas_group_mode(RID p_item, RS::CanvasGroupMode p_mode, float p_clear_margin, bool p_fit_empty, float p_fit_margin, bool p_blur_mipmaps) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_item);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!canvas_item);
|
ERR_FAIL_COND(!canvas_item);
|
||||||
|
|
||||||
if (p_mode == RS::CANVAS_GROUP_MODE_DISABLED) {
|
if (p_mode == RS::CANVAS_GROUP_MODE_DISABLED) {
|
||||||
|
@ -1206,12 +1206,12 @@ RID RendererCanvasCull::canvas_light_allocate() {
|
||||||
}
|
}
|
||||||
void RendererCanvasCull::canvas_light_initialize(RID p_rid) {
|
void RendererCanvasCull::canvas_light_initialize(RID p_rid) {
|
||||||
canvas_light_owner.initialize_rid(p_rid);
|
canvas_light_owner.initialize_rid(p_rid);
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_rid);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_rid);
|
||||||
clight->light_internal = RSG::canvas_render->light_create();
|
clight->light_internal = RSG::canvas_render->light_create();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_mode(RID p_light, RS::CanvasLightMode p_mode) {
|
void RendererCanvasCull::canvas_light_set_mode(RID p_light, RS::CanvasLightMode p_mode) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
if (clight->mode == p_mode) {
|
if (clight->mode == p_mode) {
|
||||||
|
@ -1232,11 +1232,11 @@ void RendererCanvasCull::canvas_light_set_mode(RID p_light, RS::CanvasLightMode
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_attach_to_canvas(RID p_light, RID p_canvas) {
|
void RendererCanvasCull::canvas_light_attach_to_canvas(RID p_light, RID p_canvas) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
if (clight->canvas.is_valid()) {
|
if (clight->canvas.is_valid()) {
|
||||||
Canvas *canvas = canvas_owner.getornull(clight->canvas);
|
Canvas *canvas = canvas_owner.get_or_null(clight->canvas);
|
||||||
if (clight->mode == RS::CANVAS_LIGHT_MODE_POINT) {
|
if (clight->mode == RS::CANVAS_LIGHT_MODE_POINT) {
|
||||||
canvas->lights.erase(clight);
|
canvas->lights.erase(clight);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1251,7 +1251,7 @@ void RendererCanvasCull::canvas_light_attach_to_canvas(RID p_light, RID p_canvas
|
||||||
clight->canvas = p_canvas;
|
clight->canvas = p_canvas;
|
||||||
|
|
||||||
if (clight->canvas.is_valid()) {
|
if (clight->canvas.is_valid()) {
|
||||||
Canvas *canvas = canvas_owner.getornull(clight->canvas);
|
Canvas *canvas = canvas_owner.get_or_null(clight->canvas);
|
||||||
if (clight->mode == RS::CANVAS_LIGHT_MODE_POINT) {
|
if (clight->mode == RS::CANVAS_LIGHT_MODE_POINT) {
|
||||||
canvas->lights.insert(clight);
|
canvas->lights.insert(clight);
|
||||||
} else {
|
} else {
|
||||||
|
@ -1261,28 +1261,28 @@ void RendererCanvasCull::canvas_light_attach_to_canvas(RID p_light, RID p_canvas
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_enabled(RID p_light, bool p_enabled) {
|
void RendererCanvasCull::canvas_light_set_enabled(RID p_light, bool p_enabled) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->enabled = p_enabled;
|
clight->enabled = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_texture_scale(RID p_light, float p_scale) {
|
void RendererCanvasCull::canvas_light_set_texture_scale(RID p_light, float p_scale) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->scale = p_scale;
|
clight->scale = p_scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_transform(RID p_light, const Transform2D &p_transform) {
|
void RendererCanvasCull::canvas_light_set_transform(RID p_light, const Transform2D &p_transform) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->xform = p_transform;
|
clight->xform = p_transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_texture(RID p_light, RID p_texture) {
|
void RendererCanvasCull::canvas_light_set_texture(RID p_light, RID p_texture) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
if (clight->texture == p_texture) {
|
if (clight->texture == p_texture) {
|
||||||
|
@ -1294,35 +1294,35 @@ void RendererCanvasCull::canvas_light_set_texture(RID p_light, RID p_texture) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_texture_offset(RID p_light, const Vector2 &p_offset) {
|
void RendererCanvasCull::canvas_light_set_texture_offset(RID p_light, const Vector2 &p_offset) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->texture_offset = p_offset;
|
clight->texture_offset = p_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_color(RID p_light, const Color &p_color) {
|
void RendererCanvasCull::canvas_light_set_color(RID p_light, const Color &p_color) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->color = p_color;
|
clight->color = p_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_height(RID p_light, float p_height) {
|
void RendererCanvasCull::canvas_light_set_height(RID p_light, float p_height) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->height = p_height;
|
clight->height = p_height;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_energy(RID p_light, float p_energy) {
|
void RendererCanvasCull::canvas_light_set_energy(RID p_light, float p_energy) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->energy = p_energy;
|
clight->energy = p_energy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_z_range(RID p_light, int p_min_z, int p_max_z) {
|
void RendererCanvasCull::canvas_light_set_z_range(RID p_light, int p_min_z, int p_max_z) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->z_min = p_min_z;
|
clight->z_min = p_min_z;
|
||||||
|
@ -1330,7 +1330,7 @@ void RendererCanvasCull::canvas_light_set_z_range(RID p_light, int p_min_z, int
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_layer_range(RID p_light, int p_min_layer, int p_max_layer) {
|
void RendererCanvasCull::canvas_light_set_layer_range(RID p_light, int p_min_layer, int p_max_layer) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->layer_max = p_max_layer;
|
clight->layer_max = p_max_layer;
|
||||||
|
@ -1338,35 +1338,35 @@ void RendererCanvasCull::canvas_light_set_layer_range(RID p_light, int p_min_lay
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_item_cull_mask(RID p_light, int p_mask) {
|
void RendererCanvasCull::canvas_light_set_item_cull_mask(RID p_light, int p_mask) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->item_mask = p_mask;
|
clight->item_mask = p_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_item_shadow_cull_mask(RID p_light, int p_mask) {
|
void RendererCanvasCull::canvas_light_set_item_shadow_cull_mask(RID p_light, int p_mask) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->item_shadow_mask = p_mask;
|
clight->item_shadow_mask = p_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_directional_distance(RID p_light, float p_distance) {
|
void RendererCanvasCull::canvas_light_set_directional_distance(RID p_light, float p_distance) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->directional_distance = p_distance;
|
clight->directional_distance = p_distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_blend_mode(RID p_light, RS::CanvasLightBlendMode p_mode) {
|
void RendererCanvasCull::canvas_light_set_blend_mode(RID p_light, RS::CanvasLightBlendMode p_mode) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->blend_mode = p_mode;
|
clight->blend_mode = p_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_shadow_enabled(RID p_light, bool p_enabled) {
|
void RendererCanvasCull::canvas_light_set_shadow_enabled(RID p_light, bool p_enabled) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
if (clight->use_shadow == p_enabled) {
|
if (clight->use_shadow == p_enabled) {
|
||||||
|
@ -1378,21 +1378,21 @@ void RendererCanvasCull::canvas_light_set_shadow_enabled(RID p_light, bool p_ena
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_shadow_filter(RID p_light, RS::CanvasLightShadowFilter p_filter) {
|
void RendererCanvasCull::canvas_light_set_shadow_filter(RID p_light, RS::CanvasLightShadowFilter p_filter) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->shadow_filter = p_filter;
|
clight->shadow_filter = p_filter;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_shadow_color(RID p_light, const Color &p_color) {
|
void RendererCanvasCull::canvas_light_set_shadow_color(RID p_light, const Color &p_color) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
|
|
||||||
clight->shadow_color = p_color;
|
clight->shadow_color = p_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_set_shadow_smooth(RID p_light, float p_smooth) {
|
void RendererCanvasCull::canvas_light_set_shadow_smooth(RID p_light, float p_smooth) {
|
||||||
RendererCanvasRender::Light *clight = canvas_light_owner.getornull(p_light);
|
RendererCanvasRender::Light *clight = canvas_light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND(!clight);
|
ERR_FAIL_COND(!clight);
|
||||||
clight->shadow_smooth = p_smooth;
|
clight->shadow_smooth = p_smooth;
|
||||||
}
|
}
|
||||||
|
@ -1405,11 +1405,11 @@ void RendererCanvasCull::canvas_light_occluder_initialize(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_occluder_attach_to_canvas(RID p_occluder, RID p_canvas) {
|
void RendererCanvasCull::canvas_light_occluder_attach_to_canvas(RID p_occluder, RID p_canvas) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
|
|
||||||
if (occluder->canvas.is_valid()) {
|
if (occluder->canvas.is_valid()) {
|
||||||
Canvas *canvas = canvas_owner.getornull(occluder->canvas);
|
Canvas *canvas = canvas_owner.get_or_null(occluder->canvas);
|
||||||
canvas->occluders.erase(occluder);
|
canvas->occluders.erase(occluder);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1420,24 +1420,24 @@ void RendererCanvasCull::canvas_light_occluder_attach_to_canvas(RID p_occluder,
|
||||||
occluder->canvas = p_canvas;
|
occluder->canvas = p_canvas;
|
||||||
|
|
||||||
if (occluder->canvas.is_valid()) {
|
if (occluder->canvas.is_valid()) {
|
||||||
Canvas *canvas = canvas_owner.getornull(occluder->canvas);
|
Canvas *canvas = canvas_owner.get_or_null(occluder->canvas);
|
||||||
canvas->occluders.insert(occluder);
|
canvas->occluders.insert(occluder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_occluder_set_enabled(RID p_occluder, bool p_enabled) {
|
void RendererCanvasCull::canvas_light_occluder_set_enabled(RID p_occluder, bool p_enabled) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
|
|
||||||
occluder->enabled = p_enabled;
|
occluder->enabled = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_occluder_set_polygon(RID p_occluder, RID p_polygon) {
|
void RendererCanvasCull::canvas_light_occluder_set_polygon(RID p_occluder, RID p_polygon) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
|
|
||||||
if (occluder->polygon.is_valid()) {
|
if (occluder->polygon.is_valid()) {
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_polygon);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(p_polygon);
|
||||||
if (occluder_poly) {
|
if (occluder_poly) {
|
||||||
occluder_poly->owners.erase(occluder);
|
occluder_poly->owners.erase(occluder);
|
||||||
}
|
}
|
||||||
|
@ -1447,7 +1447,7 @@ void RendererCanvasCull::canvas_light_occluder_set_polygon(RID p_occluder, RID p
|
||||||
occluder->occluder = RID();
|
occluder->occluder = RID();
|
||||||
|
|
||||||
if (occluder->polygon.is_valid()) {
|
if (occluder->polygon.is_valid()) {
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_polygon);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(p_polygon);
|
||||||
if (!occluder_poly) {
|
if (!occluder_poly) {
|
||||||
occluder->polygon = RID();
|
occluder->polygon = RID();
|
||||||
ERR_FAIL_COND(!occluder_poly);
|
ERR_FAIL_COND(!occluder_poly);
|
||||||
|
@ -1461,19 +1461,19 @@ void RendererCanvasCull::canvas_light_occluder_set_polygon(RID p_occluder, RID p
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_occluder_set_as_sdf_collision(RID p_occluder, bool p_enable) {
|
void RendererCanvasCull::canvas_light_occluder_set_as_sdf_collision(RID p_occluder, bool p_enable) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) {
|
void RendererCanvasCull::canvas_light_occluder_set_transform(RID p_occluder, const Transform2D &p_xform) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
|
|
||||||
occluder->xform = p_xform;
|
occluder->xform = p_xform;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_light_occluder_set_light_mask(RID p_occluder, int p_mask) {
|
void RendererCanvasCull::canvas_light_occluder_set_light_mask(RID p_occluder, int p_mask) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_occluder);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!occluder);
|
ERR_FAIL_COND(!occluder);
|
||||||
|
|
||||||
occluder->light_mask = p_mask;
|
occluder->light_mask = p_mask;
|
||||||
|
@ -1484,12 +1484,12 @@ RID RendererCanvasCull::canvas_occluder_polygon_allocate() {
|
||||||
}
|
}
|
||||||
void RendererCanvasCull::canvas_occluder_polygon_initialize(RID p_rid) {
|
void RendererCanvasCull::canvas_occluder_polygon_initialize(RID p_rid) {
|
||||||
canvas_light_occluder_polygon_owner.initialize_rid(p_rid);
|
canvas_light_occluder_polygon_owner.initialize_rid(p_rid);
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_rid);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(p_rid);
|
||||||
occluder_poly->occluder = RSG::canvas_render->occluder_polygon_create();
|
occluder_poly->occluder = RSG::canvas_render->occluder_polygon_create();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_occluder_polygon_set_shape(RID p_occluder_polygon, const Vector<Vector2> &p_shape, bool p_closed) {
|
void RendererCanvasCull::canvas_occluder_polygon_set_shape(RID p_occluder_polygon, const Vector<Vector2> &p_shape, bool p_closed) {
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_occluder_polygon);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(p_occluder_polygon);
|
||||||
ERR_FAIL_COND(!occluder_poly);
|
ERR_FAIL_COND(!occluder_poly);
|
||||||
|
|
||||||
uint32_t pc = p_shape.size();
|
uint32_t pc = p_shape.size();
|
||||||
|
@ -1513,7 +1513,7 @@ void RendererCanvasCull::canvas_occluder_polygon_set_shape(RID p_occluder_polygo
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_occluder_polygon_set_cull_mode(RID p_occluder_polygon, RS::CanvasOccluderPolygonCullMode p_mode) {
|
void RendererCanvasCull::canvas_occluder_polygon_set_cull_mode(RID p_occluder_polygon, RS::CanvasOccluderPolygonCullMode p_mode) {
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_occluder_polygon);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(p_occluder_polygon);
|
||||||
ERR_FAIL_COND(!occluder_poly);
|
ERR_FAIL_COND(!occluder_poly);
|
||||||
occluder_poly->cull_mode = p_mode;
|
occluder_poly->cull_mode = p_mode;
|
||||||
RSG::canvas_render->occluder_polygon_set_cull_mode(occluder_poly->occluder, p_mode);
|
RSG::canvas_render->occluder_polygon_set_cull_mode(occluder_poly->occluder, p_mode);
|
||||||
|
@ -1550,12 +1550,12 @@ void RendererCanvasCull::canvas_texture_set_texture_repeat(RID p_canvas_texture,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasCull::canvas_item_set_default_texture_filter(RID p_item, RS::CanvasItemTextureFilter p_filter) {
|
void RendererCanvasCull::canvas_item_set_default_texture_filter(RID p_item, RS::CanvasItemTextureFilter p_filter) {
|
||||||
Item *ci = canvas_item_owner.getornull(p_item);
|
Item *ci = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!ci);
|
ERR_FAIL_COND(!ci);
|
||||||
ci->texture_filter = p_filter;
|
ci->texture_filter = p_filter;
|
||||||
}
|
}
|
||||||
void RendererCanvasCull::canvas_item_set_default_texture_repeat(RID p_item, RS::CanvasItemTextureRepeat p_repeat) {
|
void RendererCanvasCull::canvas_item_set_default_texture_repeat(RID p_item, RS::CanvasItemTextureRepeat p_repeat) {
|
||||||
Item *ci = canvas_item_owner.getornull(p_item);
|
Item *ci = canvas_item_owner.get_or_null(p_item);
|
||||||
ERR_FAIL_COND(!ci);
|
ERR_FAIL_COND(!ci);
|
||||||
ci->texture_repeat = p_repeat;
|
ci->texture_repeat = p_repeat;
|
||||||
}
|
}
|
||||||
|
@ -1600,11 +1600,11 @@ void RendererCanvasCull::update_visibility_notifiers() {
|
||||||
|
|
||||||
bool RendererCanvasCull::free(RID p_rid) {
|
bool RendererCanvasCull::free(RID p_rid) {
|
||||||
if (canvas_owner.owns(p_rid)) {
|
if (canvas_owner.owns(p_rid)) {
|
||||||
Canvas *canvas = canvas_owner.getornull(p_rid);
|
Canvas *canvas = canvas_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND_V(!canvas, false);
|
ERR_FAIL_COND_V(!canvas, false);
|
||||||
|
|
||||||
while (canvas->viewports.size()) {
|
while (canvas->viewports.size()) {
|
||||||
RendererViewport::Viewport *vp = RSG::viewport->viewport_owner.getornull(canvas->viewports.front()->get());
|
RendererViewport::Viewport *vp = RSG::viewport->viewport_owner.get_or_null(canvas->viewports.front()->get());
|
||||||
ERR_FAIL_COND_V(!vp, true);
|
ERR_FAIL_COND_V(!vp, true);
|
||||||
|
|
||||||
Map<RID, RendererViewport::Viewport::CanvasData>::Element *E = vp->canvas_map.find(p_rid);
|
Map<RID, RendererViewport::Viewport::CanvasData>::Element *E = vp->canvas_map.find(p_rid);
|
||||||
|
@ -1629,15 +1629,15 @@ bool RendererCanvasCull::free(RID p_rid) {
|
||||||
canvas_owner.free(p_rid);
|
canvas_owner.free(p_rid);
|
||||||
|
|
||||||
} else if (canvas_item_owner.owns(p_rid)) {
|
} else if (canvas_item_owner.owns(p_rid)) {
|
||||||
Item *canvas_item = canvas_item_owner.getornull(p_rid);
|
Item *canvas_item = canvas_item_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND_V(!canvas_item, true);
|
ERR_FAIL_COND_V(!canvas_item, true);
|
||||||
|
|
||||||
if (canvas_item->parent.is_valid()) {
|
if (canvas_item->parent.is_valid()) {
|
||||||
if (canvas_owner.owns(canvas_item->parent)) {
|
if (canvas_owner.owns(canvas_item->parent)) {
|
||||||
Canvas *canvas = canvas_owner.getornull(canvas_item->parent);
|
Canvas *canvas = canvas_owner.get_or_null(canvas_item->parent);
|
||||||
canvas->erase_item(canvas_item);
|
canvas->erase_item(canvas_item);
|
||||||
} else if (canvas_item_owner.owns(canvas_item->parent)) {
|
} else if (canvas_item_owner.owns(canvas_item->parent)) {
|
||||||
Item *item_owner = canvas_item_owner.getornull(canvas_item->parent);
|
Item *item_owner = canvas_item_owner.get_or_null(canvas_item->parent);
|
||||||
item_owner->child_items.erase(canvas_item);
|
item_owner->child_items.erase(canvas_item);
|
||||||
|
|
||||||
if (item_owner->sort_y) {
|
if (item_owner->sort_y) {
|
||||||
|
@ -1663,11 +1663,11 @@ bool RendererCanvasCull::free(RID p_rid) {
|
||||||
canvas_item_owner.free(p_rid);
|
canvas_item_owner.free(p_rid);
|
||||||
|
|
||||||
} else if (canvas_light_owner.owns(p_rid)) {
|
} else if (canvas_light_owner.owns(p_rid)) {
|
||||||
RendererCanvasRender::Light *canvas_light = canvas_light_owner.getornull(p_rid);
|
RendererCanvasRender::Light *canvas_light = canvas_light_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND_V(!canvas_light, true);
|
ERR_FAIL_COND_V(!canvas_light, true);
|
||||||
|
|
||||||
if (canvas_light->canvas.is_valid()) {
|
if (canvas_light->canvas.is_valid()) {
|
||||||
Canvas *canvas = canvas_owner.getornull(canvas_light->canvas);
|
Canvas *canvas = canvas_owner.get_or_null(canvas_light->canvas);
|
||||||
if (canvas) {
|
if (canvas) {
|
||||||
canvas->lights.erase(canvas_light);
|
canvas->lights.erase(canvas_light);
|
||||||
}
|
}
|
||||||
|
@ -1678,25 +1678,25 @@ bool RendererCanvasCull::free(RID p_rid) {
|
||||||
canvas_light_owner.free(p_rid);
|
canvas_light_owner.free(p_rid);
|
||||||
|
|
||||||
} else if (canvas_light_occluder_owner.owns(p_rid)) {
|
} else if (canvas_light_occluder_owner.owns(p_rid)) {
|
||||||
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.getornull(p_rid);
|
RendererCanvasRender::LightOccluderInstance *occluder = canvas_light_occluder_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND_V(!occluder, true);
|
ERR_FAIL_COND_V(!occluder, true);
|
||||||
|
|
||||||
if (occluder->polygon.is_valid()) {
|
if (occluder->polygon.is_valid()) {
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(occluder->polygon);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(occluder->polygon);
|
||||||
if (occluder_poly) {
|
if (occluder_poly) {
|
||||||
occluder_poly->owners.erase(occluder);
|
occluder_poly->owners.erase(occluder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (occluder->canvas.is_valid() && canvas_owner.owns(occluder->canvas)) {
|
if (occluder->canvas.is_valid() && canvas_owner.owns(occluder->canvas)) {
|
||||||
Canvas *canvas = canvas_owner.getornull(occluder->canvas);
|
Canvas *canvas = canvas_owner.get_or_null(occluder->canvas);
|
||||||
canvas->occluders.erase(occluder);
|
canvas->occluders.erase(occluder);
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas_light_occluder_owner.free(p_rid);
|
canvas_light_occluder_owner.free(p_rid);
|
||||||
|
|
||||||
} else if (canvas_light_occluder_polygon_owner.owns(p_rid)) {
|
} else if (canvas_light_occluder_polygon_owner.owns(p_rid)) {
|
||||||
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.getornull(p_rid);
|
LightOccluderPolygon *occluder_poly = canvas_light_occluder_polygon_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND_V(!occluder_poly, true);
|
ERR_FAIL_COND_V(!occluder_poly, true);
|
||||||
RSG::canvas_render->free(occluder_poly->occluder);
|
RSG::canvas_render->free(occluder_poly->occluder);
|
||||||
|
|
||||||
|
|
|
@ -2695,7 +2695,7 @@ void RenderForwardClustered::_geometry_instance_update(GeometryInstance *p_geome
|
||||||
} break;
|
} break;
|
||||||
#if 0
|
#if 0
|
||||||
case RS::INSTANCE_IMMEDIATE: {
|
case RS::INSTANCE_IMMEDIATE: {
|
||||||
RasterizerStorageGLES3::Immediate *immediate = storage->immediate_owner.getornull(inst->base);
|
RasterizerStorageGLES3::Immediate *immediate = storage->immediate_owner.get_or_null(inst->base);
|
||||||
ERR_CONTINUE(!immediate);
|
ERR_CONTINUE(!immediate);
|
||||||
|
|
||||||
_add_geometry(immediate, inst, nullptr, -1, p_depth_pass, p_shadow_pass);
|
_add_geometry(immediate, inst, nullptr, -1, p_depth_pass, p_shadow_pass);
|
||||||
|
|
|
@ -2440,7 +2440,7 @@ void RenderForwardMobile::_geometry_instance_update(GeometryInstance *p_geometry
|
||||||
} break;
|
} break;
|
||||||
#if 0
|
#if 0
|
||||||
case RS::INSTANCE_IMMEDIATE: {
|
case RS::INSTANCE_IMMEDIATE: {
|
||||||
RasterizerStorageGLES3::Immediate *immediate = storage->immediate_owner.getornull(inst->base);
|
RasterizerStorageGLES3::Immediate *immediate = storage->immediate_owner.get_or_null(inst->base);
|
||||||
ERR_CONTINUE(!immediate);
|
ERR_CONTINUE(!immediate);
|
||||||
|
|
||||||
_add_geometry(immediate, inst, nullptr, -1, p_depth_pass, p_shadow_pass);
|
_add_geometry(immediate, inst, nullptr, -1, p_depth_pass, p_shadow_pass);
|
||||||
|
|
|
@ -1144,7 +1144,7 @@ void RendererCanvasRenderRD::canvas_render_items(RID p_to_render_target, Item *p
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CanvasLight *clight = canvas_light_owner.getornull(l->light_internal);
|
CanvasLight *clight = canvas_light_owner.get_or_null(l->light_internal);
|
||||||
if (!clight) { //unused or invalid texture
|
if (!clight) { //unused or invalid texture
|
||||||
l->render_index_cache = -1;
|
l->render_index_cache = -1;
|
||||||
l = l->next_ptr;
|
l = l->next_ptr;
|
||||||
|
@ -1207,7 +1207,7 @@ void RendererCanvasRenderRD::canvas_render_items(RID p_to_render_target, Item *p
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CanvasLight *clight = canvas_light_owner.getornull(l->light_internal);
|
CanvasLight *clight = canvas_light_owner.get_or_null(l->light_internal);
|
||||||
if (!clight) { //unused or invalid texture
|
if (!clight) { //unused or invalid texture
|
||||||
l->render_index_cache = -1;
|
l->render_index_cache = -1;
|
||||||
l = l->next_ptr;
|
l = l->next_ptr;
|
||||||
|
@ -1481,7 +1481,7 @@ RID RendererCanvasRenderRD::light_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasRenderRD::light_set_texture(RID p_rid, RID p_texture) {
|
void RendererCanvasRenderRD::light_set_texture(RID p_rid, RID p_texture) {
|
||||||
CanvasLight *cl = canvas_light_owner.getornull(p_rid);
|
CanvasLight *cl = canvas_light_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND(!cl);
|
ERR_FAIL_COND(!cl);
|
||||||
if (cl->texture == p_texture) {
|
if (cl->texture == p_texture) {
|
||||||
return;
|
return;
|
||||||
|
@ -1497,7 +1497,7 @@ void RendererCanvasRenderRD::light_set_texture(RID p_rid, RID p_texture) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasRenderRD::light_set_use_shadow(RID p_rid, bool p_enable) {
|
void RendererCanvasRenderRD::light_set_use_shadow(RID p_rid, bool p_enable) {
|
||||||
CanvasLight *cl = canvas_light_owner.getornull(p_rid);
|
CanvasLight *cl = canvas_light_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND(!cl);
|
ERR_FAIL_COND(!cl);
|
||||||
|
|
||||||
cl->shadow.enabled = p_enable;
|
cl->shadow.enabled = p_enable;
|
||||||
|
@ -1537,7 +1537,7 @@ void RendererCanvasRenderRD::_update_shadow_atlas() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_near, float p_far, LightOccluderInstance *p_occluders) {
|
void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_near, float p_far, LightOccluderInstance *p_occluders) {
|
||||||
CanvasLight *cl = canvas_light_owner.getornull(p_rid);
|
CanvasLight *cl = canvas_light_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND(!cl->shadow.enabled);
|
ERR_FAIL_COND(!cl->shadow.enabled);
|
||||||
|
|
||||||
_update_shadow_atlas();
|
_update_shadow_atlas();
|
||||||
|
@ -1591,7 +1591,7 @@ void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index,
|
||||||
LightOccluderInstance *instance = p_occluders;
|
LightOccluderInstance *instance = p_occluders;
|
||||||
|
|
||||||
while (instance) {
|
while (instance) {
|
||||||
OccluderPolygon *co = occluder_polygon_owner.getornull(instance->occluder);
|
OccluderPolygon *co = occluder_polygon_owner.get_or_null(instance->occluder);
|
||||||
|
|
||||||
if (!co || co->index_array.is_null() || !(p_light_mask & instance->light_mask)) {
|
if (!co || co->index_array.is_null() || !(p_light_mask & instance->light_mask)) {
|
||||||
instance = instance->next;
|
instance = instance->next;
|
||||||
|
@ -1615,7 +1615,7 @@ void RendererCanvasRenderRD::light_update_shadow(RID p_rid, int p_shadow_index,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasRenderRD::light_update_directional_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_cull_distance, const Rect2 &p_clip_rect, LightOccluderInstance *p_occluders) {
|
void RendererCanvasRenderRD::light_update_directional_shadow(RID p_rid, int p_shadow_index, const Transform2D &p_light_xform, int p_light_mask, float p_cull_distance, const Rect2 &p_clip_rect, LightOccluderInstance *p_occluders) {
|
||||||
CanvasLight *cl = canvas_light_owner.getornull(p_rid);
|
CanvasLight *cl = canvas_light_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND(!cl->shadow.enabled);
|
ERR_FAIL_COND(!cl->shadow.enabled);
|
||||||
|
|
||||||
_update_shadow_atlas();
|
_update_shadow_atlas();
|
||||||
|
@ -1666,7 +1666,7 @@ void RendererCanvasRenderRD::light_update_directional_shadow(RID p_rid, int p_sh
|
||||||
LightOccluderInstance *instance = p_occluders;
|
LightOccluderInstance *instance = p_occluders;
|
||||||
|
|
||||||
while (instance) {
|
while (instance) {
|
||||||
OccluderPolygon *co = occluder_polygon_owner.getornull(instance->occluder);
|
OccluderPolygon *co = occluder_polygon_owner.get_or_null(instance->occluder);
|
||||||
|
|
||||||
if (!co || co->index_array.is_null() || !(p_light_mask & instance->light_mask)) {
|
if (!co || co->index_array.is_null() || !(p_light_mask & instance->light_mask)) {
|
||||||
instance = instance->next;
|
instance = instance->next;
|
||||||
|
@ -1732,7 +1732,7 @@ void RendererCanvasRenderRD::render_sdf(RID p_render_target, LightOccluderInstan
|
||||||
LightOccluderInstance *instance = p_occluders;
|
LightOccluderInstance *instance = p_occluders;
|
||||||
|
|
||||||
while (instance) {
|
while (instance) {
|
||||||
OccluderPolygon *co = occluder_polygon_owner.getornull(instance->occluder);
|
OccluderPolygon *co = occluder_polygon_owner.get_or_null(instance->occluder);
|
||||||
|
|
||||||
if (!co || co->sdf_index_array.is_null()) {
|
if (!co || co->sdf_index_array.is_null()) {
|
||||||
instance = instance->next;
|
instance = instance->next;
|
||||||
|
@ -1766,7 +1766,7 @@ RID RendererCanvasRenderRD::occluder_polygon_create() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasRenderRD::occluder_polygon_set_shape(RID p_occluder, const Vector<Vector2> &p_points, bool p_closed) {
|
void RendererCanvasRenderRD::occluder_polygon_set_shape(RID p_occluder, const Vector<Vector2> &p_points, bool p_closed) {
|
||||||
OccluderPolygon *oc = occluder_polygon_owner.getornull(p_occluder);
|
OccluderPolygon *oc = occluder_polygon_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!oc);
|
ERR_FAIL_COND(!oc);
|
||||||
|
|
||||||
Vector<Vector2> lines;
|
Vector<Vector2> lines;
|
||||||
|
@ -1935,7 +1935,7 @@ void RendererCanvasRenderRD::occluder_polygon_set_shape(RID p_occluder, const Ve
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererCanvasRenderRD::occluder_polygon_set_cull_mode(RID p_occluder, RS::CanvasOccluderPolygonCullMode p_mode) {
|
void RendererCanvasRenderRD::occluder_polygon_set_cull_mode(RID p_occluder, RS::CanvasOccluderPolygonCullMode p_mode) {
|
||||||
OccluderPolygon *oc = occluder_polygon_owner.getornull(p_occluder);
|
OccluderPolygon *oc = occluder_polygon_owner.get_or_null(p_occluder);
|
||||||
ERR_FAIL_COND(!oc);
|
ERR_FAIL_COND(!oc);
|
||||||
oc->cull_mode = p_mode;
|
oc->cull_mode = p_mode;
|
||||||
}
|
}
|
||||||
|
@ -2611,7 +2611,7 @@ void fragment() {
|
||||||
|
|
||||||
bool RendererCanvasRenderRD::free(RID p_rid) {
|
bool RendererCanvasRenderRD::free(RID p_rid) {
|
||||||
if (canvas_light_owner.owns(p_rid)) {
|
if (canvas_light_owner.owns(p_rid)) {
|
||||||
CanvasLight *cl = canvas_light_owner.getornull(p_rid);
|
CanvasLight *cl = canvas_light_owner.get_or_null(p_rid);
|
||||||
ERR_FAIL_COND_V(!cl, false);
|
ERR_FAIL_COND_V(!cl, false);
|
||||||
light_set_use_shadow(p_rid, false);
|
light_set_use_shadow(p_rid, false);
|
||||||
canvas_light_owner.free(p_rid);
|
canvas_light_owner.free(p_rid);
|
||||||
|
|
|
@ -1450,7 +1450,7 @@ void RendererSceneGIRD::SDFGI::pre_process_gi(const Transform3D &p_transform, Re
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RendererSceneRenderRD::LightInstance *li = p_scene_render->light_instance_owner.getornull(p_scene_render->render_state.sdfgi_update_data->directional_lights->get(j));
|
RendererSceneRenderRD::LightInstance *li = p_scene_render->light_instance_owner.get_or_null(p_scene_render->render_state.sdfgi_update_data->directional_lights->get(j));
|
||||||
ERR_CONTINUE(!li);
|
ERR_CONTINUE(!li);
|
||||||
|
|
||||||
if (storage->light_directional_is_sky_only(li->light)) {
|
if (storage->light_directional_is_sky_only(li->light)) {
|
||||||
|
@ -1484,7 +1484,7 @@ void RendererSceneGIRD::SDFGI::pre_process_gi(const Transform3D &p_transform, Re
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RendererSceneRenderRD::LightInstance *li = p_scene_render->light_instance_owner.getornull(p_scene_render->render_state.sdfgi_update_data->positional_light_instances[j]);
|
RendererSceneRenderRD::LightInstance *li = p_scene_render->light_instance_owner.get_or_null(p_scene_render->render_state.sdfgi_update_data->positional_light_instances[j]);
|
||||||
ERR_CONTINUE(!li);
|
ERR_CONTINUE(!li);
|
||||||
|
|
||||||
uint32_t max_sdfgi_cascade = storage->light_get_max_sdfgi_cascade(li->light);
|
uint32_t max_sdfgi_cascade = storage->light_get_max_sdfgi_cascade(li->light);
|
||||||
|
@ -1534,7 +1534,7 @@ void RendererSceneGIRD::SDFGI::pre_process_gi(const Transform3D &p_transform, Re
|
||||||
|
|
||||||
void RendererSceneGIRD::SDFGI::render_region(RID p_render_buffers, int p_region, const PagedArray<RendererSceneRender::GeometryInstance *> &p_instances, RendererSceneRenderRD *p_scene_render) {
|
void RendererSceneGIRD::SDFGI::render_region(RID p_render_buffers, int p_region, const PagedArray<RendererSceneRender::GeometryInstance *> &p_instances, RendererSceneRenderRD *p_scene_render) {
|
||||||
//print_line("rendering region " + itos(p_region));
|
//print_line("rendering region " + itos(p_region));
|
||||||
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.getornull(p_render_buffers);
|
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
|
||||||
ERR_FAIL_COND(!rb); // we wouldn't be here if this failed but...
|
ERR_FAIL_COND(!rb); // we wouldn't be here if this failed but...
|
||||||
AABB bounds;
|
AABB bounds;
|
||||||
Vector3i from;
|
Vector3i from;
|
||||||
|
@ -1892,7 +1892,7 @@ void RendererSceneGIRD::SDFGI::render_region(RID p_render_buffers, int p_region,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneGIRD::SDFGI::render_static_lights(RID p_render_buffers, uint32_t p_cascade_count, const uint32_t *p_cascade_indices, const PagedArray<RID> *p_positional_light_cull_result, RendererSceneRenderRD *p_scene_render) {
|
void RendererSceneGIRD::SDFGI::render_static_lights(RID p_render_buffers, uint32_t p_cascade_count, const uint32_t *p_cascade_indices, const PagedArray<RID> *p_positional_light_cull_result, RendererSceneRenderRD *p_scene_render) {
|
||||||
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.getornull(p_render_buffers);
|
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
|
||||||
ERR_FAIL_COND(!rb); // we wouldn't be here if this failed but...
|
ERR_FAIL_COND(!rb); // we wouldn't be here if this failed but...
|
||||||
|
|
||||||
RD::get_singleton()->draw_command_begin_label("SDFGI Render Static Lighs");
|
RD::get_singleton()->draw_command_begin_label("SDFGI Render Static Lighs");
|
||||||
|
@ -1921,7 +1921,7 @@ void RendererSceneGIRD::SDFGI::render_static_lights(RID p_render_buffers, uint32
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
RendererSceneRenderRD::LightInstance *li = p_scene_render->light_instance_owner.getornull(p_positional_light_cull_result[i][j]);
|
RendererSceneRenderRD::LightInstance *li = p_scene_render->light_instance_owner.get_or_null(p_positional_light_cull_result[i][j]);
|
||||||
ERR_CONTINUE(!li);
|
ERR_CONTINUE(!li);
|
||||||
|
|
||||||
uint32_t max_sdfgi_cascade = storage->light_get_max_sdfgi_cascade(li->light);
|
uint32_t max_sdfgi_cascade = storage->light_get_max_sdfgi_cascade(li->light);
|
||||||
|
@ -3024,7 +3024,7 @@ void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Tra
|
||||||
r_voxel_gi_instances_used = 0;
|
r_voxel_gi_instances_used = 0;
|
||||||
|
|
||||||
// feels a little dirty to use our container this way but....
|
// feels a little dirty to use our container this way but....
|
||||||
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.getornull(p_render_buffers);
|
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
|
||||||
ERR_FAIL_COND(rb == nullptr);
|
ERR_FAIL_COND(rb == nullptr);
|
||||||
|
|
||||||
RID voxel_gi_buffer = p_scene_render->render_buffers_get_voxel_gi_buffer(p_render_buffers);
|
RID voxel_gi_buffer = p_scene_render->render_buffers_get_voxel_gi_buffer(p_render_buffers);
|
||||||
|
@ -3119,9 +3119,9 @@ void RendererSceneGIRD::setup_voxel_gi_instances(RID p_render_buffers, const Tra
|
||||||
void RendererSceneGIRD::process_gi(RID p_render_buffers, RID p_normal_roughness_buffer, RID p_voxel_gi_buffer, RID p_environment, const CameraMatrix &p_projection, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, RendererSceneRenderRD *p_scene_render) {
|
void RendererSceneGIRD::process_gi(RID p_render_buffers, RID p_normal_roughness_buffer, RID p_voxel_gi_buffer, RID p_environment, const CameraMatrix &p_projection, const Transform3D &p_transform, const PagedArray<RID> &p_voxel_gi_instances, RendererSceneRenderRD *p_scene_render) {
|
||||||
RD::get_singleton()->draw_command_begin_label("GI Render");
|
RD::get_singleton()->draw_command_begin_label("GI Render");
|
||||||
|
|
||||||
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.getornull(p_render_buffers);
|
RendererSceneRenderRD::RenderBuffers *rb = p_scene_render->render_buffers_owner.get_or_null(p_render_buffers);
|
||||||
ERR_FAIL_COND(rb == nullptr);
|
ERR_FAIL_COND(rb == nullptr);
|
||||||
RendererSceneEnvironmentRD *env = p_scene_render->environment_owner.getornull(p_environment);
|
RendererSceneEnvironmentRD *env = p_scene_render->environment_owner.get_or_null(p_environment);
|
||||||
|
|
||||||
if (rb->ambient_buffer.is_null() || rb->gi.using_half_size_gi != half_resolution) {
|
if (rb->ambient_buffer.is_null() || rb->gi.using_half_size_gi != half_resolution) {
|
||||||
if (rb->ambient_buffer.is_valid()) {
|
if (rb->ambient_buffer.is_valid()) {
|
||||||
|
@ -3393,7 +3393,7 @@ void RendererSceneGIRD::voxel_gi_update(RID p_probe, bool p_update_light_instanc
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneGIRD::debug_voxel_gi(RID p_voxel_gi, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha) {
|
void RendererSceneGIRD::debug_voxel_gi(RID p_voxel_gi, RD::DrawListID p_draw_list, RID p_framebuffer, const CameraMatrix &p_camera_with_transform, bool p_lighting, bool p_emission, float p_alpha) {
|
||||||
VoxelGIInstance *voxel_gi = voxel_gi_instance_owner.getornull(p_voxel_gi);
|
VoxelGIInstance *voxel_gi = voxel_gi_instance_owner.get_or_null(p_voxel_gi);
|
||||||
ERR_FAIL_COND(!voxel_gi);
|
ERR_FAIL_COND(!voxel_gi);
|
||||||
|
|
||||||
voxel_gi->debug(p_draw_list, p_framebuffer, p_camera_with_transform, p_lighting, p_emission, p_alpha);
|
voxel_gi->debug(p_draw_list, p_framebuffer, p_camera_with_transform, p_lighting, p_emission, p_alpha);
|
||||||
|
|
|
@ -383,7 +383,7 @@ public:
|
||||||
mutable RID_Owner<VoxelGIInstance> voxel_gi_instance_owner;
|
mutable RID_Owner<VoxelGIInstance> voxel_gi_instance_owner;
|
||||||
|
|
||||||
_FORCE_INLINE_ VoxelGIInstance *get_probe_instance(RID p_probe) const {
|
_FORCE_INLINE_ VoxelGIInstance *get_probe_instance(RID p_probe) const {
|
||||||
return voxel_gi_instance_owner.getornull(p_probe);
|
return voxel_gi_instance_owner.get_or_null(p_probe);
|
||||||
};
|
};
|
||||||
|
|
||||||
_FORCE_INLINE_ RID voxel_gi_instance_get_texture(RID p_probe) {
|
_FORCE_INLINE_ RID voxel_gi_instance_get_texture(RID p_probe) {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -149,7 +149,7 @@ protected:
|
||||||
|
|
||||||
RendererSceneEnvironmentRD *get_environment(RID p_environment) {
|
RendererSceneEnvironmentRD *get_environment(RID p_environment) {
|
||||||
if (p_environment.is_valid()) {
|
if (p_environment.is_valid()) {
|
||||||
return environment_owner.getornull(p_environment);
|
return environment_owner.get_or_null(p_environment);
|
||||||
} else {
|
} else {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
@ -814,19 +814,19 @@ public:
|
||||||
virtual void shadow_atlas_set_quadrant_subdivision(RID p_atlas, int p_quadrant, int p_subdivision) override;
|
virtual void shadow_atlas_set_quadrant_subdivision(RID p_atlas, int p_quadrant, int p_subdivision) override;
|
||||||
virtual bool shadow_atlas_update_light(RID p_atlas, RID p_light_intance, float p_coverage, uint64_t p_light_version) override;
|
virtual bool shadow_atlas_update_light(RID p_atlas, RID p_light_intance, float p_coverage, uint64_t p_light_version) override;
|
||||||
_FORCE_INLINE_ bool shadow_atlas_owns_light_instance(RID p_atlas, RID p_light_intance) {
|
_FORCE_INLINE_ bool shadow_atlas_owns_light_instance(RID p_atlas, RID p_light_intance) {
|
||||||
ShadowAtlas *atlas = shadow_atlas_owner.getornull(p_atlas);
|
ShadowAtlas *atlas = shadow_atlas_owner.get_or_null(p_atlas);
|
||||||
ERR_FAIL_COND_V(!atlas, false);
|
ERR_FAIL_COND_V(!atlas, false);
|
||||||
return atlas->shadow_owners.has(p_light_intance);
|
return atlas->shadow_owners.has(p_light_intance);
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID shadow_atlas_get_texture(RID p_atlas) {
|
_FORCE_INLINE_ RID shadow_atlas_get_texture(RID p_atlas) {
|
||||||
ShadowAtlas *atlas = shadow_atlas_owner.getornull(p_atlas);
|
ShadowAtlas *atlas = shadow_atlas_owner.get_or_null(p_atlas);
|
||||||
ERR_FAIL_COND_V(!atlas, RID());
|
ERR_FAIL_COND_V(!atlas, RID());
|
||||||
return atlas->depth;
|
return atlas->depth;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Size2i shadow_atlas_get_size(RID p_atlas) {
|
_FORCE_INLINE_ Size2i shadow_atlas_get_size(RID p_atlas) {
|
||||||
ShadowAtlas *atlas = shadow_atlas_owner.getornull(p_atlas);
|
ShadowAtlas *atlas = shadow_atlas_owner.get_or_null(p_atlas);
|
||||||
ERR_FAIL_COND_V(!atlas, Size2i());
|
ERR_FAIL_COND_V(!atlas, Size2i());
|
||||||
return Size2(atlas->size, atlas->size);
|
return Size2(atlas->size, atlas->size);
|
||||||
}
|
}
|
||||||
|
@ -942,7 +942,7 @@ public:
|
||||||
virtual void camera_effects_set_custom_exposure(RID p_camera_effects, bool p_enable, float p_exposure) override;
|
virtual void camera_effects_set_custom_exposure(RID p_camera_effects, bool p_enable, float p_exposure) override;
|
||||||
|
|
||||||
bool camera_effects_uses_dof(RID p_camera_effects) {
|
bool camera_effects_uses_dof(RID p_camera_effects) {
|
||||||
CameraEffects *camfx = camera_effects_owner.getornull(p_camera_effects);
|
CameraEffects *camfx = camera_effects_owner.get_or_null(p_camera_effects);
|
||||||
|
|
||||||
return camfx && (camfx->dof_blur_near_enabled || camfx->dof_blur_far_enabled) && camfx->dof_blur_amount > 0.0;
|
return camfx && (camfx->dof_blur_near_enabled || camfx->dof_blur_far_enabled) && camfx->dof_blur_amount > 0.0;
|
||||||
}
|
}
|
||||||
|
@ -954,18 +954,18 @@ public:
|
||||||
virtual void light_instance_mark_visible(RID p_light_instance) override;
|
virtual void light_instance_mark_visible(RID p_light_instance) override;
|
||||||
|
|
||||||
_FORCE_INLINE_ RID light_instance_get_base_light(RID p_light_instance) {
|
_FORCE_INLINE_ RID light_instance_get_base_light(RID p_light_instance) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->light;
|
return li->light;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Transform3D light_instance_get_base_transform(RID p_light_instance) {
|
_FORCE_INLINE_ Transform3D light_instance_get_base_transform(RID p_light_instance) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->transform;
|
return li->transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Rect2 light_instance_get_shadow_atlas_rect(RID p_light_instance, RID p_shadow_atlas, Vector2i &r_omni_offset) {
|
_FORCE_INLINE_ Rect2 light_instance_get_shadow_atlas_rect(RID p_light_instance, RID p_shadow_atlas, Vector2i &r_omni_offset) {
|
||||||
ShadowAtlas *shadow_atlas = shadow_atlas_owner.getornull(p_shadow_atlas);
|
ShadowAtlas *shadow_atlas = shadow_atlas_owner.get_or_null(p_shadow_atlas);
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
uint32_t key = shadow_atlas->shadow_owners[li->self];
|
uint32_t key = shadow_atlas->shadow_owners[li->self];
|
||||||
|
|
||||||
uint32_t quadrant = (key >> ShadowAtlas::QUADRANT_SHIFT) & 0x3;
|
uint32_t quadrant = (key >> ShadowAtlas::QUADRANT_SHIFT) & 0x3;
|
||||||
|
@ -1000,16 +1000,16 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ CameraMatrix light_instance_get_shadow_camera(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ CameraMatrix light_instance_get_shadow_camera(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].camera;
|
return li->shadow_transform[p_index].camera;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float light_instance_get_shadow_texel_size(RID p_light_instance, RID p_shadow_atlas) {
|
_FORCE_INLINE_ float light_instance_get_shadow_texel_size(RID p_light_instance, RID p_shadow_atlas) {
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
ERR_FAIL_COND_V(!li->shadow_atlases.has(p_shadow_atlas), 0);
|
ERR_FAIL_COND_V(!li->shadow_atlases.has(p_shadow_atlas), 0);
|
||||||
#endif
|
#endif
|
||||||
ShadowAtlas *shadow_atlas = shadow_atlas_owner.getornull(p_shadow_atlas);
|
ShadowAtlas *shadow_atlas = shadow_atlas_owner.get_or_null(p_shadow_atlas);
|
||||||
ERR_FAIL_COND_V(!shadow_atlas, 0);
|
ERR_FAIL_COND_V(!shadow_atlas, 0);
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
ERR_FAIL_COND_V(!shadow_atlas->shadow_owners.has(p_light_instance), 0);
|
ERR_FAIL_COND_V(!shadow_atlas->shadow_owners.has(p_light_instance), 0);
|
||||||
|
@ -1027,59 +1027,59 @@ public:
|
||||||
|
|
||||||
_FORCE_INLINE_ Transform3D
|
_FORCE_INLINE_ Transform3D
|
||||||
light_instance_get_shadow_transform(RID p_light_instance, int p_index) {
|
light_instance_get_shadow_transform(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].transform;
|
return li->shadow_transform[p_index].transform;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ float light_instance_get_shadow_bias_scale(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ float light_instance_get_shadow_bias_scale(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].bias_scale;
|
return li->shadow_transform[p_index].bias_scale;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ float light_instance_get_shadow_range(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ float light_instance_get_shadow_range(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].farplane;
|
return li->shadow_transform[p_index].farplane;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ float light_instance_get_shadow_range_begin(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ float light_instance_get_shadow_range_begin(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].range_begin;
|
return li->shadow_transform[p_index].range_begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Vector2 light_instance_get_shadow_uv_scale(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ Vector2 light_instance_get_shadow_uv_scale(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].uv_scale;
|
return li->shadow_transform[p_index].uv_scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Rect2 light_instance_get_directional_shadow_atlas_rect(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ Rect2 light_instance_get_directional_shadow_atlas_rect(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].atlas_rect;
|
return li->shadow_transform[p_index].atlas_rect;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float light_instance_get_directional_shadow_split(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ float light_instance_get_directional_shadow_split(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].split;
|
return li->shadow_transform[p_index].split;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float light_instance_get_directional_shadow_texel_size(RID p_light_instance, int p_index) {
|
_FORCE_INLINE_ float light_instance_get_directional_shadow_texel_size(RID p_light_instance, int p_index) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->shadow_transform[p_index].shadow_texel_size;
|
return li->shadow_transform[p_index].shadow_texel_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ void light_instance_set_render_pass(RID p_light_instance, uint64_t p_pass) {
|
_FORCE_INLINE_ void light_instance_set_render_pass(RID p_light_instance, uint64_t p_pass) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
li->last_pass = p_pass;
|
li->last_pass = p_pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint64_t light_instance_get_render_pass(RID p_light_instance) {
|
_FORCE_INLINE_ uint64_t light_instance_get_render_pass(RID p_light_instance) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->last_pass;
|
return li->last_pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ ForwardID light_instance_get_forward_id(RID p_light_instance) {
|
_FORCE_INLINE_ ForwardID light_instance_get_forward_id(RID p_light_instance) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->forward_id;
|
return li->forward_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RS::LightType light_instance_get_type(RID p_light_instance) {
|
_FORCE_INLINE_ RS::LightType light_instance_get_type(RID p_light_instance) {
|
||||||
LightInstance *li = light_instance_owner.getornull(p_light_instance);
|
LightInstance *li = light_instance_owner.get_or_null(p_light_instance);
|
||||||
return li->light_type;
|
return li->light_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1088,7 +1088,7 @@ public:
|
||||||
virtual int reflection_atlas_get_size(RID p_ref_atlas) const override;
|
virtual int reflection_atlas_get_size(RID p_ref_atlas) const override;
|
||||||
|
|
||||||
_FORCE_INLINE_ RID reflection_atlas_get_texture(RID p_ref_atlas) {
|
_FORCE_INLINE_ RID reflection_atlas_get_texture(RID p_ref_atlas) {
|
||||||
ReflectionAtlas *atlas = reflection_atlas_owner.getornull(p_ref_atlas);
|
ReflectionAtlas *atlas = reflection_atlas_owner.get_or_null(p_ref_atlas);
|
||||||
ERR_FAIL_COND_V(!atlas, RID());
|
ERR_FAIL_COND_V(!atlas, RID());
|
||||||
return atlas->reflection;
|
return atlas->reflection;
|
||||||
}
|
}
|
||||||
|
@ -1107,41 +1107,41 @@ public:
|
||||||
RID reflection_probe_instance_get_depth_framebuffer(RID p_instance, int p_index);
|
RID reflection_probe_instance_get_depth_framebuffer(RID p_instance, int p_index);
|
||||||
|
|
||||||
_FORCE_INLINE_ RID reflection_probe_instance_get_probe(RID p_instance) {
|
_FORCE_INLINE_ RID reflection_probe_instance_get_probe(RID p_instance) {
|
||||||
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
|
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!rpi, RID());
|
ERR_FAIL_COND_V(!rpi, RID());
|
||||||
|
|
||||||
return rpi->probe;
|
return rpi->probe;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ ForwardID reflection_probe_instance_get_forward_id(RID p_instance) {
|
_FORCE_INLINE_ ForwardID reflection_probe_instance_get_forward_id(RID p_instance) {
|
||||||
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
|
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!rpi, 0);
|
ERR_FAIL_COND_V(!rpi, 0);
|
||||||
|
|
||||||
return rpi->forward_id;
|
return rpi->forward_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ void reflection_probe_instance_set_render_pass(RID p_instance, uint32_t p_render_pass) {
|
_FORCE_INLINE_ void reflection_probe_instance_set_render_pass(RID p_instance, uint32_t p_render_pass) {
|
||||||
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
|
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!rpi);
|
ERR_FAIL_COND(!rpi);
|
||||||
rpi->last_pass = p_render_pass;
|
rpi->last_pass = p_render_pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t reflection_probe_instance_get_render_pass(RID p_instance) {
|
_FORCE_INLINE_ uint32_t reflection_probe_instance_get_render_pass(RID p_instance) {
|
||||||
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
|
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!rpi, 0);
|
ERR_FAIL_COND_V(!rpi, 0);
|
||||||
|
|
||||||
return rpi->last_pass;
|
return rpi->last_pass;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Transform3D reflection_probe_instance_get_transform(RID p_instance) {
|
_FORCE_INLINE_ Transform3D reflection_probe_instance_get_transform(RID p_instance) {
|
||||||
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
|
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!rpi, Transform3D());
|
ERR_FAIL_COND_V(!rpi, Transform3D());
|
||||||
|
|
||||||
return rpi->transform;
|
return rpi->transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ int reflection_probe_instance_get_atlas_index(RID p_instance) {
|
_FORCE_INLINE_ int reflection_probe_instance_get_atlas_index(RID p_instance) {
|
||||||
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.getornull(p_instance);
|
ReflectionProbeInstance *rpi = reflection_probe_instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!rpi, -1);
|
ERR_FAIL_COND_V(!rpi, -1);
|
||||||
|
|
||||||
return rpi->atlas_index;
|
return rpi->atlas_index;
|
||||||
|
@ -1151,32 +1151,32 @@ public:
|
||||||
virtual void decal_instance_set_transform(RID p_decal, const Transform3D &p_transform) override;
|
virtual void decal_instance_set_transform(RID p_decal, const Transform3D &p_transform) override;
|
||||||
|
|
||||||
_FORCE_INLINE_ RID decal_instance_get_base(RID p_decal) const {
|
_FORCE_INLINE_ RID decal_instance_get_base(RID p_decal) const {
|
||||||
DecalInstance *decal = decal_instance_owner.getornull(p_decal);
|
DecalInstance *decal = decal_instance_owner.get_or_null(p_decal);
|
||||||
return decal->decal;
|
return decal->decal;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ ForwardID decal_instance_get_forward_id(RID p_decal) const {
|
_FORCE_INLINE_ ForwardID decal_instance_get_forward_id(RID p_decal) const {
|
||||||
DecalInstance *decal = decal_instance_owner.getornull(p_decal);
|
DecalInstance *decal = decal_instance_owner.get_or_null(p_decal);
|
||||||
return decal->forward_id;
|
return decal->forward_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Transform3D decal_instance_get_transform(RID p_decal) const {
|
_FORCE_INLINE_ Transform3D decal_instance_get_transform(RID p_decal) const {
|
||||||
DecalInstance *decal = decal_instance_owner.getornull(p_decal);
|
DecalInstance *decal = decal_instance_owner.get_or_null(p_decal);
|
||||||
return decal->transform;
|
return decal->transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual RID lightmap_instance_create(RID p_lightmap) override;
|
virtual RID lightmap_instance_create(RID p_lightmap) override;
|
||||||
virtual void lightmap_instance_set_transform(RID p_lightmap, const Transform3D &p_transform) override;
|
virtual void lightmap_instance_set_transform(RID p_lightmap, const Transform3D &p_transform) override;
|
||||||
_FORCE_INLINE_ bool lightmap_instance_is_valid(RID p_lightmap_instance) {
|
_FORCE_INLINE_ bool lightmap_instance_is_valid(RID p_lightmap_instance) {
|
||||||
return lightmap_instance_owner.getornull(p_lightmap_instance) != nullptr;
|
return lightmap_instance_owner.get_or_null(p_lightmap_instance) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID lightmap_instance_get_lightmap(RID p_lightmap_instance) {
|
_FORCE_INLINE_ RID lightmap_instance_get_lightmap(RID p_lightmap_instance) {
|
||||||
LightmapInstance *li = lightmap_instance_owner.getornull(p_lightmap_instance);
|
LightmapInstance *li = lightmap_instance_owner.get_or_null(p_lightmap_instance);
|
||||||
return li->lightmap;
|
return li->lightmap;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ Transform3D lightmap_instance_get_transform(RID p_lightmap_instance) {
|
_FORCE_INLINE_ Transform3D lightmap_instance_get_transform(RID p_lightmap_instance) {
|
||||||
LightmapInstance *li = lightmap_instance_owner.getornull(p_lightmap_instance);
|
LightmapInstance *li = lightmap_instance_owner.get_or_null(p_lightmap_instance);
|
||||||
return li->transform;
|
return li->transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1772,7 +1772,7 @@ void RendererSceneSkyRD::initialize_sky_rid(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
RendererSceneSkyRD::Sky *RendererSceneSkyRD::get_sky(RID p_sky) const {
|
RendererSceneSkyRD::Sky *RendererSceneSkyRD::get_sky(RID p_sky) const {
|
||||||
return sky_owner.getornull(p_sky);
|
return sky_owner.get_or_null(p_sky);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneSkyRD::free_sky(RID p_sky) {
|
void RendererSceneSkyRD::free_sky(RID p_sky) {
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1350,7 +1350,7 @@ public:
|
||||||
if (p_texture.is_null()) {
|
if (p_texture.is_null()) {
|
||||||
return RID();
|
return RID();
|
||||||
}
|
}
|
||||||
Texture *tex = texture_owner.getornull(p_texture);
|
Texture *tex = texture_owner.get_or_null(p_texture);
|
||||||
|
|
||||||
if (!tex) {
|
if (!tex) {
|
||||||
return RID();
|
return RID();
|
||||||
|
@ -1362,7 +1362,7 @@ public:
|
||||||
if (p_texture.is_null()) {
|
if (p_texture.is_null()) {
|
||||||
return Size2i();
|
return Size2i();
|
||||||
}
|
}
|
||||||
Texture *tex = texture_owner.getornull(p_texture);
|
Texture *tex = texture_owner.get_or_null(p_texture);
|
||||||
|
|
||||||
if (!tex) {
|
if (!tex) {
|
||||||
return Size2i();
|
return Size2i();
|
||||||
|
@ -1430,12 +1430,12 @@ public:
|
||||||
void material_set_data_request_function(ShaderType p_shader_type, MaterialDataRequestFunction p_function);
|
void material_set_data_request_function(ShaderType p_shader_type, MaterialDataRequestFunction p_function);
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t material_get_shader_id(RID p_material) {
|
_FORCE_INLINE_ uint32_t material_get_shader_id(RID p_material) {
|
||||||
Material *material = material_owner.getornull(p_material);
|
Material *material = material_owner.get_or_null(p_material);
|
||||||
return material->shader_id;
|
return material->shader_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ MaterialData *material_get_data(RID p_material, ShaderType p_shader_type) {
|
_FORCE_INLINE_ MaterialData *material_get_data(RID p_material, ShaderType p_shader_type) {
|
||||||
Material *material = material_owner.getornull(p_material);
|
Material *material = material_owner.get_or_null(p_material);
|
||||||
if (!material || material->shader_type != p_shader_type) {
|
if (!material || material->shader_type != p_shader_type) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1488,7 +1488,7 @@ public:
|
||||||
virtual void update_mesh_instances();
|
virtual void update_mesh_instances();
|
||||||
|
|
||||||
_FORCE_INLINE_ const RID *mesh_get_surface_count_and_materials(RID p_mesh, uint32_t &r_surface_count) {
|
_FORCE_INLINE_ const RID *mesh_get_surface_count_and_materials(RID p_mesh, uint32_t &r_surface_count) {
|
||||||
Mesh *mesh = mesh_owner.getornull(p_mesh);
|
Mesh *mesh = mesh_owner.get_or_null(p_mesh);
|
||||||
ERR_FAIL_COND_V(!mesh, nullptr);
|
ERR_FAIL_COND_V(!mesh, nullptr);
|
||||||
r_surface_count = mesh->surface_count;
|
r_surface_count = mesh->surface_count;
|
||||||
if (r_surface_count == 0) {
|
if (r_surface_count == 0) {
|
||||||
|
@ -1505,7 +1505,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ void *mesh_get_surface(RID p_mesh, uint32_t p_surface_index) {
|
_FORCE_INLINE_ void *mesh_get_surface(RID p_mesh, uint32_t p_surface_index) {
|
||||||
Mesh *mesh = mesh_owner.getornull(p_mesh);
|
Mesh *mesh = mesh_owner.get_or_null(p_mesh);
|
||||||
ERR_FAIL_COND_V(!mesh, nullptr);
|
ERR_FAIL_COND_V(!mesh, nullptr);
|
||||||
ERR_FAIL_UNSIGNED_INDEX_V(p_surface_index, mesh->surface_count, nullptr);
|
ERR_FAIL_UNSIGNED_INDEX_V(p_surface_index, mesh->surface_count, nullptr);
|
||||||
|
|
||||||
|
@ -1513,7 +1513,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID mesh_get_shadow_mesh(RID p_mesh) {
|
_FORCE_INLINE_ RID mesh_get_shadow_mesh(RID p_mesh) {
|
||||||
Mesh *mesh = mesh_owner.getornull(p_mesh);
|
Mesh *mesh = mesh_owner.get_or_null(p_mesh);
|
||||||
ERR_FAIL_COND_V(!mesh, RID());
|
ERR_FAIL_COND_V(!mesh, RID());
|
||||||
|
|
||||||
return mesh->shadow_mesh;
|
return mesh->shadow_mesh;
|
||||||
|
@ -1599,7 +1599,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ void mesh_instance_surface_get_vertex_arrays_and_format(RID p_mesh_instance, uint32_t p_surface_index, uint32_t p_input_mask, RID &r_vertex_array_rd, RD::VertexFormatID &r_vertex_format) {
|
_FORCE_INLINE_ void mesh_instance_surface_get_vertex_arrays_and_format(RID p_mesh_instance, uint32_t p_surface_index, uint32_t p_input_mask, RID &r_vertex_array_rd, RD::VertexFormatID &r_vertex_format) {
|
||||||
MeshInstance *mi = mesh_instance_owner.getornull(p_mesh_instance);
|
MeshInstance *mi = mesh_instance_owner.get_or_null(p_mesh_instance);
|
||||||
ERR_FAIL_COND(!mi);
|
ERR_FAIL_COND(!mi);
|
||||||
Mesh *mesh = mi->mesh;
|
Mesh *mesh = mi->mesh;
|
||||||
ERR_FAIL_UNSIGNED_INDEX(p_surface_index, mesh->surface_count);
|
ERR_FAIL_UNSIGNED_INDEX(p_surface_index, mesh->surface_count);
|
||||||
|
@ -1640,7 +1640,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t mesh_surface_get_render_pass_index(RID p_mesh, uint32_t p_surface_index, uint64_t p_render_pass, uint32_t *r_index) {
|
_FORCE_INLINE_ uint32_t mesh_surface_get_render_pass_index(RID p_mesh, uint32_t p_surface_index, uint64_t p_render_pass, uint32_t *r_index) {
|
||||||
Mesh *mesh = mesh_owner.getornull(p_mesh);
|
Mesh *mesh = mesh_owner.get_or_null(p_mesh);
|
||||||
Mesh::Surface *s = mesh->surfaces[p_surface_index];
|
Mesh::Surface *s = mesh->surfaces[p_surface_index];
|
||||||
|
|
||||||
if (s->render_pass != p_render_pass) {
|
if (s->render_pass != p_render_pass) {
|
||||||
|
@ -1653,7 +1653,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t mesh_surface_get_multimesh_render_pass_index(RID p_mesh, uint32_t p_surface_index, uint64_t p_render_pass, uint32_t *r_index) {
|
_FORCE_INLINE_ uint32_t mesh_surface_get_multimesh_render_pass_index(RID p_mesh, uint32_t p_surface_index, uint64_t p_render_pass, uint32_t *r_index) {
|
||||||
Mesh *mesh = mesh_owner.getornull(p_mesh);
|
Mesh *mesh = mesh_owner.get_or_null(p_mesh);
|
||||||
Mesh::Surface *s = mesh->surfaces[p_surface_index];
|
Mesh::Surface *s = mesh->surfaces[p_surface_index];
|
||||||
|
|
||||||
if (s->multimesh_render_pass != p_render_pass) {
|
if (s->multimesh_render_pass != p_render_pass) {
|
||||||
|
@ -1666,7 +1666,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t mesh_surface_get_particles_render_pass_index(RID p_mesh, uint32_t p_surface_index, uint64_t p_render_pass, uint32_t *r_index) {
|
_FORCE_INLINE_ uint32_t mesh_surface_get_particles_render_pass_index(RID p_mesh, uint32_t p_surface_index, uint64_t p_render_pass, uint32_t *r_index) {
|
||||||
Mesh *mesh = mesh_owner.getornull(p_mesh);
|
Mesh *mesh = mesh_owner.get_or_null(p_mesh);
|
||||||
Mesh::Surface *s = mesh->surfaces[p_surface_index];
|
Mesh::Surface *s = mesh->surfaces[p_surface_index];
|
||||||
|
|
||||||
if (s->particles_render_pass != p_render_pass) {
|
if (s->particles_render_pass != p_render_pass) {
|
||||||
|
@ -1708,22 +1708,22 @@ public:
|
||||||
AABB multimesh_get_aabb(RID p_multimesh) const;
|
AABB multimesh_get_aabb(RID p_multimesh) const;
|
||||||
|
|
||||||
_FORCE_INLINE_ RS::MultimeshTransformFormat multimesh_get_transform_format(RID p_multimesh) const {
|
_FORCE_INLINE_ RS::MultimeshTransformFormat multimesh_get_transform_format(RID p_multimesh) const {
|
||||||
MultiMesh *multimesh = multimesh_owner.getornull(p_multimesh);
|
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
|
||||||
return multimesh->xform_format;
|
return multimesh->xform_format;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool multimesh_uses_colors(RID p_multimesh) const {
|
_FORCE_INLINE_ bool multimesh_uses_colors(RID p_multimesh) const {
|
||||||
MultiMesh *multimesh = multimesh_owner.getornull(p_multimesh);
|
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
|
||||||
return multimesh->uses_colors;
|
return multimesh->uses_colors;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool multimesh_uses_custom_data(RID p_multimesh) const {
|
_FORCE_INLINE_ bool multimesh_uses_custom_data(RID p_multimesh) const {
|
||||||
MultiMesh *multimesh = multimesh_owner.getornull(p_multimesh);
|
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
|
||||||
return multimesh->uses_custom_data;
|
return multimesh->uses_custom_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t multimesh_get_instances_to_draw(RID p_multimesh) const {
|
_FORCE_INLINE_ uint32_t multimesh_get_instances_to_draw(RID p_multimesh) const {
|
||||||
MultiMesh *multimesh = multimesh_owner.getornull(p_multimesh);
|
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
|
||||||
if (multimesh->visible_instances >= 0) {
|
if (multimesh->visible_instances >= 0) {
|
||||||
return multimesh->visible_instances;
|
return multimesh->visible_instances;
|
||||||
}
|
}
|
||||||
|
@ -1731,7 +1731,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID multimesh_get_3d_uniform_set(RID p_multimesh, RID p_shader, uint32_t p_set) const {
|
_FORCE_INLINE_ RID multimesh_get_3d_uniform_set(RID p_multimesh, RID p_shader, uint32_t p_set) const {
|
||||||
MultiMesh *multimesh = multimesh_owner.getornull(p_multimesh);
|
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
|
||||||
if (!multimesh->uniform_set_3d.is_valid()) {
|
if (!multimesh->uniform_set_3d.is_valid()) {
|
||||||
Vector<RD::Uniform> uniforms;
|
Vector<RD::Uniform> uniforms;
|
||||||
RD::Uniform u;
|
RD::Uniform u;
|
||||||
|
@ -1746,7 +1746,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID multimesh_get_2d_uniform_set(RID p_multimesh, RID p_shader, uint32_t p_set) const {
|
_FORCE_INLINE_ RID multimesh_get_2d_uniform_set(RID p_multimesh, RID p_shader, uint32_t p_set) const {
|
||||||
MultiMesh *multimesh = multimesh_owner.getornull(p_multimesh);
|
MultiMesh *multimesh = multimesh_owner.get_or_null(p_multimesh);
|
||||||
if (!multimesh->uniform_set_2d.is_valid()) {
|
if (!multimesh->uniform_set_2d.is_valid()) {
|
||||||
Vector<RD::Uniform> uniforms;
|
Vector<RD::Uniform> uniforms;
|
||||||
RD::Uniform u;
|
RD::Uniform u;
|
||||||
|
@ -1775,11 +1775,11 @@ public:
|
||||||
Transform2D skeleton_bone_get_transform_2d(RID p_skeleton, int p_bone) const;
|
Transform2D skeleton_bone_get_transform_2d(RID p_skeleton, int p_bone) const;
|
||||||
|
|
||||||
_FORCE_INLINE_ bool skeleton_is_valid(RID p_skeleton) {
|
_FORCE_INLINE_ bool skeleton_is_valid(RID p_skeleton) {
|
||||||
return skeleton_owner.getornull(p_skeleton) != nullptr;
|
return skeleton_owner.get_or_null(p_skeleton) != nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID skeleton_get_3d_uniform_set(RID p_skeleton, RID p_shader, uint32_t p_set) const {
|
_FORCE_INLINE_ RID skeleton_get_3d_uniform_set(RID p_skeleton, RID p_shader, uint32_t p_set) const {
|
||||||
Skeleton *skeleton = skeleton_owner.getornull(p_skeleton);
|
Skeleton *skeleton = skeleton_owner.get_or_null(p_skeleton);
|
||||||
ERR_FAIL_COND_V(!skeleton, RID());
|
ERR_FAIL_COND_V(!skeleton, RID());
|
||||||
ERR_FAIL_COND_V(skeleton->size == 0, RID());
|
ERR_FAIL_COND_V(skeleton->size == 0, RID());
|
||||||
if (skeleton->use_2d) {
|
if (skeleton->use_2d) {
|
||||||
|
@ -1833,7 +1833,7 @@ public:
|
||||||
RS::LightOmniShadowMode light_omni_get_shadow_mode(RID p_light);
|
RS::LightOmniShadowMode light_omni_get_shadow_mode(RID p_light);
|
||||||
|
|
||||||
_FORCE_INLINE_ RS::LightType light_get_type(RID p_light) const {
|
_FORCE_INLINE_ RS::LightType light_get_type(RID p_light) const {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
||||||
|
|
||||||
return light->type;
|
return light->type;
|
||||||
|
@ -1841,70 +1841,70 @@ public:
|
||||||
AABB light_get_aabb(RID p_light) const;
|
AABB light_get_aabb(RID p_light) const;
|
||||||
|
|
||||||
_FORCE_INLINE_ float light_get_param(RID p_light, RS::LightParam p_param) {
|
_FORCE_INLINE_ float light_get_param(RID p_light, RS::LightParam p_param) {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, 0);
|
ERR_FAIL_COND_V(!light, 0);
|
||||||
|
|
||||||
return light->param[p_param];
|
return light->param[p_param];
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID light_get_projector(RID p_light) {
|
_FORCE_INLINE_ RID light_get_projector(RID p_light) {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, RID());
|
ERR_FAIL_COND_V(!light, RID());
|
||||||
|
|
||||||
return light->projector;
|
return light->projector;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Color light_get_color(RID p_light) {
|
_FORCE_INLINE_ Color light_get_color(RID p_light) {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, Color());
|
ERR_FAIL_COND_V(!light, Color());
|
||||||
|
|
||||||
return light->color;
|
return light->color;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Color light_get_shadow_color(RID p_light) {
|
_FORCE_INLINE_ Color light_get_shadow_color(RID p_light) {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, Color());
|
ERR_FAIL_COND_V(!light, Color());
|
||||||
|
|
||||||
return light->shadow_color;
|
return light->shadow_color;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t light_get_cull_mask(RID p_light) {
|
_FORCE_INLINE_ uint32_t light_get_cull_mask(RID p_light) {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, 0);
|
ERR_FAIL_COND_V(!light, 0);
|
||||||
|
|
||||||
return light->cull_mask;
|
return light->cull_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool light_has_shadow(RID p_light) const {
|
_FORCE_INLINE_ bool light_has_shadow(RID p_light) const {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
||||||
|
|
||||||
return light->shadow;
|
return light->shadow;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool light_has_projector(RID p_light) const {
|
_FORCE_INLINE_ bool light_has_projector(RID p_light) const {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
||||||
|
|
||||||
return texture_owner.owns(light->projector);
|
return texture_owner.owns(light->projector);
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool light_is_negative(RID p_light) const {
|
_FORCE_INLINE_ bool light_is_negative(RID p_light) const {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
ERR_FAIL_COND_V(!light, RS::LIGHT_DIRECTIONAL);
|
||||||
|
|
||||||
return light->negative;
|
return light->negative;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float light_get_transmittance_bias(RID p_light) const {
|
_FORCE_INLINE_ float light_get_transmittance_bias(RID p_light) const {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, 0.0);
|
ERR_FAIL_COND_V(!light, 0.0);
|
||||||
|
|
||||||
return light->param[RS::LIGHT_PARAM_TRANSMITTANCE_BIAS];
|
return light->param[RS::LIGHT_PARAM_TRANSMITTANCE_BIAS];
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float light_get_shadow_volumetric_fog_fade(RID p_light) const {
|
_FORCE_INLINE_ float light_get_shadow_volumetric_fog_fade(RID p_light) const {
|
||||||
const Light *light = light_owner.getornull(p_light);
|
const Light *light = light_owner.get_or_null(p_light);
|
||||||
ERR_FAIL_COND_V(!light, 0.0);
|
ERR_FAIL_COND_V(!light, 0.0);
|
||||||
|
|
||||||
return light->param[RS::LIGHT_PARAM_SHADOW_VOLUMETRIC_FOG_FADE];
|
return light->param[RS::LIGHT_PARAM_SHADOW_VOLUMETRIC_FOG_FADE];
|
||||||
|
@ -1971,62 +1971,62 @@ public:
|
||||||
virtual void decal_set_normal_fade(RID p_decal, float p_fade);
|
virtual void decal_set_normal_fade(RID p_decal, float p_fade);
|
||||||
|
|
||||||
_FORCE_INLINE_ Vector3 decal_get_extents(RID p_decal) {
|
_FORCE_INLINE_ Vector3 decal_get_extents(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->extents;
|
return decal->extents;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID decal_get_texture(RID p_decal, RS::DecalTexture p_texture) {
|
_FORCE_INLINE_ RID decal_get_texture(RID p_decal, RS::DecalTexture p_texture) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->textures[p_texture];
|
return decal->textures[p_texture];
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ Color decal_get_modulate(RID p_decal) {
|
_FORCE_INLINE_ Color decal_get_modulate(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->modulate;
|
return decal->modulate;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_emission_energy(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_emission_energy(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->emission_energy;
|
return decal->emission_energy;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_albedo_mix(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_albedo_mix(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->albedo_mix;
|
return decal->albedo_mix;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t decal_get_cull_mask(RID p_decal) {
|
_FORCE_INLINE_ uint32_t decal_get_cull_mask(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->cull_mask;
|
return decal->cull_mask;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_upper_fade(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_upper_fade(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->upper_fade;
|
return decal->upper_fade;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_lower_fade(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_lower_fade(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->lower_fade;
|
return decal->lower_fade;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_normal_fade(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_normal_fade(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->normal_fade;
|
return decal->normal_fade;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool decal_is_distance_fade_enabled(RID p_decal) {
|
_FORCE_INLINE_ bool decal_is_distance_fade_enabled(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->distance_fade;
|
return decal->distance_fade;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_distance_fade_begin(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_distance_fade_begin(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->distance_fade_begin;
|
return decal->distance_fade_begin;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ float decal_get_distance_fade_length(RID p_decal) {
|
_FORCE_INLINE_ float decal_get_distance_fade_length(RID p_decal) {
|
||||||
const Decal *decal = decal_owner.getornull(p_decal);
|
const Decal *decal = decal_owner.get_or_null(p_decal);
|
||||||
return decal->distance_fade_length;
|
return decal->distance_fade_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2101,18 +2101,18 @@ public:
|
||||||
return lightmap_probe_capture_update_speed;
|
return lightmap_probe_capture_update_speed;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ RID lightmap_get_texture(RID p_lightmap) const {
|
_FORCE_INLINE_ RID lightmap_get_texture(RID p_lightmap) const {
|
||||||
const Lightmap *lm = lightmap_owner.getornull(p_lightmap);
|
const Lightmap *lm = lightmap_owner.get_or_null(p_lightmap);
|
||||||
ERR_FAIL_COND_V(!lm, RID());
|
ERR_FAIL_COND_V(!lm, RID());
|
||||||
return lm->light_texture;
|
return lm->light_texture;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ int32_t lightmap_get_array_index(RID p_lightmap) const {
|
_FORCE_INLINE_ int32_t lightmap_get_array_index(RID p_lightmap) const {
|
||||||
ERR_FAIL_COND_V(!using_lightmap_array, -1); //only for arrays
|
ERR_FAIL_COND_V(!using_lightmap_array, -1); //only for arrays
|
||||||
const Lightmap *lm = lightmap_owner.getornull(p_lightmap);
|
const Lightmap *lm = lightmap_owner.get_or_null(p_lightmap);
|
||||||
return lm->array_index;
|
return lm->array_index;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ bool lightmap_uses_spherical_harmonics(RID p_lightmap) const {
|
_FORCE_INLINE_ bool lightmap_uses_spherical_harmonics(RID p_lightmap) const {
|
||||||
ERR_FAIL_COND_V(!using_lightmap_array, false); //only for arrays
|
ERR_FAIL_COND_V(!using_lightmap_array, false); //only for arrays
|
||||||
const Lightmap *lm = lightmap_owner.getornull(p_lightmap);
|
const Lightmap *lm = lightmap_owner.get_or_null(p_lightmap);
|
||||||
return lm->uses_spherical_harmonics;
|
return lm->uses_spherical_harmonics;
|
||||||
}
|
}
|
||||||
_FORCE_INLINE_ uint64_t lightmap_array_get_version() const {
|
_FORCE_INLINE_ uint64_t lightmap_array_get_version() const {
|
||||||
|
@ -2181,13 +2181,13 @@ public:
|
||||||
virtual bool particles_is_inactive(RID p_particles) const;
|
virtual bool particles_is_inactive(RID p_particles) const;
|
||||||
|
|
||||||
_FORCE_INLINE_ RS::ParticlesMode particles_get_mode(RID p_particles) {
|
_FORCE_INLINE_ RS::ParticlesMode particles_get_mode(RID p_particles) {
|
||||||
Particles *particles = particles_owner.getornull(p_particles);
|
Particles *particles = particles_owner.get_or_null(p_particles);
|
||||||
ERR_FAIL_COND_V(!particles, RS::PARTICLES_MODE_2D);
|
ERR_FAIL_COND_V(!particles, RS::PARTICLES_MODE_2D);
|
||||||
return particles->mode;
|
return particles->mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t particles_get_amount(RID p_particles, uint32_t &r_trail_divisor) {
|
_FORCE_INLINE_ uint32_t particles_get_amount(RID p_particles, uint32_t &r_trail_divisor) {
|
||||||
Particles *particles = particles_owner.getornull(p_particles);
|
Particles *particles = particles_owner.get_or_null(p_particles);
|
||||||
ERR_FAIL_COND_V(!particles, 0);
|
ERR_FAIL_COND_V(!particles, 0);
|
||||||
|
|
||||||
if (particles->trails_enabled && particles->trail_bind_poses.size() > 1) {
|
if (particles->trails_enabled && particles->trail_bind_poses.size() > 1) {
|
||||||
|
@ -2200,21 +2200,21 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ bool particles_has_collision(RID p_particles) {
|
_FORCE_INLINE_ bool particles_has_collision(RID p_particles) {
|
||||||
Particles *particles = particles_owner.getornull(p_particles);
|
Particles *particles = particles_owner.get_or_null(p_particles);
|
||||||
ERR_FAIL_COND_V(!particles, 0);
|
ERR_FAIL_COND_V(!particles, 0);
|
||||||
|
|
||||||
return particles->has_collision_cache;
|
return particles->has_collision_cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ uint32_t particles_is_using_local_coords(RID p_particles) {
|
_FORCE_INLINE_ uint32_t particles_is_using_local_coords(RID p_particles) {
|
||||||
Particles *particles = particles_owner.getornull(p_particles);
|
Particles *particles = particles_owner.get_or_null(p_particles);
|
||||||
ERR_FAIL_COND_V(!particles, false);
|
ERR_FAIL_COND_V(!particles, false);
|
||||||
|
|
||||||
return particles->use_local_coords;
|
return particles->use_local_coords;
|
||||||
}
|
}
|
||||||
|
|
||||||
_FORCE_INLINE_ RID particles_get_instance_buffer_uniform_set(RID p_particles, RID p_shader, uint32_t p_set) {
|
_FORCE_INLINE_ RID particles_get_instance_buffer_uniform_set(RID p_particles, RID p_shader, uint32_t p_set) {
|
||||||
Particles *particles = particles_owner.getornull(p_particles);
|
Particles *particles = particles_owner.get_or_null(p_particles);
|
||||||
ERR_FAIL_COND_V(!particles, RID());
|
ERR_FAIL_COND_V(!particles, RID());
|
||||||
if (particles->particles_transforms_buffer_uniform_set.is_null()) {
|
if (particles->particles_transforms_buffer_uniform_set.is_null()) {
|
||||||
_particles_update_buffers(particles);
|
_particles_update_buffers(particles);
|
||||||
|
|
|
@ -292,7 +292,7 @@ void ShaderRD::_compile_variant(uint32_t p_variant, Version *p_version) {
|
||||||
}
|
}
|
||||||
|
|
||||||
RS::ShaderNativeSourceCode ShaderRD::version_get_native_source_code(RID p_version) {
|
RS::ShaderNativeSourceCode ShaderRD::version_get_native_source_code(RID p_version) {
|
||||||
Version *version = version_owner.getornull(p_version);
|
Version *version = version_owner.get_or_null(p_version);
|
||||||
RS::ShaderNativeSourceCode source_code;
|
RS::ShaderNativeSourceCode source_code;
|
||||||
ERR_FAIL_COND_V(!version, source_code);
|
ERR_FAIL_COND_V(!version, source_code);
|
||||||
|
|
||||||
|
@ -524,7 +524,7 @@ void ShaderRD::_compile_version(Version *p_version) {
|
||||||
void ShaderRD::version_set_code(RID p_version, const Map<String, String> &p_code, const String &p_uniforms, const String &p_vertex_globals, const String &p_fragment_globals, const Vector<String> &p_custom_defines) {
|
void ShaderRD::version_set_code(RID p_version, const Map<String, String> &p_code, const String &p_uniforms, const String &p_vertex_globals, const String &p_fragment_globals, const Vector<String> &p_custom_defines) {
|
||||||
ERR_FAIL_COND(is_compute);
|
ERR_FAIL_COND(is_compute);
|
||||||
|
|
||||||
Version *version = version_owner.getornull(p_version);
|
Version *version = version_owner.get_or_null(p_version);
|
||||||
ERR_FAIL_COND(!version);
|
ERR_FAIL_COND(!version);
|
||||||
version->vertex_globals = p_vertex_globals.utf8();
|
version->vertex_globals = p_vertex_globals.utf8();
|
||||||
version->fragment_globals = p_fragment_globals.utf8();
|
version->fragment_globals = p_fragment_globals.utf8();
|
||||||
|
@ -549,7 +549,7 @@ void ShaderRD::version_set_code(RID p_version, const Map<String, String> &p_code
|
||||||
void ShaderRD::version_set_compute_code(RID p_version, const Map<String, String> &p_code, const String &p_uniforms, const String &p_compute_globals, const Vector<String> &p_custom_defines) {
|
void ShaderRD::version_set_compute_code(RID p_version, const Map<String, String> &p_code, const String &p_uniforms, const String &p_compute_globals, const Vector<String> &p_custom_defines) {
|
||||||
ERR_FAIL_COND(!is_compute);
|
ERR_FAIL_COND(!is_compute);
|
||||||
|
|
||||||
Version *version = version_owner.getornull(p_version);
|
Version *version = version_owner.get_or_null(p_version);
|
||||||
ERR_FAIL_COND(!version);
|
ERR_FAIL_COND(!version);
|
||||||
|
|
||||||
version->compute_globals = p_compute_globals.utf8();
|
version->compute_globals = p_compute_globals.utf8();
|
||||||
|
@ -573,7 +573,7 @@ void ShaderRD::version_set_compute_code(RID p_version, const Map<String, String>
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ShaderRD::version_is_valid(RID p_version) {
|
bool ShaderRD::version_is_valid(RID p_version) {
|
||||||
Version *version = version_owner.getornull(p_version);
|
Version *version = version_owner.get_or_null(p_version);
|
||||||
ERR_FAIL_COND_V(!version, false);
|
ERR_FAIL_COND_V(!version, false);
|
||||||
|
|
||||||
if (version->dirty) {
|
if (version->dirty) {
|
||||||
|
@ -585,7 +585,7 @@ bool ShaderRD::version_is_valid(RID p_version) {
|
||||||
|
|
||||||
bool ShaderRD::version_free(RID p_version) {
|
bool ShaderRD::version_free(RID p_version) {
|
||||||
if (version_owner.owns(p_version)) {
|
if (version_owner.owns(p_version)) {
|
||||||
Version *version = version_owner.getornull(p_version);
|
Version *version = version_owner.get_or_null(p_version);
|
||||||
_clear_version(version);
|
_clear_version(version);
|
||||||
version_owner.free(p_version);
|
version_owner.free(p_version);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -141,7 +141,7 @@ public:
|
||||||
ERR_FAIL_INDEX_V(p_variant, variant_defines.size(), RID());
|
ERR_FAIL_INDEX_V(p_variant, variant_defines.size(), RID());
|
||||||
ERR_FAIL_COND_V(!variants_enabled[p_variant], RID());
|
ERR_FAIL_COND_V(!variants_enabled[p_variant], RID());
|
||||||
|
|
||||||
Version *version = version_owner.getornull(p_version);
|
Version *version = version_owner.get_or_null(p_version);
|
||||||
ERR_FAIL_COND_V(!version, RID());
|
ERR_FAIL_COND_V(!version, RID());
|
||||||
|
|
||||||
if (version->dirty) {
|
if (version->dirty) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ void RendererSceneCull::camera_initialize(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_perspective(RID p_camera, float p_fovy_degrees, float p_z_near, float p_z_far) {
|
void RendererSceneCull::camera_set_perspective(RID p_camera, float p_fovy_degrees, float p_z_near, float p_z_far) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->type = Camera::PERSPECTIVE;
|
camera->type = Camera::PERSPECTIVE;
|
||||||
camera->fov = p_fovy_degrees;
|
camera->fov = p_fovy_degrees;
|
||||||
|
@ -56,7 +56,7 @@ void RendererSceneCull::camera_set_perspective(RID p_camera, float p_fovy_degree
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_orthogonal(RID p_camera, float p_size, float p_z_near, float p_z_far) {
|
void RendererSceneCull::camera_set_orthogonal(RID p_camera, float p_size, float p_z_near, float p_z_far) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->type = Camera::ORTHOGONAL;
|
camera->type = Camera::ORTHOGONAL;
|
||||||
camera->size = p_size;
|
camera->size = p_size;
|
||||||
|
@ -65,7 +65,7 @@ void RendererSceneCull::camera_set_orthogonal(RID p_camera, float p_size, float
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_frustum(RID p_camera, float p_size, Vector2 p_offset, float p_z_near, float p_z_far) {
|
void RendererSceneCull::camera_set_frustum(RID p_camera, float p_size, Vector2 p_offset, float p_z_near, float p_z_far) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->type = Camera::FRUSTUM;
|
camera->type = Camera::FRUSTUM;
|
||||||
camera->size = p_size;
|
camera->size = p_size;
|
||||||
|
@ -75,32 +75,32 @@ void RendererSceneCull::camera_set_frustum(RID p_camera, float p_size, Vector2 p
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_transform(RID p_camera, const Transform3D &p_transform) {
|
void RendererSceneCull::camera_set_transform(RID p_camera, const Transform3D &p_transform) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->transform = p_transform.orthonormalized();
|
camera->transform = p_transform.orthonormalized();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_cull_mask(RID p_camera, uint32_t p_layers) {
|
void RendererSceneCull::camera_set_cull_mask(RID p_camera, uint32_t p_layers) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
|
|
||||||
camera->visible_layers = p_layers;
|
camera->visible_layers = p_layers;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_environment(RID p_camera, RID p_env) {
|
void RendererSceneCull::camera_set_environment(RID p_camera, RID p_env) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->env = p_env;
|
camera->env = p_env;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_camera_effects(RID p_camera, RID p_fx) {
|
void RendererSceneCull::camera_set_camera_effects(RID p_camera, RID p_fx) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->effects = p_fx;
|
camera->effects = p_fx;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::camera_set_use_vertical_aspect(RID p_camera, bool p_enable) {
|
void RendererSceneCull::camera_set_use_vertical_aspect(RID p_camera, bool p_enable) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
camera->vaspect = p_enable;
|
camera->vaspect = p_enable;
|
||||||
}
|
}
|
||||||
|
@ -354,7 +354,7 @@ RID RendererSceneCull::scenario_allocate() {
|
||||||
void RendererSceneCull::scenario_initialize(RID p_rid) {
|
void RendererSceneCull::scenario_initialize(RID p_rid) {
|
||||||
scenario_owner.initialize_rid(p_rid);
|
scenario_owner.initialize_rid(p_rid);
|
||||||
|
|
||||||
Scenario *scenario = scenario_owner.getornull(p_rid);
|
Scenario *scenario = scenario_owner.get_or_null(p_rid);
|
||||||
scenario->self = p_rid;
|
scenario->self = p_rid;
|
||||||
|
|
||||||
scenario->reflection_probe_shadow_atlas = scene_render->shadow_atlas_create();
|
scenario->reflection_probe_shadow_atlas = scene_render->shadow_atlas_create();
|
||||||
|
@ -373,25 +373,25 @@ void RendererSceneCull::scenario_initialize(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::scenario_set_environment(RID p_scenario, RID p_environment) {
|
void RendererSceneCull::scenario_set_environment(RID p_scenario, RID p_environment) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
scenario->environment = p_environment;
|
scenario->environment = p_environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::scenario_set_camera_effects(RID p_scenario, RID p_camera_effects) {
|
void RendererSceneCull::scenario_set_camera_effects(RID p_scenario, RID p_camera_effects) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
scenario->camera_effects = p_camera_effects;
|
scenario->camera_effects = p_camera_effects;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::scenario_set_fallback_environment(RID p_scenario, RID p_environment) {
|
void RendererSceneCull::scenario_set_fallback_environment(RID p_scenario, RID p_environment) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
scenario->fallback_environment = p_environment;
|
scenario->fallback_environment = p_environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::scenario_set_reflection_atlas_size(RID p_scenario, int p_reflection_size, int p_reflection_count) {
|
void RendererSceneCull::scenario_set_reflection_atlas_size(RID p_scenario, int p_reflection_size, int p_reflection_count) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
scene_render->reflection_atlas_set_size(scenario->reflection_atlas, p_reflection_size, p_reflection_count);
|
scene_render->reflection_atlas_set_size(scenario->reflection_atlas, p_reflection_size, p_reflection_count);
|
||||||
}
|
}
|
||||||
|
@ -401,13 +401,13 @@ bool RendererSceneCull::is_scenario(RID p_scenario) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
RID RendererSceneCull::scenario_get_environment(RID p_scenario) {
|
RID RendererSceneCull::scenario_get_environment(RID p_scenario) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND_V(!scenario, RID());
|
ERR_FAIL_COND_V(!scenario, RID());
|
||||||
return scenario->environment;
|
return scenario->environment;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::scenario_remove_viewport_visibility_mask(RID p_scenario, RID p_viewport) {
|
void RendererSceneCull::scenario_remove_viewport_visibility_mask(RID p_scenario, RID p_viewport) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
if (!scenario->viewport_visibility_masks.has(p_viewport)) {
|
if (!scenario->viewport_visibility_masks.has(p_viewport)) {
|
||||||
return;
|
return;
|
||||||
|
@ -419,7 +419,7 @@ void RendererSceneCull::scenario_remove_viewport_visibility_mask(RID p_scenario,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::scenario_add_viewport_visibility_mask(RID p_scenario, RID p_viewport) {
|
void RendererSceneCull::scenario_add_viewport_visibility_mask(RID p_scenario, RID p_viewport) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
ERR_FAIL_COND(scenario->viewport_visibility_masks.has(p_viewport));
|
ERR_FAIL_COND(scenario->viewport_visibility_masks.has(p_viewport));
|
||||||
|
|
||||||
|
@ -459,7 +459,7 @@ RID RendererSceneCull::instance_allocate() {
|
||||||
}
|
}
|
||||||
void RendererSceneCull::instance_initialize(RID p_rid) {
|
void RendererSceneCull::instance_initialize(RID p_rid) {
|
||||||
instance_owner.initialize_rid(p_rid);
|
instance_owner.initialize_rid(p_rid);
|
||||||
Instance *instance = instance_owner.getornull(p_rid);
|
Instance *instance = instance_owner.get_or_null(p_rid);
|
||||||
instance->self = p_rid;
|
instance->self = p_rid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -493,7 +493,7 @@ void RendererSceneCull::_instance_update_mesh_instance(Instance *p_instance) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_base(RID p_instance, RID p_base) {
|
void RendererSceneCull::instance_set_base(RID p_instance, RID p_base) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
Scenario *scenario = instance->scenario;
|
Scenario *scenario = instance->scenario;
|
||||||
|
@ -710,7 +710,7 @@ void RendererSceneCull::instance_set_base(RID p_instance, RID p_base) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_scenario(RID p_instance, RID p_scenario) {
|
void RendererSceneCull::instance_set_scenario(RID p_instance, RID p_scenario) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->scenario) {
|
if (instance->scenario) {
|
||||||
|
@ -772,7 +772,7 @@ void RendererSceneCull::instance_set_scenario(RID p_instance, RID p_scenario) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (p_scenario.is_valid()) {
|
if (p_scenario.is_valid()) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND(!scenario);
|
ERR_FAIL_COND(!scenario);
|
||||||
|
|
||||||
instance->scenario = scenario;
|
instance->scenario = scenario;
|
||||||
|
@ -805,7 +805,7 @@ void RendererSceneCull::instance_set_scenario(RID p_instance, RID p_scenario) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_layer_mask(RID p_instance, uint32_t p_mask) {
|
void RendererSceneCull::instance_set_layer_mask(RID p_instance, uint32_t p_mask) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->layer_mask = p_mask;
|
instance->layer_mask = p_mask;
|
||||||
|
@ -820,7 +820,7 @@ void RendererSceneCull::instance_set_layer_mask(RID p_instance, uint32_t p_mask)
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_transform(RID p_instance, const Transform3D &p_transform) {
|
void RendererSceneCull::instance_set_transform(RID p_instance, const Transform3D &p_transform) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->transform == p_transform) {
|
if (instance->transform == p_transform) {
|
||||||
|
@ -845,14 +845,14 @@ void RendererSceneCull::instance_set_transform(RID p_instance, const Transform3D
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_attach_object_instance_id(RID p_instance, ObjectID p_id) {
|
void RendererSceneCull::instance_attach_object_instance_id(RID p_instance, ObjectID p_id) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->object_id = p_id;
|
instance->object_id = p_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_blend_shape_weight(RID p_instance, int p_shape, float p_weight) {
|
void RendererSceneCull::instance_set_blend_shape_weight(RID p_instance, int p_shape, float p_weight) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->update_item.in_list()) {
|
if (instance->update_item.in_list()) {
|
||||||
|
@ -865,7 +865,7 @@ void RendererSceneCull::instance_set_blend_shape_weight(RID p_instance, int p_sh
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_surface_override_material(RID p_instance, int p_surface, RID p_material) {
|
void RendererSceneCull::instance_set_surface_override_material(RID p_instance, int p_surface, RID p_material) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->base_type == RS::INSTANCE_MESH) {
|
if (instance->base_type == RS::INSTANCE_MESH) {
|
||||||
|
@ -881,7 +881,7 @@ void RendererSceneCull::instance_set_surface_override_material(RID p_instance, i
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_visible(RID p_instance, bool p_visible) {
|
void RendererSceneCull::instance_set_visible(RID p_instance, bool p_visible) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->visible == p_visible) {
|
if (instance->visible == p_visible) {
|
||||||
|
@ -926,7 +926,7 @@ inline bool is_geometry_instance(RenderingServer::InstanceType p_type) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_custom_aabb(RID p_instance, AABB p_aabb) {
|
void RendererSceneCull::instance_set_custom_aabb(RID p_instance, AABB p_aabb) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
ERR_FAIL_COND(!is_geometry_instance(instance->base_type));
|
ERR_FAIL_COND(!is_geometry_instance(instance->base_type));
|
||||||
|
|
||||||
|
@ -951,7 +951,7 @@ void RendererSceneCull::instance_set_custom_aabb(RID p_instance, AABB p_aabb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_attach_skeleton(RID p_instance, RID p_skeleton) {
|
void RendererSceneCull::instance_attach_skeleton(RID p_instance, RID p_skeleton) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->skeleton == p_skeleton) {
|
if (instance->skeleton == p_skeleton) {
|
||||||
|
@ -976,7 +976,7 @@ void RendererSceneCull::instance_attach_skeleton(RID p_instance, RID p_skeleton)
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_extra_visibility_margin(RID p_instance, real_t p_margin) {
|
void RendererSceneCull::instance_set_extra_visibility_margin(RID p_instance, real_t p_margin) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->extra_margin = p_margin;
|
instance->extra_margin = p_margin;
|
||||||
|
@ -985,7 +985,7 @@ void RendererSceneCull::instance_set_extra_visibility_margin(RID p_instance, rea
|
||||||
|
|
||||||
Vector<ObjectID> RendererSceneCull::instances_cull_aabb(const AABB &p_aabb, RID p_scenario) const {
|
Vector<ObjectID> RendererSceneCull::instances_cull_aabb(const AABB &p_aabb, RID p_scenario) const {
|
||||||
Vector<ObjectID> instances;
|
Vector<ObjectID> instances;
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND_V(!scenario, instances);
|
ERR_FAIL_COND_V(!scenario, instances);
|
||||||
|
|
||||||
const_cast<RendererSceneCull *>(this)->update_dirty_instances(); // check dirty instances before culling
|
const_cast<RendererSceneCull *>(this)->update_dirty_instances(); // check dirty instances before culling
|
||||||
|
@ -1009,7 +1009,7 @@ Vector<ObjectID> RendererSceneCull::instances_cull_aabb(const AABB &p_aabb, RID
|
||||||
|
|
||||||
Vector<ObjectID> RendererSceneCull::instances_cull_ray(const Vector3 &p_from, const Vector3 &p_to, RID p_scenario) const {
|
Vector<ObjectID> RendererSceneCull::instances_cull_ray(const Vector3 &p_from, const Vector3 &p_to, RID p_scenario) const {
|
||||||
Vector<ObjectID> instances;
|
Vector<ObjectID> instances;
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND_V(!scenario, instances);
|
ERR_FAIL_COND_V(!scenario, instances);
|
||||||
const_cast<RendererSceneCull *>(this)->update_dirty_instances(); // check dirty instances before culling
|
const_cast<RendererSceneCull *>(this)->update_dirty_instances(); // check dirty instances before culling
|
||||||
|
|
||||||
|
@ -1032,7 +1032,7 @@ Vector<ObjectID> RendererSceneCull::instances_cull_ray(const Vector3 &p_from, co
|
||||||
|
|
||||||
Vector<ObjectID> RendererSceneCull::instances_cull_convex(const Vector<Plane> &p_convex, RID p_scenario) const {
|
Vector<ObjectID> RendererSceneCull::instances_cull_convex(const Vector<Plane> &p_convex, RID p_scenario) const {
|
||||||
Vector<ObjectID> instances;
|
Vector<ObjectID> instances;
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
ERR_FAIL_COND_V(!scenario, instances);
|
ERR_FAIL_COND_V(!scenario, instances);
|
||||||
const_cast<RendererSceneCull *>(this)->update_dirty_instances(); // check dirty instances before culling
|
const_cast<RendererSceneCull *>(this)->update_dirty_instances(); // check dirty instances before culling
|
||||||
|
|
||||||
|
@ -1056,7 +1056,7 @@ Vector<ObjectID> RendererSceneCull::instances_cull_convex(const Vector<Plane> &p
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_flag(RID p_instance, RS::InstanceFlags p_flags, bool p_enabled) {
|
void RendererSceneCull::instance_geometry_set_flag(RID p_instance, RS::InstanceFlags p_flags, bool p_enabled) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
//ERR_FAIL_COND(((1 << instance->base_type) & RS::INSTANCE_GEOMETRY_MASK));
|
//ERR_FAIL_COND(((1 << instance->base_type) & RS::INSTANCE_GEOMETRY_MASK));
|
||||||
|
@ -1131,7 +1131,7 @@ void RendererSceneCull::instance_geometry_set_flag(RID p_instance, RS::InstanceF
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_cast_shadows_setting(RID p_instance, RS::ShadowCastingSetting p_shadow_casting_setting) {
|
void RendererSceneCull::instance_geometry_set_cast_shadows_setting(RID p_instance, RS::ShadowCastingSetting p_shadow_casting_setting) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->cast_shadows = p_shadow_casting_setting;
|
instance->cast_shadows = p_shadow_casting_setting;
|
||||||
|
@ -1161,7 +1161,7 @@ void RendererSceneCull::instance_geometry_set_cast_shadows_setting(RID p_instanc
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_material_override(RID p_instance, RID p_material) {
|
void RendererSceneCull::instance_geometry_set_material_override(RID p_instance, RID p_material) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->material_override = p_material;
|
instance->material_override = p_material;
|
||||||
|
@ -1174,7 +1174,7 @@ void RendererSceneCull::instance_geometry_set_material_override(RID p_instance,
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_visibility_range(RID p_instance, float p_min, float p_max, float p_min_margin, float p_max_margin) {
|
void RendererSceneCull::instance_geometry_set_visibility_range(RID p_instance, float p_min, float p_max, float p_min_margin, float p_max_margin) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->visibility_range_begin = p_min;
|
instance->visibility_range_begin = p_min;
|
||||||
|
@ -1194,7 +1194,7 @@ void RendererSceneCull::instance_geometry_set_visibility_range(RID p_instance, f
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_set_visibility_parent(RID p_instance, RID p_parent_instance) {
|
void RendererSceneCull::instance_set_visibility_parent(RID p_instance, RID p_parent_instance) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
Instance *old_parent = instance->visibility_parent;
|
Instance *old_parent = instance->visibility_parent;
|
||||||
|
@ -1207,7 +1207,7 @@ void RendererSceneCull::instance_set_visibility_parent(RID p_instance, RID p_par
|
||||||
instance->visibility_parent = nullptr;
|
instance->visibility_parent = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance *parent = instance_owner.getornull(p_parent_instance);
|
Instance *parent = instance_owner.get_or_null(p_parent_instance);
|
||||||
ERR_FAIL_COND(p_parent_instance.is_valid() && !parent);
|
ERR_FAIL_COND(p_parent_instance.is_valid() && !parent);
|
||||||
|
|
||||||
if (parent) {
|
if (parent) {
|
||||||
|
@ -1312,7 +1312,7 @@ void RendererSceneCull::_update_instance_visibility_dependencies(Instance *p_ins
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_lightmap(RID p_instance, RID p_lightmap, const Rect2 &p_lightmap_uv_scale, int p_slice_index) {
|
void RendererSceneCull::instance_geometry_set_lightmap(RID p_instance, RID p_lightmap, const Rect2 &p_lightmap_uv_scale, int p_slice_index) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
if (instance->lightmap) {
|
if (instance->lightmap) {
|
||||||
|
@ -1321,7 +1321,7 @@ void RendererSceneCull::instance_geometry_set_lightmap(RID p_instance, RID p_lig
|
||||||
instance->lightmap = nullptr;
|
instance->lightmap = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Instance *lightmap_instance = instance_owner.getornull(p_lightmap);
|
Instance *lightmap_instance = instance_owner.get_or_null(p_lightmap);
|
||||||
|
|
||||||
instance->lightmap = lightmap_instance;
|
instance->lightmap = lightmap_instance;
|
||||||
instance->lightmap_uv_scale = p_lightmap_uv_scale;
|
instance->lightmap_uv_scale = p_lightmap_uv_scale;
|
||||||
|
@ -1342,7 +1342,7 @@ void RendererSceneCull::instance_geometry_set_lightmap(RID p_instance, RID p_lig
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_lod_bias(RID p_instance, float p_lod_bias) {
|
void RendererSceneCull::instance_geometry_set_lod_bias(RID p_instance, float p_lod_bias) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
instance->lod_bias = p_lod_bias;
|
instance->lod_bias = p_lod_bias;
|
||||||
|
@ -1354,7 +1354,7 @@ void RendererSceneCull::instance_geometry_set_lod_bias(RID p_instance, float p_l
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_set_shader_parameter(RID p_instance, const StringName &p_parameter, const Variant &p_value) {
|
void RendererSceneCull::instance_geometry_set_shader_parameter(RID p_instance, const StringName &p_parameter, const Variant &p_value) {
|
||||||
Instance *instance = instance_owner.getornull(p_instance);
|
Instance *instance = instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT);
|
ERR_FAIL_COND(p_value.get_type() == Variant::OBJECT);
|
||||||
|
@ -1377,7 +1377,7 @@ void RendererSceneCull::instance_geometry_set_shader_parameter(RID p_instance, c
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant RendererSceneCull::instance_geometry_get_shader_parameter(RID p_instance, const StringName &p_parameter) const {
|
Variant RendererSceneCull::instance_geometry_get_shader_parameter(RID p_instance, const StringName &p_parameter) const {
|
||||||
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.getornull(p_instance);
|
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!instance, Variant());
|
ERR_FAIL_COND_V(!instance, Variant());
|
||||||
|
|
||||||
if (instance->instance_shader_parameters.has(p_parameter)) {
|
if (instance->instance_shader_parameters.has(p_parameter)) {
|
||||||
|
@ -1387,7 +1387,7 @@ Variant RendererSceneCull::instance_geometry_get_shader_parameter(RID p_instance
|
||||||
}
|
}
|
||||||
|
|
||||||
Variant RendererSceneCull::instance_geometry_get_shader_parameter_default_value(RID p_instance, const StringName &p_parameter) const {
|
Variant RendererSceneCull::instance_geometry_get_shader_parameter_default_value(RID p_instance, const StringName &p_parameter) const {
|
||||||
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.getornull(p_instance);
|
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND_V(!instance, Variant());
|
ERR_FAIL_COND_V(!instance, Variant());
|
||||||
|
|
||||||
if (instance->instance_shader_parameters.has(p_parameter)) {
|
if (instance->instance_shader_parameters.has(p_parameter)) {
|
||||||
|
@ -1397,7 +1397,7 @@ Variant RendererSceneCull::instance_geometry_get_shader_parameter_default_value(
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::instance_geometry_get_shader_parameter_list(RID p_instance, List<PropertyInfo> *p_parameters) const {
|
void RendererSceneCull::instance_geometry_get_shader_parameter_list(RID p_instance, List<PropertyInfo> *p_parameters) const {
|
||||||
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.getornull(p_instance);
|
const Instance *instance = const_cast<RendererSceneCull *>(this)->instance_owner.get_or_null(p_instance);
|
||||||
ERR_FAIL_COND(!instance);
|
ERR_FAIL_COND(!instance);
|
||||||
|
|
||||||
const_cast<RendererSceneCull *>(this)->update_dirty_instances();
|
const_cast<RendererSceneCull *>(this)->update_dirty_instances();
|
||||||
|
@ -2354,7 +2354,7 @@ bool RendererSceneCull::_light_instance_update_shadow(Instance *p_instance, cons
|
||||||
void RendererSceneCull::render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, float p_screen_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RenderInfo *r_render_info) {
|
void RendererSceneCull::render_camera(RID p_render_buffers, RID p_camera, RID p_scenario, RID p_viewport, Size2 p_viewport_size, float p_screen_lod_threshold, RID p_shadow_atlas, Ref<XRInterface> &p_xr_interface, RenderInfo *r_render_info) {
|
||||||
#ifndef _3D_DISABLED
|
#ifndef _3D_DISABLED
|
||||||
|
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
ERR_FAIL_COND(!camera);
|
ERR_FAIL_COND(!camera);
|
||||||
|
|
||||||
RendererSceneRender::CameraData camera_data;
|
RendererSceneRender::CameraData camera_data;
|
||||||
|
@ -2747,9 +2747,9 @@ void RendererSceneCull::_scene_cull(CullData &cull_data, InstanceCullResult &cul
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_camera_data, RID p_render_buffers, RID p_environment, RID p_force_camera_effects, uint32_t p_visible_layers, RID p_scenario, RID p_viewport, RID p_shadow_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_lod_threshold, bool p_using_shadows, RendererScene::RenderInfo *r_render_info) {
|
void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_camera_data, RID p_render_buffers, RID p_environment, RID p_force_camera_effects, uint32_t p_visible_layers, RID p_scenario, RID p_viewport, RID p_shadow_atlas, RID p_reflection_probe, int p_reflection_probe_pass, float p_screen_lod_threshold, bool p_using_shadows, RendererScene::RenderInfo *r_render_info) {
|
||||||
Instance *render_reflection_probe = instance_owner.getornull(p_reflection_probe); //if null, not rendering to it
|
Instance *render_reflection_probe = instance_owner.get_or_null(p_reflection_probe); //if null, not rendering to it
|
||||||
|
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
|
|
||||||
render_pass++;
|
render_pass++;
|
||||||
|
|
||||||
|
@ -3103,12 +3103,12 @@ void RendererSceneCull::_render_scene(const RendererSceneRender::CameraData *p_c
|
||||||
}
|
}
|
||||||
|
|
||||||
RID RendererSceneCull::_render_get_environment(RID p_camera, RID p_scenario) {
|
RID RendererSceneCull::_render_get_environment(RID p_camera, RID p_scenario) {
|
||||||
Camera *camera = camera_owner.getornull(p_camera);
|
Camera *camera = camera_owner.get_or_null(p_camera);
|
||||||
if (camera && scene_render->is_environment(camera->env)) {
|
if (camera && scene_render->is_environment(camera->env)) {
|
||||||
return camera->env;
|
return camera->env;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
if (!scenario) {
|
if (!scenario) {
|
||||||
return RID();
|
return RID();
|
||||||
}
|
}
|
||||||
|
@ -3125,7 +3125,7 @@ RID RendererSceneCull::_render_get_environment(RID p_camera, RID p_scenario) {
|
||||||
|
|
||||||
void RendererSceneCull::render_empty_scene(RID p_render_buffers, RID p_scenario, RID p_shadow_atlas) {
|
void RendererSceneCull::render_empty_scene(RID p_render_buffers, RID p_scenario, RID p_shadow_atlas) {
|
||||||
#ifndef _3D_DISABLED
|
#ifndef _3D_DISABLED
|
||||||
Scenario *scenario = scenario_owner.getornull(p_scenario);
|
Scenario *scenario = scenario_owner.get_or_null(p_scenario);
|
||||||
|
|
||||||
RID environment;
|
RID environment;
|
||||||
if (scenario->environment.is_valid()) {
|
if (scenario->environment.is_valid()) {
|
||||||
|
@ -3750,7 +3750,7 @@ bool RendererSceneCull::free(RID p_rid) {
|
||||||
camera_owner.free(p_rid);
|
camera_owner.free(p_rid);
|
||||||
|
|
||||||
} else if (scenario_owner.owns(p_rid)) {
|
} else if (scenario_owner.owns(p_rid)) {
|
||||||
Scenario *scenario = scenario_owner.getornull(p_rid);
|
Scenario *scenario = scenario_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
while (scenario->instances.first()) {
|
while (scenario->instances.first()) {
|
||||||
instance_set_scenario(scenario->instances.first()->self()->self, RID());
|
instance_set_scenario(scenario->instances.first()->self()->self, RID());
|
||||||
|
@ -3771,7 +3771,7 @@ bool RendererSceneCull::free(RID p_rid) {
|
||||||
|
|
||||||
update_dirty_instances();
|
update_dirty_instances();
|
||||||
|
|
||||||
Instance *instance = instance_owner.getornull(p_rid);
|
Instance *instance = instance_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
instance_geometry_set_lightmap(p_rid, RID(), Rect2(), 0);
|
instance_geometry_set_lightmap(p_rid, RID(), Rect2(), 0);
|
||||||
instance_set_scenario(p_rid, RID());
|
instance_set_scenario(p_rid, RID());
|
||||||
|
|
|
@ -554,7 +554,7 @@ void RendererViewport::draw_viewports() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (vp->update_mode == RS::VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE) {
|
if (vp->update_mode == RS::VIEWPORT_UPDATE_WHEN_PARENT_VISIBLE) {
|
||||||
Viewport *parent = viewport_owner.getornull(vp->parent);
|
Viewport *parent = viewport_owner.get_or_null(vp->parent);
|
||||||
if (parent && parent->last_pass == draw_viewports_pass) {
|
if (parent && parent->last_pass == draw_viewports_pass) {
|
||||||
visible = true;
|
visible = true;
|
||||||
}
|
}
|
||||||
|
@ -671,7 +671,7 @@ RID RendererViewport::viewport_allocate() {
|
||||||
|
|
||||||
void RendererViewport::viewport_initialize(RID p_rid) {
|
void RendererViewport::viewport_initialize(RID p_rid) {
|
||||||
viewport_owner.initialize_rid(p_rid);
|
viewport_owner.initialize_rid(p_rid);
|
||||||
Viewport *viewport = viewport_owner.getornull(p_rid);
|
Viewport *viewport = viewport_owner.get_or_null(p_rid);
|
||||||
viewport->self = p_rid;
|
viewport->self = p_rid;
|
||||||
viewport->render_target = RSG::storage->render_target_create();
|
viewport->render_target = RSG::storage->render_target_create();
|
||||||
viewport->shadow_atlas = RSG::scene->shadow_atlas_create();
|
viewport->shadow_atlas = RSG::scene->shadow_atlas_create();
|
||||||
|
@ -679,7 +679,7 @@ void RendererViewport::viewport_initialize(RID p_rid) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_use_xr(RID p_viewport, bool p_use_xr) {
|
void RendererViewport::viewport_set_use_xr(RID p_viewport, bool p_use_xr) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->use_xr == p_use_xr) {
|
if (viewport->use_xr == p_use_xr) {
|
||||||
|
@ -691,7 +691,7 @@ void RendererViewport::viewport_set_use_xr(RID p_viewport, bool p_use_xr) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_scale_3d(RID p_viewport, RenderingServer::ViewportScale3D p_scale_3d) {
|
void RendererViewport::viewport_set_scale_3d(RID p_viewport, RenderingServer::ViewportScale3D p_scale_3d) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->scale_3d == p_scale_3d) {
|
if (viewport->scale_3d == p_scale_3d) {
|
||||||
|
@ -720,7 +720,7 @@ uint32_t RendererViewport::Viewport::get_view_count() {
|
||||||
void RendererViewport::viewport_set_size(RID p_viewport, int p_width, int p_height) {
|
void RendererViewport::viewport_set_size(RID p_viewport, int p_width, int p_height) {
|
||||||
ERR_FAIL_COND(p_width < 0 && p_height < 0);
|
ERR_FAIL_COND(p_width < 0 && p_height < 0);
|
||||||
|
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->size = Size2(p_width, p_height);
|
viewport->size = Size2(p_width, p_height);
|
||||||
|
@ -732,7 +732,7 @@ void RendererViewport::viewport_set_size(RID p_viewport, int p_width, int p_heig
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_active(RID p_viewport, bool p_active) {
|
void RendererViewport::viewport_set_active(RID p_viewport, bool p_active) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (p_active) {
|
if (p_active) {
|
||||||
|
@ -745,21 +745,21 @@ void RendererViewport::viewport_set_active(RID p_viewport, bool p_active) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_parent_viewport(RID p_viewport, RID p_parent_viewport) {
|
void RendererViewport::viewport_set_parent_viewport(RID p_viewport, RID p_parent_viewport) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->parent = p_parent_viewport;
|
viewport->parent = p_parent_viewport;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_clear_mode(RID p_viewport, RS::ViewportClearMode p_clear_mode) {
|
void RendererViewport::viewport_set_clear_mode(RID p_viewport, RS::ViewportClearMode p_clear_mode) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->clear_mode = p_clear_mode;
|
viewport->clear_mode = p_clear_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_attach_to_screen(RID p_viewport, const Rect2 &p_rect, DisplayServer::WindowID p_screen) {
|
void RendererViewport::viewport_attach_to_screen(RID p_viewport, const Rect2 &p_rect, DisplayServer::WindowID p_screen) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (p_screen != DisplayServer::INVALID_WINDOW_ID) {
|
if (p_screen != DisplayServer::INVALID_WINDOW_ID) {
|
||||||
|
@ -785,7 +785,7 @@ void RendererViewport::viewport_attach_to_screen(RID p_viewport, const Rect2 &p_
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_render_direct_to_screen(RID p_viewport, bool p_enable) {
|
void RendererViewport::viewport_set_render_direct_to_screen(RID p_viewport, bool p_enable) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (p_enable == viewport->viewport_render_direct_to_screen) {
|
if (p_enable == viewport->viewport_render_direct_to_screen) {
|
||||||
|
@ -809,21 +809,21 @@ void RendererViewport::viewport_set_render_direct_to_screen(RID p_viewport, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_update_mode(RID p_viewport, RS::ViewportUpdateMode p_mode) {
|
void RendererViewport::viewport_set_update_mode(RID p_viewport, RS::ViewportUpdateMode p_mode) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->update_mode = p_mode;
|
viewport->update_mode = p_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
RID RendererViewport::viewport_get_texture(RID p_viewport) const {
|
RID RendererViewport::viewport_get_texture(RID p_viewport) const {
|
||||||
const Viewport *viewport = viewport_owner.getornull(p_viewport);
|
const Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND_V(!viewport, RID());
|
ERR_FAIL_COND_V(!viewport, RID());
|
||||||
|
|
||||||
return RSG::storage->render_target_get_texture(viewport->render_target);
|
return RSG::storage->render_target_get_texture(viewport->render_target);
|
||||||
}
|
}
|
||||||
|
|
||||||
RID RendererViewport::viewport_get_occluder_debug_texture(RID p_viewport) const {
|
RID RendererViewport::viewport_get_occluder_debug_texture(RID p_viewport) const {
|
||||||
const Viewport *viewport = viewport_owner.getornull(p_viewport);
|
const Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND_V(!viewport, RID());
|
ERR_FAIL_COND_V(!viewport, RID());
|
||||||
|
|
||||||
if (viewport->use_occlusion_culling && viewport->debug_draw == RenderingServer::VIEWPORT_DEBUG_DRAW_OCCLUDERS) {
|
if (viewport->use_occlusion_culling && viewport->debug_draw == RenderingServer::VIEWPORT_DEBUG_DRAW_OCCLUDERS) {
|
||||||
|
@ -833,35 +833,35 @@ RID RendererViewport::viewport_get_occluder_debug_texture(RID p_viewport) const
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_disable_2d(RID p_viewport, bool p_disable) {
|
void RendererViewport::viewport_set_disable_2d(RID p_viewport, bool p_disable) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->disable_2d = p_disable;
|
viewport->disable_2d = p_disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_disable_environment(RID p_viewport, bool p_disable) {
|
void RendererViewport::viewport_set_disable_environment(RID p_viewport, bool p_disable) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->disable_environment = p_disable;
|
viewport->disable_environment = p_disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_disable_3d(RID p_viewport, bool p_disable) {
|
void RendererViewport::viewport_set_disable_3d(RID p_viewport, bool p_disable) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->disable_3d = p_disable;
|
viewport->disable_3d = p_disable;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_attach_camera(RID p_viewport, RID p_camera) {
|
void RendererViewport::viewport_attach_camera(RID p_viewport, RID p_camera) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->camera = p_camera;
|
viewport->camera = p_camera;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_scenario(RID p_viewport, RID p_scenario) {
|
void RendererViewport::viewport_set_scenario(RID p_viewport, RID p_scenario) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->scenario.is_valid()) {
|
if (viewport->scenario.is_valid()) {
|
||||||
|
@ -875,11 +875,11 @@ void RendererViewport::viewport_set_scenario(RID p_viewport, RID p_scenario) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_attach_canvas(RID p_viewport, RID p_canvas) {
|
void RendererViewport::viewport_attach_canvas(RID p_viewport, RID p_canvas) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
ERR_FAIL_COND(viewport->canvas_map.has(p_canvas));
|
ERR_FAIL_COND(viewport->canvas_map.has(p_canvas));
|
||||||
RendererCanvasCull::Canvas *canvas = RSG::canvas->canvas_owner.getornull(p_canvas);
|
RendererCanvasCull::Canvas *canvas = RSG::canvas->canvas_owner.get_or_null(p_canvas);
|
||||||
ERR_FAIL_COND(!canvas);
|
ERR_FAIL_COND(!canvas);
|
||||||
|
|
||||||
canvas->viewports.insert(p_viewport);
|
canvas->viewports.insert(p_viewport);
|
||||||
|
@ -890,10 +890,10 @@ void RendererViewport::viewport_attach_canvas(RID p_viewport, RID p_canvas) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_remove_canvas(RID p_viewport, RID p_canvas) {
|
void RendererViewport::viewport_remove_canvas(RID p_viewport, RID p_canvas) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
RendererCanvasCull::Canvas *canvas = RSG::canvas->canvas_owner.getornull(p_canvas);
|
RendererCanvasCull::Canvas *canvas = RSG::canvas->canvas_owner.get_or_null(p_canvas);
|
||||||
ERR_FAIL_COND(!canvas);
|
ERR_FAIL_COND(!canvas);
|
||||||
|
|
||||||
viewport->canvas_map.erase(p_canvas);
|
viewport->canvas_map.erase(p_canvas);
|
||||||
|
@ -901,7 +901,7 @@ void RendererViewport::viewport_remove_canvas(RID p_viewport, RID p_canvas) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_canvas_transform(RID p_viewport, RID p_canvas, const Transform2D &p_offset) {
|
void RendererViewport::viewport_set_canvas_transform(RID p_viewport, RID p_canvas, const Transform2D &p_offset) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
ERR_FAIL_COND(!viewport->canvas_map.has(p_canvas));
|
ERR_FAIL_COND(!viewport->canvas_map.has(p_canvas));
|
||||||
|
@ -909,7 +909,7 @@ void RendererViewport::viewport_set_canvas_transform(RID p_viewport, RID p_canva
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_transparent_background(RID p_viewport, bool p_enabled) {
|
void RendererViewport::viewport_set_transparent_background(RID p_viewport, bool p_enabled) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
RSG::storage->render_target_set_flag(viewport->render_target, RendererStorage::RENDER_TARGET_TRANSPARENT, p_enabled);
|
RSG::storage->render_target_set_flag(viewport->render_target, RendererStorage::RENDER_TARGET_TRANSPARENT, p_enabled);
|
||||||
|
@ -917,14 +917,14 @@ void RendererViewport::viewport_set_transparent_background(RID p_viewport, bool
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_global_canvas_transform(RID p_viewport, const Transform2D &p_transform) {
|
void RendererViewport::viewport_set_global_canvas_transform(RID p_viewport, const Transform2D &p_transform) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->global_transform = p_transform;
|
viewport->global_transform = p_transform;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_canvas_stacking(RID p_viewport, RID p_canvas, int p_layer, int p_sublayer) {
|
void RendererViewport::viewport_set_canvas_stacking(RID p_viewport, RID p_canvas, int p_layer, int p_sublayer) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
ERR_FAIL_COND(!viewport->canvas_map.has(p_canvas));
|
ERR_FAIL_COND(!viewport->canvas_map.has(p_canvas));
|
||||||
|
@ -933,7 +933,7 @@ void RendererViewport::viewport_set_canvas_stacking(RID p_viewport, RID p_canvas
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_shadow_atlas_size(RID p_viewport, int p_size, bool p_16_bits) {
|
void RendererViewport::viewport_set_shadow_atlas_size(RID p_viewport, int p_size, bool p_16_bits) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->shadow_atlas_size = p_size;
|
viewport->shadow_atlas_size = p_size;
|
||||||
|
@ -943,14 +943,14 @@ void RendererViewport::viewport_set_shadow_atlas_size(RID p_viewport, int p_size
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_shadow_atlas_quadrant_subdivision(RID p_viewport, int p_quadrant, int p_subdiv) {
|
void RendererViewport::viewport_set_shadow_atlas_quadrant_subdivision(RID p_viewport, int p_quadrant, int p_subdiv) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
RSG::scene->shadow_atlas_set_quadrant_subdivision(viewport->shadow_atlas, p_quadrant, p_subdiv);
|
RSG::scene->shadow_atlas_set_quadrant_subdivision(viewport->shadow_atlas, p_quadrant, p_subdiv);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_msaa(RID p_viewport, RS::ViewportMSAA p_msaa) {
|
void RendererViewport::viewport_set_msaa(RID p_viewport, RS::ViewportMSAA p_msaa) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->msaa == p_msaa) {
|
if (viewport->msaa == p_msaa) {
|
||||||
|
@ -961,7 +961,7 @@ void RendererViewport::viewport_set_msaa(RID p_viewport, RS::ViewportMSAA p_msaa
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_screen_space_aa(RID p_viewport, RS::ViewportScreenSpaceAA p_mode) {
|
void RendererViewport::viewport_set_screen_space_aa(RID p_viewport, RS::ViewportScreenSpaceAA p_mode) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->screen_space_aa == p_mode) {
|
if (viewport->screen_space_aa == p_mode) {
|
||||||
|
@ -972,7 +972,7 @@ void RendererViewport::viewport_set_screen_space_aa(RID p_viewport, RS::Viewport
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_use_debanding(RID p_viewport, bool p_use_debanding) {
|
void RendererViewport::viewport_set_use_debanding(RID p_viewport, bool p_use_debanding) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->use_debanding == p_use_debanding) {
|
if (viewport->use_debanding == p_use_debanding) {
|
||||||
|
@ -983,7 +983,7 @@ void RendererViewport::viewport_set_use_debanding(RID p_viewport, bool p_use_deb
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_use_occlusion_culling(RID p_viewport, bool p_use_occlusion_culling) {
|
void RendererViewport::viewport_set_use_occlusion_culling(RID p_viewport, bool p_use_occlusion_culling) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
if (viewport->use_occlusion_culling == p_use_occlusion_culling) {
|
if (viewport->use_occlusion_culling == p_use_occlusion_culling) {
|
||||||
|
@ -1018,7 +1018,7 @@ void RendererViewport::viewport_set_occlusion_culling_build_quality(RS::Viewport
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_lod_threshold(RID p_viewport, float p_pixels) {
|
void RendererViewport::viewport_set_lod_threshold(RID p_viewport, float p_pixels) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->lod_threshold = p_pixels;
|
viewport->lod_threshold = p_pixels;
|
||||||
|
@ -1027,7 +1027,7 @@ void RendererViewport::viewport_set_lod_threshold(RID p_viewport, float p_pixels
|
||||||
int RendererViewport::viewport_get_render_info(RID p_viewport, RS::ViewportRenderInfoType p_type, RS::ViewportRenderInfo p_info) {
|
int RendererViewport::viewport_get_render_info(RID p_viewport, RS::ViewportRenderInfoType p_type, RS::ViewportRenderInfo p_info) {
|
||||||
ERR_FAIL_INDEX_V(p_info, RS::VIEWPORT_RENDER_INFO_MAX, -1);
|
ERR_FAIL_INDEX_V(p_info, RS::VIEWPORT_RENDER_INFO_MAX, -1);
|
||||||
|
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
if (!viewport) {
|
if (!viewport) {
|
||||||
return 0; //there should be a lock here..
|
return 0; //there should be a lock here..
|
||||||
}
|
}
|
||||||
|
@ -1036,62 +1036,62 @@ int RendererViewport::viewport_get_render_info(RID p_viewport, RS::ViewportRende
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_debug_draw(RID p_viewport, RS::ViewportDebugDraw p_draw) {
|
void RendererViewport::viewport_set_debug_draw(RID p_viewport, RS::ViewportDebugDraw p_draw) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->debug_draw = p_draw;
|
viewport->debug_draw = p_draw;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_measure_render_time(RID p_viewport, bool p_enable) {
|
void RendererViewport::viewport_set_measure_render_time(RID p_viewport, bool p_enable) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->measure_render_time = p_enable;
|
viewport->measure_render_time = p_enable;
|
||||||
}
|
}
|
||||||
|
|
||||||
float RendererViewport::viewport_get_measured_render_time_cpu(RID p_viewport) const {
|
float RendererViewport::viewport_get_measured_render_time_cpu(RID p_viewport) const {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND_V(!viewport, 0);
|
ERR_FAIL_COND_V(!viewport, 0);
|
||||||
|
|
||||||
return double(viewport->time_cpu_end - viewport->time_cpu_begin) / 1000.0;
|
return double(viewport->time_cpu_end - viewport->time_cpu_begin) / 1000.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float RendererViewport::viewport_get_measured_render_time_gpu(RID p_viewport) const {
|
float RendererViewport::viewport_get_measured_render_time_gpu(RID p_viewport) const {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND_V(!viewport, 0);
|
ERR_FAIL_COND_V(!viewport, 0);
|
||||||
|
|
||||||
return double((viewport->time_gpu_end - viewport->time_gpu_begin) / 1000) / 1000.0;
|
return double((viewport->time_gpu_end - viewport->time_gpu_begin) / 1000) / 1000.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_snap_2d_transforms_to_pixel(RID p_viewport, bool p_enabled) {
|
void RendererViewport::viewport_set_snap_2d_transforms_to_pixel(RID p_viewport, bool p_enabled) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
viewport->snap_2d_transforms_to_pixel = p_enabled;
|
viewport->snap_2d_transforms_to_pixel = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_snap_2d_vertices_to_pixel(RID p_viewport, bool p_enabled) {
|
void RendererViewport::viewport_set_snap_2d_vertices_to_pixel(RID p_viewport, bool p_enabled) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
viewport->snap_2d_vertices_to_pixel = p_enabled;
|
viewport->snap_2d_vertices_to_pixel = p_enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_default_canvas_item_texture_filter(RID p_viewport, RS::CanvasItemTextureFilter p_filter) {
|
void RendererViewport::viewport_set_default_canvas_item_texture_filter(RID p_viewport, RS::CanvasItemTextureFilter p_filter) {
|
||||||
ERR_FAIL_COND_MSG(p_filter == RS::CANVAS_ITEM_TEXTURE_FILTER_DEFAULT, "Viewport does not accept DEFAULT as texture filter (it's the topmost choice already).)");
|
ERR_FAIL_COND_MSG(p_filter == RS::CANVAS_ITEM_TEXTURE_FILTER_DEFAULT, "Viewport does not accept DEFAULT as texture filter (it's the topmost choice already).)");
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->texture_filter = p_filter;
|
viewport->texture_filter = p_filter;
|
||||||
}
|
}
|
||||||
void RendererViewport::viewport_set_default_canvas_item_texture_repeat(RID p_viewport, RS::CanvasItemTextureRepeat p_repeat) {
|
void RendererViewport::viewport_set_default_canvas_item_texture_repeat(RID p_viewport, RS::CanvasItemTextureRepeat p_repeat) {
|
||||||
ERR_FAIL_COND_MSG(p_repeat == RS::CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT, "Viewport does not accept DEFAULT as texture repeat (it's the topmost choice already).)");
|
ERR_FAIL_COND_MSG(p_repeat == RS::CANVAS_ITEM_TEXTURE_REPEAT_DEFAULT, "Viewport does not accept DEFAULT as texture repeat (it's the topmost choice already).)");
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
viewport->texture_repeat = p_repeat;
|
viewport->texture_repeat = p_repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
void RendererViewport::viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::ViewportSDFOversize p_size, RS::ViewportSDFScale p_scale) {
|
void RendererViewport::viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::ViewportSDFOversize p_size, RS::ViewportSDFScale p_scale) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_viewport);
|
Viewport *viewport = viewport_owner.get_or_null(p_viewport);
|
||||||
ERR_FAIL_COND(!viewport);
|
ERR_FAIL_COND(!viewport);
|
||||||
|
|
||||||
RSG::storage->render_target_set_sdf_size_and_scale(viewport->render_target, p_size, p_scale);
|
RSG::storage->render_target_set_sdf_size_and_scale(viewport->render_target, p_size, p_scale);
|
||||||
|
@ -1099,7 +1099,7 @@ void RendererViewport::viewport_set_sdf_oversize_and_scale(RID p_viewport, RS::V
|
||||||
|
|
||||||
bool RendererViewport::free(RID p_rid) {
|
bool RendererViewport::free(RID p_rid) {
|
||||||
if (viewport_owner.owns(p_rid)) {
|
if (viewport_owner.owns(p_rid)) {
|
||||||
Viewport *viewport = viewport_owner.getornull(p_rid);
|
Viewport *viewport = viewport_owner.get_or_null(p_rid);
|
||||||
|
|
||||||
RSG::storage->free(viewport->render_target);
|
RSG::storage->free(viewport->render_target);
|
||||||
RSG::scene->free(viewport->shadow_atlas);
|
RSG::scene->free(viewport->shadow_atlas);
|
||||||
|
@ -1132,7 +1132,7 @@ void RendererViewport::handle_timestamp(String p_timestamp, uint64_t p_cpu_time,
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Viewport *viewport = viewport_owner.getornull(*vp);
|
Viewport *viewport = viewport_owner.get_or_null(*vp);
|
||||||
if (!viewport) {
|
if (!viewport) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue