#include <simgear/props/props.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
+#include <simgear/scene/util/SGSceneFeatures.hxx>
#include "matmodel.hxx"
class SGMaterialGlyph;
-
/**
* A material in the scene graph.
*
// Public methods.
////////////////////////////////////////////////////////////////////
- /**
- * Force the texture to load if it hasn't already.
- *
- * @return true if the texture loaded, false if it was loaded
- * already.
- */
- bool load_texture (int n = -1);
-
-
/**
* Get the textured state.
*/
- osg::StateSet *get_state (int n = -1) const;
+ osg::StateSet *get_state (int n = -1);
/**
double get_bumpiness () const { return bumpiness; }
/**
- * Get the load resistence
+ * Get the load resistance
*/
- double get_load_resistence () const { return load_resistence; }
+ double get_load_resistance () const { return load_resistance; }
/**
* Get the list of names for this material
*/
SGMaterialGlyph * get_glyph (const string& name) const;
+ void set_light_color(const SGVec4f& color)
+ { emission = color; }
+ const SGVec4f& get_light_color() const
+ { return emission; }
+
+ SGVec2f get_tex_coord_scale() const
+ {
+ float tex_width = get_xsize();
+ float tex_height = get_ysize();
+
+ return SGVec2f((0 < tex_width) ? 1000.0f/tex_width : 1.0f,
+ (0 < tex_height) ? 1000.0f/tex_height : 1.0f);
+ }
+
protected:
\f
// use mipmapping?
int mipmap;
- // use anisotropic filtering
- float filtering;
-
// coverage of night lighting.
double light_coverage;
// the bumpiness of that surface material
double bumpiness;
- // the load resistence of that surface material
- double load_resistence;
+ // the load resistance of that surface material
+ double load_resistance;
// material properties
SGVec4f ambient, diffuse, specular, emission;
void build_state( bool defer_tex_load );
void set_state( osg::StateSet *s );
- void assignTexture( osg::StateSet *state, const std::string &fname, int _wrapu = TRUE, int _wrapv = TRUE, int _mipmap = TRUE, float filtering = 1.0f );
+ void assignTexture( osg::StateSet *state, const std::string &fname, int _wrapu = TRUE, int _wrapv = TRUE, int _mipmap = TRUE );
};
const SGMaterial* getMaterial() const
{ return mMaterial; }
private:
- SGSharedPtr<const SGMaterial> mMaterial;
+ // this cannot be an SGSharedPtr since that would create a cicrular reference
+ // making it impossible to ever free the space needed by SGMaterial
+ const SGMaterial* mMaterial;
};
+void
+SGSetTextureFilter( int max);
+
+int
+SGGetTextureFilter();
+
#endif // _SG_MAT_HXX