From 1cbe39e68ebe031950126a0613b21916b5603778 Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 20 Nov 2003 03:35:24 +0000 Subject: [PATCH] add set_fake_texture_image --- panda/src/gobj/texturePool.I | 64 +++++++++++++++++++++++++++++----- panda/src/gobj/texturePool.cxx | 12 +++---- panda/src/gobj/texturePool.h | 7 ++++ 3 files changed, 68 insertions(+), 15 deletions(-) diff --git a/panda/src/gobj/texturePool.I b/panda/src/gobj/texturePool.I index 4e7f15cb12..34dd8f5df8 100644 --- a/panda/src/gobj/texturePool.I +++ b/panda/src/gobj/texturePool.I @@ -16,9 +16,10 @@ // //////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////// // Function: TexturePool::has_texture -// Access: Public, Static +// Access: Published, Static // Description: Returns true if the texture has ever been loaded, // false otherwise. //////////////////////////////////////////////////////////////////// @@ -29,7 +30,7 @@ has_texture(const string &filename) { //////////////////////////////////////////////////////////////////// // Function: TexturePool::verify_texture -// Access: Public, Static +// Access: Published, Static // Description: Loads the given filename up into a texture, if it has // not already been loaded, and returns true to indicate // success, or false to indicate failure. If this @@ -44,7 +45,7 @@ verify_texture(const string &filename) { //////////////////////////////////////////////////////////////////// // Function: TexturePool::load_texture -// Access: Public, Static +// Access: Published, Static // Description: Loads the given filename up into a texture, if it has // not already been loaded, and returns the new texture. // If a texture with the same filename was previously @@ -58,7 +59,7 @@ load_texture(const string &filename, int primary_file_num_channels) { //////////////////////////////////////////////////////////////////// // Function: TexturePool::load_texture -// Access: Public, Static +// Access: Published, Static // Description: Loads the given filename up into a texture, if it has // not already been loaded, and returns the new texture. // If a texture with the same filename was previously @@ -75,7 +76,7 @@ load_texture(const string &filename, const string &alpha_filename, //////////////////////////////////////////////////////////////////// // Function: TexturePool::add_texture -// Access: Public, Static +// Access: Published, Static // Description: Adds the indicated already-loaded texture to the // pool. The texture must have a filename set for its // name. The texture will always replace any @@ -89,7 +90,7 @@ add_texture(Texture *texture) { //////////////////////////////////////////////////////////////////// // Function: TexturePool::release_texture -// Access: Public, Static +// Access: Published, Static // Description: Removes the indicated texture from the pool, // indicating it will never be loaded again; the texture // may then be freed. If this function is never called, @@ -107,7 +108,7 @@ release_texture(Texture *texture) { //////////////////////////////////////////////////////////////////// // Function: TexturePool::release_all_textures -// Access: Public, Static +// Access: Published, Static // Description: Releases all textures in the pool and restores the // pool to the empty state. //////////////////////////////////////////////////////////////////// @@ -118,7 +119,7 @@ release_all_textures() { //////////////////////////////////////////////////////////////////// // Function: TexturePool::garbage_collect -// Access: Public, Static +// Access: Published, Static // Description: Releases only those textures in the pool that have a // reference count of exactly 1; i.e. only those // textures that are not being used outside of the pool. @@ -131,7 +132,7 @@ garbage_collect() { //////////////////////////////////////////////////////////////////// // Function: TexturePool::list_contents -// Access: Public, Static +// Access: Published, Static // Description: Lists the contents of the texture pool to the // indicated output stream. //////////////////////////////////////////////////////////////////// @@ -140,6 +141,50 @@ list_contents(ostream &out) { get_ptr()->ns_list_contents(out); } +//////////////////////////////////////////////////////////////////// +// Function: TexturePool::set_fake_texture_image +// Access: Published, Static +// Description: Sets a bogus filename that will be loaded in lieu of +// any textures requested from this point on. +//////////////////////////////////////////////////////////////////// +INLINE void TexturePool:: +set_fake_texture_image(const string &filename) { + get_ptr()->_fake_texture_image = filename; +} + +//////////////////////////////////////////////////////////////////// +// Function: TexturePool::clear_fake_texture_image +// Access: Published, Static +// Description: Restores normal behavior of loading the textures +// actually requested. +//////////////////////////////////////////////////////////////////// +INLINE void TexturePool:: +clear_fake_texture_image() { + set_fake_texture_image(string()); +} + +//////////////////////////////////////////////////////////////////// +// Function: TexturePool::has_fake_texture_image +// Access: Published, Static +// Description: Returns true if fake_texture_image mode has been +// enabled, false if we are in the normal mode. +//////////////////////////////////////////////////////////////////// +INLINE bool TexturePool:: +has_fake_texture_image() { + return !get_fake_texture_image().empty(); +} + +//////////////////////////////////////////////////////////////////// +// Function: TexturePool::get_fake_texture_image +// Access: Published, Static +// Description: Returns the filename that was specified with a +// previous call to set_fake_texture_image(). +//////////////////////////////////////////////////////////////////// +INLINE const string &TexturePool:: +get_fake_texture_image() { + return get_ptr()->_fake_texture_image; +} + //////////////////////////////////////////////////////////////////// // Function: TexturePool::Constructor // Access: Private @@ -149,4 +194,5 @@ list_contents(ostream &out) { //////////////////////////////////////////////////////////////////// INLINE TexturePool:: TexturePool() { + _fake_texture_image = fake_texture_image; } diff --git a/panda/src/gobj/texturePool.cxx b/panda/src/gobj/texturePool.cxx index b65f8ecdb3..e8eb7ac196 100644 --- a/panda/src/gobj/texturePool.cxx +++ b/panda/src/gobj/texturePool.cxx @@ -35,8 +35,8 @@ bool TexturePool:: ns_has_texture(const Filename &orig_filename) { Filename filename(orig_filename); - if (!fake_texture_image.empty()) { - filename = fake_texture_image; + if (!_fake_texture_image.empty()) { + filename = _fake_texture_image; } if (use_vfs) { @@ -68,8 +68,8 @@ Texture *TexturePool:: ns_load_texture(const Filename &orig_filename, int primary_file_num_channels) { Filename filename(orig_filename); - if (!fake_texture_image.empty()) { - filename = fake_texture_image; + if (!_fake_texture_image.empty()) { + filename = _fake_texture_image; } if (use_vfs) { @@ -119,8 +119,8 @@ ns_load_texture(const Filename &orig_filename, Filename filename(orig_filename); Filename alpha_filename(orig_alpha_filename); - if (!fake_texture_image.empty()) { - return ns_load_texture(fake_texture_image, primary_file_num_channels); + if (!_fake_texture_image.empty()) { + return ns_load_texture(_fake_texture_image, primary_file_num_channels); } if (use_vfs) { diff --git a/panda/src/gobj/texturePool.h b/panda/src/gobj/texturePool.h index 2600dcd47c..349113e068 100644 --- a/panda/src/gobj/texturePool.h +++ b/panda/src/gobj/texturePool.h @@ -22,6 +22,7 @@ #include "pandabase.h" #include "texture.h" #include "filename.h" +#include "config_gobj.h" #include "pmap.h" @@ -54,6 +55,11 @@ PUBLISHED: INLINE static void list_contents(ostream &out); + INLINE static void set_fake_texture_image(const string &filename); + INLINE static void clear_fake_texture_image(); + INLINE static bool has_fake_texture_image(); + INLINE static const string &get_fake_texture_image(); + private: INLINE TexturePool(); @@ -74,6 +80,7 @@ private: static TexturePool *_global_ptr; typedef pmap Textures; Textures _textures; + string _fake_texture_image; }; #include "texturePool.I"