diff options
Diffstat (limited to '')
| -rw-r--r-- | scene/resources/material.h | 124 |
1 files changed, 50 insertions, 74 deletions
diff --git a/scene/resources/material.h b/scene/resources/material.h index fc1ea3d89..5b18ac61f 100644 --- a/scene/resources/material.h +++ b/scene/resources/material.h @@ -29,11 +29,11 @@ #ifndef MATERIAL_H #define MATERIAL_H -#include "servers/visual_server.h" -#include "scene/resources/texture.h" -#include "scene/resources/shader.h" #include "resource.h" +#include "scene/resources/shader.h" +#include "scene/resources/texture.h" #include "servers/visual/shader_language.h" +#include "servers/visual_server.h" /** @author Juan Linietsky <reduzio@gmail.com> @@ -41,12 +41,11 @@ class Material : public Resource { - OBJ_TYPE(Material,Resource); + OBJ_TYPE(Material, Resource); RES_BASE_EXTENSION("mtl"); - OBJ_SAVE_TYPE( Material ); + OBJ_SAVE_TYPE(Material); public: - enum Flag { FLAG_VISIBLE = VS::MATERIAL_FLAG_VISIBLE, FLAG_DOUBLE_SIDED = VS::MATERIAL_FLAG_DOUBLE_SIDED, @@ -74,20 +73,19 @@ public: DEPTH_DRAW_NEVER = VS::MATERIAL_DEPTH_DRAW_NEVER }; - - private: BlendMode blend_mode; bool flags[VS::MATERIAL_FLAG_MAX]; float line_width; DepthDrawMode depth_draw_mode; + protected: RID material; static void _bind_methods(); public: - void set_flag(Flag p_flag,bool p_enabled); + void set_flag(Flag p_flag, bool p_enabled); bool get_flag(Flag p_flag) const; void set_blend_mode(BlendMode p_blend_mode); @@ -101,63 +99,58 @@ public: virtual RID get_rid() const; - Material(const RID& p_rid=RID()); + Material(const RID &p_rid = RID()); virtual ~Material(); }; -VARIANT_ENUM_CAST( Material::Flag ); -VARIANT_ENUM_CAST( Material::DepthDrawMode ); - -VARIANT_ENUM_CAST( Material::BlendMode ); +VARIANT_ENUM_CAST(Material::Flag); +VARIANT_ENUM_CAST(Material::DepthDrawMode); +VARIANT_ENUM_CAST(Material::BlendMode); class FixedMaterial : public Material { - OBJ_TYPE( FixedMaterial, Material ); + OBJ_TYPE(FixedMaterial, Material); REVERSE_GET_PROPERTY_LIST public: - enum Parameter { - PARAM_DIFFUSE=VS::FIXED_MATERIAL_PARAM_DIFFUSE, - PARAM_DETAIL=VS::FIXED_MATERIAL_PARAM_DETAIL, - PARAM_SPECULAR=VS::FIXED_MATERIAL_PARAM_SPECULAR, - PARAM_EMISSION=VS::FIXED_MATERIAL_PARAM_EMISSION, - PARAM_SPECULAR_EXP=VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP, - PARAM_GLOW=VS::FIXED_MATERIAL_PARAM_GLOW, - PARAM_NORMAL=VS::FIXED_MATERIAL_PARAM_NORMAL, - PARAM_SHADE_PARAM=VS::FIXED_MATERIAL_PARAM_SHADE_PARAM, - PARAM_MAX=VS::FIXED_MATERIAL_PARAM_MAX + PARAM_DIFFUSE = VS::FIXED_MATERIAL_PARAM_DIFFUSE, + PARAM_DETAIL = VS::FIXED_MATERIAL_PARAM_DETAIL, + PARAM_SPECULAR = VS::FIXED_MATERIAL_PARAM_SPECULAR, + PARAM_EMISSION = VS::FIXED_MATERIAL_PARAM_EMISSION, + PARAM_SPECULAR_EXP = VS::FIXED_MATERIAL_PARAM_SPECULAR_EXP, + PARAM_GLOW = VS::FIXED_MATERIAL_PARAM_GLOW, + PARAM_NORMAL = VS::FIXED_MATERIAL_PARAM_NORMAL, + PARAM_SHADE_PARAM = VS::FIXED_MATERIAL_PARAM_SHADE_PARAM, + PARAM_MAX = VS::FIXED_MATERIAL_PARAM_MAX }; - enum TexCoordMode { - TEXCOORD_UV=VS::FIXED_MATERIAL_TEXCOORD_UV, - TEXCOORD_UV_TRANSFORM=VS::FIXED_MATERIAL_TEXCOORD_UV_TRANSFORM, - TEXCOORD_UV2=VS::FIXED_MATERIAL_TEXCOORD_UV2, - TEXCOORD_SPHERE=VS::FIXED_MATERIAL_TEXCOORD_SPHERE + TEXCOORD_UV = VS::FIXED_MATERIAL_TEXCOORD_UV, + TEXCOORD_UV_TRANSFORM = VS::FIXED_MATERIAL_TEXCOORD_UV_TRANSFORM, + TEXCOORD_UV2 = VS::FIXED_MATERIAL_TEXCOORD_UV2, + TEXCOORD_SPHERE = VS::FIXED_MATERIAL_TEXCOORD_SPHERE }; enum FixedFlag { - FLAG_USE_ALPHA=VS::FIXED_MATERIAL_FLAG_USE_ALPHA, - FLAG_USE_COLOR_ARRAY=VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY, - FLAG_USE_POINT_SIZE=VS::FIXED_MATERIAL_FLAG_USE_POINT_SIZE, - FLAG_DISCARD_ALPHA=VS::FIXED_MATERIAL_FLAG_DISCARD_ALPHA, - FLAG_USE_XY_NORMALMAP=VS::FIXED_MATERIAL_FLAG_USE_XY_NORMALMAP, - FLAG_MAX=VS::FIXED_MATERIAL_FLAG_MAX + FLAG_USE_ALPHA = VS::FIXED_MATERIAL_FLAG_USE_ALPHA, + FLAG_USE_COLOR_ARRAY = VS::FIXED_MATERIAL_FLAG_USE_COLOR_ARRAY, + FLAG_USE_POINT_SIZE = VS::FIXED_MATERIAL_FLAG_USE_POINT_SIZE, + FLAG_DISCARD_ALPHA = VS::FIXED_MATERIAL_FLAG_DISCARD_ALPHA, + FLAG_USE_XY_NORMALMAP = VS::FIXED_MATERIAL_FLAG_USE_XY_NORMALMAP, + FLAG_MAX = VS::FIXED_MATERIAL_FLAG_MAX }; enum LightShader { - LIGHT_SHADER_LAMBERT=VS::FIXED_MATERIAL_LIGHT_SHADER_LAMBERT, - LIGHT_SHADER_WRAP=VS::FIXED_MATERIAL_LIGHT_SHADER_WRAP, - LIGHT_SHADER_VELVET=VS::FIXED_MATERIAL_LIGHT_SHADER_VELVET, - LIGHT_SHADER_TOON=VS::FIXED_MATERIAL_LIGHT_SHADER_TOON + LIGHT_SHADER_LAMBERT = VS::FIXED_MATERIAL_LIGHT_SHADER_LAMBERT, + LIGHT_SHADER_WRAP = VS::FIXED_MATERIAL_LIGHT_SHADER_WRAP, + LIGHT_SHADER_VELVET = VS::FIXED_MATERIAL_LIGHT_SHADER_VELVET, + LIGHT_SHADER_TOON = VS::FIXED_MATERIAL_LIGHT_SHADER_TOON }; private: - - struct Node { int param; @@ -172,21 +165,16 @@ private: bool fixed_flags[FLAG_MAX]; float point_size; - Transform uv_transform; protected: - - static void _bind_methods(); - public: - void set_fixed_flag(FixedFlag p_flag, bool p_value); bool get_fixed_flag(FixedFlag p_flag) const; - void set_parameter(Parameter p_parameter, const Variant& p_value); + void set_parameter(Parameter p_parameter, const Variant &p_value); Variant get_parameter(Parameter p_parameter) const; void set_texture(Parameter p_parameter, Ref<Texture> p_texture); @@ -198,7 +186,7 @@ public: void set_light_shader(LightShader p_shader); LightShader get_light_shader() const; - void set_uv_transform(const Transform& p_transform); + void set_uv_transform(const Transform &p_transform); Transform get_uv_transform() const; void set_point_size(float p_transform); @@ -206,53 +194,41 @@ public: FixedMaterial(); ~FixedMaterial(); - }; - - -VARIANT_ENUM_CAST( FixedMaterial::Parameter ); -VARIANT_ENUM_CAST( FixedMaterial::TexCoordMode ); -VARIANT_ENUM_CAST( FixedMaterial::FixedFlag ); -VARIANT_ENUM_CAST( FixedMaterial::LightShader ); +VARIANT_ENUM_CAST(FixedMaterial::Parameter); +VARIANT_ENUM_CAST(FixedMaterial::TexCoordMode); +VARIANT_ENUM_CAST(FixedMaterial::FixedFlag); +VARIANT_ENUM_CAST(FixedMaterial::LightShader); class ShaderMaterial : public Material { - OBJ_TYPE( ShaderMaterial, Material ); + OBJ_TYPE(ShaderMaterial, Material); Ref<Shader> shader; - - void _shader_changed(); - static void _shader_parse(void*p_self,ShaderLanguage::ProgramNode*p_node); + static void _shader_parse(void *p_self, ShaderLanguage::ProgramNode *p_node); protected: - - bool _set(const StringName& p_name, const Variant& p_value); - bool _get(const StringName& p_name,Variant &r_ret) const; - void _get_property_list( List<PropertyInfo> *p_list) const; + bool _set(const StringName &p_name, const Variant &p_value); + bool _get(const StringName &p_name, Variant &r_ret) const; + void _get_property_list(List<PropertyInfo> *p_list) const; static void _bind_methods(); public: - - void set_shader(const Ref<Shader>& p_shader); + void set_shader(const Ref<Shader> &p_shader); Ref<Shader> get_shader() const; - void set_shader_param(const StringName& p_param,const Variant& p_value); - Variant get_shader_param(const StringName& p_param) const; + void set_shader_param(const StringName &p_param, const Variant &p_value); + Variant get_shader_param(const StringName &p_param) const; - void get_argument_options(const StringName& p_function,int p_idx,List<String>*r_options) const; + void get_argument_options(const StringName &p_function, int p_idx, List<String> *r_options) const; ShaderMaterial(); }; ////////////////////// - - - - - #endif |
