Misc Fixes

==========

-NOTIFICATION_WM_QUIT fixed on android (seems tha way this is reported changed in newer sdk)
-WIP implementation of APK Expansion APIs for publishing games larger than 50mb in Play Store
-Feaures in the new tutorials are all present in the sourcecode
-This (hopefully) should get rid of the animation list order getting corrupted
-Improved 3D Scene Importer (Skeletons, Animations and other stuff were not being merged). Anything missing?
-In code editor, the automatic syntax checker will only use file_exists() to check preload() else it might freeze the editor too much while typing if the preload is a big resource
-Fixed bugs in PolygonPathFinder, stil pending to do a node and a demo
This commit is contained in:
Juan Linietsky
2014-06-27 23:21:45 -03:00
parent 1cc96a4d74
commit 2af2a84a03
74 changed files with 1416 additions and 662 deletions

View File

@ -36,17 +36,9 @@ static const char*_flag_names[Material::FLAG_MAX]={
"invert_faces",
"unshaded",
"on_top",
"wireframe",
"billboard_sw",
"lightmap_on_uv2"
};
static const char*_hint_names[Material::HINT_MAX]={
"decal",
"opaque_pre_zpass",
"no_shadow",
"no_depth_draw",
"no_alpha_depth_draw",
};
static const Material::Flag _flag_indices[Material::FLAG_MAX]={
Material::FLAG_VISIBLE,
@ -54,15 +46,7 @@ static const Material::Flag _flag_indices[Material::FLAG_MAX]={
Material::FLAG_INVERT_FACES,
Material::FLAG_UNSHADED,
Material::FLAG_ONTOP,
Material::FLAG_WIREFRAME,
Material::FLAG_BILLBOARD_TOGGLE
};
static const Material::Hint _hint_indices[Material::HINT_MAX]={
Material::HINT_DECAL,
Material::HINT_OPAQUE_PRE_PASS,
Material::HINT_NO_SHADOW,
Material::HINT_NO_DEPTH_DRAW,
Material::FLAG_LIGHTMAP_ON_UV2
};
@ -80,20 +64,6 @@ void Material::set_flag(Flag p_flag,bool p_enabled) {
}
void Material::set_hint(Hint p_hint,bool p_enabled) {
ERR_FAIL_INDEX(p_hint,HINT_MAX);
hints[p_hint]=p_enabled;
VisualServer::get_singleton()->material_set_hint(material,(VS::MaterialHint)p_hint,p_enabled);
_change_notify();
}
bool Material::get_hint(Hint p_hint) const {
ERR_FAIL_INDEX_V(p_hint,HINT_MAX,false);
return hints[p_hint];
}
void Material::set_blend_mode(BlendMode p_blend_mode) {
ERR_FAIL_INDEX(p_blend_mode,3);
@ -108,17 +78,15 @@ Material::BlendMode Material::get_blend_mode() const {
}
void Material::set_shade_model(ShadeModel p_model) {
ERR_FAIL_INDEX(p_model,8);
shade_model=p_model;
VisualServer::get_singleton()->material_set_shade_model(material,(VS::MaterialShadeModel)p_model);
void Material::set_depth_draw_mode(DepthDrawMode p_depth_draw_mode) {
depth_draw_mode=p_depth_draw_mode;
VisualServer::get_singleton()->material_set_depth_draw_mode(material,(VS::MaterialDepthDrawMode)p_depth_draw_mode);
}
Material::ShadeModel Material::get_shade_model() const {
Material::DepthDrawMode Material::get_depth_draw_mode() const {
return shade_model;
return depth_draw_mode;
}
bool Material::get_flag(Flag p_flag) const {
@ -144,49 +112,32 @@ void Material::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_flag","flag","enable"),&Material::set_flag);
ObjectTypeDB::bind_method(_MD("get_flag","flag"),&Material::get_flag);
ObjectTypeDB::bind_method(_MD("set_hint","hint","enable"),&Material::set_hint);
ObjectTypeDB::bind_method(_MD("get_hint","hint"),&Material::get_hint);
ObjectTypeDB::bind_method(_MD("set_blend_mode","mode"),&Material::set_blend_mode);
ObjectTypeDB::bind_method(_MD("get_blend_mode"),&Material::get_blend_mode);
ObjectTypeDB::bind_method(_MD("set_shade_model","model"),&Material::set_shade_model);
ObjectTypeDB::bind_method(_MD("get_shade_model"),&Material::get_shade_model);
ObjectTypeDB::bind_method(_MD("set_line_width","width"),&Material::set_line_width);
ObjectTypeDB::bind_method(_MD("get_line_width"),&Material::get_line_width);
ObjectTypeDB::bind_method(_MD("set_depth_draw_mode","mode"),&Material::set_depth_draw_mode);
ObjectTypeDB::bind_method(_MD("get_depth_draw_mode"),&Material::get_depth_draw_mode);
for(int i=0;i<FLAG_MAX;i++)
ADD_PROPERTYI( PropertyInfo( Variant::BOOL, String()+"flags/"+_flag_names[i] ),_SCS("set_flag"),_SCS("get_flag"),_flag_indices[i]);
for(int i=0;i<HINT_MAX;i++)
ADD_PROPERTYI( PropertyInfo( Variant::BOOL, String()+"hints/"+_hint_names[i] ),_SCS("set_hint"),_SCS("get_hint"),_hint_indices[i]);
ADD_PROPERTY( PropertyInfo( Variant::INT, "params/blend_mode",PROPERTY_HINT_ENUM,"Mix,Add,Sub,PMAlpha" ), _SCS("set_blend_mode"),_SCS("get_blend_mode"));
ADD_PROPERTY( PropertyInfo( Variant::INT, "params/depth_draw",PROPERTY_HINT_ENUM,"Always,Opaque Only,Pre-Pass Alpha,Never" ), _SCS("set_depth_draw_mode"),_SCS("get_depth_draw_mode"));
ADD_PROPERTY( PropertyInfo( Variant::REAL, "params/line_width",PROPERTY_HINT_RANGE,"0.1,32.0,0.1" ), _SCS("set_line_width"),_SCS("get_line_width"));
BIND_CONSTANT( FLAG_VISIBLE );
BIND_CONSTANT( FLAG_DOUBLE_SIDED );
BIND_CONSTANT( FLAG_INVERT_FACES );
BIND_CONSTANT( FLAG_UNSHADED );
BIND_CONSTANT( FLAG_ONTOP );
BIND_CONSTANT( FLAG_WIREFRAME );
BIND_CONSTANT( FLAG_BILLBOARD_TOGGLE );
BIND_CONSTANT( FLAG_MAX );
BIND_CONSTANT( HINT_DECAL );
BIND_CONSTANT( HINT_OPAQUE_PRE_PASS );
BIND_CONSTANT( HINT_NO_SHADOW );
BIND_CONSTANT( HINT_NO_DEPTH_DRAW );
BIND_CONSTANT( HINT_NO_DEPTH_DRAW_FOR_ALPHA );
BIND_CONSTANT( HINT_MAX );
BIND_CONSTANT( SHADE_MODEL_LAMBERT );
BIND_CONSTANT( SHADE_MODEL_LAMBERT_WRAP );
BIND_CONSTANT( SHADE_MODEL_FRESNEL );
BIND_CONSTANT( SHADE_MODEL_TOON );
BIND_CONSTANT( SHADE_MODEL_CUSTOM_0 );
BIND_CONSTANT( SHADE_MODEL_CUSTOM_1 );
BIND_CONSTANT( SHADE_MODEL_CUSTOM_2 );
BIND_CONSTANT( SHADE_MODEL_CUSTOM_3 );
BIND_CONSTANT( DEPTH_DRAW_ALWAYS );
BIND_CONSTANT( DEPTH_DRAW_OPAQUE_ONLY );
BIND_CONSTANT( DEPTH_DRAW_OPAQUE_PRE_PASS_ALPHA );
BIND_CONSTANT( DEPTH_DRAW_NEVER );
BIND_CONSTANT( BLEND_MODE_MIX );
BIND_CONSTANT( BLEND_MODE_ADD );
@ -205,15 +156,11 @@ Material::Material(const RID& p_material) {
flags[FLAG_INVERT_FACES]=false;
flags[FLAG_UNSHADED]=false;
flags[FLAG_ONTOP]=false;
flags[FLAG_WIREFRAME]=false;
flags[FLAG_BILLBOARD_TOGGLE]=false;
for(int i=0;i<HINT_MAX;i++)
hints[i]=false;
hints[HINT_NO_DEPTH_DRAW_FOR_ALPHA]=true;
depth_draw_mode=DEPTH_DRAW_OPAQUE_ONLY;
blend_mode=BLEND_MODE_MIX;
shade_model = SHADE_MODEL_LAMBERT;
}
Material::~Material() {
@ -340,6 +287,17 @@ FixedMaterial::TexCoordMode FixedMaterial::get_texcoord_mode(Parameter p_paramet
return texture_texcoord[p_parameter];
}
void FixedMaterial::set_light_shader(LightShader p_shader) {
light_shader=p_shader;
VS::get_singleton()->fixed_material_set_light_shader(material,VS::FixedMaterialLightShader(p_shader));
}
FixedMaterial::LightShader FixedMaterial::get_light_shader() const {
return light_shader;
}
void FixedMaterial::set_uv_transform(const Transform& p_transform) {
@ -356,16 +314,6 @@ Transform FixedMaterial::get_uv_transform() const {
void FixedMaterial::set_detail_blend_mode(BlendMode p_mode) {
detail_blend_mode=p_mode;
VS::get_singleton()->fixed_material_set_detail_blend_mode(material,(VS::MaterialBlendMode)p_mode);
}
Material::BlendMode FixedMaterial::get_detail_blend_mode() const {
return detail_blend_mode;
}
void FixedMaterial::set_fixed_flag(FixedFlag p_flag, bool p_value) {
ERR_FAIL_INDEX(p_flag,4);
@ -412,12 +360,12 @@ void FixedMaterial::_bind_methods() {
ObjectTypeDB::bind_method(_MD("set_uv_transform","transform"),&FixedMaterial::set_uv_transform);
ObjectTypeDB::bind_method(_MD("get_uv_transform"),&FixedMaterial::get_uv_transform);
ObjectTypeDB::bind_method(_MD("set_light_shader","shader"),&FixedMaterial::set_light_shader);
ObjectTypeDB::bind_method(_MD("get_light_shader"),&FixedMaterial::get_light_shader);
ObjectTypeDB::bind_method(_MD("set_point_size","size"),&FixedMaterial::set_point_size);
ObjectTypeDB::bind_method(_MD("get_point_size"),&FixedMaterial::get_point_size);
ObjectTypeDB::bind_method(_MD("set_detail_blend_mode","mode"),&FixedMaterial::set_detail_blend_mode);
ObjectTypeDB::bind_method(_MD("get_detail_blend_mode"),&FixedMaterial::get_detail_blend_mode);
ADD_PROPERTYI( PropertyInfo( Variant::BOOL, "fixed_flags/use_alpha" ), _SCS("set_fixed_flag"), _SCS("get_fixed_flag"), FLAG_USE_ALPHA);
ADD_PROPERTYI( PropertyInfo( Variant::BOOL, "fixed_flags/use_color_array" ), _SCS("set_fixed_flag"), _SCS("get_fixed_flag"), FLAG_USE_COLOR_ARRAY);
@ -427,11 +375,10 @@ void FixedMaterial::_bind_methods() {
ADD_PROPERTYI( PropertyInfo( Variant::COLOR, "params/specular", PROPERTY_HINT_COLOR_NO_ALPHA ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_SPECULAR );
ADD_PROPERTYI( PropertyInfo( Variant::COLOR, "params/emission", PROPERTY_HINT_COLOR_NO_ALPHA ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_EMISSION );
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/specular_exp", PROPERTY_HINT_RANGE,"1,64,0.01" ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_SPECULAR_EXP );
ADD_PROPERTY( PropertyInfo( Variant::REAL, "params/detail_blend", PROPERTY_HINT_ENUM,"Mix,Add,Sub,Mul" ), _SCS("set_detail_blend_mode"), _SCS("get_detail_blend_mode") );
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/detail_mix", PROPERTY_HINT_RANGE,"0,1,0.01" ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_DETAIL );
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/normal_depth", PROPERTY_HINT_RANGE,"-4,4,0.01" ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_NORMAL );
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/shade_param", PROPERTY_HINT_RANGE,"0,1,0.01" ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_SHADE_PARAM );
ADD_PROPERTY( PropertyInfo( Variant::INT, "params/shader", PROPERTY_HINT_ENUM,"Lambert,Wrap,Velvet,Toon" ), _SCS("set_light_shader"), _SCS("get_light_shader") );
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/shader_param", PROPERTY_HINT_RANGE,"0,1,0.01" ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_SHADE_PARAM );
ADD_PROPERTYI( PropertyInfo( Variant::REAL, "params/glow", PROPERTY_HINT_RANGE,"0,8,0.01" ), _SCS("set_parameter"), _SCS("get_parameter"), PARAM_GLOW );
ADD_PROPERTY( PropertyInfo( Variant::REAL, "params/point_size", PROPERTY_HINT_RANGE,"0,1024,1" ), _SCS("set_point_size"), _SCS("get_point_size"));
ADD_PROPERTY( PropertyInfo( Variant::TRANSFORM, "uv_xform"), _SCS("set_uv_transform"), _SCS("get_uv_transform") );
@ -479,7 +426,7 @@ FixedMaterial::FixedMaterial() : Material(VS::get_singleton()->fixed_material_cr
param[PARAM_SHADE_PARAM]=0.5;
param[PARAM_DETAIL]=1.0;
detail_blend_mode=BLEND_MODE_MIX;
fixed_flags[FLAG_USE_ALPHA]=false;
fixed_flags[FLAG_USE_COLOR_ARRAY]=false;
@ -490,6 +437,8 @@ FixedMaterial::FixedMaterial() : Material(VS::get_singleton()->fixed_material_cr
texture_texcoord[i]=TEXCOORD_UV;
}
light_shader=LIGHT_SHADER_LAMBERT;
point_size=1.0;
}
@ -633,7 +582,7 @@ ParticleSystemMaterial::ParticleSystemMaterial() :Material(VisualServer::get_sin
set_flag(FLAG_DOUBLE_SIDED,true);
set_flag(FLAG_UNSHADED,true);
set_hint(HINT_NO_DEPTH_DRAW,true);
set_depth_draw_mode(DEPTH_DRAW_NEVER);
VisualServer::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_ALPHA,true);
VisualServer::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY,true);
}
@ -680,7 +629,8 @@ void UnshadedMaterial::set_use_alpha(bool p_use_alpha) {
alpha=p_use_alpha;
VS::get_singleton()->fixed_material_set_flag(material,VS::FIXED_MATERIAL_FLAG_USE_ALPHA,p_use_alpha);
set_hint(HINT_NO_DEPTH_DRAW,p_use_alpha);
//set_depth_draw_mode();
//set_hint(HINT,p_use_alpha);
}