Conditional display problems

#1
Hi!
I wanted to make a hangar with doors that open depending from distance.
Now my doors only work partially. They are displayed open and half open but not closed. here is the code:

;-> Animations
; ----------
;

;
IfVarRange( :Anim000 033b 0 49 )
:Anim000




IfVarRange( :Anim001 033b 50 99 ) TransformCall( :part002 -15 0 -14 0 0 0 0 0 0 ) ;Wall 3
TransformCall( :part002 15 0 -14 0 0 0 0 0 0 ) ;Wall 3_02
:Anim001



IfVarRange( :Anim002 033b 100 500 ) TransformCall( :part001 0 0 -14 0 0 0 0 0 0 ) ;Wall 2
:Anim002





Return

;-------
:part000
; cube - Cube 1
Points( 0
-20 0 -14 ; 0
20 0 -14 ; 1
20 0 14 ; 2
-20 0 14 ; 3
-20 20 -14 ; 4
20 20 -14 ; 5
20 20 14 ; 6
-20 20 14 ; 7
)
RGBSColor( EF 0 0 0 )
Poly( 0 0 -32767 -14 3 7 6 2 ) ;Inside back
Poly( 32767 0 0 -20 0 4 7 3 ) ;Inside left
Poly( -32767 0 0 -20 2 6 5 1 ) ;Inside right
Poly( 0 -32767 0 -20 5 6 7 4 ) ;Inside top
Poly( 0 32767 0 0 0 3 2 1 ) ;Inside bottom
Poly( 0 0 32767 14 2 6 7 3 ) ;Back
Poly( -32767 0 0 20 3 7 4 0 ) ;Left
Poly( 32767 0 0 20 1 5 6 2 ) ;Right
Poly( 0 32767 0 20 4 7 6 5 ) ;Top
Poly( 0 -32767 0 0 1 2 3 0 ) ;Bottom
Return


;-------
:part001
; wall - Wall 2
Points( 8
-20 0 0 ; 0
-20 20 0 ; 1
20 20 0 ; 2
20 0 0 ; 3
)
RGBSColor( EF 253 46 47 )
Poly( 0 0 -32767 0 8 9 10 11 ) ;Front
Poly( 0 0 32767 0 11 10 9 8 ) ;Back
Return


;-------
:part002
; wall - Wall 3
Points( 12
-5 0 0 ; 0
-5 20 0 ; 1
5 20 0 ; 2
5 0 0 ; 3
)
RGBSColor( EF 253 46 46 )
Poly( 0 0 -32767 0 12 13 14 15 ) ;Front
Poly( 0 0 32767 0 15 14 13 12 ) ;Back
Return


EndA




Do you know the problem?

Thanks in advance
Hekto
 
Last edited:
#2
Hi again!
I now found the problem.
After the first query that is shown correctly, FS does not continue with the second one.

IfVarRange( :RET1 33b 50 100 )
Jump( :GO1 )
:RET1
Return
:GO1
TransformCall( :part002 0 0 -14 0 0 0 0 0 0 ) ;Wall 2
Return




IfVarRange( :RET0 33b 30 50 )
Jump( :GO0 )
:RET0
Return
:GO0
TransformCall( :part002 -15 0 -14 0 0 0 0 0 0 ) ;Wall 3
TransformCall( :part002 15 0 -14 0 0 0 0 0 0 ) ;Wall 3_02
Return


What is the missing command that makes FS jump to the second query?
Sorry for asking that but im very new to manual scasm editing.
Hope somebody can help me.
Thanks
Hekto
 
#3
Just thought the problem might be in the precedent code (Here the whole code):




;macrodesc t (EOD)
;defaultscale 1
;designshape -5,-4,-5,3,5,3,5,-4
;--------------------------------------------
; Filename: t.api
; Directory: \Programme\EOD\
; Project:
; Designer:
; Date: 2005-06-05
; Update: 2005-06-05
; Credits:
; Macro generated using EOD 2.2.84
; Any commercial distribution or use of this file is prohibited
;--------------------------------------------
; %1 = Latitude
; %2 = Longtitude
; %4 = Not used [RefpointScale=1, ObjectScale=0.25]
; %5 = Rotation
; %6 = Not Used
; %7 = Not Used
; %8 = Not Used
; %9 = Not Used
; %10 = Visibility range
; %11 = Altitude
; %12 = Detail level
; 12 = Radial visibility range (x 1.5)
; %15 = User defined


