mirror of
https://github.com/godotengine/godot.git
synced 2025-12-08 06:09:55 +00:00
"On Top" flag for Sprite3D
This commit is contained in:
parent
91140904cc
commit
0895f02d87
4 changed files with 11 additions and 5 deletions
|
|
@ -273,11 +273,13 @@ void SpriteBase3D::_bind_methods() {
|
|||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flags/transparent"), _SCS("set_draw_flag"), _SCS("get_draw_flag"), FLAG_TRANSPARENT);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flags/shaded"), _SCS("set_draw_flag"), _SCS("get_draw_flag"), FLAG_SHADED);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flags/double_sided"), _SCS("set_draw_flag"), _SCS("get_draw_flag"), FLAG_DOUBLE_SIDED);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flags/on_top"), _SCS("set_draw_flag"), _SCS("get_draw_flag"), FLAG_ONTOP);
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "flags/alpha_cut", PROPERTY_HINT_ENUM, "Disabled,Discard,Opaque Pre-Pass"), _SCS("set_alpha_cut_mode"), _SCS("get_alpha_cut_mode"));
|
||||
|
||||
BIND_CONSTANT(FLAG_TRANSPARENT);
|
||||
BIND_CONSTANT(FLAG_SHADED);
|
||||
BIND_CONSTANT(FLAG_DOUBLE_SIDED);
|
||||
BIND_CONSTANT(FLAG_ONTOP);
|
||||
BIND_CONSTANT(FLAG_MAX);
|
||||
|
||||
BIND_CONSTANT(ALPHA_CUT_DISABLED);
|
||||
|
|
@ -388,7 +390,7 @@ void Sprite3D::_draw() {
|
|||
int axis = get_axis();
|
||||
normal[axis] = 1.0;
|
||||
|
||||
RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED), get_draw_flag(FLAG_TRANSPARENT), get_draw_flag(FLAG_DOUBLE_SIDED), get_alpha_cut_mode() == ALPHA_CUT_DISCARD, get_alpha_cut_mode() == ALPHA_CUT_OPAQUE_PREPASS);
|
||||
RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED), get_draw_flag(FLAG_TRANSPARENT), get_draw_flag(FLAG_DOUBLE_SIDED), get_draw_flag(FLAG_ONTOP), get_alpha_cut_mode() == ALPHA_CUT_DISCARD, get_alpha_cut_mode() == ALPHA_CUT_OPAQUE_PREPASS);
|
||||
VS::get_singleton()->immediate_set_material(immediate, mat);
|
||||
|
||||
VS::get_singleton()->immediate_begin(immediate, VS::PRIMITIVE_TRIANGLE_FAN, texture->get_rid());
|
||||
|
|
@ -672,7 +674,7 @@ void AnimatedSprite3D::_draw() {
|
|||
int axis = get_axis();
|
||||
normal[axis]=1.0;
|
||||
|
||||
RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED),get_draw_flag(FLAG_TRANSPARENT),get_alpha_cut_mode()==ALPHA_CUT_DISCARD,get_alpha_cut_mode()==ALPHA_CUT_OPAQUE_PREPASS);
|
||||
RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED),get_draw_flag(FLAG_TRANSPARENT),get_draw_flag(FLAG_ONTOP),get_alpha_cut_mode()==ALPHA_CUT_DISCARD,get_alpha_cut_mode()==ALPHA_CUT_OPAQUE_PREPASS);
|
||||
VS::get_singleton()->immediate_set_material(immediate,mat);
|
||||
|
||||
VS::get_singleton()->immediate_begin(immediate,VS::PRIMITIVE_TRIANGLE_FAN,texture->get_rid());
|
||||
|
|
@ -895,7 +897,7 @@ void AnimatedSprite3D::_draw() {
|
|||
int axis = get_axis();
|
||||
normal[axis] = 1.0;
|
||||
|
||||
RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED), get_draw_flag(FLAG_TRANSPARENT), get_draw_flag(FLAG_DOUBLE_SIDED), get_alpha_cut_mode() == ALPHA_CUT_DISCARD, get_alpha_cut_mode() == ALPHA_CUT_OPAQUE_PREPASS);
|
||||
RID mat = VS::get_singleton()->material_2d_get(get_draw_flag(FLAG_SHADED), get_draw_flag(FLAG_TRANSPARENT), get_draw_flag(FLAG_DOUBLE_SIDED), get_draw_flag(FLAG_ONTOP), get_alpha_cut_mode() == ALPHA_CUT_DISCARD, get_alpha_cut_mode() == ALPHA_CUT_OPAQUE_PREPASS);
|
||||
VS::get_singleton()->immediate_set_material(immediate, mat);
|
||||
|
||||
VS::get_singleton()->immediate_begin(immediate, VS::PRIMITIVE_TRIANGLE_FAN, texture->get_rid());
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ public:
|
|||
FLAG_TRANSPARENT,
|
||||
FLAG_SHADED,
|
||||
FLAG_DOUBLE_SIDED,
|
||||
FLAG_ONTOP,
|
||||
FLAG_MAX
|
||||
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue