Browse Source

- Changed the rules governing the ImageAsset filter mode. Now, the "FilterMode" on an ImageAsset actually overrides anything set for the global filter mode. The global filter mode i.e. "$pref::T2D::imageAssetGlobalFilterMode" is now specified as a default. If that isn't specified and a filter-mode on an ImageAsset isn't specified either then the default is to use "Nearest" filter mode.

MelvMay-GG 12 years ago
parent
commit
af8c063

+ 19 - 25
engine/source/2d/assets/ImageAsset.cc

@@ -178,9 +178,6 @@ ImageAsset::ImageAsset() :  mImageFile(StringTable->EmptyString),
     VECTOR_SET_ASSOCIATION( mFrames );
     VECTOR_SET_ASSOCIATION( mExplicitFrames );
 
-    // Set the default filter mode.    
-    setFilterMode( FILTER_BILINEAR );
-
     // Initialize explicit cell field names.
     if ( !explicitCellPropertiesInitialized )
     {
@@ -1032,32 +1029,29 @@ void ImageAsset::calculateImage( void )
         return;
     }
 
-    // Fetch global filter.
-    const char* pGlobalFilter = Con::getVariable( "$pref::T2D::imageAssetGlobalFilterMode" );
-
-    // Fetch global filter mode.
-    TextureFilterMode filterMode;
-
-    // Set the filter mode.
-    if ( pGlobalFilter != NULL && dStrlen(pGlobalFilter) > 0 )
-        filterMode = getFilterModeEnum( pGlobalFilter );
-    else
-        filterMode = FILTER_INVALID;
-    
-    // If global filter mode is invalid then use local filter mode.
-    if ( filterMode == FILTER_INVALID )
-        filterMode = mLocalFilterMode;
-
-    // Set filter mode.
-    if ( filterMode != FILTER_INVALID )
+    // Is the local filter mode specified?
+    if ( mLocalFilterMode != FILTER_INVALID )
     {
-        // Set filter mode if valid.
-        setTextureFilter( filterMode );
+        // Yes, so set filter mode.
+        setTextureFilter( mLocalFilterMode );
     }
     else
     {
-        // Set to nearest if invalid.
-        setTextureFilter( FILTER_NEAREST );
+        TextureFilterMode filterMode;
+
+        // No, so fetch the global filter.
+        const char* pGlobalFilter = Con::getVariable( "$pref::T2D::imageAssetGlobalFilterMode" );
+
+        // Fetch the global filter mode.
+        if ( pGlobalFilter != NULL && dStrlen(pGlobalFilter) > 0 )
+            filterMode = getFilterModeEnum( pGlobalFilter );
+
+        // If global filter mode is invalid then use local filter mode.
+        if ( filterMode == FILTER_INVALID )
+            filterMode = FILTER_NEAREST;
+
+        // Set filter mode.
+        setTextureFilter( filterMode );
     }
 
     // Calculate according to mode.

+ 1 - 0
modules/AppCore/1/scripts/defaultPreferences.cs

@@ -52,6 +52,7 @@ $pref::T2D::ParticlePlayerSizeScale = 1.0;
 $pref::T2D::ParticlePlayerForceScale = 1.0;
 $pref::T2D::warnFileDeprecated = 1;
 $pref::T2D::warnSceneOccupancy = 1;
+$pref::T2D::imageAssetGlobalFilterMode = Bilinear;
 
 /// Video
 $pref::Video::appliedPref = 0;