Area( B %1 %2 22 )
mif( %12 )
IfVarRange( : 0346 %12 5 )
mifend
PerspectiveCall( :pos )
ShadowCall( :pos )
Jump( : )

:pos
mif( %11 )
RefPoint( 3 :End %1 %2 E= %11 V1= %10 V2= 12 )
melse
RefPoint( 7 :End 1 %1 %2 V1= %10 V2= 12 )
mifend
SetScaleX( :End 0 0 14 ) ; Scale=0.25
mif( %5 )
RotatedCall( :Begin 0 0 %5 )
melse
Call( :Begin )
mifend
:End
Return
:Begin

Call( :part000 ) ;Cube 1
;-> Animations
; ----------
;

;
IfVarRange( :RET1 33b 50 100 )
Jump( :GO1 )
:RET1
Return
:GO1
TransformCall( :part002 0 0 -14 0 0 0 0 0 0 ) ;Wall 2
Return




IfVarRange( :RET0 33b 30 50 )
Jump( :GO0 )
:RET0
Return
:GO0
TransformCall( :part002 -15 0 -14 0 0 0 0 0 0 ) ;Wall 3
TransformCall( :part002 15 0 -14 0 0 0 0 0 0 ) ;Wall 3_02
Return









Return

;-------
:part000
; cube - Cube 1
Points( 0
-20 0 -14 ; 0
20 0 -14 ; 1
20 0 14 ; 2
-20 0 14 ; 3
-20 20 -14 ; 4
20 20 -14 ; 5
20 20 14 ; 6
-20 20 14 ; 7
)
RGBSColor( EF 0 0 0 )
Poly( 0 0 -32767 -14 3 7 6 2 ) ;Inside back
Poly( 32767 0 0 -20 0 4 7 3 ) ;Inside left
Poly( -32767 0 0 -20 2 6 5 1 ) ;Inside right
Poly( 0 -32767 0 -20 5 6 7 4 ) ;Inside top
Poly( 0 32767 0 0 0 3 2 1 ) ;Inside bottom
Poly( 0 0 32767 14 2 6 7 3 ) ;Back
Poly( -32767 0 0 20 3 7 4 0 ) ;Left
Poly( 32767 0 0 20 1 5 6 2 ) ;Right
Poly( 0 32767 0 20 4 7 6 5 ) ;Top
Poly( 0 -32767 0 0 1 2 3 0 ) ;Bottom
Return


;-------
:part001
; wall - Wall 2
Points( 8
-20 0 0 ; 0
-20 20 0 ; 1
20 20 0 ; 2
20 0 0 ; 3
)
RGBSColor( EF 26 253 26 )
Poly( 0 0 -32767 0 8 9 10 11 ) ;Front
Poly( 0 0 32767 0 11 10 9 8 ) ;Back
Return


;-------
:part002
; wall - Wall 3
Points( 12
-5 0 0 ; 0
-5 20 0 ; 1
5 20 0 ; 2
5 0 0 ; 3
)
RGBSColor( EF 253 46 46 )
Poly( 0 0 -32767 0 12 13 14 15 ) ;Front
Poly( 0 0 32767 0 15 14 13 12 ) ;Back
Return


EndA
 
Last edited:

arno

Administrator
Staff member
FSDevConf team
Resource contributor
#4
Hi Hekto,

I will take a good look at your full code later (too late now :)), but the first code you posted looks correct. If the first code fails, a jump is made to the label and the second condition is checked. The same happens for the other conditions. And if the last two are true, something is drawn.

But as I said, I will take a closer look at the total code later.
 

arno

Administrator
Staff member
FSDevConf team
Resource contributor
#5
Hi Hekto,

I now took a good look at your code and the jump labels are set wrong. After the first check is made you always ended up at a Return command, so the second check was never reached. This code should work fine though:

Code:
:Begin

Call( :art000 ) ;Cube 1

;-> Animations
IfVarRange( :RET1 33b 50 100 )
TransformCall( :art002 0 0 -14 0 0 0 0 0 0 ) ;Wall 2
:RET1

IfVarRange( :RET0 33b 30 50 )
TransformCall( :art002 -15 0 -14 0 0 0 0 0 0 ) ;Wall 3
TransformCall( :art002 15 0 -14 0 0 0 0 0 0 ) ;Wall 3_02
:RET0

Return

;-------
:art000
 
#6
You are a real guru, Arno!
Thank you very much!
I just testedyour version and it works qhite fine.
I dont know why i put the returns in there. :banghead:
Greets
hekto
 
Top