/unmaintained/4DNav/window3D/window3D.factor

http://github.com/abeaumont/factor · Factor · 82 lines · 64 code · 11 blank · 7 comment · 3 complexity · 830a03be2ae2d7e4e5f48987a3a38108 MD5 · raw file

  1. ! Copyright (C) 2008 Jeff Bigot
  2. ! See http://factorcode.org/license.txt for BSD license.
  3. USING: kernel
  4. ui.gadgets
  5. ui.render
  6. opengl
  7. opengl.gl
  8. opengl.glu
  9. 4DNav.camera
  10. 4DNav.turtle
  11. math
  12. values
  13. alien.c-types
  14. accessors
  15. namespaces
  16. adsoda
  17. models
  18. prettyprint
  19. ;
  20. IN: 4DNav.window3D
  21. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  22. ! drawing functions
  23. ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  24. TUPLE: window3D < gadget observer ;
  25. : <window3D> ( model observer -- gadget )
  26. window3D new
  27. swap 2dup
  28. projection-mode>> add-connection
  29. 2dup
  30. collision-mode>> add-connection
  31. >>observer
  32. swap <model> >>model
  33. t >>root?
  34. ;
  35. M: window3D pref-dim* ( gadget -- dim ) drop { 300 300 } ;
  36. M: window3D draw-gadget* ( gadget -- )
  37. GL_PROJECTION glMatrixMode
  38. glLoadIdentity
  39. 0.6 0.6 0.6 .9 glClearColor
  40. dup observer>> projection-mode>> value>> 1 =
  41. [ 60.0 1.0 0.1 3000.0 gluPerspective ]
  42. [ -400.0 400.0 -400.0 400.0 0.0 4000.0 glOrtho ] if
  43. dup observer>> collision-mode>> value>>
  44. \ remove-hidden-solids?
  45. set-value
  46. dup observer>> do-look-at
  47. GL_MODELVIEW glMatrixMode
  48. glLoadIdentity
  49. 0.9 0.9 0.9 1.0 glClearColor
  50. 1.0 glClearDepth
  51. GL_LINE_SMOOTH glEnable
  52. GL_BLEND glEnable
  53. GL_DEPTH_TEST glEnable
  54. GL_LEQUAL glDepthFunc
  55. GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA glBlendFunc
  56. GL_LINE_SMOOTH_HINT GL_NICEST glHint
  57. 1.25 glLineWidth
  58. GL_COLOR_BUFFER_BIT GL_DEPTH_BUFFER_BIT bitor
  59. glClear
  60. glLoadIdentity
  61. GL_LIGHTING glEnable
  62. GL_LIGHT0 glEnable
  63. GL_COLOR_MATERIAL glEnable
  64. GL_FRONT GL_AMBIENT_AND_DIFFUSE glColorMaterial
  65. ! *************************
  66. model>> value>>
  67. [ space->GL ] when*
  68. ! *************************
  69. ;
  70. M: window3D graft* drop ;
  71. M: window3D model-changed nip relayout ;