]> de.git.xonotic.org Git - xonotic/netradiant.git/blobdiff - libs/picomodel/pm_ase.c
uncrustify! now the code is only ugly on the *inside*
[xonotic/netradiant.git] / libs / picomodel / pm_ase.c
index c8465ce6cf01c391dbc38a30e7f309e3aaddcd46..dc31dd5f1cf814e84f3a1dfd395e86c651d75e6f 100644 (file)
@@ -1,36 +1,36 @@
 /* -----------------------------------------------------------------------------
 
-PicoModel Library
+   PicoModel Library
 
-Copyright (c) 2002, Randy Reddig & seaw0lf
-All rights reserved.
+   Copyright (c) 2002, Randy Reddig & seaw0lf
+   All rights reserved.
 
-Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
+   Redistribution and use in source and binary forms, with or without modification,
+   are permitted provided that the following conditions are met:
 
-Redistributions of source code must retain the above copyright notice, this list
-of conditions and the following disclaimer.
+   Redistributions of source code must retain the above copyright notice, this list
+   of conditions and the following disclaimer.
 
-Redistributions in binary form must reproduce the above copyright notice, this
-list of conditions and the following disclaimer in the documentation and/or
-other aseMaterialList provided with the distribution.
+   Redistributions in binary form must reproduce the above copyright notice, this
+   list of conditions and the following disclaimer in the documentation and/or
+   other aseMaterialList provided with the distribution.
 
-Neither the names of the copyright holders nor the names of its contributors may
-be used to endorse or promote products derived from this software without
-specific prior written permission.
+   Neither the names of the copyright holders nor the names of its contributors may
+   be used to endorse or promote products derived from this software without
+   specific prior written permission.
 
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
-ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+   ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+   WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+   DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+   ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+   ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
------------------------------------------------------------------------------ */
+   ----------------------------------------------------------------------------- */
 
 
 /* marker */
@@ -72,14 +72,12 @@ typedef struct aseMaterial_s
 } aseMaterial_t;
 
 /* Material/SubMaterial management functions */
