Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
69
Src/Winamp/plush/READ_JAW.C
Normal file
69
Src/Winamp/plush/READ_JAW.C
Normal file
|
@ -0,0 +1,69 @@
|
|||
/******************************************************************************
|
||||
Plush Version 1.2
|
||||
read_jaw.c
|
||||
Jaw3D Object Reader
|
||||
Copyright (c) 1996-2000, Justin Frankel
|
||||
*******************************************************************************
|
||||
Notes on .JAW files:
|
||||
This is a file format created by Jawed Karim for Jaw3D
|
||||
(http://jaw3d.home.ml.org).
|
||||
-- updated 11/6/00 - www.jawed.com
|
||||
It is very simple, and lets one easily create ones own models using only
|
||||
a text editor. The format is pretty simple:
|
||||
The first line must be "Light: (x,y,z)" where x,y, and z are the x y and
|
||||
z components of the lightsource vector (I think ;)
|
||||
A series of lines, numbered 0 to n, in the format of
|
||||
"i: x y z", where i is the vertex number (which should be listed in
|
||||
order, and x y and z are the coordinates of that vertex.
|
||||
A series of lines, having the format "tri a, b, c" where a b and c are
|
||||
the vertices that the face uses. It is unclear at this time which
|
||||
way the vertices are listed (ccw or cw), so just make em consistent
|
||||
and you can always use plFlipObjectNormals() on the loaded object.
|
||||
That is it! (I told ya it was simple).
|
||||
******************************************************************************/
|
||||
|
||||
#include "plush.h"
|
||||
|
||||
pl_Obj *plReadJAWObj(char *filename, pl_Mat *m) {
|
||||
FILE *jawfile;
|
||||
pl_Obj *obj;
|
||||
pl_uInt32 i;
|
||||
pl_sInt crap;
|
||||
char line[256];
|
||||
pl_uInt32 total_points = 0, total_polys = 0;
|
||||
if ((jawfile = fopen(filename, "r")) == NULL) return 0;
|
||||
fgets(line, 256, jawfile); /* Ignores lightsource info */
|
||||
while (fgets(line, 256, jawfile) != NULL)
|
||||
if (strstr(line, ":") != NULL) total_points++;
|
||||
|
||||
rewind(jawfile); fgets(line, 256, jawfile);
|
||||
while (fgets(line, 256, jawfile) != NULL)
|
||||
if (strstr(line, "tri") != NULL) total_polys++;
|
||||
|
||||
rewind(jawfile); fgets(line, 256, jawfile);
|
||||
obj = plObjCreate(total_points,total_polys);
|
||||
|
||||
i = 0;
|
||||
while (fgets(line, 256, jawfile) != NULL) if (strstr(line, ":") != NULL) {
|
||||
float x, y, z;
|
||||
sscanf(line, "%d: %f %f %f",&crap,&x,&y,&z);
|
||||
obj->Vertices[i].x = (pl_Float) x;
|
||||
obj->Vertices[i].y = (pl_Float) y;
|
||||
obj->Vertices[i].z = (pl_Float) z;
|
||||
i++;
|
||||
}
|
||||
rewind(jawfile); fgets(line, 256, jawfile);
|
||||
i = 0;
|
||||
while (fgets(line, 256, jawfile) != NULL) if (strstr(line, "tri") != NULL) {
|
||||
pl_uInt32 a,b,c;
|
||||
sscanf(line, "tri %ld, %ld, %ld", &a, &b, &c);
|
||||
obj->Faces[i].Vertices[0] = obj->Vertices + a;
|
||||
obj->Faces[i].Vertices[1] = obj->Vertices + c;
|
||||
obj->Faces[i].Vertices[2] = obj->Vertices + b;
|
||||
obj->Faces[i].Material = m;
|
||||
i++;
|
||||
}
|
||||
fclose(jawfile);
|
||||
plObjCalcNormals(obj);
|
||||
return obj;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue