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