New Orbiter SVN commit (r.71, Oct 14 2017)

SVN commit #70

I've just pushed a new commit (#70) to SVN.

This doesn't contain any functional changes at all, so probably isn't very interesting to general users, but it incorporates fairly substantial changes to my Orbiter build setup, which are reflected in major changes to the project files (my own and those in the SDK samples).

For Orbiter developers it might be a good idea to check out this version and make sure that addon builds still work as expected.

Provided I haven't broken anything majorly, I can now go back to more interesting stuff. The next beta will have fixes to the rotational behaviour of docked assemblies, as discussed in this thread.
 
I have a suggestion, or maybe a feature request. Can't we have scripts for surface bases to make them smart and dynamic? Maybe like wide-awake ultra version as envisaged by face and wehaveaproblem, but without the seperate persistent vessels in the scenarios always. The base menus could be accessed from the camera menu, and controlled like the ground observer camera points as defined. For example, the KSC Tower ground observer point would also include options of switching on local lights added by script for night launches. The VAB point would also include option of opening or closing the vab doors. The KSC Tower can also have animations of the various features. Then spacecraft module can be bypassed entirely and it could become a feature available for Orbiter bases by default itself, if the base maker chooses to do so. Just the Orbiter core has to provide support for this functionality.

Just my ideas..
 
I have a suggestion, or maybe a feature request. Can't we have scripts for surface bases to make them smart and dynamic? Maybe like wide-awake ultra version as envisaged by face and wehaveaproblem, but without the seperate persistent vessels in the scenarios always. The base menus could be accessed from the camera menu, and controlled like the ground observer camera points as defined. For example, the KSC Tower ground observer point would also include options of switching on local lights added by script for night launches. The VAB point would also include option of opening or closing the vab doors. The KSC Tower can also have animations of the various features. Then spacecraft module can be bypassed entirely and it could become a feature available for Orbiter bases by default itself, if the base maker chooses to do so. Just the Orbiter core has to provide support for this functionality.

Just my ideas..

I remember the suggestion to allow a something like a DLL for bases. Would be not hard then to simply add a script engine or configuration file parser to get the desired results. Loading and saving scenario files would be one issue then, because those would no longer be vessels, the file format would break slightly and no longer be compatible to previous versions. A DLL per building would be easier to understand for developers (less coordinate system madness), but I could see some development hell ahead, since there are much more questions to solve. A single DLL per base with a fixed horizon relative coordinate system would be easier to get into the engine - defining individual buildings could then be part of DLL and thus community work.

Another option would be making some vessels pinned to the surface of the planet. They would still be full vessels regarding Orbiters API and capabilities, but would not change their position or attitude regarding the planetary surface. Is that good enough?

Extending the default menus might be harder, but I could see a way to include something slightly less without needing a change to Orbiters engine:

Simply add a function plugin to Orbiter to control bases and make it possible to extend it just like it was done with the scenario editor.

So like a scenario editor, we would then have a base remote control panel.
 
Last edited:
A single DLL per base with a fixed horizon relative coordinate system would be easier to get into the engine - defining individual buildings could then be part of DLL and thus community work.

Indeed. I remember the biggest problem in AU being the coordinates mess. The placing of buildings was manageable at first, but for things like beacons we settled on the coordinates being defined in the vessel configuration file via custom INI-style for each building, and then placed by the single base "vessel". That way the designer was able to place them to his liking without continued fiddling with the code. Example:
Code:
; === Configuration file for vessel class AscensionUltra ===
ClassName = AscensionUltra
Module = AscensionUltra
EditorModule = AscensionUltra
ImageBmp = Images\Vessels\Default\DeltaGlider.bmp
Help = AscensionUltra,AscensionUltra
END_PARSE

[TALKERVESSEL]
; <voice required="Gender=Male">
Voice=<pitch absmiddle="-10">
Color=0.8,0,0
ACK0=Affirmitive
ACK1=Roger
ACK2=Wilco

[TALKERATC]
; <voice required="Gender=Female">
Voice=<pitch absmiddle="10">
ACK0=Affirmitive
ACK1=Roger
ACK2=Wilco

[TAXIWAYS]
; BeaconParams is default
; BeaconParamsX is parameters especially for array X
; Format: size in meter, fall-off parameter, period in seconds, duration in seconds, propagation in seconds
BeaconParams=1.4, 0.4, 2, 0.3, -0.2 

; BeaconArrayX is coordinates for array X
; Format: start x,y,z ___ end x,y,z ___ color R,G,B from 0-255 ___ size in beacons
BeaconArray0=254,0,395   940,0,395   0,255,0   34 
BeaconArray1=980,0,395   2430,0,395   0,255,0   73
BeaconArray2=2442,0,398   2452,0,408   0,255,0   2
BeaconArray3=2455,0,420   2455,0,740   0,255,0   16
BeaconArray4=2455,0,790   2455,0,880   0,255,0   5
BeaconArray5=2455,0,925   2455,0,1015   0,255,0   5
BeaconArray6=4460,0,1015   4460,0,925   0,255,0   5
BeaconArray7=4460,0,880   4460,0,790   0,255,0   5
BeaconArray8=4460,0,740   4460,0,430   0,255,0   16
BeaconArray9=4463,0,418   4473,0,408   0,255,0   2
BeaconArray10=4485,0,405   5295,0,405   0,255,0   41
BeaconArray11=5307,0,408   5317,0,418   0,255,0   2
BeaconArray12=5320,0,430   5320,0,740   0,255,0   16
BeaconArray13=5320,0,790   5320,0,880   0,255,0   5
BeaconArray14=5320,0,925   5320,0,1015   0,255,0   5
BeaconArray15= 765,0,1015   765,0,925   0,255,0   5
BeaconArray16= 765,0,880   765,0,790   0,255,0   5
BeaconArray17=768,0,778    778,0,768   0,255,0   2
BeaconArray18= 788,0,765   940,0,765   0,255,0   8
BeaconArray19=990,0,765   2430,0,765   0,255,0   73
BeaconArray20=2480,0,765   4435,0,765   0,255,0   98
BeaconArray21=4485,0,765   5295,0,765   0,255,0   41
BeaconArray22=5345,0,765   5495,0,765   0,255,0   8
BeaconArray23=5507,0,768   5517,0,778   0,255,0   2
BeaconArray24=5520,0,790   5520,0,880   0,255,0   5
BeaconArray25=5520,0,925   5520,0,1015   0,255,0   5
BeaconArray26= 965,0,420   965,0,740   0,255,0   16
BeaconArray27=965,0,790   965,0,880   0,255,0   5
BeaconArray28= 965,0,925   965,0,1015   0,255,0   5
BeaconArray29=965,0,1095   965,0,1235   0,255,0   7
BeaconArray30=968,0,1247   978,0,1257   0,255,0   2
BeaconArray31=990,0,1260   1177,0,1260   0,255,0   10

