]> git.xonotic.org Git - xonotic/netradiant.git/blobdiff - tools/quake3/q3map2/model.c
new modes for minimap: -black = black on transparent, -white = white on transparent...
[xonotic/netradiant.git] / tools / quake3 / q3map2 / model.c
index 9847f6649338358489fe6ba231ac770029da68e1..c4df7ba774eddffc7d4fff4d76b6a8f14043ec34 100644 (file)
@@ -268,7 +268,8 @@ void InsertModel( char *name, int frame, m4x4_t transform, remap_t *remap, shade
                        continue;
                
                /* fix the surface's normals */
-               PicoFixSurfaceNormals( surface );
+               if( !(spawnFlags & 64) )
+                       PicoFixSurfaceNormals( surface );
                
                /* allocate a surface (ydnar: gs mods) */
                ds = AllocDrawSurface( SURFACE_TRIANGLES );
@@ -382,10 +383,20 @@ void InsertModel( char *name, int frame, m4x4_t transform, remap_t *remap, shade
                        {
                                dv->lightmap[ j ][ 0 ] = 0.0f;
                                dv->lightmap[ j ][ 1 ] = 0.0f;
-                               dv->color[ j ][ 0 ] = color[ 0 ];
-                               dv->color[ j ][ 1 ] = color[ 1 ];
-                               dv->color[ j ][ 2 ] = color[ 2 ];
-                               dv->color[ j ][ 3 ] = color[ 3 ];
+                               if(spawnFlags & 32) // spawnflag 32: model color -> alpha hack
+                               {
+                                       dv->color[ j ][ 0 ] = 255.0f;
+                                       dv->color[ j ][ 1 ] = 255.0f;
+                                       dv->color[ j ][ 2 ] = 255.0f;
+                                       dv->color[ j ][ 3 ] = color[ 0 ] * 0.3f + color[ 1 ] * 0.59f + color[ 2 ] * 0.11f;
+                               }
+                               else
+                               {
+                                       dv->color[ j ][ 0 ] = color[ 0 ];
+                                       dv->color[ j ][ 1 ] = color[ 1 ];
+                                       dv->color[ j ][ 2 ] = color[ 2 ];
+                                       dv->color[ j ][ 3 ] = color[ 3 ];
+                               }
                        }
                }
                
@@ -610,7 +621,10 @@ void AddTriangleModels( entity_t *e )
        }
        
        /* get lightmap scale */
+       /* vortex: added _ls key (short name of lightmapscale) */
        baseLightmapScale = FloatForKey( e, "_lightmapscale" );
+       if( baseLightmapScale <= 0.0f )
+               baseLightmapScale = FloatForKey( e, "_ls" );
        if( baseLightmapScale <= 0.0f )
                baseLightmapScale = 0.0f;
        
@@ -729,10 +743,13 @@ void AddTriangleModels( entity_t *e )
                        celShader = ShaderInfoForShader( shader );
                }
                else
-                       celShader = NULL;
+                       celShader = *globalCelShader ? ShaderInfoForShader(globalCelShader) : NULL;
                
                /* get lightmap scale */
+               /* vortex: added _ls key (short name of lightmapscale) */
                lightmapScale = FloatForKey( e2, "_lightmapscale" );
+               if( lightmapScale <= 0.0f )
+                       lightmapScale = FloatForKey( e2, "_ls" );
                if( lightmapScale <= 0.0f )
                        lightmapScale = baseLightmapScale;