SEGMENT.C 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
  3. SOFTWARE CORPORATION ("PARALLAX"). PARALLAX, IN DISTRIBUTING THE CODE TO
  4. END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
  5. ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
  6. IN USING, DISPLAYING, AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
  7. SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
  8. FREE PURPOSES. IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
  9. CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES. THE END-USER UNDERSTANDS
  10. AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.
  11. COPYRIGHT 1993-1999 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
  12. */
  13. #pragma off (unreferenced)
  14. static char rcsid[] = "$Id: $";
  15. #pragma on (unreferenced)
  16. #include "segment.h"
  17. #include "3d.h"
  18. #include "gr.h"
  19. extern face Faces[];
  20. extern vector Vertices[];
  21. extern uvpair Uvs[];
  22. extern rgb Rgbs[];
  23. extern int Num_faces,Num_vertices,Num_uvs,Num_rgbs,Num_face_verts;
  24. extern short Face_verts[];
  25. extern int Face_verts_free;
  26. // ---------------------------------------------------------------------------------------------
  27. // ---------- Segment interrogation functions ----------
  28. // ----------------------------------------------------------------------------
  29. // Return a pointer to the list of vertex indices for the current segment in vp and
  30. // the number of vertices in *nv.
  31. void seg_get_vertex_list(segment *s,int *nv,short **vp)
  32. {
  33. *vp = s->fvs;
  34. *nv = 8;
  35. }
  36. // ----------------------------------------------------------------------------
  37. // Return a pointer to the list of vertex indices for face facenum in vp and
  38. // the number of vertices in *nv.
  39. void seg_get_face_vertex_list(segment *s,int facenum,int *nv,short **vp)
  40. {
  41. face *fp = &Faces[s->iface + facenum];
  42. *vp = &Face_verts[fp->ivert];
  43. *nv = fp->num_vertices;
  44. }
  45. // ----------------------------------------------------------------------------
  46. // Set *nf = number of faces in segment s.
  47. void seg_get_num_faces(segment *s,int *nf)
  48. {
  49. *nf = s->num_faces;
  50. }