; BeaconPathX is definition of path X as sequence of arrays
BeaconPath0=	0,	1,																			
BeaconPath1=	0,	1,	2,	3,	20,	8,	9,	10,													
BeaconPath2=	0,	26,	27,	28,	29,	30,	31,														
BeaconPath3=	-19,	-26,	-1,	-0,																	
BeaconPath4=	1,	2,	3,	19,	20,	8,	9,	10,													
BeaconPath5=	-19,	-1,	26,	27,	28,	29,	30,	31,													
BeaconPath6=	-10,	-9,	-8,	-20,	-19,																
BeaconPath7=	-10,	-9,	-8,	-20,	-19,	-26,	-0,														
BeaconPath8=	-10,	-9,	-8,	-20,	-19,	27,	28,	29,	30,	31,											
BeaconPath9=	16,	17,	18,	-27,	19,	-4,	-3,	-2,	-1,	7,	-20,	-13,	-21,	-24,	-23,	-22,					
BeaconPath10=	16,	17,	18,	-27,	-26,	-0,	-4,	-19,	7,	-20,	-13,	-21,	-24,	-23,	-22,						
BeaconPath11=	16,	17,	18,	-27,	19,	-4,	20,	7,	8,	9,	10,	-13,	-21,	-24,	-23,	-22,					
BeaconPath12=	16,	17,	18,	-27,	19,	-4,	20,	7,	21,	-13,	-24,	-23,	-22,								
BeaconPath13=	15,	16,	17,	18,	-28,	-27,	19,	-5,	-4,	-3,	-2,	-1,	6,	7,	-20,	-14,	-13,	-21,	-25,	-24,	-23,
BeaconPath14=	15,	16,	17,	18,	-28,	-27,	-26,	-0,	-5,	-4,	-19,	6,	7,	-20,	-14,	-13,	-21,	-25,	-24,	-23,	-22,
BeaconPath15=	15,	16,	17,	18,	-28,	-27,	19,	-5,	-4,	20,	6,	7,	8,	9,	10,	-14,	-13,	-21,	-25,	-24,	-23,
BeaconPath16=	15,	16,	17,	18,	-28,	-27,	19,	-5,	-4,	20,	6,	7,	21,	-14,	-13,	-25,	-24,	-23,	-22,		
BeaconPath17=	21,	-12,	-11,	-10,																	
BeaconPath18=	-21,	-20,	-19,	27,																	
BeaconPath19=	-21,	-20,	-19,	27,	28,																
BeaconPath20=	21,	13,	14,																		
BeaconPath21=	21,	13,																			
BeaconPath22=	-19,	-1,																			
BeaconPath23=	1,	19,																			

; BeaconEndPointN is text for Nth route end point
BeaconEndPoint0=Launch
BeaconEndPoint1=Storage Hangars
BeaconEndPoint2=TA Hangars
BeaconEndPoint3=Aux Hangars
BeaconEndPoint4=Runway 13L
BeaconEndPoint5=Runway 13R
BeaconEndPoint6=Runway 31L
BeaconEndPoint7=Runway 31R
BeaconEndPoint8=Airport
BeaconEndPoint9=Runway 13L/31R
BeaconEndPoint10=Runway 31L/13R
BeaconEndPoint11=Lease Hangars

; BeaconRouteN is Nth definition for route collection
; Format: path ID ___ end point start : end point end ___ reversed (1/0) ___ priority
BeaconRoute0=0   1:2   1   78
BeaconRoute1=1   1:3   1   76
BeaconRoute2=2   1:0   1   79
BeaconRoute3=3   2:1   1   97
BeaconRoute4=4   2:3   1   96
BeaconRoute5=5   2:0   1   99
BeaconRoute6=6   3:2   1   38
BeaconRoute7=7   3:1   1   36
BeaconRoute8=8   3:0   1   39
BeaconRoute9=9   9:2   1   59
BeaconRoute10=10   9:1   1   57
BeaconRoute11=11   9:3   1   55
BeaconRoute12=12   9:8   1   56
BeaconRoute13=13   10:2   1   49
BeaconRoute14=14   10:1   1   47
BeaconRoute15=15   10:3   1   45
BeaconRoute16=16   10:8   1   46
BeaconRoute17=17   8:3   1   65
BeaconRoute18=18   8:4   1   69
BeaconRoute19=19   8:5   1   66
BeaconRoute20=20   8:6   1   67
BeaconRoute21=21   8:7   1   68
BeaconRoute22=22   11:2   1   88
BeaconRoute23=23   2:11   1   98
BeaconRoute24=0   1:11   1   77
BeaconRoute25=3   11:1   1   87
BeaconRoute26=4   11:3   1   86
BeaconRoute27=5   11:0   1   89
BeaconRoute28=6   3:11   1   37
BeaconRoute29=9   9:11   1   58
BeaconRoute30=13   10:11   1   48

[RUNWAYS]
BeaconParams=1.4, 0.4, 2, 0.12, -0.07
BeaconParams35=1.4, 0.4, -2, 0.12, -0.07
BeaconParams45=1.4, 0.4, -2, 0.12, -0.07
BeaconParams55=1.4, 0.4, 2, 0.12, -0.07
BeaconParams65=1.4, 0.4, 2, 0.12, -0.07
BeaconArray0=1010,0,880   2410,0,880   255,255,255   56;	70
BeaconArray1=2500,0,880   4415,0,880   255,255,255   67;	96
BeaconArray2=4505,0,880   5275,0,880   255,255,255   32;	40
BeaconArray3=1010,0,925   2410,0,925   255,255,255   56;	70
BeaconArray4=2500,0,925   4415,0,925   255,255,255   67;	96
BeaconArray5=4505,0,925   5275,0,925   255,255,255   32;	40
BeaconArray6=1010,0,902.5   5275,0,902.5   255,255,255   98;	300
BeaconArray7=1010,0,880   1010,0,925   0,0,255   8
BeaconArray8=5365,0,880   5365,0,925   255,0,0   8
BeaconArray9=5545,0,880   5545,0,925   255,0,0   13
BeaconArray10=1010,0,1015   1010,0,1095   0,0,255   15
BeaconArray11=5365,0,1015   5365,0,1095   255,0,0   15
BeaconArray12=5545,0,1015   5545,0,1095   255,0,0   15;25
BeaconArray13=1010,0,1015   2410,0,1015   255,255,255   56
BeaconArray14=2500,0,1015   4415,0,1015   255,255,255   67
BeaconArray15=4505,0,1015   5275,0,1015   255,255,255   32
BeaconArray16=1010,0,1095   2410,0,1095   255,255,255   56
BeaconArray17=2500,0,1095   4415,0,1095   255,255,255   67
BeaconArray18=4505,0,1095   5275,0,1095   255,255,255   32
BeaconArray19=1010,0,1055   5275,0,1055   255,255,255   98
BeaconArray20=5275,0,1015   5275,0,1095   0,0,255   15
BeaconArray21=920,0,1015   920,0,1095   255,0,0   15
BeaconArray22=740,0,1015   740,0,1095   255,0,0   15;25
BeaconArray23=5275,0,880   5275,0,925   0,0,255   8
BeaconArray24=920,0,880   920,0,925   255,0,0   8
BeaconArray25=740,0,880   740,0,925   255,0,0   13
BeaconArray26=5060,0,885   5365,0,885   255,255,0   16
BeaconArray27=5060,0,920   5365,0,920   255,255,0   16
BeaconArray28=740,0,880   1010,0,880   255,255,0   18
BeaconArray29=740,0,925   1010,0,925   255,255,0   18
BeaconArray30=740,0,902.5   1010,0,902.5   255,255,0   18
BeaconArray31=740,0,895   1010,0,895   255,0,0   18
BeaconArray32=740,0,898   1010,0,898   255,0,0   18
BeaconArray33=740,0,907   1010,0,907   255,0,0   18
BeaconArray34=740,0,910   1010,0,910   255,0,0   18
BeaconArray35=0,0,902.5   740,0,902.5   255,255,255   25
BeaconArray36=4970,0,1030   5275,0,1030   255,255,0   16
BeaconArray37=4970,0,1080   5275,0,1080   255,255,0   16
BeaconArray38=740,0,1015   1010,0,1015   255,255,0   18
BeaconArray39=740,0,1095   1010,0,1095   255,255,0   18
BeaconArray40=740,0,1055   1010,0,1055   255,255,0   18
BeaconArray41=740,0,1035   1010,0,1035   255,0,0   18
BeaconArray42=740,0,1040   1010,0,1040   255,0,0   18
BeaconArray43=740,0,1070   1010,0,1070   255,0,0   18
BeaconArray44=740,0,1075   1010,0,1075   255,0,0   18
BeaconArray45=0,0,1055   740,0,1055   255,255,255   25
BeaconArray46=920,0,1030   1225,0,1030   255,255,0   16
BeaconArray47=920,0,1080   1225,0,1080   255,255,0   16
BeaconArray48=5275,0,1015   5545,0,1015   255,255,0   18
BeaconArray49=5275,0,1095   5545,0,1095   255,255,0   18
BeaconArray50=5275,0,1055   5545,0,1055   255,255,0   18
BeaconArray51=5275,0,1035   5545,0,1035   255,0,0   18
BeaconArray52=5275,0,1040   5545,0,1040   255,0,0   18
BeaconArray53=5275,0,1070   5545,0,1070   255,0,0   18
BeaconArray54=5275,0,1075   5545,0,1075   255,0,0   18
BeaconArray55=5275,0,1055   6105,0,1055   255,255,255   25
BeaconArray56=1010,0,890   1315,0,890   255,255,0   16
BeaconArray57=1010,0,915   1315,0,915   255,255,0   16
BeaconArray58=5275,0,880   5545,0,880   255,255,0   18
BeaconArray59=5275,0,925   5545,0,925   255,255,0   18
BeaconArray60=5275,0,902.5   5545,0,902.5   255,255,0   18
BeaconArray61=5275,0,895   5545,0,895   255,0,0   18
BeaconArray62=5275,0,898   5545,0,898   255,0,0   18
BeaconArray63=5275,0,907   5545,0,907   255,0,0   18
BeaconArray64=5275,0,910   5545,0,910   255,0,0   18
BeaconArray65=5545,0,902.5   6105,0,902.5   255,255,255   25

BeaconPath0=  0, 1, 2, 3, 4, 5, 6		;13L/31R Static
BeaconPath1=  7, 8, 9								;13L Static
BeaconPath2= 10,11,12								;13R Static
BeaconPath3= 13,14,15,16,17,18,19		;13R/31L Static
BeaconPath4= 20,21,22								;31L Static
BeaconPath5= 23,24,25								;31R Static
BeaconPath6= 26,27									;13L Take-Off
BeaconPath7= 28,29,30,31,32,33,34,35;13L Landing
BeaconPath8= 36,37									;13R Take-Off
BeaconPath9= 38,39,40,41,42,43,44,45;13R Landing
BeaconPath10=46,47									;31L Take-Off
BeaconPath11=48,49,50,51,52,53,54,55;31L Landing
BeaconPath12=56,57									;31R Take-Off
BeaconPath13=58,59,60,61,62,63,64,65;31R Landing

;Experimental section for runway grouping instead of pathing
BeaconGroup0=left static: 0, 1, 2, 3, 4, 5, 6
BeaconGroup1=13L static:  7, 8, 9
BeaconGroup2=13R static: 10,11,12
BeaconGroup3=right static: 13,14,15,16,17,18,19
BeaconGroup4=31L static: 20,21,22
BeaconGroup5=31R static: 23,24,25
BeaconGroup6=13L takeoff: 26,27
BeaconGroup7=13L landing: 28,29,30,31,32,33,34,35
BeaconGroup8=13R takeoff: 36,37
BeaconGroup9=13R landing: 38,39,40,41,42,43,44,45
BeaconGroup10=31L takeoff:46,47
BeaconGroup11=31L landing:48,49,50,51,52,53,54,55
BeaconGroup12=31R takeoff:56,57
BeaconGroup13=31R landing:58,59,60,61,62,63,64,65
;Experimental section end

BeaconEndPoint0=Runway 13L
BeaconEndPoint1=Runway 13R
BeaconEndPoint2=Runway 31L
BeaconEndPoint3=Runway 31R
BeaconEndPoint4=Static
BeaconEndPoint5=Take-Off
BeaconEndPoint6=Landing

