1 Index: libs/picomodel/pm_obj.c
2 ===================================================================
3 --- libs/picomodel/pm_obj.c.orig 2008-09-06 15:32:05.000000000 +0200
4 +++ libs/picomodel/pm_obj.c 2008-09-06 15:32:09.000000000 +0200
10 static int _obj_mtl_load( picoModel_t *model )
12 - //picoShader_t *curShader = NULL;
13 + picoShader_t *curShader = NULL;
15 picoByte_t *mtlBuffer;
18 /* get next token in material file */
19 if (_pico_parse( p,1 ) == NULL)
24 /* skip empty lines */
25 if (p->token == NULL || !strlen( p->token ))
27 else if (!_pico_stricmp(p->token,"map_kd"))
30 + picoShader_t *shader;
32 /* pointer to current shader must be valid */
33 if (curShader == NULL)
35 _pico_printf( PICO_ERROR,"Missing material map name in MTL, line %d.",p->curLine);
36 _obj_mtl_error_return;
38 + /* create a new pico shader */
39 + shader = PicoNewShader( model );
41 + _obj_mtl_error_return;
42 /* set shader map name */
43 PicoSetShaderMapName( shader,mapName );
46 /* return with success */
52 * loads a wavefront obj model file.
54 PicoSetModelFileName( model,fileName );
56 /* try loading the materials; we don't handle the result */
59 _obj_mtl_load( model );
66 + else if (!_pico_stricmp(p->token,"usemtl"))
68 + picoShader_t *shader;
71 + /* get material name */
72 + name = _pico_parse( p,0 );
74 + /* validate material name */
75 + if (name == NULL || !strlen(name))
77 + _pico_printf( PICO_ERROR,"Missing material name in OBJ, line %d.",p->curLine);
81 + shader = PicoFindShader( model, name, 1 );
84 + _pico_printf( PICO_ERROR,"Undefined material name in OBJ, line %d. Making a default shader.",p->curLine);
86 + /* create a new pico shader */
87 + shader = PicoNewShader( model );
90 + PicoSetShaderName( shader,name );
91 + PicoSetShaderMapName( shader,name );
92 + PicoSetSurfaceShader( curSurface, shader );
97 + PicoSetSurfaceShader( curSurface, shader );
101 /* skip unparsed rest of line and continue */
102 _pico_parse_skip_rest( p );