diff --git a/Missions/Generic/Models/Redbull/RedbullBlueGate.xml b/Missions/Generic/Models/Redbull/RedbullBlueGate.xml index cbdf8d1..6a7dbea 100644 --- a/Missions/Generic/Models/Redbull/RedbullBlueGate.xml +++ b/Missions/Generic/Models/Redbull/RedbullBlueGate.xml @@ -10,4 +10,7 @@ 8000 + + false + diff --git a/Missions/Generic/Models/Redbull/RedbullBluePylon.xml b/Missions/Generic/Models/Redbull/RedbullBluePylon.xml index 4a1e95a..0a1815d 100644 --- a/Missions/Generic/Models/Redbull/RedbullBluePylon.xml +++ b/Missions/Generic/Models/Redbull/RedbullBluePylon.xml @@ -10,4 +10,8 @@ 8000 + + false + + diff --git a/Missions/Generic/Models/Redbull/RedbullBlueQuadro.xml b/Missions/Generic/Models/Redbull/RedbullBlueQuadro.xml index caf9686..73659f1 100644 --- a/Missions/Generic/Models/Redbull/RedbullBlueQuadro.xml +++ b/Missions/Generic/Models/Redbull/RedbullBlueQuadro.xml @@ -10,4 +10,8 @@ 8000 + + false + + diff --git a/Missions/Generic/Models/Redbull/RedbullRedPylon.xml b/Missions/Generic/Models/Redbull/RedbullRedPylon.xml index 829c33d..f8ab76f 100644 --- a/Missions/Generic/Models/Redbull/RedbullRedPylon.xml +++ b/Missions/Generic/Models/Redbull/RedbullRedPylon.xml @@ -10,4 +10,8 @@ 8000 + + false + + diff --git a/Missions/Generic/Models/Redbull/RedbullRedQuadro.xml b/Missions/Generic/Models/Redbull/RedbullRedQuadro.xml index 7110a6c..4c50d22 100644 --- a/Missions/Generic/Models/Redbull/RedbullRedQuadro.xml +++ b/Missions/Generic/Models/Redbull/RedbullRedQuadro.xml @@ -10,4 +10,8 @@ 8000 + + false + + diff --git a/Missions/Generic/Models/Redbull/RedbullStartGate.xml b/Missions/Generic/Models/Redbull/RedbullStartGate.xml index 2468587..59cefd4 100644 --- a/Missions/Generic/Models/Redbull/RedbullStartGate.xml +++ b/Missions/Generic/Models/Redbull/RedbullStartGate.xml @@ -10,4 +10,8 @@ 8000 + + false + + diff --git a/Missions/Races/Race-1/Models/Hangar_70x15.ac b/Missions/Races/Race-1/Models/Hangar_70x15.ac new file mode 100644 index 0000000..595fba2 --- /dev/null +++ b/Missions/Races/Race-1/Models/Hangar_70x15.ac @@ -0,0 +1,485 @@ +AC3Db +MATERIAL "DefaultWhite" rgb 1.0000 1.0000 1.0000 amb 0.2000 0.2000 0.2000 emis 0.0000 0.0000 0.0000 spec 0.5000 0.5000 0.5000 shi 10 trans 0.0000 +MATERIAL "Material" rgb 1.0000 1.0000 1.0000 amb 1.0000 1.0000 1.0000 emis 0.0000 0.0000 0.0000 spec 0.5000 0.5000 0.5000 shi 12 trans 0.0000 +OBJECT world +name "Blender_export__Hangar_70x15.ac" +kids 1 +OBJECT poly +name "Cube" +crease 35.0 +texture "Hangar_70x15.png" +texrep 1 1 +numvert 60 +-35.0000000 0.0000000 7.5000000 +-35.0000000 5.0000000 7.5000000 +-35.0000000 0.0000000 -7.5000000 +-35.0000000 5.0000000 -7.5000000 +35.0000000 0.0000000 7.5000000 +35.0000000 5.0000000 7.5000000 +35.0000000 0.0000000 -7.5000000 +35.0000000 5.0000000 -7.5000000 +-35.0000000 7.0000000 0.0000000 +35.0000000 7.0000000 0.0000000 +-28.6363640 5.0000000 -7.5000000 +-22.2727280 5.0000000 -7.5000000 +-15.9090919 5.0000000 -7.5000000 +-9.5454559 5.0000000 -7.5000000 +-3.1818190 5.0000000 -7.5000000 +3.1818180 5.0000000 -7.5000000 +9.5454540 5.0000000 -7.5000000 +15.9090900 5.0000000 -7.5000000 +22.2727280 5.0000000 -7.5000000 +28.6363640 5.0000000 -7.5000000 +28.6363640 0.0000000 -7.5000000 +22.2727280 0.0000000 -7.5000000 +15.9090919 0.0000000 -7.5000000 +9.5454559 0.0000000 -7.5000000 +3.1818190 0.0000000 -7.5000000 +-3.1818180 0.0000000 -7.5000000 +-9.5454540 0.0000000 -7.5000000 +-15.9090900 0.0000000 -7.5000000 +-22.2727280 0.0000000 -7.5000000 +-28.6363640 0.0000000 -7.5000000 +28.6363640 5.0000000 7.5000000 +22.2727280 5.0000000 7.5000000 +15.9090919 5.0000000 7.5000000 +9.5454559 5.0000000 7.5000000 +3.1818190 5.0000000 7.5000000 +-3.1818180 5.0000000 7.5000000 +-9.5454540 5.0000000 7.5000000 +-15.9090900 5.0000000 7.5000000 +-22.2727280 5.0000000 7.5000000 +-28.6363640 5.0000000 7.5000000 +-28.6363640 0.0000000 7.5000000 +-22.2727280 0.0000000 7.5000000 +-15.9090919 0.0000000 7.5000000 +-9.5454559 0.0000000 7.5000000 +-3.1818190 0.0000000 7.5000000 +3.1818180 0.0000000 7.5000000 +9.5454540 0.0000000 7.5000000 +15.9090900 0.0000000 7.5000000 +22.2727280 0.0000000 7.5000000 +28.6363640 0.0000000 7.5000000 +-28.6363640 7.0000000 0.0000000 +-22.2727280 7.0000000 0.0000000 +-15.9090919 7.0000000 0.0000000 +-9.5454559 7.0000000 0.0000000 +-3.1818190 7.0000000 0.0000000 +3.1818180 7.0000000 0.0000000 +9.5454540 7.0000000 0.0000000 +15.9090900 7.0000000 0.0000000 +22.2727280 7.0000000 0.0000000 +28.6363640 7.0000000 0.0000000 +numsurf 59 +SURF 0X0 +mat 1 +refs 4 +1 0.897031 0.232842 +3 0.060587 0.232842 +2 0.060587 0.030714 +0 0.897031 0.030714 +SURF 0X0 +mat 1 +refs 4 +19 0.277402 0.063859 +7 0.613808 0.063859 +6 0.613808 0.259657 +20 0.277402 0.259657 +SURF 0X0 +mat 1 +refs 4 +7 0.897031 0.232842 +5 0.060587 0.232842 +4 0.060587 0.030714 +6 0.897031 0.030714 +SURF 0X0 +mat 1 +refs 4 +39 0.277402 0.063859 +1 0.613808 0.063859 +0 0.613808 0.259657 +40 0.277402 0.259657 +SURF 0X0 +mat 1 +refs 3 +5 0.060587 0.232842 +7 0.897031 0.232842 +9 0.479744 0.314855 +SURF 0X0 +mat 1 +refs 3 +3 0.060587 0.232842 +1 0.897031 0.232842 +8 0.479744 0.314855 +SURF 0X0 +mat 1 +refs 4 +30 0.521576 0.619038 +5 0.948646 0.619038 +9 0.948646 0.932239 +59 0.521576 0.932239 +SURF 0X0 +mat 1 +refs 4 +10 0.284495 0.619038 +3 0.731946 0.619038 +8 0.731946 0.932239 +50 0.284495 0.932239 +SURF 0X0 +mat 1 +refs 4 +20 0.256749 0.991291 +6 0.203391 0.991291 +4 0.203391 0.974157 +49 0.256749 0.974157 +SURF 0X0 +mat 1 +refs 4 +2 0.790337 0.991291 +29 0.736979 0.991291 +40 0.736979 0.974157 +0 0.790337 0.974157 +SURF 0X0 +mat 1 +refs 4 +29 0.736979 0.991291 +28 0.683620 0.991291 +41 0.683620 0.974157 +40 0.736979 0.974157 +SURF 0X0 +mat 1 +refs 4 +28 0.683620 0.991291 +27 0.630261 0.991291 +42 0.630261 0.974157 +41 0.683620 0.974157 +SURF 0X0 +mat 1 +refs 4 +27 0.630261 0.991291 +26 0.576902 0.991291 +43 0.576902 0.974157 +42 0.630261 0.974157 +SURF 0X0 +mat 1 +refs 4 +26 0.576902 0.991291 +25 0.523543 0.991291 +44 0.523543 0.974157 +43 0.576902 0.974157 +SURF 0X0 +mat 1 +refs 4 +25 0.523543 0.991291 +24 0.470185 0.991291 +45 0.470185 0.974157 +44 0.523543 0.974157 +SURF 0X0 +mat 1 +refs 4 +24 0.470185 0.991291 +23 0.416826 0.991291 +46 0.416826 0.974157 +45 0.470185 0.974157 +SURF 0X0 +mat 1 +refs 4 +23 0.416826 0.991291 +22 0.363467 0.991291 +47 0.363467 0.974157 +46 0.416826 0.974157 +SURF 0X0 +mat 1 +refs 4 +22 0.363467 0.991291 +21 0.310108 0.991291 +48 0.310108 0.974157 +47 0.363467 0.974157 +SURF 0X0 +mat 1 +refs 4 +21 0.310108 0.991291 +20 0.256749 0.991291 +49 0.256749 0.974157 +48 0.310108 0.974157 +SURF 0X0 +mat 1 +refs 4 +7 0.083704 0.619038 +19 0.510774 0.619038 +59 0.510774 0.932239 +9 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +19 0.510774 0.619038 +18 0.948646 0.619038 +58 0.948646 0.932239 +59 0.510774 0.932239 +SURF 0X0 +mat 1 +refs 4 +18 0.083704 0.619038 +17 0.510774 0.619038 +57 0.510774 0.932239 +58 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +17 0.510774 0.619038 +16 0.948646 0.619038 +56 0.948646 0.932239 +57 0.510774 0.932239 +SURF 0X0 +mat 1 +refs 4 +16 0.083704 0.619038 +15 0.510774 0.619038 +55 0.510774 0.932239 +56 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +15 0.510774 0.619038 +14 0.948646 0.619038 +54 0.948646 0.932239 +55 0.510774 0.932239 +SURF 0X0 +mat 1 +refs 4 +14 0.083704 0.619038 +13 0.510774 0.619038 +53 0.510774 0.932239 +54 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +13 0.510774 0.619038 +12 0.948646 0.619038 +52 0.948646 0.932239 +53 0.510774 0.932239 +SURF 0X0 +mat 1 +refs 4 +12 0.083704 0.619038 +11 0.521576 0.619038 +51 0.521576 0.932239 +52 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +11 0.521576 0.619038 +10 0.948646 0.619038 +50 0.948646 0.932239 +51 0.521576 0.932239 +SURF 0X0 +mat 1 +refs 4 +1 0.284495 0.619038 +39 0.731946 0.619038 +50 0.731946 0.932239 +8 0.284495 0.932239 +SURF 0X0 +mat 1 +refs 4 +39 0.083704 0.619038 +38 0.510774 0.619038 +51 0.510774 0.932239 +50 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +38 0.510774 0.619038 +37 0.948646 0.619038 +52 0.948646 0.932239 +51 0.510774 0.932239 +SURF 0X0 +mat 1 +refs 4 +37 0.083704 0.619038 +36 0.521576 0.619038 +53 0.521576 0.932239 +52 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +36 0.521576 0.619038 +35 0.948646 0.619038 +54 0.948646 0.932239 +53 0.521576 0.932239 +SURF 0X0 +mat 1 +refs 4 +35 0.083704 0.619038 +34 0.521576 0.619038 +55 0.521576 0.932239 +54 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +34 0.521576 0.619038 +33 0.948646 0.619038 +56 0.948646 0.932239 +55 0.521576 0.932239 +SURF 0X0 +mat 1 +refs 4 +33 0.083704 0.619038 +32 0.521576 0.619038 +57 0.521576 0.932239 +56 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +32 0.521576 0.619038 +31 0.948646 0.619038 +58 0.948646 0.932239 +57 0.521576 0.932239 +SURF 0X0 +mat 1 +refs 4 +31 0.083704 0.619038 +30 0.521576 0.619038 +59 0.521576 0.932239 +58 0.083704 0.932239 +SURF 0X0 +mat 1 +refs 4 +5 0.874007 0.572981 +30 0.534809 0.572981 +49 0.534809 0.370077 +4 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +30 0.534809 0.572981 +31 0.195611 0.572981 +48 0.195611 0.370077 +49 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +31 0.874007 0.572981 +32 0.534809 0.572981 +47 0.534809 0.370077 +48 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +32 0.534809 0.572981 +33 0.195612 0.572981 +46 0.195612 0.370077 +47 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +33 0.874007 0.572981 +34 0.534809 0.572981 +45 0.534809 0.370077 +46 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +34 0.534809 0.572981 +35 0.195612 0.572981 +44 0.195612 0.370077 +45 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +35 0.874007 0.572981 +36 0.534809 0.572981 +43 0.534809 0.370077 +44 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +36 0.534809 0.572981 +37 0.195612 0.572981 +42 0.195612 0.370077 +43 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +37 0.874007 0.572981 +38 0.534809 0.572981 +41 0.534809 0.370077 +42 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +38 0.534809 0.572981 +39 0.195612 0.572981 +40 0.195612 0.370077 +41 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +3 0.874007 0.572981 +10 0.534809 0.572981 +29 0.534809 0.370077 +2 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +10 0.534809 0.572981 +11 0.195612 0.572981 +28 0.195612 0.370077 +29 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +11 0.874007 0.572981 +12 0.534809 0.572981 +27 0.534809 0.370077 +28 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +12 0.534809 0.572981 +13 0.195612 0.572981 +26 0.195612 0.370077 +27 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +13 0.874007 0.572981 +14 0.534809 0.572981 +25 0.534809 0.370077 +26 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +14 0.534809 0.572981 +15 0.195611 0.572981 +24 0.195611 0.370077 +25 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +15 0.874007 0.572981 +16 0.534809 0.572981 +23 0.534809 0.370077 +24 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +16 0.534809 0.572981 +17 0.195612 0.572981 +22 0.195612 0.370077 +23 0.534809 0.370077 +SURF 0X0 +mat 1 +refs 4 +17 0.874007 0.572981 +18 0.534809 0.572981 +21 0.534809 0.370077 +22 0.874007 0.370077 +SURF 0X0 +mat 1 +refs 4 +18 0.534809 0.572981 +19 0.195611 0.572981 +20 0.195611 0.370077 +21 0.534809 0.370077 +kids 0 diff --git a/Missions/Races/Race-1/Models/Hangar_70x15.png b/Missions/Races/Race-1/Models/Hangar_70x15.png new file mode 100644 index 0000000..ef96e54 Binary files /dev/null and b/Missions/Races/Race-1/Models/Hangar_70x15.png differ diff --git a/Missions/Races/Race-1/Sounds/glassbell.wav b/Missions/Races/Race-1/Sounds/glassbell.wav new file mode 100644 index 0000000..bf77b34 Binary files /dev/null and b/Missions/Races/Race-1/Sounds/glassbell.wav differ diff --git a/Missions/Races/Race-1/image.png b/Missions/Races/Race-1/image.png new file mode 100644 index 0000000..b7a6c76 Binary files /dev/null and b/Missions/Races/Race-1/image.png differ diff --git a/Missions/Races/Race-1/metadata.xml b/Missions/Races/Race-1/metadata.xml new file mode 100644 index 0000000..09b7eb3 --- /dev/null +++ b/Missions/Races/Race-1/metadata.xml @@ -0,0 +1,12 @@ + + + + EYKS + + 2 + + +Race example. You must start at EYKS. + + + diff --git a/Missions/Races/Race-1/mission.xml b/Missions/Races/Race-1/mission.xml new file mode 100644 index 0000000..43bd2f8 --- /dev/null +++ b/Missions/Races/Race-1/mission.xml @@ -0,0 +1,736 @@ + + + + + + + + Pylon1_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBluePylon.xml + + 0.0 + 0.0 + 0.0 + + + 54.881072 + 23.882520 + 0.0 + 1 + + + + + Pylon2_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBluePylon.xml + + 0.0 + 0.0 + 0.0 + + + 54.882367 + 23.882576 + 0.0 + 1 + + + + + Pylon3_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBluePylon.xml + + 0.0 + 0.0 + 0.0 + + + 54.883767 + 23.882619 + 0.0 + 1 + + + + + Pylon4_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBluePylon.xml + + 180.0 + 0.0 + 0.0 + + + 54.882836 + 23.878901 + 0.0 + 1 + + + + + Gate1_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBlueGate.xml + + 180.0 + 0.0 + 0.0 + + + 54.884694 + 23.879046 + 0.0 + 1 + + + + + Gate2_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBlueGate.xml + + 200.0 + 0.0 + 0.0 + + + 54.881158 + 23.878449 + 0.0 + 1 + + + + + Gate3_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBlueGate.xml + + 90.0 + 0.0 + 0.0 + + + 54.878796 + 23.880764 + 0.0 + 1 + + + + + Gate4_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBlueGate.xml + + 0.0 + 0.0 + 0.0 + + + 54.885038 + 23.882623 + 0.0 + 1 + + + + + Gate5_mdl + model + 1 + /Missions/Generic/Models/Redbull/RedbullBlueGate.xml + + 0.0 + 0.0 + 0.0 + + + 54.886365 + 23.882698 + 0.0 + 1 + + + + + + + + POI_point1 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 1 + Start gate + + Gate1_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point2 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Pylon + + Pylon4_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point3 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Gate 2 + + Gate2_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point4 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Gate 3 + + Gate3_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point5 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Pylon 1/3 + + Pylon1_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point6 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Pylon 2/3 + + Pylon2_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point7 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Pylon 3/3 + + Pylon3_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point8 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Gate 4 + + Gate4_mdl + 0.0 + 0.0 + 30.0 + + + + + POI_point9 + point-of-interest + //Missions/Generic/Models/checkpoint-h50-a.xml + 0 + Gate 5 + + Gate5_mdl + 0.0 + 0.0 + 30.0 + + + + + + + + SHOW_POI_point1 + object-activation-action + 1 + + POI_point1 + + + + + SHOW_POI_point2 + object-activation-action + 1 + + POI_point2 + + + + + SHOW_POI_point3 + object-activation-action + 1 + + POI_point3 + + + + + SHOW_POI_point4 + object-activation-action + 1 + + POI_point4 + + + + + SHOW_POI_point5 + object-activation-action + 1 + + POI_point5 + + + + + SHOW_POI_point6 + object-activation-action + 1 + + POI_point6 + + + + + SHOW_POI_point7 + object-activation-action + 1 + + POI_point7 + + + + + SHOW_POI_point8 + object-activation-action + 1 + + POI_point8 + + + + + SHOW_POI_point9 + object-activation-action + 1 + + POI_point9 + + + + + + HIDE_POI_point1 + object-activation-action + 0 + + POI_point1 + + + + + HIDE_POI_point2 + object-activation-action + 0 + + POI_point2 + + + + + HIDE_POI_point3 + object-activation-action + 0 + + POI_point3 + + + + + HIDE_POI_point4 + object-activation-action + 0 + + POI_point4 + + + + + HIDE_POI_point5 + object-activation-action + 0 + + POI_point5 + + + + + HIDE_POI_point6 + object-activation-action + 0 + + POI_point6 + + + + + HIDE_POI_point7 + object-activation-action + 0 + + POI_point7 + + + + + HIDE_POI_point8 + object-activation-action + 0 + + POI_point8 + + + + + HIDE_POI_point9 + object-activation-action + 0 + + POI_point9 + + + + + + + + Enter_msg + dialog-action + Enter + glassbell.wav + 3 + + + + Sound1 + single-shot-sound-action + glassbell.wav + + + + Penalty_msg + dialog-action + Penalty + 3 + + + + pylon1 + pylon-race-point + 1 + 50 + left + + 0 + + + 54.881072 + 23.882520 + 0.0 + 1 + + + HIDE_POI_point5 + SHOW_POI_point6 + Sound1 + + + Penalty_msg + + + + + pylon2 + pylon-race-point + 1 + 50 + right + + 0 + + + 54.882367 + 23.882576 + 0.0 + 1 + + + HIDE_POI_point6 + SHOW_POI_point7 + Sound1 + + + Penalty_msg + + + + + pylon3 + pylon-race-point + 1 + 50 + left + + 0 + + + 54.883767 + 23.882619 + 0.0 + 1 + + + HIDE_POI_point7 + SHOW_POI_point8 + Sound1 + + + Penalty_msg + + + + + pylon4 + pylon-race-point + 1 + 50 + right + + 180 + + + 54.882836 + 23.878901 + 0.0 + 1 + + + HIDE_POI_point2 + SHOW_POI_point3 + Sound1 + + + Penalty_msg + + + + + gate1 + gate-race-point + 1 + 20 + 20 + + 180 + + + 54.884694 + 23.879046 + 0.0 + 1 + + + HIDE_POI_point1 + SHOW_POI_point2 + Sound1 + + + Penalty_msg + + + + + + gate2 + gate-race-point + 1 + 20 + 20 + + 200 + + + 54.881158 + 23.878449 + 0.0 + 1 + + + HIDE_POI_point3 + SHOW_POI_point4 + Sound1 + + + Penalty_msg + + + + + gate3 + gate-race-point + 1 + 20 + 20 + + 90 + + + 54.878796 + 23.880764 + 0.0 + 1 + + + HIDE_POI_point4 + SHOW_POI_point5 + Sound1 + + + Penalty_msg + + + + + gate4 + gate-race-point + 1 + 20 + 20 + + 0 + + + 54.885038 + 23.882623 + 0.0 + 1 + + + HIDE_POI_point8 + SHOW_POI_point9 + Sound1 + + + Penalty_msg + + + + + gate5 + gate-race-point + 1 + 20 + 20 + + 0 + + + 54.886365 + 23.882698 + 0.0 + 1 + + + HIDE_POI_point9 + SHOW_POI_point1 + Sound1 + + + Penalty_msg + + + + + + race + EYKS race + 5 + 2 + 100 + on-first-race-point + 1 + + gate1 + pylon4 + gate2 + gate3 + pylon1 + pylon2 + pylon3 + gate4 + gate5 + + + + diff --git a/Nasal/extensions/gate_race_point.nas b/Nasal/extensions/gate_race_point.nas new file mode 100644 index 0000000..985dc5b --- /dev/null +++ b/Nasal/extensions/gate_race_point.nas @@ -0,0 +1,88 @@ + + +mission.extension_add("MissionObject", { + + type: "gate-race-point", + + new: func(n) { + var m = { + parents : [me], + name : n.getValue("name"), + activated : mission.get(n, "activated", 0), + heading : mission.get(n, "orientation/heading-deg", 0), + ignore_dist : mission.get(n, "ignore-distance-m", 100), + enter_actions : n.getNode("on-enter-actions"), + penalty_actions : n.getNode("on-penalty-actions"), + height : mission.get(n, "height-m", 20.0), + width : mission.get(n, "width-m", 20.0), + coord : mission.get_coord(n.getNode("world-position")), + _direct_dist : nil, + _norm_dist : 0, + _h_dist : nil, + _v_dist : nil, + _prev_norm_dist : nil, + }; + + + m.timer = maketimer(0.5, func m._loop()); + + return m; + }, + +# init: func { +# if (me.activated) +# me.start(); +# }, + + + start: func { + me.timer.start(); + }, + + stop: func { + me.timer.stop(); + }, + + del: func { + me.stop(); + }, + + + _loop: func { + me._update(); + }, + + _update: func { + var ac_coord = geo.aircraft_position(); + me._direct_dist = me.coord.direct_distance_to(ac_coord); + var hdg = me.heading * D2R; + var crs = me.coord.course_to(ac_coord) * D2R; + + me._v_dist = ac_coord.alt() - me.coord.alt(); + + var d = math.sqrt(me._direct_dist * me._direct_dist - me._v_dist * me._v_dist); + me._prev_norm_dist = me._norm_dist; + me._norm_dist = math.cos(hdg - crs) * d; + + if (me._prev_norm_dist >= 0) + return; + + if (me._norm_dist < 0) + return; + + me._h_dist = math.sin(hdg - crs) * d; + if (math.abs(me._h_dist) > me.width/2) + return; + if (math.abs(me._v_dist) > me.height) + return; + + if (me.enter_actions != nil) + mission.activate_object_group(me.enter_actions); + + me.stop(); + setprop("/sim/mission/race/signals/next-race-point", 1); + + }, + + +}); #extension_add diff --git a/Nasal/extensions/point_of_interest_handler.nas b/Nasal/extensions/point_of_interest_handler.nas index 69ddd52..83e119c 100644 --- a/Nasal/extensions/point_of_interest_handler.nas +++ b/Nasal/extensions/point_of_interest_handler.nas @@ -35,6 +35,8 @@ var update = func { } var check_POI = func { + if (!mission.mission_started) + return; poi("count", var count = 0); setsize(active_POI, 0); foreach (var p; node.getChildren("point-of-interest")) diff --git a/Nasal/extensions/pylon_race_point.nas b/Nasal/extensions/pylon_race_point.nas new file mode 100644 index 0000000..30d494f --- /dev/null +++ b/Nasal/extensions/pylon_race_point.nas @@ -0,0 +1,96 @@ + + +mission.extension_add("MissionObject", { + + type: "pylon-race-point", + + new: func(n) { + var m = { + parents : [me], + name : n.getValue("name"), + activated : mission.get(n, "activated", 0), + heading : mission.get(n, "orientation/heading-deg", 0), + ignore_dist : mission.get(n, "ignore-distance-m", 100), + enter_actions : n.getNode("on-enter-actions"), + penalty_actions : n.getNode("on-penalty-actions"), + inside_dir : mission.get(n, "inside-direction", 0), + coord : mission.get_coord(n.getNode("world-position")), + _direct_dist : nil, + _norm_dist : 0, + _h_dist : nil, + _v_dist : nil, + _prev_norm_dist : nil, + }; + + if (m.inside_dir == "right") + m.inside_dir = -1; + elsif (m.inside_dir == "left") + m.inside_dir = 1; + else m.inside_dir = 0; + + m.timer = maketimer(0.5, func m._loop()); + + return m; + }, + +# init: func { +# if (me.activated) +# me.start(); +# }, + + + start: func { + me.timer.start(); + }, + + stop: func { + me.timer.stop(); + }, + + del: func { + me.stop(); + }, + + + _loop: func { + me._update(); + }, + + _update: func { + var ac_coord = geo.aircraft_position(); + + me._direct_dist = me.coord.direct_distance_to(ac_coord); + if (me._direct_dist >= me.ignore_dist) + return; + + var hdg = me.heading * D2R; + var crs = me.coord.course_to(ac_coord) * D2R; + + + me._v_dist = ac_coord.alt() - me.coord.alt(); + + var d = math.sqrt(me._direct_dist * me._direct_dist - me._v_dist * me._v_dist); + me._prev_norm_dist = me._norm_dist; + me._norm_dist = math.cos(hdg - crs) * d; + + if (me._prev_norm_dist >= 0) + return; + + if (me._norm_dist < 0) + return; + + me._h_dist = math.sin(hdg - crs) * d; + + #if (math.sgn(me._h_dist) != me.inside_dir) { + if (me.enter_actions != nil) + mission.activate_object_group(me.enter_actions); + #} + + + me.stop(); + setprop("/sim/mission/race/signals/next-race-point", 1); + + }, + + +}); #extension_add diff --git a/Nasal/extensions/race.nas b/Nasal/extensions/race.nas new file mode 100644 index 0000000..67323af --- /dev/null +++ b/Nasal/extensions/race.nas @@ -0,0 +1,201 @@ + + + +var w = 400; +var h = 80; +var bg_color = [0.2, 0.4, 0.7, 0.9]; +var line_color = [1, 1, 1, 0.8]; +var txt_h = h / 10; +var txt2_h = txt_h * 0.8; +var font = "LiberationFonts/LiberationSans-Italic.ttf"; +var font2 = "LiberationFonts/LiberationMono-Italic.ttf"; +var offset = 5; +var th = h - offset * 2; # table height +var x_left = offset; # table corners +var x_right = w - x_left; # +var y_top = x_left; # +var y_bottom = th + x_left; # /table corners +var margin = 10; + +var window = canvas.Window.new([w,h]); + +var scr_x = func getprop("/sim/startup/xsize"); +var scr_y = func getprop("/sim/startup/ysize"); + +window.set("tf/t[0]", scr_x() - w - 20); +window.set("tf/t[1]", scr_y() / 20); + +var mycanvas = window.createCanvas(); +mycanvas.setColorBackground(0,0,0,0); + +var table = mycanvas.createGroup(); +var cfg = { + "border-top-radius": h/2.1, + "border-bottom-radius": h/2.1, +}; +table.createChild("path") + .rect(offset, offset, w - 2*offset, h - 2*offset, cfg) + .setColor(line_color) + .setColorFill(bg_color) + .setStrokeLineWidth(2); + + +var _data = [ + # 0 , 1 , 2 , 3 , 4 , 5 , 6 , + # , x , y , Alignment , Size , Font , Text , + ["Lap" , h/2 , h/2 + offset/2 , "left-center" , h/4 , font , "Lap" ], + ["_Lap" , w/4 , h/2 , "left-center" , h/3 , font2 , "-/-" ], + ["TotalTime" , w/1.5 , (h - 2*offset)/3 , "right-bottom" , h/6 , font , "Total Time" ], + ["_TotalTime" , w/1.5 + offset , (h - 2*offset)/3 , "left-bottom" , h/4 , font2 , "00:00.0" ], + ["CurrentLap" , w/1.5 , (h - 2*offset)/3*2 , "right-bottom" , h/6 , font , "Current Lap"], + ["_CurrentLap" , w/1.5 + offset , (h - 2*offset)/3*2 , "left-bottom" , h/4 , font2 , "00:00.0" ], + ["LastLap" , w/1.5 , (h - 2*offset)/3*3 , "right-bottom" , h/6 , font , "Last Lap" ], + ["_LastLap" , w/1.5 + offset , (h - 2*offset)/3*3 , "left-bottom" , h/4 , font2 , "00:00.0" ], +]; + +var txt = {}; +foreach (var a; _data) { + txt[a[0]] = table.createChild("text"); + txt[a[0]] + .setTranslation(a[1], a[2]) + .setText(a[6]) + .setAlignment(a[3]) + .setFontSize(a[4]) + .setFont(a[5]) + .setColor(1,1,1); +} + + +var time_str = func(t) { + var t1 = int(math.mod(t / 60, 60)); + var t2 = int(math.mod(t, 60)); + var t3 = int(math.mod(t * 10, 10)); + sprintf("%02d:%02d.%d", t1, t2, t3); +} + +var timer = { + _tN : props.getNode("/sim/time/elapsed-sec"), + _timer : maketimer(0.1, func timer._loop()), + _time : 0, + _penalty : 0, + _total : 0, + _current : 0, + _last : 0, + + + start: func { + me._start_time = me._tN.getValue(); + me._timer.start(); + }, + + stop: func { + me._timer.stop(); + }, + + add_time: func(t) { + me._penalty += t; + }, + + reset: func { + me._total += me._time + me._penalty; + me._last = me._time; + me._start_time = me._tN.getValue(); + txt._LastLap.setText(time_str(me._last)); + }, + + _loop: func { + me._time = me._tN.getValue() - me._start_time; + txt._TotalTime.setText(time_str(me._total + me._time + me._penalty)); + txt._CurrentLap.setText(time_str(me._time)); + }, +}; + + +var race = { + type: "race", + + new: func(n) { + var m = { + parents : [race], + name : n.getValue("name"), + _num_of_laps : mission.get(n, "number-of-laps", 1), + _clock_start : mission.get(n, "clock-start", "immediate"), #on-action, on-first-race-point, immediate + _course : n.getNode("race-course", 0), + _race_points : [], + _current_point : 0, + _lap : 1, + _next_lap : 0, + }; + return m; + }, + + init: func { + me._listeners = [ + setlistener("/sim/mission/race/signals/next-race-point", func me._next_point()), + ]; + + if (me._clock_start == "on-action") + me._clock_start = 0; + elsif (me._clock_start == "on-first-race-point") + me._clock_start = 1; + else me._clock_start = 2; + + + if ( me._course != nil ) + foreach(var ref; me._course.getChildren("object-reference")) + foreach(var obj; mission.mission_objects) + if (ref.getValue() == obj.name) + append(me._race_points, obj); + + me._points_count = size(me._race_points); + txt._Lap.setText(1 ~ "/" ~ me._num_of_laps); + me.start(); + }, + + start: func { + me._race_points[me._current_point].start(); + }, + + stop: func { + timer.stop(); + foreach(var a; me._race_points) + a.stop(); + }, + + del: func { + window.del(); + me.stop(); + foreach(var l; me._listeners) + removelistener(l); + setsize(me._listeners, 0); + }, + + _next_point: func { + if ((me._clock_start == 1) and (me._current_point == 0) and me._lap == 1) + timer.start(); + + if (me._next_lap) { + me._next_lap = 0; + me._lap += 1; + if (me._lap > me._num_of_laps) { + timer.reset(); + timer.stop(); + me.stop(); + txt._CurrentLap.setText("00:00.0"); + return; + } + timer.reset(); + txt._Lap.setText(me._lap ~ "/" ~ me._num_of_laps); + } + + me._current_point += 1; + if ( (me._current_point + 1) > me._points_count ) { + me._current_point = 0; + me._next_lap = 1; + } + + me._race_points[me._current_point].start(); + }, +}; + +mission.extension_add("MissionObject", race); \ No newline at end of file