BeaconRoute0=0 4:0 0 49
BeaconRoute1=1 0:4 0 99
BeaconRoute2=2 1:4 0 89
BeaconRoute3=3 4:1 0 48
BeaconRoute4=4 2:4 0 79
BeaconRoute5=5 3:4 0 69
BeaconRoute6=6 0:5 0 98
BeaconRoute7=7 0:6 0 97
BeaconRoute8=8 1:5 0 88
BeaconRoute9=9 1:6 0 87
BeaconRoute10=10 2:5 0 78
BeaconRoute11=11 2:6 0 77
BeaconRoute12=12 3:5 0 68
BeaconRoute13=13 3:6 0 67

[LAUNCHTUNNEL]
BeaconParams=1.4, 0.1, 0, 0, 0

; BeaconGroupN is Nth definition for a beacon group
; Format: <name>:<beaconArrayX>,<beaconArrayY>,<beaconArrayZ>,... with X,Y,Z arbitrary beacon array definition numbers
BeaconGroup0=fixed:0,1,2,3,4,5,6,7,8,9,10,11
BeaconArray0=-318,0,-25   4270,0,-25   255,255,255   230
BeaconArray1=-318,0,25   4270,0,25   255,255,255   230
BeaconArray2=-318,0,0   272,0,0   255,255,255   30
BeaconGroup9=requesthold:3
BeaconArray3=-318,0,-25   -318,0,25   255,0,0   7
BeaconGroup10=preflighthold:4
BeaconArray4=-181,0,-25   -181,0,25   255,0,0   7
BeaconGroup11=paxhold:5
BeaconArray5=-74,0,-25   -74,0,25   255,0,0   7
BeaconGroup12=fuelhold:6
BeaconArray6=39,0,-25   39,0,25   255,0,0   7
BeaconGroup13=launchhold:7
BeaconArray7=275,0,-25   275,0,25   255,0,0   10
BeaconArray8=4275,0,-25   4275,0,25   255,0,0   7
BeaconArray9=4281,0,-25   4281,0,25   255,0,0   10
BeaconArray10=3967,0,-15   4275,0,-15   255,255,0   16
BeaconArray11=3967,0,15   4275,0,15   255,255,0   16

BeaconGroup1=tofueling:12
BeaconParams12=1.4, 0.1, -2, 0.12, -0.07
BeaconArray12=-318,0,0   39,0,0   0,255,0   18

BeaconGroup14=exitline:13,24

BeaconGroup2=tolaunch:13,14,15,16
BeaconParams13=1.4, 0.1, -2, 0.12, -0.07
BeaconArray13=39,0,0   275,0,0   0,255,0   12
BeaconParams14=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray14=275,0,-25   275,0,25   255,0,0   20
BeaconParams15=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray15=275,0,-45   275,30,-45   255,0,0   15
BeaconParams16=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray16=275,0,45   275,30,45   255,0,0   15

BeaconGroup3=door2warn:17,18,19
BeaconParams17=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray17=275,0,-25   275,0,25   255,140,0   20
BeaconParams18=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray18=275,0,-45   275,30,-45   255,140,0   15
BeaconParams19=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray19=275,0,45   275,30,45   255,140,0   15

BeaconGroup4=door1warn:20
BeaconParams20=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray20=48,0,-25   48,0,25   255,140,0   10

BeaconGroup5=launch:21,22,23,24
BeaconParams21=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray21=275,0,-25   275,0,25   0,255,0   20
BeaconParams22=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray22=275,0,-45   275,30,-45   0,255,0   15
BeaconParams23=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray23=275,0,45   275,30,45   0,255,0   15
BeaconParams24=1.4, 0.1, -2, 0.12, -0.07
BeaconArray24=275,0,0   4275,0,0   0,255,0   200

BeaconGroup6=door0warn:25
BeaconParams25=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray25=-274,0,-25   -274,0,25   255,140,0   10

BeaconGroup7=roof:26,27,28,29,30
BeaconArray26=-116.5,263,120.5   -106.5,263,120.5   255,0,0   2
BeaconArray27=-111.5,283,122.5   -111.5,283,122.5   255,0,0   1
BeaconArray28=-114.5,228.5,203.5   -108.5,228.5,203.5   255,0,0   2
BeaconArray29=-113.5,193.6,274   -109.5,193.6,274   255,0,0   2
BeaconArray30=-172,52.5,0   -50,52.5,0   255,0,0   2

BeaconGroup8=sign:31
BeaconArray31=-175,11,113.5   -175,11,173.5   255,255,255  6

; GroupN is Nth definition of super-grouping of beacon groups
; Format: <name>:<nameX>,<nameY>,<nameZ>,... with X,Y,Z arbitrary beacon-group definitions
Group0=illumination:roof,sign

;ChecklistX_N is Nth definition of talker text for checklist X
;First part up until ':' is transition slot (first number=from state, second number=to state)
;Second part is the text that can contain placeholders that expand like so:
; ${....} tags reference parameters. The first character defines the parameter typ as follows:
;   [vV]  is the name of the subject vessel
;   [aA]  is the name of the AU vessel
;   [sS]  is the talker definition for the subject vessel
;   [bB]  is the talker definition for the AU vessel (the base)
;   [rR]  is an arbitrary acknowledgment string, taken from talker definition
;   [wW]  is "speaking" a sound (aka wave) file given in the tag's remaining characters as relative path to Orbiter's root
;   [tT]  switches to text-to-speech only mode - text will only be spoken
;   [dD]  switches to display only mode - text will only be displayed, possible XML-tags will NOT be filtered
;   [cC]  switches to combined mode - text will be both spoken and displayed as is, just XML-tags will be filtered for display
;   [0-9] together with the tag's remaining characters defines a custom argument by number
; :O,N is the text from the referenced transition (O)ld to (N)ew - note that this placeholder is replaced at load-time
;
; Checklist table for launch tunnel:
; 0 .. Request   Empty,LFHold,Wait,Roll
; 1 .. Preflight AbortOpen,Empty,OpenEntry,Entry,PFHold,Wait,Roll
; 2 .. Boarding  AbortWait,Empty,Taxi,PAXHold,Wait,Roll
; 3 .. Fueling   AbortWait,Empty,Taxi,FuelHold,Wait,Roll
; 4 .. Launch    AbortOpen,Empty,OpenExit,Exit,Blast,LaunchHold,Beacons,Speeding,TakeOff
;
; Check Checklist state diagrams for better understanding. Each line below corresponds to an edge in the appropriate state machines.

