bug fix in xrange() that would cause it to yield bogus values
[vox.git] / examples / metamethods.vx
blob1c887b1ab5fcf97dee6f6c73ab64ee94bb199957
1 \r
2 local base_vec=\r
3 {\r
4     function __add__(n)\r
5     {\r
6         return {\r
7             x=x+n.x,\r
8             y=y+n.y,\r
9             z=z+n.z,\r
10         }\r
11     }\r
12     function __sub__(n)\r
13     {\r
14         return {\r
15             x=x-n.x,\r
16             y=y-n.y,\r
17             z=z-n.z,\r
18         }\r
19     }\r
20     function __div__(n)\r
21     {\r
22         return {\r
23             x=x/n.x,\r
24             y=y/n.y,\r
25             z=z/n.z,\r
26         }\r
27     }\r
28     function __mul__(n)\r
29     {\r
30         return {\r
31             x=x*n.x,\r
32             y=y*n.y,\r
33             z=z*n.z,\r
34         }\r
35     }\r
36     function __modulo__(n)\r
37     {\r
38         return {\r
39             x=x%n,\r
40             y=y%n,\r
41             z=z%n,\r
42         }\r
43     }\r
45     function __typeof__()\r
46     {\r
47         return "vector";\r
48     }\r
50     function __get__(key)\r
51     {\r
52         if(key==100)\r
53         {\r
54             return test_field;\r
55         }\r
56     },\r
57     function __set__(key,val)\r
58     {\r
59         ::print("key = "+key+"\n");\r
60         ::print("val = "+val+"\n")\r
61         if(key==100)\r
62         {\r
63             return test_field=val;\r
64         }\r
65     }\r
66     test_field="nothing"\r
67 }\r
69 function vector(_x,_y,_z)\r
70 {\r
71     i = {x=_x, y=_y, z=_z}\r
72     i.setdelegate(base_vec)\r
73     return i\r
74 }\r
75 ////////////////////////////////////////////////////////////\r
77 local v1=vector(1.5,2.5,3.5);\r
78 local v2=vector(1.5,2.5,3.5);\r
80 local r=v1.__add__(v2);\r
83 foreach(i,val in r)\r
84 {\r
85     println(i+" = "+val);\r
86 }\r
88 r = v1 * v2;\r
90 foreach(i,val in r)\r
91 {\r
92     println(i+" = "+val);\r
93 }\r
95 r = v1 / v2;\r
97 foreach(i,val in r)\r
98 {\r
99     println(i + " = " + val);\r
102 r=v1-v2;\r
104 foreach(i,val in r)\r
106     println(i + " = " + val);\r
109 r=v1 % 2;\r
111 foreach(i,val in r)\r
113     println(i+" = "+val);\r
116 println(v1[100]);\r
117 v1[100]="set SUCCEEDED";\r
118 println(v1[100]);\r
120 if(typeof v1=="vector")\r
121     println("<SUCCEEDED>");\r
122 else\r
123     println("<FAILED>");\r