;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;                                              ;;;;;;;;
;;;;;;;;  Example Shape #8 - Shape #4 animated using  ;;;;;;;;
;;;;;;;;  IFSEM to call the frames & using the same   ;;;;;;;;
;;;;;;;;  VERTEX reference numbers for each frame.    ;;;;;;;;
;;;;;;;;                                              ;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	SHAPE 10000

;;;;;;;;;vertex list;;;;;;;;;;;;;;;;;;;;;;

	VERTEX 01,30,-15,+90
	VERTEX 02,30,+15,+90
	VERTEX 03,30,+10,-70
	VERTEX 04,30,-15,-90

	VERTEX 05,030,-5,+40
	VERTEX 08,030,-5,-20
	VERTEX 09,030,+5,+40
	VERTEX 10,030,+5,-20

	VERTEX 101,-30,-15,+90
	VERTEX 102,-30,+15,+90
	VERTEX 103,-30,+10,-70
	VERTEX 104,-30,-15,-90

	VERTEX 105,-030,-5,+40
	VERTEX 108,-030,-5,-20
	VERTEX 109,-030,+5,+40
	VERTEX 110,-030,+5,-20

	VERTEX 100,0,5,120

	VERTEX 200,00,-15,-50
	VERTEX 201,+5,-15,-90
	VERTEX 202,00,-50,-110
	VERTEX 203,-5,-15,-90

;;;;;;;;;condition list;;;;;;;;;;;;;;;;;;;

	IFSEM=0 GOSUB frame_0	;All these IFSEM commands check the value of
	IFSEM=1 GOSUB frame_1	;the SEM flags (as set by the PARENT PROGRAM)
	IFSEM=2 GOSUB frame_2	;If no flags are set (1st line) then the label
	IFSEM=3 GOSUB frame_3	;"frame_0" is jumped to. If the 1st flag alone
	IFSEM=4 GOSUB frame_4	;is set, "frame_1" is jumped to. if the 2nd 
	IFSEM=5 GOSUB frame_5	;flag alone is set, "frame_2" is jumped to. If
	IFSEM=6 GOSUB frame_6	;flags 1+2 alone are set then "frame_3" is 
	IFSEM=7 GOSUB frame_7	;jumped to etc...
	IFSEM=8 GOSUB frame_8	;The modules being jumped to simply contain the 
	IFSEM=9 GOSUB frame_9	;same four vertices that define the left and
	IFSEM=10 GOSUB frame_10	;right wing tips, but in different positions.
	IFSEM=11 GOSUB frame_11	;Because only one of the modules can be called 
	IFSEM=12 GOSUB frame_12	;at any one time during the course of the main 
	IFSEM=13 GOSUB frame_13	;program loop it is quite safe to reference the 
	IFSEM=14 GOSUB frame_14	;same vertices many times without fear of 
	IFSEM=15 GOSUB frame_15	;causing a "DUPLICATE VERTEX" error.
	IFSEM=16 GOSUB frame_16	;
	IFSEM=17 GOSUB frame_17	;There are 21 frames called in this example,
	IFSEM=18 GOSUB frame_18	;but anything up to 256 is possible.
	IFSEM=19 GOSUB frame_19	;
	IFSEM=20 GOSUB frame_20	;

	IFVIS 4,1,2 GOTO right_view		;The comments and notes that accompany
	IFVIS 102,101,104 GOTO left_view	;these lines can be found in EXAMPLE#4
					;which is where these lines and the 
	GOSUB left_wing			;facet lists below originally came from.
	GOSUB right_wing			;
	GOTO body				;
					;
right_view:				;
	GOSUB left_wing			;
	GOSUB body			;
	GOTO right_wing			;
					;
left_view:				;
	GOSUB right_wing			;
	GOSUB body			;
	GOTO left_wing			;
					;
;;;;;;;;;modules;;;;;;;;;;;;;;;;;;;;;;;	;
					;
body:					;
	DRWPOLY 31,1,4,104,101		;
	DRWPOLY 30,200,201,202		;
	DRWPOLY 29,202,203,200		;
	DRWPOLY 33,202,201,203		;
	DRWPOLY 33,1,2,3,4			;
	DRWPOLY 33,103,102,101,104		;
	DRWPOLY 35,104,4,3,103		;
	DRWPOLY 36,103,3,2,102		;
	DRWPOLY 30,100,1,101		;
	DRWPOLY 32,100,2,1			;
	DRWPOLY 32,100,101,102		;
	DRWPOLY 34,100,102,2		;
	RETURN				;
					;
left_wing:				;
	DRWPOLY 34,106,109,105		;
	DRWPOLY 36,108,110,107		;
	DRWPOLY 32,108,107,106,105		;
	DRWPOLY 37,106,107,110,109		;
	RETURN				;
					;