; Request checklist - note that transition 3 to 0 is not listed
Checklist0_0=0,1:${s}${v} to Wideawake Ground, requesting clearance to enter Launch Facility. ${b}wideawake Ground to ${v}, copy request, taxi to LF hold.${s}${r}.
Checklist0_1=0,2:${s}${v} to Wideawake Ground, requesting clearance to enter Launch Facility. ${b}wideawake Ground to ${v}, copy request, pre-flight hold is occupied. Wait for clearance.${s}${r}.
Checklist0_2=0,3:${s}${v} to Wideawake Ground, requesting clearance to enter Launch Facility. ${b}wideawake Ground to ${v}, copy request, hold and wait for clearance.${s}${r}.
Checklist0_3=1,2:${s}${v} to Wideawake Ground, stopped at LF hold. ${b}wideawake Ground to ${v}, copy that, pre-flight hold is occupied. maintain hold and Wait for clearance.${s}${r}.
Checklist0_4=1,3:${s}${v} to Wideawake Ground, stopped at LF hold. ${b}wideawake Ground to ${v}, copy that, maintain hold and wait for clearance.${s}${r}.
Checklist0_5=2,3:${b}Wideawake ground to ${v}, request granted. maintain hold and wait for clearance.${s}${r}.
Checklist0_6=1,0:${s}${v} to Wideawake Ground, we've taken a wrong turn, scratch entry request. ${b}wideawake Ground to ${v}, copy that, use taxiway guidance next time.
Checklist0_7=2,0::1,0
Checklist0_8=0,1:${s}${a}, wazzup? ${b}${v}, yo, buddy, ${r}.

;Preflight checklist - note that transition 6 to 1 as well as 1 to 1 and 1 to 2 is not listed
Checklist1_0=2,3:${b}Wideawake Ground to ${v}, clearance granted, taxi to Pre-Flight hold.${s}${r}.
Checklist1_1=3,4:${s}${v} to wideawake ground, stopped at Pre-flight hold. ${b}wideawake Ground to ${v}, copy that, door closing. Carry out pre-flight checks, contact us again when ready to proceed.${s}${r}.
Checklist1_2=4,5:${b}Wideawake Ground to ${v}, traffic ahead, maintain hold and wait for clearance.${s}${r}.
Checklist1_3=4,6:${b}Wideawake Ground to ${v}, proceed to passenger hold.${s}${r}.
Checklist1_4=5,6:${b}Wideawake Ground to ${v}, placeholder statement.${s}${r}.
Checklist1_5=6,0:${s}${v} to wideawake ground, we have a problem here, requesting launch abort.${b}wideawake Ground to ${v}, copy that, proceed to abort tunnel exit.${s}${r}.
Checklist1_6=5,0::6,0
Checklist1_7=4,0::6,0
Checklist1_8=3,0::6,0
Checklist1_9=2,0::6,0

;Boarding checklist - note that transition 5 to 1 as well as 1 to 2 is not listed
Checklist2_0=2,3:${s}${v} to wideawake ground, stopped at Passenger hold. ${b}wideawake Ground to ${v}, copy that, please open docking port and commence passenger loading. contact us again when ready to refuel.${s}${r}.
Checklist2_1=3,4:${b}Wideawake Ground to ${v}, traffic ahead, maintain hold and wait for clearance.${s}${r}.
Checklist2_2=3,5:${b}Wideawake Ground to ${v}, proceed to fueling hold.${s}${r}.
Checklist2_3=4,5:${b}Wideawake Ground to ${v}, placeholder statement.${s}${r}.
Checklist2_4=5,0:${s}${v} to wideawake ground, seems our docking port is malfuntioning, requesting launch abort.${b}wideawake Ground to ${v}, copy that, proceed to abort tunnel exit
Checklist2_5=4,0::5,0
Checklist2_6=3,0::5,0
Checklist2_7=2,0::5,0

;Boarding checklist - note that transition 5 to 1 as well as 1 to 2 is not listed
Checklist3_0=2,3:${s}${v} to Wideawake Ground, Stopped at fueling hold. ${b}wideawake Ground to ${v}, copy that, fuel lines being attached, proceed with loading as required., contact us again when ready to launch.${s}${r}.
Checklist3_1=3,4:${b}Wideawake Ground to ${v}, launch traffic ahead, maintain hold and wait for clearance.${s}${r}.
Checklist3_2=3,5:${b}Wideawake Ground to ${v}, launch door opening, maintain hold and wait for clearance.${s}${r}.
Checklist3_3=4,5:${b}Wideawake Ground to ${v}, placeholder statement.${s}${r}.
Checklist3_4=5,0:${s}${v} to Wideawake Ground, we have a fuel pressure issue, requesting launch abort.${b}wideawake Ground to ${v}, copy that, proceed to abort tunnel exit.${s}${r}.
Checklist3_5=4,0::5,0
Checklist3_6=3,0::5,0
Checklist3_7=2,0::5,0

;Launch checklist - note that transition 1 to 1 as well as 1 to 2 is not listed
Checklist4_0=2,3:${b}Wideawake Ground to ${v}, clearance granted, taxi to launch hold.${s}${r}.
Checklist4_1=3,4:${s}${v} to wideawake ground, Stopped at launch hold. ${b} copy that, blast shield closing, await launch clearance.${s}${r}.
Checklist4_2=4,5:${b}Wideawake Ground to ${v}, blast shield in position, supression system activated, contact ATC for final launch clearance.${s}${r}.
Checklist4_3=5,6:${s}${v} to wideawake ATC, requesting launch clearance. ${b} wideawake ATC to ${v},copy that, launch clearance granted.${s}${r}.
Checklist4_4=6,7:${s}${v} to wideawake ATC, proceeding with launch.${b}wideawake ATC to ${v} Take off acknowledged!${s}${r}.
Checklist4_5=7,8:${s}${v} to wideawake ATC, wheels up!!${b}wideawake ATC to ${v} Copy that, continue and clear airspace.${s}${r}.
Checklist4_6=8,1:${s}${v} to wideawake ATC, Cleared your airspace.${b}wideawake ATC to ${v},copy that, gods speed.${s}${r}.
Checklist4_7=7,0:${s}${v} to wideawake ground, this is all a bit scary, I've changed my mind.  Requesting launch abort!${b}wideawake Ground to ${v}, awwww copy that, proceed to abort tunnel exit and return when you have found your balls.${s}${r}.
Checklist4_8=6,0::7,0
Checklist4_9=5,0::7,0
Checklist4_10=4,0::7,0
Checklist4_11=3,0::7,0
Checklist4_12=2,0::7,0
Checklist4_13=0,1:${s}Wideawake Ground, ${v}, clear of Launch Facility, abort complete.${b}wideawake Ground to ${v}, copy that, have a nice day.

