]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - plugins/shaders/shaders.cpp
Merge branch 'NateEag-master-patch-12920' into 'master'
[xonotic/netradiant.git] / plugins / shaders / shaders.cpp
index f982605e85157f05acd6f5cb1e35cdb08b8be9c0..14308bad3b10beb8a005cdfe677bb7b64e066d82 100644 (file)
@@ -93,9 +93,6 @@ void FreeShaders();
 
 void LoadShaderFile( const char *filename );
 
-qtexture_t *Texture_ForName( const char *filename );
-
-
 /*!
    NOTE TTimo: there is an important distinction between SHADER_NOT_FOUND and SHADER_NOTEX:
    SHADER_NOT_FOUND means we didn't find the raw texture or the shader for this
@@ -273,6 +270,7 @@ class ShaderTemplate
 {
 std::size_t m_refcount;
 CopiedString m_Name;
+CopiedString m_WadName;
 public:
 
 ShaderParameters m_params;
@@ -637,7 +635,7 @@ bool ShaderTemplate::parseDoom3( Tokeniser& tokeniser ){
                                m_nFlags |= QER_NONSOLID;
                        }
                        else if ( string_equal_nocase( token, "liquid" ) ) {
-                               m_nFlags |= QER_WATER;
+                               m_nFlags |= QER_LIQUID;
                        }
                        else if ( string_equal_nocase( token, "areaportal" ) ) {
                                m_nFlags |= QER_AREAPORTAL;
@@ -844,6 +842,7 @@ const ShaderArguments& m_args;
 const char* m_filename;
 // name is shader-name, otherwise texture-name ( if not a real shader )
 CopiedString m_Name;
+CopiedString m_WadName;
 
 qtexture_t* m_pTexture;
 qtexture_t* m_notfound;
@@ -921,6 +920,10 @@ const char* getName() const {
        return m_Name.c_str();
 }
 
+const char* getWadName() const {
+       return m_WadName.c_str();
+}
+
 bool IsInUse() const {
        return m_bInUse;
 }
@@ -1056,6 +1059,10 @@ void setName( const char* name ){
        m_Name = name;
 }
 
+void setWadName( const char* name ){
+       m_WadName = name;
+}
+
 class MapLayer : public ShaderLayer
 {
 qtexture_t* m_texture;
@@ -1105,12 +1112,6 @@ const ShaderLayer* firstLayer() const {
        }
        return &m_layers.front();
 }
-void forEachLayer( const ShaderLayerCallback& callback ) const {
-       for ( MapLayers::const_iterator i = m_layers.begin(); i != m_layers.end(); ++i )
-       {
-               callback( *i );
-       }
-}
 
 qtexture_t* lightFalloffImage() const {
        if ( !string_empty( m_template.m_lightFalloffImage.c_str() ) ) {
@@ -1276,6 +1277,7 @@ bool ShaderTemplate::parseQuake3( Tokeniser& tokeniser ){
 
                                if ( string_equal_nocase( surfaceparm, "fog" ) ) {
                                        m_nFlags |= QER_FOG;
+                                       m_nFlags |= QER_TRANS;
                                        if ( m_fTrans == 1.0f ) { // has not been explicitly set by qer_trans
                                                m_fTrans = 0.35f;
                                        }
@@ -1286,11 +1288,10 @@ bool ShaderTemplate::parseQuake3( Tokeniser& tokeniser ){
                                else if ( string_equal_nocase( surfaceparm, "nonsolid" ) ) {
                                        m_nFlags |= QER_NONSOLID;
                                }
-                               else if ( string_equal_nocase( surfaceparm, "water" ) ) {
-                                       m_nFlags |= QER_WATER;
-                               }
-                               else if ( string_equal_nocase( surfaceparm, "lava" ) ) {
-                                       m_nFlags |= QER_LAVA;
+                               else if ( string_equal_nocase( surfaceparm, "water" ) ||
+                                                       string_equal_nocase( surfaceparm, "lava" ) ||
+                                                       string_equal_nocase( surfaceparm, "slime") ){
+                                       m_nFlags |= QER_LIQUID;
                                }
                                else if ( string_equal_nocase( surfaceparm, "areaportal" ) ) {
                                        m_nFlags |= QER_AREAPORTAL;