|
@@ -272,10 +272,12 @@ void SpriteBase3D::_bind_methods() {
|
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis", PROPERTY_HINT_ENUM, "X-Axis,Y-Axis,Z-Axis"), _SCS("set_axis"), _SCS("get_axis"));
|
|
ADD_PROPERTY(PropertyInfo(Variant::INT, "axis", PROPERTY_HINT_ENUM, "X-Axis,Y-Axis,Z-Axis"), _SCS("set_axis"), _SCS("get_axis"));
|
|
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "flags/transparent"), _SCS("set_draw_flag"), _SCS("get_draw_flag"), FLAG_TRANSPARENT);
|
|
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/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_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"));
|
|
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_TRANSPARENT);
|
|
BIND_CONSTANT(FLAG_SHADED);
|
|
BIND_CONSTANT(FLAG_SHADED);
|
|
|
|
+ BIND_CONSTANT(FLAG_DOUBLE_SIDED);
|
|
BIND_CONSTANT(FLAG_MAX);
|
|
BIND_CONSTANT(FLAG_MAX);
|
|
|
|
|
|
BIND_CONSTANT(ALPHA_CUT_DISABLED);
|
|
BIND_CONSTANT(ALPHA_CUT_DISABLED);
|
|
@@ -293,7 +295,7 @@ SpriteBase3D::SpriteBase3D() {
|
|
pI = NULL;
|
|
pI = NULL;
|
|
|
|
|
|
for (int i = 0; i < FLAG_MAX; i++)
|
|
for (int i = 0; i < FLAG_MAX; i++)
|
|
- flags[i] = i == FLAG_TRANSPARENT;
|
|
|
|
|
|
+ flags[i] = i == FLAG_TRANSPARENT || i == FLAG_DOUBLE_SIDED;
|
|
|
|
|
|
axis = Vector3::AXIS_Z;
|
|
axis = Vector3::AXIS_Z;
|
|
pixel_size = 0.01;
|
|
pixel_size = 0.01;
|
|
@@ -386,7 +388,7 @@ void Sprite3D::_draw() {
|
|
int axis = get_axis();
|
|
int axis = get_axis();
|
|
normal[axis] = 1.0;
|
|
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_DOUBLE_SIDED), 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_set_material(immediate, mat);
|
|
|
|
|
|
VS::get_singleton()->immediate_begin(immediate, VS::PRIMITIVE_TRIANGLE_FAN, texture->get_rid());
|
|
VS::get_singleton()->immediate_begin(immediate, VS::PRIMITIVE_TRIANGLE_FAN, texture->get_rid());
|
|
@@ -885,7 +887,7 @@ void AnimatedSprite3D::_draw() {
|
|
int axis = get_axis();
|
|
int axis = get_axis();
|
|
normal[axis] = 1.0;
|
|
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_DOUBLE_SIDED), 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_set_material(immediate, mat);
|
|
|
|
|
|
VS::get_singleton()->immediate_begin(immediate, VS::PRIMITIVE_TRIANGLE_FAN, texture->get_rid());
|
|
VS::get_singleton()->immediate_begin(immediate, VS::PRIMITIVE_TRIANGLE_FAN, texture->get_rid());
|