[VERTICALLAUNCH0]
BeaconParams=1.4, 0.2, 0, 0, 0

BeaconGroup0=fixed:0,1,2,3,4,5,6,7,8,9,10,11,12
BeaconArray0=0,0,-120   0,0,170   255,255,255   15
BeaconArray1=-33.25,155,-178.75   33.25,155,-178.75   255,0,0   2
BeaconArray2=-33.25,155,-122.25   33.25,155,-122.25   255,0,0   2
BeaconArray3=0,5,217   0,125,217   255,255,255   13
BeaconArray4=-2.25,145,216.25   2.25,140,216.25   255,0,0   2
BeaconArray5=-12,76.5,228.75   12,76.5,228.75   255,255,255   2
BeaconArray6=0,45,-330.5   0,45,-250.5   255,255,255   4
BeaconArray7=-24.5,0,-120.5   -24.5,0,213.5   255,0,0   30
BeaconArray8=24.5,0,-120.5   24.5,0,213.5   255,0,0   30
BeaconArray9=-10,31.5,205   10,31.5,205   255,0,0   2
BeaconArray10=-10,61.5,205   10,61.5,205   255,0,0   2
BeaconArray11=-10,104,205   10,104,205   255,0,0   2
BeaconArray12=-15,13,347.5   15,13,347.5   255,0,0   3

BeaconGroup1=cover:13,14,15,16,17
BeaconArray13=-15,9,-119   -15,129,-119   255,255,255   13
BeaconArray14=15,9,-119   15,129,-119   255,255,255   13
BeaconArray15=-15,9,-78   -15,129,-78   255,255,255   13
BeaconArray16=15,9,-78   15,129,-78   255,255,255   13
BeaconArray17=-2.25,156,-98.25   2.25,151,-98.25   255,0,0   2

BeaconGroup2=mlp:18,19
BeaconArray18=-13.5,10,-109.5   13.5,10,-109.5   255,0,0   2
BeaconArray19=-13.5,10,-87   13.5,10,-87   255,0,0   2

BeaconGroup3=roof:1,2,4,9,10,11,12,17

Group0=illumination:roof


[VERTICALLAUNCH1]
BeaconParams=1.4, 0.2, 0, 0, 0

BeaconGroup0=fixed:0,1,2,3,4,5,6,7,8,9,10,11
BeaconArray0=0,0,-120   0,0,170   255,255,255   15
BeaconArray1=-33.25,115,-178.75   33.25,115,-178.75   255,0,0   2
BeaconArray2=-33.25,115,-122.25   33.25,115,-122.25   255,0,0   2
BeaconArray3=0,5,217   0,85,217   255,255,255   8
BeaconArray4=-2.25,105,216.25   2.25,100,216.25   255,0,0   2
BeaconArray5=-12,36.5,228.75   12,36.5,228.75   255,255,255   2
BeaconArray6=0,45,-330.5   0,45,-250.5   255,255,255   4
BeaconArray7=-24.5,0,-120.5   -24.5,0,213.5   255,0,0   30
BeaconArray8=24.5,0,-120.5   24.5,0,213.5   255,0,0   30
BeaconArray9=-10,31.5,205   10,31.5,205   255,0,0   2
BeaconArray10=-10,61.5,205   10,61.5,205   255,0,0   2
BeaconArray11=-15,13,347.5   15,13,347.5   255,0,0   3

BeaconGroup1=cover:12,13,14,15,16
BeaconArray12=-15,9,-119   -15,89,-119   255,255,255   8
BeaconArray13=15,9,-119   15,89,-119   255,255,255   8
BeaconArray14=-15,9,-78   -15,89,-78   255,255,255   8
BeaconArray15=15,9,-78   15,89,-78   255,255,255   8
BeaconArray16=-2.25,116,-98.25   2.25,111,-98.25   255,0,0   2

BeaconGroup2=mlp:17,18
BeaconArray17=-13.5,10,-109.5   13.5,10,-109.5   255,0,0   2
BeaconArray18=-13.5,10,-87   13.5,10,-87   255,0,0   2

BeaconGroup3=roof:1,2,4,9,10,11,16

Group0=illumination:roof


[HANGAR]
BeaconParams=1.2, 0.1, 0, 0, 0

BeaconGroup0=roof:0
BeaconArray0=0,53,0   0,53,0   255,0,0   1

BeaconGroup1=edges:1,2
BeaconParams1=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray1=-45,0,-48   -45,0,48   255,140,0   9
BeaconParams2=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray2=45,0,-48   45,0,48   255,140,0   9

: Beacon group name "doorXwarn" defines warning arrays for moving doors. First array is checked for on/off.
BeaconGroup2=door1warn:3,1,2
BeaconParams3=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray3=-41,0,-51   41,0,-51   255,140,0   7

BeaconGroup3=door0warn:4,1,2
BeaconParams4=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray4=-41,0,51   41,0,51   255,140,0   7

; Beacon group name "doorXopen" defines status arrays for open door status. First array is checked for on/off
BeaconGroup4=door1open:5
BeaconArray5=-34,0,-51  34,0,-51   0,255,0   6

BeaconGroup5=door0open:6
BeaconArray6=-34,0,51   34,0,51   0,255,0   6

Group0=illumination:roof

[LIGHTLEASE]
BeaconParams=1.4, 0, 0, 0, 0

BeaconGroup0=roof:0
BeaconArray0=0,16.5,0   0,16.5,0   255,0,0   1

BeaconGroup1=door0warn:1
BeaconParams1=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray1=-10,0,20   10,0,20   255,140,0   5

BeaconGroup2=door0open:2
BeaconArray2=-7.5,0,20   7.5,0,20   0,255,0   4

Group0=illumination:roof

[HEAVYLEASE]
BeaconParams=1.4, 0.2, 0, 0, 0

BeaconGroup0=roof:0
BeaconArray0=0,53,0   0,53,0   255,0,0   1

BeaconGroup1=edges:1,2
BeaconParams1=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray1=-45,0,-48   -45,0,48   255,140,0   9
BeaconParams2=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray2=45,0,-48   45,0,48   255,140,0   9

BeaconGroup2=door0warn:1,2,3
BeaconParams3=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray3=-41,0,-51   41,0,-51   255,140,0   7

BeaconGroup3=door0open:4
BeaconArray4=-34,0,-51  34,0,-51   0,255,0   6