-static aseMaterial_t* _ase_get_material ( aseMaterial_t* list , int mtlIdParent )
-{
+static aseMaterial_t* _ase_get_material( aseMaterial_t* list, int mtlIdParent ){
        aseMaterial_t* mtl = list;
 
        while ( mtl )
        {
-               if ( mtlIdParent == mtl->mtlId )
-               {
+               if ( mtlIdParent == mtl->mtlId ) {
                        break;
                }
                mtl = mtl->next;
@@ -87,22 +85,19 @@ static aseMaterial_t* _ase_get_material ( aseMaterial_t* list , int mtlIdParent
        return mtl;
 }
 
-static aseSubMaterial_t* _ase_get_submaterial ( aseMaterial_t* list, int  mtlIdParent , int subMtlId )
-{
-       aseMaterial_t* parent = _ase_get_material ( list , mtlIdParent );
+static aseSubMaterial_t* _ase_get_submaterial( aseMaterial_t* list, int mtlIdParent, int subMtlId ){
+       aseMaterial_t* parent = _ase_get_material( list, mtlIdParent );
        aseSubMaterial_t* subMtl = NULL;
 
-       if ( !parent )
-       {
-               _pico_printf ( PICO_ERROR , "No ASE material exists with id %i\n" , mtlIdParent );
+       if ( !parent ) {
+               _pico_printf( PICO_ERROR, "No ASE material exists with id %i\n", mtlIdParent );
                return NULL;
        }
 
        subMtl = parent->subMtls;
        while ( subMtl )
        {
-               if ( subMtlId == subMtl->subMtlId )
-               {
+               if ( subMtlId == subMtl->subMtlId ) {
                        break;
                }
                subMtl = subMtl->next;
@@ -110,8 +105,7 @@ static aseSubMaterial_t* _ase_get_submaterial ( aseMaterial_t* list, int  mtlIdP
        return subMtl;
 }
 
-static aseMaterial_t* _ase_add_material( aseMaterial_t **list, int mtlIdParent )
-{
+static aseMaterial_t* _ase_add_material( aseMaterial_t **list, int mtlIdParent ){
        aseMaterial_t *mtl = _pico_calloc( 1, sizeof( aseMaterial_t ) );
        mtl->mtlId = mtlIdParent;
        mtl->subMtls = NULL;
@@ -121,14 +115,12 @@ static aseMaterial_t* _ase_add_material( aseMaterial_t **list, int mtlIdParent )
        return mtl;
 }
 
-static aseSubMaterial_t* _ase_add_submaterial( aseMaterial_t **list, int mtlIdParent, int subMtlId, picoShader_t* shader )
-{
+static aseSubMaterial_t* _ase_add_submaterial( aseMaterial_t **list, int mtlIdParent, int subMtlId, picoShader_t* shader ){
        aseMaterial_t *parent = _ase_get_material( *list,  mtlIdParent );
-       aseSubMaterial_t *subMtl = _pico_calloc( 1, sizeof ( aseSubMaterial_t ) );
+       aseSubMaterial_t *subMtl = _pico_calloc( 1, sizeof( aseSubMaterial_t ) );
 
-       if ( !parent )
-       {
-               parent = _ase_add_material ( list , mtlIdParent );
+       if ( !parent ) {
+               parent = _ase_add_material( list, mtlIdParent );
        }
 
        subMtl->shader = shader;
@@ -139,8 +131,7 @@ static aseSubMaterial_t* _ase_add_submaterial( aseMaterial_t **list, int mtlIdPa
        return subMtl;
 }
 
-static void _ase_free_materials( aseMaterial_t **list )
-{
+static void _ase_free_materials( aseMaterial_t **list ){
        aseMaterial_t* mtl = *list;
        aseSubMaterial_t* subMtl = NULL;
 
@@ -153,29 +144,28 @@ static void _ase_free_materials( aseMaterial_t **list )
                while ( subMtl )
                {
                        subMtlTemp = subMtl->next;
-                       _pico_free ( subMtl );
+                       _pico_free( subMtl );
                        subMtl = subMtlTemp;
                }
                mtlTemp = mtl->next;
-               _pico_free ( mtl );
+               _pico_free( mtl );
                mtl = mtlTemp;
        }
-       (*list) = NULL;
+       ( *list ) = NULL;
 }
 
 #ifdef DEBUG_PM_ASE
-static void _ase_print_materials( aseMaterial_t *list )
-{
+static void _ase_print_materials( aseMaterial_t *list ){
        aseMaterial_t* mtl = list;
        aseSubMaterial_t* subMtl = NULL;
 
        while ( mtl )
        {
-               _pico_printf ( PICO_NORMAL ,  "ASE Material %i" , mtl->mtlId );
+               _pico_printf( PICO_NORMAL,  "ASE Material %i", mtl->mtlId );
                subMtl = mtl->subMtls;
                while ( subMtl )
                {
-                       _pico_printf ( PICO_NORMAL ,  " -- ASE SubMaterial %i - %s\n" , subMtl->subMtlId , subMtl->shader->name );
+                       _pico_printf( PICO_NORMAL,  " -- ASE SubMaterial %i - %s\n", subMtl->subMtlId, subMtl->shader->name );
                        subMtl = subMtl->next;
                }
                mtl = mtl->next;
@@ -196,16 +186,14 @@ typedef struct aseFace_s
 } aseFace_t;
 
 /* ASE Face management functions */
-void _ase_add_face( aseFace_t **list, aseFace_t **tail, aseFace_t *newFace )
-{
+void _ase_add_face( aseFace_t **list, aseFace_t **tail, aseFace_t *newFace ){
        /* insert as head of list */
-       if ( !(*list) )
-       {
+       if ( !( *list ) ) {
                *list = newFace;
        }
        else
        {
-               (*tail)->next = newFace;
+               ( *tail )->next = newFace;
        }
 
        *tail = newFace;
@@ -217,8 +205,7 @@ void _ase_add_face( aseFace_t **list, aseFace_t **tail, aseFace_t *newFace )
        newFace->index[8] = -1;
 }
 
-aseFace_t* _ase_get_face_for_index( aseFace_t *list, int index )
-{
+aseFace_t* _ase_get_face_for_index( aseFace_t *list, int index ){
        int counter = 0;
        aseFace_t* face = list;
 
@@ -229,20 +216,19 @@ aseFace_t* _ase_get_face_for_index( aseFace_t *list, int index )
        }
        return face;
 }
-static void _ase_free_faces (aseFace_t** list, aseFace_t** tail )
-{
+static void _ase_free_faces( aseFace_t** list, aseFace_t** tail ){
        aseFace_t* face = *list;
        aseFace_t* tempFace = NULL;
 
        while ( face )
        {
                tempFace = face->next;
-               _pico_free ( face );
+               _pico_free( face );
                face = tempFace;
        }
 
-       (*list) = NULL;
-       (*tail) = NULL;
+       ( *list ) = NULL;
+       ( *tail ) = NULL;
 }
 
 /* todo:
@@ -252,32 +238,31 @@ static void _ase_free_faces (aseFace_t** list, aseFace_t** tail )
 /* _ase_canload:
  *  validates a 3dsmax ase model file.
  */
-static int _ase_canload( PM_PARAMS_CANLOAD )
-{
+static int _ase_canload( PM_PARAMS_CANLOAD ){
        picoParser_t *p;
 
 
        /* quick data length validation */
-       if( bufSize < 80 )
+       if ( bufSize < 80 ) {
                return PICO_PMV_ERROR_SIZE;
+       }
 
        /* keep the friggin compiler happy */
        *fileName = *fileName;
 
        /* create pico parser */
        p = _pico_new_parser( (picoByte_t*) buffer, bufSize );
-       if( p == NULL )
+       if ( p == NULL ) {
                return PICO_PMV_ERROR_MEMORY;
+       }
 
        /* get first token */
-       if( _pico_parse_first( p ) == NULL)
-       {
+       if ( _pico_parse_first( p ) == NULL ) {
                return PICO_PMV_ERROR_IDENT;
        }
 
        /* check first token */
-       if( _pico_stricmp( p->token, "*3dsmax_asciiexport" ) )
-       {
+       if ( _pico_stricmp( p->token, "*3dsmax_asciiexport" ) ) {
                _pico_free_parser( p );
                return PICO_PMV_ERROR_IDENT;
        }
@@ -292,17 +277,16 @@ static int _ase_canload( PM_PARAMS_CANLOAD )
 
 
 /* _ase_submit_triangles - jhefty
- use the surface and the current face list to look up material/submaterial IDs
- and submit them to the model for proper processing
  use the surface and the current face list to look up material/submaterial IDs
  and submit them to the model for proper processing
 
-The following still holds from ydnar's _ase_make_surface:
- indexes 0 1 2 = vert indexes
- indexes 3 4 5 = st indexes
- indexes 6 7 8 = color indexes (new)
-*/
+   The following still holds from ydnar's _ase_make_surface:
  indexes 0 1 2 = vert indexes
  indexes 3 4 5 = st indexes
  indexes 6 7 8 = color indexes (new)
+ */
 
-static void _ase_submit_triangles ( picoSurface_t* surface , picoModel_t* model , aseMaterial_t* materials , aseFace_t* faces )
-{
+static void _ase_submit_triangles( picoSurface_t* surface, picoModel_t* model, aseMaterial_t* materials, aseFace_t* faces ){
        aseFace_t* face;
        aseSubMaterial_t* subMtl;
        picoVec3_t* xyz[3];
@@ -316,27 +300,24 @@ static void _ase_submit_triangles ( picoSurface_t* surface , picoModel_t* model
        {
                /* look up the shader for the material/submaterial pair */
                subMtl = _ase_get_submaterial( materials, face->mtlId, face->subMtlId );
-               if( subMtl == NULL )
-               {
+               if ( subMtl == NULL ) {
                        /* ydnar: trying default submaterial */
                        subMtl = _ase_get_submaterial( materials, face->mtlId, 0 );
-                       if( subMtl == NULL )
-                       {
+                       if ( subMtl == NULL ) {
                                _pico_printf( PICO_ERROR, "Could not find material/submaterial for id %d/%d\n", face->mtlId, face->subMtlId );
                                return;
                        }
                }
 
                /* we pull the data from the surface using the facelist data */
-               for ( i = 0 ; i < 3 ; i ++ )
+               for ( i = 0 ; i < 3 ; i++ )
                {
-                       xyz[i]    = (picoVec3_t*) PicoGetSurfaceXYZ   ( surface, face->index[ i ] );
+                       xyz[i]    = (picoVec3_t*) PicoGetSurfaceXYZ( surface, face->index[ i ] );
                        normal[i] = (picoVec3_t*) PicoGetSurfaceNormal( surface, face->index[ i ] );
-                       st[i]     = (picoVec2_t*) PicoGetSurfaceST    ( surface, 0, face->index[ i + 3 ] );
+                       st[i]     = (picoVec2_t*) PicoGetSurfaceST( surface, 0, face->index[ i + 3 ] );
 
-                       if ( face->index [ i + 6] >= 0 )
-                       {
-                               color[i]  = (picoColor_t*)PicoGetSurfaceColor ( surface, 0, face->index[ i + 6 ] );
+                       if ( face->index [ i + 6] >= 0 ) {
+                               color[i]  = (picoColor_t*)PicoGetSurfaceColor( surface, 0, face->index[ i + 6 ] );
                        }
                        else
                        {
@@ -346,7 +327,7 @@ static void _ase_submit_triangles ( picoSurface_t* surface , picoModel_t* model
                }
 
                /* submit the triangle to the model */
-               PicoAddTriangleToModel ( model , xyz , normal , 1 , st , 1 , color , subMtl->shader );
+               PicoAddTriangleToModel( model, xyz, normal, 1, st, 1, color, subMtl->shader );
 
                /* advance to the next face */
                face = face->next;
@@ -355,13 +336,12 @@ static void _ase_submit_triangles ( picoSurface_t* surface , picoModel_t* model
 
 /* _ase_load:
  *  loads a 3dsmax ase model file.
-*/
-static picoModel_t *_ase_load( PM_PARAMS_LOAD )
-{
+ */
+static picoModel_t *_ase_load( PM_PARAMS_LOAD ){
        picoModel_t    *model;
        picoSurface_t  *surface = NULL;
        picoParser_t   *p;
-       char                    lastNodeName[ 1024 ];
+       char lastNodeName[ 1024 ];
 
        aseFace_t* faces = NULL;
        aseFace_t* facesTail = NULL;
@@ -374,21 +354,22 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
 #endif
 
        /* helper */
-       #define _ase_error_return(m) \
+       #define _ase_error_return( m ) \
        { \
-               _pico_printf( PICO_ERROR,"%s in ASE, line %d.",m,p->curLine); \
-               _pico_free_parser( p ); \
-               PicoFreeModel( model ); \
+               _pico_printf( PICO_ERROR,"%s in ASE, line %d.",m,p->curLine ); \
+               _pico_free_parser( p ); \
+               PicoFreeModel( model ); \
                return NULL; \
        }
        /* create a new pico parser */
        p = _pico_new_parser( (picoByte_t *)buffer,bufSize );
-       if (p == NULL) return NULL;
+       if ( p == NULL ) {
+               return NULL;
+       }
 
        /* create a new pico model */
        model = PicoNewModel();
-       if (model == NULL)
-       {
+       if ( model == NULL ) {
                _pico_free_parser( p );
                return NULL;
        }
@@ -398,48 +379,47 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
        PicoSetModelFileName( model, fileName );
 
        /* initialize some stuff */
-       memset( lastNodeName,0,sizeof(lastNodeName) );
+       memset( lastNodeName,0,sizeof( lastNodeName ) );
 
        /* parse ase model file */
-       while( 1 )
+       while ( 1 )
        {
                /* get first token on line */
-               if (_pico_parse_first( p ) == NULL)
+               if ( _pico_parse_first( p ) == NULL ) {
                        break;
+               }
 
                /* we just skip empty lines */
-               if (p->token == NULL || !strlen( p->token ))
+               if ( p->token == NULL || !strlen( p->token ) ) {
                        continue;
+               }
 
                /* we skip invalid ase statements */
-               if (p->token[0] != '*' && p->token[0] != '{' && p->token[0] != '}')
-               {
+               if ( p->token[0] != '*' && p->token[0] != '{' && p->token[0] != '}' ) {
                        _pico_parse_skip_rest( p );
                        continue;
                }
                /* remember node name */
-               if (!_pico_stricmp(p->token,"*node_name"))
-               {
+               if ( !_pico_stricmp( p->token,"*node_name" ) ) {
                        /* read node name */
                        char *ptr = _pico_parse( p,0 );
-                       if (ptr == NULL)
-                               _ase_error_return("Node name parse error");
+                       if ( ptr == NULL ) {
+                               _ase_error_return( "Node name parse error" );
+                       }
 
                        /* remember node name */
-                       strncpy( lastNodeName,ptr,sizeof(lastNodeName) );
+                       strncpy( lastNodeName,ptr,sizeof( lastNodeName ) );
                }
                /* model mesh (originally contained within geomobject) */
-               else if (!_pico_stricmp(p->token,"*mesh"))
-               {
+               else if ( !_pico_stricmp( p->token,"*mesh" ) ) {
                        /* finish existing surface */
                        //_ase_make_surface( model, &surface );
-                       _ase_submit_triangles (surface, model ,materials,faces);
-                       _ase_free_faces (&faces,&facesTail);
+                       _ase_submit_triangles( surface, model,materials,faces );
+                       _ase_free_faces( &faces,&facesTail );
 
                        /* allocate new pico surface */
                        surface = PicoNewSurface( NULL );
-                       if (surface == NULL)
-                       {
+                       if ( surface == NULL ) {
                                PicoFreeModel( model );
                                return NULL;
                        }
@@ -448,18 +428,19 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                /* geomobjects after the mesh blocks. we must assume that the */
                /* new mesh was already created so all we can do here is assign */
                /* the material reference id (shader index) now. */
-               else if (!_pico_stricmp(p->token,"*material_ref"))
-               {
+               else if ( !_pico_stricmp( p->token,"*material_ref" ) ) {
                        int mtlId;
                        aseFace_t* face;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
-                               _ase_error_return("Missing mesh for material reference");
+                       if ( surface == NULL ) {
+                               _ase_error_return( "Missing mesh for material reference" );
+                       }
 
                        /* get the material ref (0..n) */
-                       if (!_pico_parse_int( p,&mtlId) )
-                               _ase_error_return("Missing material reference ID");
+                       if ( !_pico_parse_int( p,&mtlId ) ) {
+                               _ase_error_return( "Missing material reference ID" );
+                       }
 
                        /* fix up all of the aseFaceList in the surface to point to the parent material */
                        /* we've already saved off their subMtl */
@@ -471,88 +452,95 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                        }
                }
                /* model mesh vertex */
-               else if (!_pico_stricmp(p->token,"*mesh_vertex"))
-               {
-                       picoVec3_t      v;
-                       int                     index;
+               else if ( !_pico_stricmp( p->token,"*mesh_vertex" ) ) {
+                       picoVec3_t v;
+                       int index;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get vertex data (orig: index +y -x +z) */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("Vertex parse error");
-                       if (!_pico_parse_vec( p,v ))
-                               _ase_error_return("Vertex parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "Vertex parse error" );
+                       }
+                       if ( !_pico_parse_vec( p,v ) ) {
+                               _ase_error_return( "Vertex parse error" );
+                       }
 
                        /* set vertex */
                        PicoSetSurfaceXYZ( surface,index,v );
                }
                /* model mesh vertex normal */
-               else if (!_pico_stricmp(p->token,"*mesh_vertexnormal"))
-               {
-                       picoVec3_t      v;
-                       int                     index;
+               else if ( !_pico_stricmp( p->token,"*mesh_vertexnormal" ) ) {
+                       picoVec3_t v;
+                       int index;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get vertex data (orig: index +y -x +z) */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("Vertex parse error");
-                       if (!_pico_parse_vec( p,v ))
-                               _ase_error_return("Vertex parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "Vertex parse error" );
+                       }
+                       if ( !_pico_parse_vec( p,v ) ) {
+                               _ase_error_return( "Vertex parse error" );
+                       }
 
                        /* set vertex */
                        PicoSetSurfaceNormal( surface,index,v );
                }
                /* model mesh face */
-               else if (!_pico_stricmp(p->token,"*mesh_face"))
-               {
+               else if ( !_pico_stricmp( p->token,"*mesh_face" ) ) {
                        picoIndex_t indexes[3];
-                       int                     index;
+                       int index;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get face index */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* get 1st vertex index */
                        _pico_parse( p,0 );
-                       if (!_pico_parse_int( p,&indexes[0] ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&indexes[0] ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* get 2nd vertex index */
                        _pico_parse( p,0 );
-                       if (!_pico_parse_int( p,&indexes[1] ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&indexes[1] ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* get 3rd vertex index */
                        _pico_parse( p,0 );
-                       if (!_pico_parse_int( p,&indexes[2] ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&indexes[2] ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* set face indexes (note interleaved offset!) */
-                       PicoSetSurfaceIndex( surface, (index * 9 + 0), indexes[2] );
-                       PicoSetSurfaceIndex( surface, (index * 9 + 1), indexes[1] );
-                       PicoSetSurfaceIndex( surface, (index * 9 + 2), indexes[0] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 0 ), indexes[2] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 1 ), indexes[1] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 2 ), indexes[0] );
 
                        /* parse to the subMaterial ID */
                        while ( 1 )
                        {
-                               _pico_parse (p,0);
-                               if (!_pico_stricmp (p->token,"*MESH_MTLID" ))
-                               {
+                               _pico_parse( p,0 );
+                               if ( !_pico_stricmp( p->token,"*MESH_MTLID" ) ) {
                                        aseFace_t* newFace;
                                        int subMtlId;
 
-                                       _pico_parse_int ( p , &subMtlId );
-                                       newFace = _pico_calloc ( 1 , sizeof ( aseFace_t ));
+                                       _pico_parse_int( p, &subMtlId );
+                                       newFace = _pico_calloc( 1, sizeof( aseFace_t ) );
 
                                        /* we fix up the mtlId later when we parse the material_ref */
                                        newFace->mtlId = 0;
@@ -561,33 +549,36 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                                        newFace->index[1] = indexes[1];
                                        newFace->index[2] = indexes[0];
 
-                                       _ase_add_face ( &faces,&facesTail,newFace );
+                                       _ase_add_face( &faces,&facesTail,newFace );
                                        break;
                                }
                        }
 
                }
                /* model texture vertex */
-               else if (!_pico_stricmp(p->token,"*mesh_tvert"))
-               {
-                       picoVec2_t      uv;
-                       int                     index;
+               else if ( !_pico_stricmp( p->token,"*mesh_tvert" ) ) {
+                       picoVec2_t uv;
+                       int index;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get uv vertex index */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("UV vertex parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "UV vertex parse error" );
+                       }
 
                        /* get uv vertex s */
-                       if (!_pico_parse_float( p,&uv[0] ))
-                               _ase_error_return("UV vertex parse error");
+                       if ( !_pico_parse_float( p,&uv[0] ) ) {
+                               _ase_error_return( "UV vertex parse error" );
+                       }
 
                        /* get uv vertex t */
-                       if (!_pico_parse_float( p,&uv[1] ))
-                               _ase_error_return("UV vertex parse error");
+                       if ( !_pico_parse_float( p,&uv[1] ) ) {
+                               _ase_error_return( "UV vertex parse error" );
+                       }
 
                        /* ydnar: invert t */
                        uv[ 1 ] = 1.0f - uv[ 1 ];
@@ -596,71 +587,79 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                        PicoSetSurfaceST( surface,0,index,uv );
                }
                /* ydnar: model mesh texture face */
-               else if( !_pico_stricmp( p->token, "*mesh_tface" ) )
-               {
+               else if ( !_pico_stricmp( p->token, "*mesh_tface" ) ) {
                        picoIndex_t indexes[3];
-                       int                     index;
+                       int index;
                        aseFace_t* face;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get face index */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("Texture face parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "Texture face parse error" );
+                       }
 
                        /* get 1st vertex index */
-                       if (!_pico_parse_int( p,&indexes[0] ))
-                               _ase_error_return("Texture face parse error");
+                       if ( !_pico_parse_int( p,&indexes[0] ) ) {
+                               _ase_error_return( "Texture face parse error" );
+                       }
 
                        /* get 2nd vertex index */
-                       if (!_pico_parse_int( p,&indexes[1] ))
-                               _ase_error_return("Texture face parse error");
+                       if ( !_pico_parse_int( p,&indexes[1] ) ) {
+                               _ase_error_return( "Texture face parse error" );
+                       }
 
                        /* get 3rd vertex index */
-                       if (!_pico_parse_int( p,&indexes[2] ))
-                               _ase_error_return("Texture face parse error");
+                       if ( !_pico_parse_int( p,&indexes[2] ) ) {
+                               _ase_error_return( "Texture face parse error" );
+                       }
 
                        /* set face indexes (note interleaved offset!) */
-                       PicoSetSurfaceIndex( surface, (index * 9 + 3), indexes[2] );
-                       PicoSetSurfaceIndex( surface, (index * 9 + 4), indexes[1] );
-                       PicoSetSurfaceIndex( surface, (index * 9 + 5), indexes[0] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 3 ), indexes[2] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 4 ), indexes[1] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 5 ), indexes[0] );
 
-                       face = _ase_get_face_for_index(faces,index);
+                       face = _ase_get_face_for_index( faces,index );
                        face->index[3] = indexes[2];
                        face->index[4] = indexes[1];
                        face->index[5] = indexes[0];
                }
                /* model color vertex */
-               else if (!_pico_stricmp(p->token,"*mesh_vertcol"))
-               {
-                       picoColor_t     color;
-                       int                     index;
-                       float           colorInput;
+               else if ( !_pico_stricmp( p->token,"*mesh_vertcol" ) ) {
+                       picoColor_t color;
+                       int index;
+                       float colorInput;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get color vertex index */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("UV vertex parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "UV vertex parse error" );
+                       }
 
                        /* get R component */
-                       if (!_pico_parse_float( p,&colorInput ))
-                               _ase_error_return("color vertex parse error");
-                       color[0] = (picoByte_t)(colorInput * 255);
+                       if ( !_pico_parse_float( p,&colorInput ) ) {
+                               _ase_error_return( "color vertex parse error" );
+                       }
+                       color[0] = (picoByte_t)( colorInput * 255 );
 
                        /* get G component */
-                       if (!_pico_parse_float( p,&colorInput ))
-                               _ase_error_return("color vertex parse error");
-                       color[1] = (picoByte_t)(colorInput * 255);
+                       if ( !_pico_parse_float( p,&colorInput ) ) {
+                               _ase_error_return( "color vertex parse error" );
+                       }
+                       color[1] = (picoByte_t)( colorInput * 255 );
 
                        /* get B component */
-                       if (!_pico_parse_float( p,&colorInput ))
-                               _ase_error_return("color vertex parse error");
-                       color[2] = (picoByte_t)(colorInput * 255);
+                       if ( !_pico_parse_float( p,&colorInput ) ) {
+                               _ase_error_return( "color vertex parse error" );
+                       }
+                       color[2] = (picoByte_t)( colorInput * 255 );
 
                        /* leave alpha alone since we don't get any data from the ASE format */
                        color[3] = 255;
@@ -669,81 +668,94 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                        PicoSetSurfaceColor( surface,0,index,color );
                }
                /* model color face */
-               else if (!_pico_stricmp(p->token,"*mesh_cface"))
-               {
+               else if ( !_pico_stricmp( p->token,"*mesh_cface" ) ) {
                        picoIndex_t indexes[3];
-                       int                     index;
+                       int index;
                        aseFace_t*  face;
 
                        /* we must have a valid surface */
-                       if( surface == NULL )
+                       if ( surface == NULL ) {
                                continue;
+                       }
 
                        /* get face index */
-                       if (!_pico_parse_int( p,&index ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&index ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* get 1st cvertex index */
                        //                      _pico_parse( p,0 );
-                       if (!_pico_parse_int( p,&indexes[0] ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&indexes[0] ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* get 2nd cvertex index */
                        //                      _pico_parse( p,0 );
-                       if (!_pico_parse_int( p,&indexes[1] ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&indexes[1] ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* get 3rd cvertex index */
                        //                      _pico_parse( p,0 );
-                       if (!_pico_parse_int( p,&indexes[2] ))
-                               _ase_error_return("Face parse error");
+                       if ( !_pico_parse_int( p,&indexes[2] ) ) {
+                               _ase_error_return( "Face parse error" );
+                       }
 
                        /* set face indexes (note interleaved offset!) */
-                       PicoSetSurfaceIndex( surface, (index * 9 + 6), indexes[2] );
-                       PicoSetSurfaceIndex( surface, (index * 9 + 7), indexes[1] );
-                       PicoSetSurfaceIndex( surface, (index * 9 + 8), indexes[0] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 6 ), indexes[2] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 7 ), indexes[1] );
+                       PicoSetSurfaceIndex( surface, ( index * 9 + 8 ), indexes[0] );
 
-                       face = _ase_get_face_for_index(faces,index);
+                       face = _ase_get_face_for_index( faces,index );
                        face->index[6] = indexes[2];
                        face->index[7] = indexes[1];
                        face->index[8] = indexes[0];
                }
                /* model material */
-               else if( !_pico_stricmp( p->token, "*material" ) )
-               {
-                       aseSubMaterial_t*       subMaterial = NULL;
-                       picoShader_t            *shader = NULL;
-                       int                                     level = 1, index;
-                       char                            materialName[ 1024 ];
-                       float                           transValue = 0.0f, shineValue = 1.0f;
-                       picoColor_t                     ambientColor, diffuseColor, specularColor;
-                       char                            *mapname = NULL;
-                       int                                     subMtlId, subMaterialLevel = -1;
+               else if ( !_pico_stricmp( p->token, "*material" ) ) {
+                       aseSubMaterial_t*   subMaterial = NULL;
+                       picoShader_t        *shader = NULL;
+                       int level = 1, index;
+                       char materialName[ 1024 ];
+                       float transValue = 0.0f, shineValue = 1.0f;
+                       picoColor_t ambientColor, diffuseColor, specularColor;
+                       char                *mapname = NULL;
+                       int subMtlId, subMaterialLevel = -1;
 
 
                        /* get material index */
                        _pico_parse_int( p,&index );
 
                        /* check brace */
-                       if (!_pico_parse_check(p,1,"{"))
-                               _ase_error_return("Material missing opening brace");
+                       if ( !_pico_parse_check( p,1,"{" ) ) {
+                               _ase_error_return( "Material missing opening brace" );
+                       }
 
                        /* parse material block */
-                       while( 1 )
+                       while ( 1 )
                        {
                                /* get next token */
-                               if (_pico_parse(p,1) == NULL) break;
-                               if (!strlen(p->token)) continue;
+                               if ( _pico_parse( p,1 ) == NULL ) {
+                                       break;
+                               }
+                               if ( !strlen( p->token ) ) {
+                                       continue;
+                               }
 
                                /* handle levels */
-                               if (p->token[0] == '{') level++;
-                               if (p->token[0] == '}') level--;
-                               if (!level) break;
+                               if ( p->token[0] == '{' ) {
+                                       level++;
+                               }
+                               if ( p->token[0] == '}' ) {
+                                       level--;
+                               }
+                               if ( !level ) {
+                                       break;
+                               }
 
-                               if( level == subMaterialLevel )
-                               {
+                               if ( level == subMaterialLevel ) {
                                        /* set material name */
-                                       PicoSetShaderName( shader, materialName);
+                                       PicoSetShaderName( shader, materialName );
 
                                        /* set shader's transparency */
                                        PicoSetShaderTransparency( shader,transValue );
@@ -771,52 +783,50 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                                }
 
                                /* parse submaterial index */
-                               if (!_pico_stricmp(p->token,"*submaterial"))
-                               {
+                               if ( !_pico_stricmp( p->token,"*submaterial" ) ) {
                                        /* allocate new pico shader */
-                                       _pico_parse_int( p , &subMtlId );
+                                       _pico_parse_int( p, &subMtlId );
 
                                        shader = PicoNewShader( model );
-                                       if (shader == NULL)
-                                       {
+                                       if ( shader == NULL ) {
                                                PicoFreeModel( model );
                                                return NULL;
                                        }
                                        subMaterialLevel = level;
                                }
                                /* parse material name */
-                               else if (!_pico_stricmp(p->token,"*material_name"))
-                               {
-                                       char* name = _pico_parse(p,0);
-                                       if ( name == NULL)
-                                               _ase_error_return("Missing material name");
+                               else if ( !_pico_stricmp( p->token,"*material_name" ) ) {
+                                       char* name = _pico_parse( p,0 );
+                                       if ( name == NULL ) {
+                                               _ase_error_return( "Missing material name" );
+                                       }
 
-                                       strcpy ( materialName , name );
+                                       strcpy( materialName, name );
                                        /* skip rest and continue with next token */
                                        _pico_parse_skip_rest( p );
                                        continue;
                                }
                                /* parse material transparency */
-                               else if (!_pico_stricmp(p->token,"*material_transparency"))
-                               {
+                               else if ( !_pico_stricmp( p->token,"*material_transparency" ) ) {
                                        /* get transparency value from ase */
-                                       if (!_pico_parse_float( p,&transValue ))
-                                               _ase_error_return("Material transparency parse error");
+                                       if ( !_pico_parse_float( p,&transValue ) ) {
+                                               _ase_error_return( "Material transparency parse error" );
+                                       }
 
                                        /* skip rest and continue with next token */
                                        _pico_parse_skip_rest( p );
                                        continue;
                                }
                                /* parse material shininess */
-                               else if (!_pico_stricmp(p->token,"*material_shine"))
-                               {
+                               else if ( !_pico_stricmp( p->token,"*material_shine" ) ) {
                                        /* remark:
                                         * - not sure but instead of '*material_shine' i might
                                         *   need to use '*material_shinestrength' */
 
                                        /* get shine value from ase */
-                                       if (!_pico_parse_float( p,&shineValue ))
-                                               _ase_error_return("Material shine parse error");
+                                       if ( !_pico_parse_float( p,&shineValue ) ) {
+                                               _ase_error_return( "Material shine parse error" );
+                                       }
 
                                        /* scale ase shine range 0..1 to pico range 0..127 */
                                        shineValue *= 128.0;
@@ -826,12 +836,12 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                                        continue;
                                }
                                /* parse ambient material color */
-                               else if (!_pico_stricmp(p->token,"*material_ambient"))
-                               {
-                                       picoVec3_t  vec;
+                               else if ( !_pico_stricmp( p->token,"*material_ambient" ) ) {
+                                       picoVec3_t vec;
                                        /* get r,g,b float values from ase */
-                                       if (!_pico_parse_vec( p,vec ))
-                                               _ase_error_return("Material color parse error");
+                                       if ( !_pico_parse_vec( p,vec ) ) {
+                                               _ase_error_return( "Material color parse error" );
+                                       }
 
                                        /* setup 0..255 range color values */
                                        ambientColor[ 0 ] = (int)( vec[ 0 ] * 255.0 );
@@ -844,13 +854,13 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                                        continue;
                                }
                                /* parse diffuse material color */
-                               else if (!_pico_stricmp(p->token,"*material_diffuse"))
-                               {
-                                       picoVec3_t  vec;
+                               else if ( !_pico_stricmp( p->token,"*material_diffuse" ) ) {
+                                       picoVec3_t vec;
 
                                        /* get r,g,b float values from ase */
-                                       if (!_pico_parse_vec( p,vec ))
-                                               _ase_error_return("Material color parse error");
+                                       if ( !_pico_parse_vec( p,vec ) ) {
+                                               _ase_error_return( "Material color parse error" );
+                                       }
 
                                        /* setup 0..255 range color */
                                        diffuseColor[ 0 ] = (int)( vec[ 0 ] * 255.0 );
@@ -863,13 +873,13 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                                        continue;
                                }
                                /* parse specular material color */
-                               else if (!_pico_stricmp(p->token,"*material_specular"))
-                               {
-                                       picoVec3_t  vec;
+                               else if ( !_pico_stricmp( p->token,"*material_specular" ) ) {
+                                       picoVec3_t vec;
 
                                        /* get r,g,b float values from ase */
-                                       if (!_pico_parse_vec( p,vec ))
-                                               _ase_error_return("Material color parse error");
+                                       if ( !_pico_parse_vec( p,vec ) ) {
+                                               _ase_error_return( "Material color parse error" );
+                                       }
 
                                        /* setup 0..255 range color */
                                        specularColor[ 0 ] = (int)( vec[ 0 ] * 255 );
@@ -882,30 +892,39 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                                        continue;
                                }
                                /* material diffuse map */
-                               else if (!_pico_stricmp(p->token,"*map_diffuse") )
-                               {
+                               else if ( !_pico_stricmp( p->token,"*map_diffuse" ) ) {
                                        int sublevel = 0;
 
                                        /* parse material block */
-                                       while( 1 )
+                                       while ( 1 )
                                        {
                                                /* get next token */
-                                               if (_pico_parse(p,1) == NULL) break;
-                                               if (!strlen(p->token)) continue;
+                                               if ( _pico_parse( p,1 ) == NULL ) {
+                                                       break;
+                                               }
+                                               if ( !strlen( p->token ) ) {
+                                                       continue;
+                                               }
 
                                                /* handle levels */
-                                               if (p->token[0] == '{') sublevel++;
-                                               if (p->token[0] == '}') sublevel--;
-                                               if (!sublevel) break;
+                                               if ( p->token[0] == '{' ) {
+                                                       sublevel++;
+                                               }
+                                               if ( p->token[0] == '}' ) {
+                                                       sublevel--;
+                                               }
+                                               if ( !sublevel ) {
+                                                       break;
+                                               }
 
                                                /* parse diffuse map bitmap */
-                                               if (!_pico_stricmp(p->token,"*bitmap"))
-                                               {
-                                                       char* name = _pico_parse(p,0);
-                                                       if (name == NULL)
-                                                               _ase_error_return("Missing material map bitmap name");
-                                                       mapname = _pico_alloc ( strlen ( name ) + 1 );
-                                                       strcpy ( mapname, name );
+                                               if ( !_pico_stricmp( p->token,"*bitmap" ) ) {
+                                                       char* name = _pico_parse( p,0 );
+                                                       if ( name == NULL ) {
+                                                               _ase_error_return( "Missing material map bitmap name" );
+                                                       }
+                                                       mapname = _pico_alloc( strlen( name ) + 1 );
+                                                       strcpy( mapname, name );
                                                        /* skip rest and continue with next token */
                                                        _pico_parse_skip_rest( p );
                                                        continue;
@@ -916,12 +935,10 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                        }
                        /* end material block */
 
-                       if( subMaterial == NULL )
-                       {
+                       if ( subMaterial == NULL ) {
                                /* allocate new pico shader */
                                shader = PicoNewShader( model );
-                               if (shader == NULL)
-                               {
+                               if ( shader == NULL ) {
                                        PicoFreeModel( model );
                                        return NULL;
                                }
@@ -955,9 +972,10 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
                        }
 
                        /* ydnar: free mapname */
-                       if( mapname != NULL )
+                       if ( mapname != NULL ) {
                                _pico_free( mapname );
-               }       // !_pico_stricmp ( "*material" )
+                       }
+               }   // !_pico_stricmp ( "*material" )
 
                /* skip unparsed rest of line and continue */
                _pico_parse_skip_rest( p );
@@ -965,17 +983,17 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
 
        /* ydnar: finish existing surface */
 //     _ase_make_surface( model, &surface );
-       _ase_submit_triangles (surface, model ,materials,faces);
-       _ase_free_faces (&faces,&facesTail);
+       _ase_submit_triangles( surface, model,materials,faces );
+       _ase_free_faces( &faces,&facesTail );
 
 #ifdef DEBUG_PM_ASE
-       _ase_print_materials(materials);
+       _ase_print_materials( materials );
        finish = clock();
-       elapsed = (double)(finish - start) / CLOCKS_PER_SEC;
+       elapsed = (double)( finish - start ) / CLOCKS_PER_SEC;
        _pico_printf( PICO_NORMAL, "Loaded model in in %-.2f second(s)\n", elapsed );
 #endif //DEBUG_PM_ASE
 
-       _ase_free_materials(&materials);
+       _ase_free_materials( &materials );
 
        /* return allocated pico model */
        return model;
@@ -984,15 +1002,15 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD )
 /* pico file format module definition */
 const picoModule_t picoModuleASE =
 {
-       "1.0",                                  /* module version string */
-       "Autodesk 3DSMAX ASCII",        /* module display name */
-       "Jared Hefty, seaw0lf",                                 /* author's name */
-       "2003 Jared Hefty, 2002 seaw0lf",                               /* module copyright */
+       "1.0",                  /* module version string */
+       "Autodesk 3DSMAX ASCII",    /* module display name */
+       "Jared Hefty, seaw0lf",                 /* author's name */
+       "2003 Jared Hefty, 2002 seaw0lf",               /* module copyright */
        {
-               "ase",NULL,NULL,NULL    /* default extensions to use */
+               "ase",NULL,NULL,NULL    /* default extensions to use */
        },
-       _ase_canload,                           /* validation routine */
-       _ase_load,                                      /* load routine */
-        NULL,                                          /* save validation routine */
-        NULL                                           /* save routine */
+       _ase_canload,               /* validation routine */
+       _ase_load,                  /* load routine */
+       NULL,                       /* save validation routine */
+       NULL                        /* save routine */
 };