summaryrefslogtreecommitdiff
path: root/vectorgfx/test.bmx
blob: ee346aa15b9c5587c22408baeaac08389213fea4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
' $Id$

Import noddybox.vectorgfx
Strict

Const SCRW=800'1280
Const SCRH=600'1024

SetGraphicsDriver GLMax2DDriver()
Graphics SCRW,SCRH,32,60' Or HARDSYNC
'HideMouse()

SetBlend(ALPHABLEND)

Const SIZE:Int=20
Const MSIZE:Int=40

'Local o1:TVectorGfxObject=New TVectorGfxObject
'Local o2:TVectorGfxObject=New TVectorGfxObject

Local o1:TVectorGfxObject=TVectorGfxObject.Load("obj1.2d")
Local o2:TVectorGfxObject=TVectorGfxObject.Load("obj2.2d")

Local cm:TVectorGfxCollisionMap=TVectorGfxCollisionMap.Create(MSIZE,MSIZE)

Local l:TList=CreateList()

Rem
l.Clear()
l.AddLast(TVectorGfxPoint.Create(-SIZE,-SIZE))
l.AddLast(TVectorGfxPoint.Create(SIZE,-SIZE))
l.AddLast(TVectorGfxPoint.Create(SIZE,SIZE))
l.AddLast(TVectorGfxPoint.Create(-SIZE,SIZE))
o1.SetPoints(l.ToArray())

l.Clear()
l.AddLast(TVectorGfxLine.Create(0,1,255,0,0,1))
l.AddLast(TVectorGfxLine.Create(1,2,0,255,0,2))
l.AddLast(TVectorGfxLine.Create(2,3,255,0,0,1))
l.AddLast(TVectorGfxLine.Create(3,0,0,255,0,2))
o1.SetLines(l.ToArray())
o1.x=400
o1.y=300
o1.Save("obj1.2d")

l.Clear()
l.AddLast(TVectorGfxPoint.Create(-SIZE/2,-SIZE/2))
l.AddLast(TVectorGfxPoint.Create(SIZE/2,-SIZE/2))
l.AddLast(TVectorGfxPoint.Create(SIZE/2,SIZE/2))
l.AddLast(TVectorGfxPoint.Create(-SIZE/2,SIZE/2))
o2.SetPoints(l.ToArray())

l.Clear()
l.AddLast(TVectorGfxLine.Create(0,1,255,255,255,0))
l.AddLast(TVectorGfxLine.Create(1,2,255,255,255,0))
l.AddLast(TVectorGfxLine.Create(2,3,255,255,255,0))
l.AddLast(TVectorGfxLine.Create(3,0,255,255,255,0))
o2.SetLines(l.ToArray())
o2.Save("obj2.2d")
EndRem

Type FadeLine Extends TVectorGfxLineStyle
	Method Draw:Int(x1:Int, y1:Int, x2:Int, y2:Int, r:Int, g:Int, b:Int, id:Int, colmap:TVectorGfxCollisionMap)
		Local mask:Int=0
		Local lp:TList=DoLine(x1,y1,x2,y2)
		
		For Local p:TAlgoPoint=EachIn lp
			SetColor(r,g,b)
			mask:|colmap.SetCollision(p.x,p.y,id)
			Plot(p.x,p.y)
			r=Max(0,r-10)
			g=Max(0,g-10)
			b=Max(0,b-10)
		Next
		
		Return mask
	End Method
End Type

While Not KeyHit(KEY_ESCAPE)
	Cls
	
	cm.Clear()
	cm.SetOffset(MouseX()-MSIZE/2,MouseY()-MSIZE/2)
	
	If KeyHit(KEY_F1)
		VectorGfxSetSolid()
	EndIf

	If KeyHit(KEY_F2)
		VectorGfxSetAlpha(0.5,0.5)
	EndIf
	
	If KeyHit(KEY_F3)
		VectorGfxSetThickAlpha(0.2)
	EndIf
	
	If KeyHit(KEY_F4)
		VectorGfxSetCustom(New FadeLine)
	EndIf
	
	o1.Draw(cm)
	o1.ang=(o1.ang+2) Mod 3600
	
	o2.x=MouseX()
	o2.y=MouseY()
	o2.Draw(cm)
	
	For Local i:Int=0 To 3
		Local p:TVectorGfxPoint[]=o1.AdjustedCoords(i)
		Local v:TVector=o1.Normal(i)
		SetColor(0,0,255)
		DrawLine(o1.x+p[0].x,o1.y+p[0].y,o1.x+p[0].x+v.x*20,o1.y+p[0].y+v.y*20)
	Next
	
	DrawText MilliSecs() + ":Col=" + o2.Draw(cm),0,0
	
	Flip
	FlushMem
Wend

EndGraphics
End