Group0=illumination:roof

[DRADAR]
BeaconParams=1.4, 0, 0, 0, 0

BeaconGroup0=roof:0
BeaconArray0=0,11,0   0,11,0   0,0,255   1

Group0=illumination:roof

[DOCKYARD]
BeaconParams=1.2, 0.1, 0, 0, 0

BeaconGroup0=roof:0,1
BeaconParams0=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray0=-1100,95.5,1.5				-683.5,95.5,1.5			255,0,0			2		;crane tops
BeaconParams1=1.4, 0.2, 1.0, 0.5, -0.5
BeaconArray1=-1100,62.5,113				-683.5,62.5,113			255,0,0			2		;crane arm ends

BeaconArray2=-1031.5,35.5,-347.5	-1031.5,35.5,-347.5	255,255,255	1		;marina tower
BeaconArray3=-1253,35.5,38				-1252.5,35.5,38		 	255,255,255	1		;dock tower
BeaconArray4=-429.75,15.5,-69			-249.75,15.5,-69	 	255,255,255	10	;storage sheds
BeaconArray5=40,18.25,20			232,18.25,20	 	255,255,255	4	;loading scaffold
BeaconArray6=40,18.25,-20			232,18.25,-20	 	255,255,255	4	;loading scaffold

Group0=illumination:roof

[AIRPORT]
BeaconParams=1.2, 0.1, 0, 0, 0

BeaconGroup0=roof:0,1,2
BeaconArray0=0,106,9.7			0,106,9.7			255,0,0			1 ;aerial
BeaconArray1=0,110.9,2.5		0,110.9,2.5		255,0,0			1 ;aerial
BeaconArray2=0,100,-4.4			0,100,-4.4		255,0,0			1 ;aerial

BeaconGroup1=sign:3,4
BeaconArray3=-25,37.85,43.4	25,37.85,43.4	255,255,255	5 ;sign
BeaconArray4=-11,7.25,-121.5	11,7.75,-121.5	255,255,255	5 ;entrance

BeaconArray5=164,6,14.5			514,6,14.5		255,255,255	6 ;hard stands

Group0=illumination:roof,sign

The base-as-a-vessel thing made it cumbersome to implement at first, but once the initial boiler-plate code was done, the defining/adding/placing of buildings was easy enough. If Orbiter offers a dedicated interface for base-objects, it would certainly make developing such "smart" bases easier.
 
Yes, the idea of a class interface for surface buildings has long been on my to-do-sometime-in-the-future list. Possibly something like a stripped-down vessel class that only contains mesh-loading and animation support.

But I would also want to reconcile this with another idea: taking the building definitions out of the base definitions, and instead define them as an additional surface structure quadtree layer in the planet's surface definition.

This would have the advantage that buildings can use the quadtree LOD and visibility mechanism, rather than having to load the entire base at once (usually long before individual buildings are within visual range).

It would also allow to place buildings in areas without bases. The base definitions would essentially become purely logical entities (e.g. to place markers in a map) without any physical assets.

So a single DLL for the entire base probably wouldn't work with this interface. The DLL interface would probably be on a per-building-type basis, similar to the current vessel-type DLL structure.
 
Yes, the idea of a class interface for surface buildings has long been on my to-do-sometime-in-the-future list. Possibly something like a stripped-down vessel class that only contains mesh-loading and animation support.

Out of experience I'd say that save/load, time-step and recorder callbacks would also be necessary.

So a single DLL for the entire base probably wouldn't work with this interface. The DLL interface would probably be on a per-building-type basis, similar to the current vessel-type DLL structure.

If so, I think the placement definition should really be clever to make it easy. I had a hell of a time trying to convert AU's cartesian layout to a polar one.
 
Would that include the rotational errors in the attachments, such as the RMS grapple progression also ?
 
But I would also want to reconcile this with another idea: taking the building definitions out of the base definitions, and instead define them as an additional surface structure quadtree layer in the planet's surface definition.

This would have the advantage that buildings can use the quadtree LOD and visibility mechanism, rather than having to load the entire base at once (usually long before individual buildings are within visual range).

Makes sense to me. Maybe there could also be some kind of a LOD support for the building meshes itself, so using lower resolution meshes at higher distances could be implemented easier than polling camera position every timestep and switching visibility. I already got some good results with a Quadtree for a city DLL with 10000 buildings and a LOD mechanism reducing vertex count from 800 to 10 - but for one order of magnitude more buildings the calculations of the camera distance and handling the LOD decision took more time than the reduction in rendering time.

If this would already be handled inside Orbiter, it could be done a fair bit faster. Also it would be a good candidate for a parallel algorithm.

It would also allow to place buildings in areas without bases. The base definitions would essentially become purely logical entities (e.g. to place markers in a map) without any physical assets.

Well, I would then maybe request a API to query base configuration properties and maybe also define additional parameters. For example for letting buildings know the properties of the base they are assigned to.

So a single DLL for the entire base probably wouldn't work with this interface. The DLL interface would probably be on a per-building-type basis, similar to the current vessel-type DLL structure.

Well, as I know the community, it would only take seconds until the first one tries to have 100,000 building instances of a single DLL at once.... I can see some performance issues there (Oh the memories, when booster separation was performed every timestep). Maybe its necessary to allow buildings to be dormant and don't get any callback calls.
 
Out of experience I'd say that save/load, time-step and recorder callbacks would also be necessary.

I absolutely second this. If the meshes are subject to LOD, the clbkVisualDestroyed and Created might also be necessary.
Panels might be worth thinking about... I'm not sure they would be strictly necessary, but I'm pretty sure somebody will ask for them 2 seconds after release...

If so, I think the placement definition should really be clever to make it easy.

I think long/lat and rotation as a simple angle would be sufficient, or am I missing something?

So a single DLL for the entire base probably wouldn't work with this interface. The DLL interface would probably be on a per-building-type basis, similar to the current vessel-type DLL structure.

I can see where you're coming from, but I think there should at least be a logical association possible between buildings. I can easily imagine that being able to query a group of buildings that are part of the same base will be very handy if people want to go a bit more complex with the behavior of their bases.
 
Last edited:
I think long/lat and rotation as a simple angle would be sufficient, or am I missing something?

Doing precise layouts with polar coordinates is cumbersome. It is easier to do it in cartesian coordinates in meters. In addition, what about the height above ground? Should it simply snap to the terrain?

All I can say is that I had a hard time getting all this right in AU, so I think getting the coordinate system right is key to easy use. Especially if it is inside the quadtree data structure, which is complicated in itself already.
 
