/[cvs]/api/Classes/Engine3d/LwoLoader.cpp
ViewVC logotype

Contents of /api/Classes/Engine3d/LwoLoader.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1.1.1 - (show annotations) (vendor branch)
Sun Jul 1 20:47:58 2001 UTC (22 years, 10 months ago) by bearsoft
Branch: lazy, MAIN
CVS Tags: start, HEAD
Changes since 1.1: +0 -0 lines
First import

1 #include <stdio.h>
2 #include "LwoLoader.h"
3 #include "../ImageFormat/SGI.h"
4 #include "math.h"
5 #include "../String/String.h"
6 #include "../System/System.h"
7 #include "../System/SystemDefine.h"
8
9
10 LwoLoader::LwoLoader(Object3dList **iobjekt3dlist_, ObjectLinkedList<SGI> *iTextureList)
11 {
12 objekt3dlist_[0]=iobjekt3dlist_[0];
13 textureList=iTextureList;
14 }
15
16 LwoLoader::~LwoLoader()
17 {
18 }
19
20 void LwoLoader::remove()
21 {
22 if (textureNameList!=null)
23 {
24 delete textureNameList;
25 }
26
27 if (binaryInput!=null)
28 {
29 delete binaryInput;
30 }
31
32 if (xVerticesArray!=null)
33 {
34 delete xVerticesArray;
35 }
36
37 if (yVerticesArray!=null)
38 {
39 delete yVerticesArray;
40 }
41
42 if (zVerticesArray!=null)
43 {
44 delete zVerticesArray;
45 }
46
47 if (polygonPoints!=null)
48 {
49 delete polygonPoints;
50 }
51
52 if (polygonSurfaces!=null)
53 {
54 delete polygonSurfaces;
55 }
56
57 if (surfaceMappingMethod!=null)
58 {
59 delete surfaceMappingMethod;
60 }
61
62 if (surfaceColourArray!=null)
63 {
64 delete surfaceColourArray;
65 }
66
67 if (surfaceTransparentArray!=null)
68 {
69 delete surfaceTransparentArray;
70 }
71
72 if (surfaceTextureWrappingXArray!=null)
73 {
74 delete surfaceTextureWrappingXArray;
75 }
76
77 if (surfaceTextureWrappingYArray!=null)
78 {
79 delete surfaceTextureWrappingYArray;
80 }
81
82 if (surfaceXYZAxleArray!=null)
83 {
84 delete surfaceXYZAxleArray;
85 }
86
87 if (surfaceTextureSizeXArray!=null)
88 {
89 delete surfaceTextureSizeXArray;
90 }
91
92 if (surfaceTextureSizeYArray!=null)
93 {
94 delete surfaceTextureSizeYArray;
95 }
96
97 if (surfaceTextureSizeZArray!=null)
98 {
99 delete surfaceTextureSizeZArray;
100 }
101
102 if (surfaceTextureCenterXArray!=null)
103 {
104 delete surfaceTextureCenterXArray;
105 }
106
107 if (surfaceTextureCenterYArray!=null)
108 {
109 delete surfaceTextureCenterYArray;
110 }
111
112 if (surfaceTextureCenterZArray!=null)
113 {
114 delete surfaceTextureCenterZArray;
115 }
116
117 if (polygonPoint1UArray!=null)
118 {
119 delete polygonPoint1UArray;
120 }
121
122 if (polygonPoint1VArray!=null)
123 {
124 delete polygonPoint1VArray;
125 }
126
127 if (polygonPoint2UArray!=null)
128 {
129 delete polygonPoint2UArray;
130 }
131
132 if (polygonPoint2VArray!=null)
133 {
134 delete polygonPoint2VArray;
135 }
136
137 if (polygonPoint3UArray!=null)
138 {
139 delete polygonPoint3UArray;
140 }
141
142 if (polygonPoint3VArray!=null)
143 {
144 delete polygonPoint3VArray;
145 }
146 }
147
148 //*********************************************************
149 //compute the data you want from a lwo file
150 //*********************************************************
151
152 void LwoLoader::scanLwoFile(String &fileName)
153 {
154 textureNameList=new StringLinkedList();
155 binaryInput=new BinaryInput();
156 xVerticesArray=null;
157 yVerticesArray=null;
158 zVerticesArray=null;
159 polygonPoints=null;
160 polygonSurfaces=null;
161 surfaceMappingMethod=null;
162 surfaceColourArray=null;
163 surfaceTransparentArray=null;
164 surfaceTextureWrappingXArray=null;
165 surfaceTextureWrappingYArray=null;
166 surfaceXYZAxleArray=null;
167 surfaceTextureSizeXArray=null;
168 surfaceTextureSizeYArray=null;
169 surfaceTextureSizeZArray=null;
170 surfaceTextureCenterXArray=null;
171 surfaceTextureCenterYArray=null;
172 surfaceTextureCenterZArray=null;
173 polygonPoint1UArray=null;
174 polygonPoint1VArray=null;
175 polygonPoint2UArray=null;
176 polygonPoint2VArray=null;
177 polygonPoint3UArray=null;
178 polygonPoint3VArray=null;
179
180 binaryInput->readFile(fileName);
181
182 binaryInput->setBigEndian(true);
183 System::println(binaryInput->getWord(4));
184 System::println(binaryInput->getInt());
185 System::println(binaryInput->getWord(4));
186 bool diffJumpValue=false;
187
188 while (binaryInput->getBinaryStatus())
189 {
190 int jumpValue=0;
191
192 String chunk=binaryInput->getWord(4);
193 System::println(chunk);
194
195 if (chunk.equals("SURF"))
196 {
197 jumpValue=binaryInput->getInt();
198 System::println(binaryInput->getWord());
199 binaryInput->getChar();
200 diffJumpValue=true;
201 }
202 else
203 {
204 if (diffJumpValue)
205 {
206 jumpValue=(int)binaryInput->getShort();
207 }
208 else
209 {
210 jumpValue=binaryInput->getInt();
211 }
212
213 bool notJump=false;
214
215 notJump=computeChunkPNTS(chunk, jumpValue);
216
217 if (!notJump)
218 {
219 notJump=computeChunkSRFS(chunk, jumpValue);
220 }
221
222 if (!notJump)
223 {
224 notJump=computeChunkPOLS(chunk, jumpValue);
225 }
226
227 if (!notJump)
228 {
229 notJump=computeChunkCOLR(chunk, jumpValue);
230 }
231
232 if (!notJump)
233 {
234 notJump=computeChunkVTRN(chunk, jumpValue);
235 }
236
237 if (!notJump)
238 {
239 notJump=computeChunkCTEX(chunk, jumpValue);
240 }
241
242 if (!notJump)
243 {
244 notJump=computeChunkTIMG(chunk, jumpValue);
245 }
246
247 if (!notJump)
248 {
249 notJump=computeChunkTWRP(chunk, jumpValue);
250 }
251
252 if (!notJump)
253 {
254 notJump=computeChunkTFLG(chunk, jumpValue);
255 }
256
257 if (!notJump)
258 {
259 notJump=computeChunkTSIZ(chunk, jumpValue);
260 }
261
262 if (!notJump)
263 {
264 notJump=computeChunkTCTR(chunk, jumpValue);
265 }
266
267 if (!notJump)
268 {
269 binaryInput->jumpForward(jumpValue);
270 }
271 }
272 }
273
274 calcTextureMapping();
275
276 Object3d *objekt3d_ = objekt3dlist_[0]->add(xVerticesArray->size, polygonSurfaces->size,polygonPoints->size,textureNameList->size());
277
278 readttpoints(objekt3d_);
279
280 if (textureNameList->size()!=0)
281 {
282 for ( int t=0; t<textureNameList->size() ; t++ )
283 {
284 String filePath=textureNameList->getElement(t);
285 // System::println(filePath);
286 objekt3d_->settexturep((int)textureList->addLastWithNoDoubleName(new SGI(filePath),filePath.buffer),t);
287 }
288 }
289
290 readvertices(objekt3d_);
291 readprepareuv2(objekt3d_);
292 readvpoints(objekt3d_);
293 // readcolour(objekt3d_);
294 // readtransparent(objekt3d_);
295
296 objekt3d_->makenormtab();
297
298 remove();
299 }
300
301
302 bool LwoLoader::computeChunkPNTS(String &chunk, int chunkValue)
303 {
304 if (chunk.equals("PNTS"))
305 {
306 int numberOfVertices=(chunkValue/12);
307 System::println(numberOfVertices);
308
309 xVerticesArray = new FloatArray(numberOfVertices);
310 yVerticesArray = new FloatArray(numberOfVertices);
311 zVerticesArray = new FloatArray(numberOfVertices);
312
313 for ( int v=0 ; v<numberOfVertices ; v++ )
314 {
315 xVerticesArray->setFloat(binaryInput->getFloat(),v);
316 yVerticesArray->setFloat(binaryInput->getFloat(),v);
317 zVerticesArray->setFloat(binaryInput->getFloat(),v);
318 }
319
320 return true;
321 }
322
323 return false;
324 }
325
326 bool LwoLoader::computeChunkSRFS(String &chunk, int chunkValue)
327 {
328 if (chunk.equals("SRFS"))
329 {
330 numberOfSurfaces=0;
331
332 binaryInput->resetCharCounter();
333
334 while (binaryInput->getCharCounter() < chunkValue)
335 {
336 String surfaceName=binaryInput->getWord();
337 System::println(surfaceName);
338 if ((surfaceName.length&1) == 1)
339 {
340 binaryInput->getChar();
341 }
342 numberOfSurfaces++;
343 }
344
345 surfaceColourArray = new IntArray(numberOfSurfaces);
346 surfaceTransparentArray = new FloatArray(numberOfSurfaces);
347 surfaceMappingMethod = new IntArray(numberOfSurfaces);
348 surfaceTextureWrappingXArray = new IntArray(numberOfSurfaces);
349 surfaceTextureWrappingYArray = new IntArray(numberOfSurfaces);
350 surfaceXYZAxleArray = new IntArray(numberOfSurfaces);
351 surfaceTextureSizeXArray = new FloatArray(numberOfSurfaces);
352 surfaceTextureSizeYArray = new FloatArray(numberOfSurfaces);
353 surfaceTextureSizeZArray = new FloatArray(numberOfSurfaces);
354 surfaceTextureCenterXArray = new FloatArray(numberOfSurfaces);
355 surfaceTextureCenterYArray = new FloatArray(numberOfSurfaces);
356 surfaceTextureCenterZArray = new FloatArray(numberOfSurfaces);
357 return true;
358 }
359
360 return false;
361 }
362
363 bool LwoLoader::computeChunkPOLS(String &chunk, int chunkValue)
364 {
365 if (chunk.equals("POLS"))
366 {
367 int numberOfPoints=0;
368 int numberOfPolygonSurfaces=0;
369 int numberOfPolygons=0;
370
371 polygonPoints = new IntArray((int)(binaryInput->getInternBufferSize()/sizeof(int)));
372 polygonSurfaces = new IntArray((int)(binaryInput->getInternBufferSize()/sizeof(int)));
373
374 binaryInput->resetCharCounter();
375
376 while (binaryInput->getCharCounter() < chunkValue)
377 {
378 int numberOfFaces=(int)binaryInput->getShort();
379 numberOfFaces-=2;
380 numberOfPolygons+=numberOfFaces;
381 //System::println(numberOfPolygons);
382 short firstPoint=binaryInput->getShort();
383
384 for ( int p=0 ; p<numberOfFaces ; p++ )
385 {
386 polygonPoints->setInt((int)firstPoint,numberOfPoints);
387 numberOfPoints++;
388
389 polygonPoints->setInt((int)binaryInput->getShort(),numberOfPoints);
390 numberOfPoints++;
391
392 polygonPoints->setInt((int)binaryInput->getShortButGoNotFoward(),numberOfPoints);
393 numberOfPoints++;
394 }
395
396 binaryInput->getShort();
397 int surfaceID=(int)(binaryInput->getShort()-1);
398
399 for ( int p2=0 ; p2<numberOfFaces ; p2++ )
400 {
401 polygonSurfaces->setInt(surfaceID,numberOfPolygonSurfaces);
402 numberOfPolygonSurfaces++;
403 }
404
405 }
406
407 // System::println(binaryInput->getCharCounter()-chunkValue);
408
409 polygonPoints->size=numberOfPoints;
410 polygonSurfaces->size=numberOfPolygons;
411
412 String numberOfPolysName="numberOfPolys: ";
413 // System::println(numberOfPolysName + numberOfPolygons);
414
415 return true;
416 }
417
418 return false;
419 }
420
421 //*********************************************************
422 //colour
423 //*********************************************************
424
425 bool LwoLoader::computeChunkCOLR(String &chunk, int chunkValue)
426 {
427 if (chunk.equals("COLR"))
428 {
429 if (surfaceColourArray->getInternIndex() < numberOfSurfaces)
430 {
431 surfaceColourArray->setInt((binaryInput->getInt()));
432 System::println(surfaceColourArray->getInt());
433 surfaceColourArray->internIndexForward();
434 return true;
435 }
436 }
437
438 return false;
439 }
440
441 //*********************************************************
442 //transparent??
443 //*********************************************************
444
445 bool LwoLoader::computeChunkVTRN(String &chunk, int chunkValue)
446 {
447 if (chunk.equals("VTRN"))
448 {
449 if (surfaceTransparentArray->getInternIndex() < numberOfSurfaces)
450 {
451 surfaceTransparentArray->setFloat((binaryInput->getFloat()));
452 System::println(surfaceTransparentArray->getFloat());
453 surfaceTransparentArray->internIndexForward();
454 return true;
455 }
456 }
457
458 return false;
459 }
460
461 //*********************************************************
462 //planar cylindric or spherilic
463 //*********************************************************
464
465 bool LwoLoader::computeChunkCTEX(String &chunk, int chunkValue)
466 {
467 if (chunk.equals("CTEX"))
468 {
469 if (surfaceMappingMethod->getInternIndex() < numberOfSurfaces)
470 {
471 String mappingMethodName=binaryInput->getWord();
472 if ((mappingMethodName.length&1) == 1)
473 {
474 binaryInput->getChar();
475 }
476
477 bool statement=true;
478
479 if (mappingMethodName.equals("Planar Image Map"))
480 {
481 surfaceMappingMethod->setInt(1);
482 statement=false;
483 }
484
485 if (mappingMethodName.equals("Cylindric Image Map"))
486 {
487 surfaceMappingMethod->setInt(2);
488 statement=false;
489 }
490
491 if (mappingMethodName.equals("Spherelic Image Map"))
492 {
493 surfaceMappingMethod->setInt(3);
494 statement=false;
495 }
496
497 if (statement)
498 {
499 surfaceMappingMethod->setInt(0);
500 }
501
502 System::println(surfaceMappingMethod->getInt());
503
504 surfaceMappingMethod->internIndexForward();
505
506 return true;
507 }
508 }
509
510 return false;
511 }
512
513
514 //*********************************************************
515 //read texture name
516 //*********************************************************
517
518 bool LwoLoader::computeChunkTIMG(String &chunk, int chunkValue)
519 {
520 if (chunk.equals("TIMG"))
521 {
522 String word=binaryInput->getWord();
523
524 if ((word.length&1) == 1)
525 {
526 binaryInput->getChar();
527 }
528
529 word.cutTheBack(92);
530 word.cutTheBegining('.');
531
532 String filePath="data/texturer/";
533 String fulFilePath=filePath + word + ".rgb";
534 textureNameList->addLast(fulFilePath);
535 System::println(fulFilePath);
536
537 return true;
538 }
539
540 return false;
541 }
542
543 //*********************************************************
544 //texture wrapping
545 //*********************************************************
546
547 bool LwoLoader::computeChunkTWRP(String &chunk, int chunkValue)
548 {
549 if (chunk.equals("TWRP"))
550 {
551 if (surfaceTextureWrappingXArray->getInternIndex() < numberOfSurfaces)
552 {
553 surfaceTextureWrappingXArray->setInt((int)binaryInput->getShort());
554 surfaceTextureWrappingYArray->setInt((int)binaryInput->getShort());
555 System::println(surfaceTextureWrappingXArray->getInt());
556 System::println(surfaceTextureWrappingYArray->getInt());
557 surfaceTextureWrappingXArray->internIndexForward();
558 surfaceTextureWrappingYArray->internIndexForward();
559
560 return true;
561 }
562 }
563
564 return false;
565 }
566
567 //*********************************************************
568 //x or y or z axles
569 //*********************************************************
570
571 bool LwoLoader::computeChunkTFLG(String &chunk, int chunkValue)
572 {
573 if (chunk.equals("TFLG"))
574 {
575 if (surfaceXYZAxleArray->getInternIndex() < numberOfSurfaces)
576 {
577 int axle=(int)binaryInput->getShort();
578
579 int outPutAxle=0;
580
581 if( (axle&1) == 1)
582 {
583 outPutAxle=1;
584 }
585
586 if(((axle>>1)&1) == 1)
587 {
588 outPutAxle=2;
589 }
590
591 if(((axle>>2)&1) == 1)
592 {
593 outPutAxle=3;
594 }
595
596 surfaceXYZAxleArray->setInt(outPutAxle);
597 System::println(surfaceXYZAxleArray->getInt());
598 surfaceXYZAxleArray->internIndexForward();
599 return true;
600 }
601 }
602
603 return false;
604 }
605
606
607 //*********************************************************
608 //texture size x,y,z
609 //*********************************************************
610
611 bool LwoLoader::computeChunkTSIZ(String &chunk, int chunkValue)
612 {
613 if (chunk.equals("TSIZ"))
614 {
615 if (surfaceTextureSizeXArray->getInternIndex() < numberOfSurfaces)
616 {
617 surfaceTextureSizeXArray->setFloat(binaryInput->getFloat());
618 surfaceTextureSizeYArray->setFloat(binaryInput->getFloat());
619 surfaceTextureSizeZArray->setFloat(binaryInput->getFloat());
620 System::println(surfaceTextureSizeXArray->getFloat());
621 System::println(surfaceTextureSizeYArray->getFloat());
622 System::println(surfaceTextureSizeZArray->getFloat());
623 surfaceTextureSizeXArray->internIndexForward();
624 surfaceTextureSizeYArray->internIndexForward();
625 surfaceTextureSizeZArray->internIndexForward();
626
627 return true;
628 }
629 }
630
631 return false;
632 }
633
634 //*********************************************************
635 //texture center x,y,z
636 //*********************************************************
637
638 bool LwoLoader::computeChunkTCTR(String &chunk, int chunkValue)
639 {
640 if (chunk.equals("TCTR"))
641 {
642 if (surfaceTextureCenterXArray->getInternIndex() < numberOfSurfaces)
643 {
644 surfaceTextureCenterXArray->setFloat(binaryInput->getFloat());
645 surfaceTextureCenterYArray->setFloat(binaryInput->getFloat());
646 surfaceTextureCenterZArray->setFloat(binaryInput->getFloat());
647 System::println(surfaceTextureCenterXArray->getFloat());
648 System::println(surfaceTextureCenterYArray->getFloat());
649 System::println(surfaceTextureCenterZArray->getFloat());
650 surfaceTextureCenterXArray->internIndexForward();
651 surfaceTextureCenterYArray->internIndexForward();
652 surfaceTextureCenterZArray->internIndexForward();
653
654 return true;
655 }
656 }
657
658 return false;
659 }
660
661 //*********************************************************
662 // calculate texturemapping
663 //*********************************************************
664
665 void LwoLoader::calcTextureMapping()
666 {
667 polygonPoint1UArray = new FloatArray(polygonSurfaces->size);
668 polygonPoint1VArray = new FloatArray(polygonSurfaces->size);
669 polygonPoint2UArray = new FloatArray(polygonSurfaces->size);
670 polygonPoint2VArray = new FloatArray(polygonSurfaces->size);
671 polygonPoint3UArray = new FloatArray(polygonSurfaces->size);
672 polygonPoint3VArray = new FloatArray(polygonSurfaces->size);
673
674 for ( int p=0; p<polygonSurfaces->size ; p++ )
675 {
676 int whichPolygonPoint=0;
677 float u=0;
678 float v=0;
679
680 calcUVForAVertices(p, whichPolygonPoint, &u, &v);
681
682 polygonPoint1UArray->setFloat(u,p);
683 polygonPoint1VArray->setFloat(v,p);
684
685 whichPolygonPoint++;
686 u=0;
687 v=0;
688
689 calcUVForAVertices(p, whichPolygonPoint, &u, &v);
690
691 polygonPoint2UArray->setFloat(u,p);
692 polygonPoint2VArray->setFloat(v,p);
693
694 whichPolygonPoint++;
695 u=0;
696 v=0;
697
698 calcUVForAVertices(p, whichPolygonPoint, &u, &v);
699
700 polygonPoint3UArray->setFloat(u,p);
701 polygonPoint3VArray->setFloat(v,p);
702
703 }
704 }
705
706
707 void LwoLoader::calcUVForAVertices(int whichPolygon, int whichPolygonPoint, float *u, float *v)
708 {
709 int whichSurface=polygonSurfaces->getInt(whichPolygon);
710
711 float x=xVerticesArray->getFloat(polygonPoints->getInt(whichPolygon*3+whichPolygonPoint))-surfaceTextureCenterXArray->getFloat(whichSurface);
712 float y=yVerticesArray->getFloat(polygonPoints->getInt(whichPolygon*3+whichPolygonPoint))-surfaceTextureCenterYArray->getFloat(whichSurface);
713 float z=zVerticesArray->getFloat(polygonPoints->getInt(whichPolygon*3+whichPolygonPoint))-surfaceTextureCenterZArray->getFloat(whichSurface);
714
715
716 float xTextureSize=surfaceTextureSizeXArray->getFloat(whichSurface);
717 float yTextureSize=surfaceTextureSizeYArray->getFloat(whichSurface);
718 float zTextureSize=surfaceTextureSizeZArray->getFloat(whichSurface);
719 int axle=surfaceXYZAxleArray->getInt(whichSurface);
720
721 if (surfaceMappingMethod->getInt(whichSurface) == 1)
722 {
723 if (axle==3)
724 {
725 u[0]=(x/xTextureSize+0.5f);
726 v[0]=(-y/yTextureSize+0.5f);
727 }
728
729 if (axle==1)
730 {
731 u[0]=(-z/zTextureSize+0.5f);
732 v[0]=(-y/yTextureSize+0.5f);
733 }
734
735 if (axle==2)
736 {
737 u[0]=(z/zTextureSize+0.5f);
738 v[0]=(x/xTextureSize+0.5f);
739 }
740 }
741
742 /*
743 if ( ctex[whichSurface] == 2)
744 {
745 float rz;
746
747 if ( tflg[whichSurface] == 3 )
748 {
749 u=(x/tsiz[whichSurface*3+0]);
750 v=(-y/tsiz[whichSurface*3+1]);
751 rz=(-z/tsiz[whichSurface*3+2]);
752 }
753
754
755 if ( tflg[whichSurface] == 1 )
756 {
757 rz=(x/tsiz[whichSurface*3+0]);
758 v=(y/tsiz[whichSurface*3+1]);
759 u=(z/tsiz[whichSurface*3+2]);
760 }
761
762 if ( tflg[whichSurface] == 2 )
763 {
764 u=(z/tsiz[whichSurface*3+2]);
765 v=(x/tsiz[whichSurface*3+0]);
766 rz=(y/tsiz[whichSurface*3+1]);
767 }
768
769 //twrp[tpoints[v2]*2+0]
770 u=1.0f-((float)(((atan2(v,u)/2)*2)/3.14)+0.25f);
771 v=0.5f+(float)(rz);
772 }
773
774
775 if ( ctex[whichSurface] == 3)
776 {
777
778 if ( tflg[whichSurface] == 2 )
779 {
780 u=(z/tsiz[whichSurface*3+2]+0.5f);
781 v=(x/tsiz[whichSurface*3+0]+0.5f);
782 }
783
784 if ( tflg[whichSurface] == 1 )
785 {
786 u=(-z/tsiz[whichSurface*3+2]+0.5f);
787 v=(-y/tsiz[whichSurface*3+1]+0.5f);
788 }
789
790 if ( tflg[whichSurface] == 3 )
791 {
792 u=(x/tsiz[whichSurface*3+0]+0.5f);
793 v=(-y/tsiz[whichSurface*3+1]+0.5f);
794 }
795 //lon*=twrp[tpoints[v2]*2+0];
796 //lon*=twrp[tpoints[v2]*2+1];
797 }
798 */
799 if ( u[0] < 0 )
800 {
801 u[0]*=-1;
802 }
803
804 if ( v[0] < 0 )
805 {
806 v[0]*=-1;
807 }
808
809
810 if ( u[0] > 1 )
811 {
812 u[0]=1;
813 }
814
815 if ( v[0] > 1)
816 {
817 v[0]=1;
818 }
819 }
820
821
822
823 //vertices
824
825 void LwoLoader::readvertices(Object3d *out)
826 {
827 for ( int n=0 ; n<xVerticesArray->size ; n++ )
828 {
829 out->setvx(xVerticesArray->getFloat(n),n);
830 out->setvy(yVerticesArray->getFloat(n),n);
831 out->setvz(zVerticesArray->getFloat(n),n);
832 }
833 }
834
835 // u,v cordinates
836
837 void LwoLoader::readprepareuv2(Object3d *out)
838 {
839 for ( int n=0 ; n<polygonSurfaces->size ; n++ )
840 {
841 out->setvu(polygonPoint1UArray->getFloat(n),n*3+0);
842 out->setvv(polygonPoint1VArray->getFloat(n),n*3+0);
843 out->setvu(polygonPoint2UArray->getFloat(n),n*3+1);
844 out->setvv(polygonPoint2VArray->getFloat(n),n*3+1);
845 out->setvu(polygonPoint3UArray->getFloat(n),n*3+2);
846 out->setvv(polygonPoint3VArray->getFloat(n),n*3+2);
847 }
848 }
849
850 // transparent
851
852 void LwoLoader::readtransparent(Object3d *out)
853 {
854 for ( int p=0; p<polygonSurfaces->size ; p++ )
855 {
856 // out->settransparent(transparent[p],p);
857 }
858
859 }
860
861 // colour
862
863 void LwoLoader::readcolour(Object3d *out)
864 {
865 for ( int p=0; p<polygonSurfaces->size ; p++ )
866 {
867 // out->setcolour(colour[p],p);
868 }
869 }
870
871 // vertices points
872
873 void LwoLoader::readvpoints(Object3d *out)
874 {
875 for ( int s=0 ; s<polygonPoints->size ; s++ )
876 {
877 out->setpoints(polygonPoints->getInt(s),s);
878 }
879 }
880
881 // texture address
882
883 void LwoLoader::readttpoints(Object3d *out)
884 {
885 for ( int s=0 ; s<polygonSurfaces->size ; s++ )
886 {
887 out->settpoints(polygonSurfaces->getInt(s),s);
888 }
889 }

root@recompile.se
ViewVC Help
Powered by ViewVC 1.1.26