right_wing:				;
	DRWPOLY 34,05,09,06			;The comments and notes that accompany
	DRWPOLY 36,07,10,08			;these lines can be found in EXAMPLE#4
	DRWPOLY 32,06,07,08,05		;which is where these lines and the 
	DRWPOLY 37,10,07,06,09		;condition lists above originally came 
	RETURN				;from.

;;;;;;;;;animation modules;;;;;;;;;;;;;;;

frame_0:	VERTEX 106,-130,50,10	;This module or one of the following twenty can be 
	VERTEX 107,-130,50,-30	;called by setting the correct SEM flags. Each one 
	VERTEX 006,130,50,10	;describes the wing tips in a different position
	VERTEX 007,130,50,-30	;so when called in sequence by the PARENT PROGRAM 
	RETURN			;the wings are made to move. (ANIMATION !!)

frame_1:	VERTEX 106,-130,45,10
	VERTEX 107,-130,45,-30
	VERTEX 006,130,45,10
	VERTEX 007,130,45,-30
	RETURN

frame_2:	VERTEX 106,-130,40,10
	VERTEX 107,-130,40,-30
	VERTEX 006,130,40,10
	VERTEX 007,130,40,-30
	RETURN

frame_3:	VERTEX 106,-130,35,10
	VERTEX 107,-130,35,-30
	VERTEX 006,130,35,10
	VERTEX 007,130,35,-30
	RETURN

frame_4:	VERTEX 106,-130,30,10
	VERTEX 107,-130,30,-30
	VERTEX 006,130,30,10
	VERTEX 007,130,30,-30
	RETURN

frame_5:	VERTEX 106,-130,25,10
	VERTEX 107,-130,25,-30
	VERTEX 006,130,25,10
	VERTEX 007,130,25,-30
	RETURN

frame_6:	VERTEX 106,-130,20,10
	VERTEX 107,-130,20,-30
	VERTEX 006,130,20,10
	VERTEX 007,130,20,-30
	RETURN

frame_7:	VERTEX 106,-130,15,10
	VERTEX 107,-130,15,-30
	VERTEX 006,130,15,10
	VERTEX 007,130,15,-30
	RETURN

frame_8:	VERTEX 106,-130,10,10
	VERTEX 107,-130,10,-30
	VERTEX 006,130,10,10
	VERTEX 007,130,10,-30
	RETURN

frame_9:	VERTEX 106,-130,5,10
	VERTEX 107,-130,5,-30
	VERTEX 006,130,5,10
	VERTEX 007,130,5,-30
	RETURN

frame_10	VERTEX 106,-130,0,10
	VERTEX 107,-130,0,-30
	VERTEX 006,130,0,10
	VERTEX 007,130,0,-30
	RETURN

frame_11	VERTEX 106,-130,-5,10
	VERTEX 107,-130,-5,-30
	VERTEX 006,130,-5,10
	VERTEX 007,130,-5,-30
	RETURN

frame_12	VERTEX 106,-130,-10,10
	VERTEX 107,-130,-10,-30
	VERTEX 006,130,-10,10
	VERTEX 007,130,-10,-30
	RETURN

frame_13	VERTEX 106,-130,-15,10
	VERTEX 107,-130,-15,-30
	VERTEX 006,130,-15,10
	VERTEX 007,130,-15,-30
	RETURN

frame_14	VERTEX 106,-130,-20,10
	VERTEX 107,-130,-20,-30
	VERTEX 006,130,-20,10
	VERTEX 007,130,-20,-30
	RETURN

frame_15	VERTEX 106,-130,-25,10
	VERTEX 107,-130,-25,-30
	VERTEX 006,130,-25,10
	VERTEX 007,130,-25,-30
	RETURN

frame_16	VERTEX 106,-130,-30,10
	VERTEX 107,-130,-30,-30
	VERTEX 006,130,-30,10
	VERTEX 007,130,-30,-30
	RETURN

frame_17	VERTEX 106,-130,-35,10
	VERTEX 107,-130,-35,-30
	VERTEX 006,130,-35,10
	VERTEX 007,130,-35,-30
	RETURN

frame_18	VERTEX 106,-130,-40,10
	VERTEX 107,-130,-40,-30
	VERTEX 006,130,-40,10
	VERTEX 007,130,-40,-30
	RETURN

frame_19	VERTEX 106,-130,-45,10
	VERTEX 107,-130,-45,-30
	VERTEX 006,130,-45,10
	VERTEX 007,130,-45,-30
	RETURN

frame_20	VERTEX 106,-130,-50,10
	VERTEX 107,-130,-50,-30
	VERTEX 006,130,-50,10
	VERTEX 007,130,-50,-30
	RETURN

	END