Doing precise layouts with polar coordinates is cumbersome.

I see... hadn't thought of that. Might be another argument for associating buildings with a marker. Define marker position in lat/long, define buildings in local coordinates around markers.

In addition, what about the height above ground? Should it simply snap to the terrain?

I would assume so. You can still offset the mesh if you need something levitating for some weird reason...

All I can say is that I had a hard time getting all this right in AU

Ah hell, yeah, I can imagine that! :lol:
 
I'd prefer complete Orbiter Script support with working landing points and LUA real-time keyboard input.
That would be useful for many developers.

I don't see anyone drawing individual buildings over large areas by typing coordinates.
And if you are into atmospheric flight, you can use FlightGear. It has OSM buildings and roads....

But of course, anyone is free to spend their free time developing what they wish ;)
 
3D9Client (Beta 25.3) for Orbiter BETA r70

Hi,

although there has been no API changes between Orbiter r69 and Orbiter r70, for all who like to be "as current as possible":
Here you'll find the current build of D3D9Client for Orbiter BETA linked against r70.

Have fun,
Kuddel
 
Would that include the rotational errors in the attachments, such as the RMS grapple progression also ?

In the first instance probably yes, since the classes would share a codebase. However, I still want to fix this at the origin. It looks like the rounding errors of the explicit point transformations simply build up too much over time, so a different mechanism needs to be implemented.

I'd prefer complete Orbiter Script support [...]
Ah yes, good point. Are there any volunteers to implement missing script functions? If it's down to me it might take a bit longer. Maybe we could make it a wikipedia-style support appeal: If everybody implemented just one missing function, we could be done in an hour :thumbup:
 
If everybody implemented just one missing function, we could be done in an hour :thumbup:

Sure, but I am very unsure how the LUA interface works ;)

Just by looking at Interpreter.h and Interpreter.cpp I guessed some of the "logic":
- I assume that the (int) return value of all those static functions indicate the number of return values.
- The parameters have to be "fetched" by index (1-based).
- return value has to be "pushed".
But how to get "buffer" values is not (yet) clear to me...and when to use 'number' and when 'integer' was just guessing, too.

I arbitrarily chose some OAPI functions that were not present in LUA yet -to get a feeling- and did the following:

Interpreter.h
PHP:
	// utility functions
	static int oapi_rand(lua_State *L);
	static int oapi_deflate(lua_State *L);
	static int oapi_inflate(lua_State *L);
	static int oapi_getcolor(lua_State *L);

Interpreter.cpp
PHP:
void Interpreter::LoadAPI ()
{
	//...
	static const struct luaL_reg oapiLib[] = {
		//...

		// utility functions
		{ "rand", oapi_rand },
		{ "deflate", oapi_deflate },
		{ "inflate", oapi_inflate },
		{ "getcolor", oapi_inflate },

		{NULL, NULL}
	};
	//...
}

//...
// ============================================================================
// utility functions

int Interpreter::oapi_rand(lua_State *L)
{
	lua_pushnumber(L, oapiRand());
	return 1;
}

//OAPIFUNC DWORD oapiDeflate (const BYTE *ebuf, DWORD nebuf, BYTE *zbuf, DWORD nzbuf);
int Interpreter::oapi_deflate(lua_State *L)
{
	const BYTE * ebuf = NULL; // How to get "const BYTE *ebuf"
	                          // ???

	ASSERT_NUMBER(L, 2);
	DWORD nebuf = lua_tointeger(L, 2);

	BYTE * zbuf = NULL; // How to get "BYTE *zbuf"
	                    // ???

	ASSERT_NUMBER(L, 4);
	DWORD nzbuf = lua_tointeger(L, 4);

	lua_pushnumber(L, oapiDeflate(ebuf, nebuf, zbuf, nzbuf));
	return 1;
}

//OAPIFUNC DWORD oapiInflate (const BYTE *zbuf, DWORD nzbuf, BYTE *ebuf, DWORD nebuf);
int Interpreter::oapi_inflate(lua_State *L)
{
	const BYTE * zbuf = NULL; // How to get "const BYTE *zbuf"
	                          // ???
	ASSERT_NUMBER(L, 2);
	DWORD nzbuf = lua_tointeger(L, 2);

	BYTE * ebuf = NULL; // How to get "BYTE *ebuf"
						// ???
	ASSERT_NUMBER(L, 4);
	DWORD nebuf = lua_tointeger(L, 4);

	lua_pushnumber(L, oapiInflate(zbuf, nzbuf, ebuf, nebuf));
	return 1;
}

int Interpreter::oapi_getcolor(lua_State *L)
{
	ASSERT_NUMBER(L, 1);
	DWORD r = lua_tointeger(L, 1);
	ASSERT_NUMBER(L, 2);
	DWORD g = lua_tointeger(L, 2);
	ASSERT_NUMBER(L, 3);
	DWORD b = lua_tointeger(L, 3);
	lua_pushnumber(L, oapiGetColour(r, g, b));
	return 1;
}
// ...

oapiRand() and oapiGetColour() seem to be O.K. (although I have no idea whether this is true and they really work as intended), but oapiDeflate() and oapiInflate() left some serious questions :lol:

Can someone point me to a (basic) "howto" for this kind of LUA interfacing?


I've added the changes as ZIP, so it might be easier to compare/merge with the "original" (rev.70) sources

---- EDIT ----
Attachment removed
 
Last edited:
SVN commit #71

New commit #71 is now available. As mentioned, this includes the fix for the PMI computation of docked assemblies, as discussed here and described in Doc/Technotes/composite.pdf. This one is probably mainly for indy91 to test, but other vessel developers might want to make sure that their docked vessels do reasonable things.
 
Can someone point me to a (basic) "howto" for this kind of LUA interfacing?

Hey, thanks for picking this up so quickly! The main documentation for Lua (including the C API) can be found here. With regard to memory buffers for de/inflating, probably the Lua "userdata" construct (which simply encapsulates a memory pointer) would be useful to consider: https://www.lua.org/pil/28.1.html
 
What about the cloud micro textures issue and VC click area problems identified by GLS in the following project issues, 1329 and 1320?
 
D3D9Client (Beta 25.4) for Orbiter BETA r71

Hi,

although there has been no API changes between Orbiter r69 and Orbiter r71, for all who like to be "as current as possible":
Here you'll find the current build of D3D9Client for Orbiter BETA linked against r71.

Have fun,
Kuddel
 
Last edited:
Back
Top