Interactive Control - Animace

V minulém článku jsme si ukázali, jak vložit IC do stroje. Dnes si ukázame jak přes IC zapisovat ovládání animací. Budeme k tomu potřebovat xml soubor stroje a správně vložené IC.

Kam zapisovat ovládání animací

V prvé řadě budeme potřebovat vytvořit si místo, kam budeme zapisovat ovládání animací. Zapisujeme do xml podle následujícího vzoru:

1<interactiveComponents minDist="13" toggleStyle>="1"
2 <windows>
3 <window ... />
4 </windows>
5</interactiveComponents>

Možná se práte, proč se animace zapisují do oddílu windows. Je to z toho důvodu, že původní IC bylo tovřeno na animování oken stroje - ovšem později se použití rozšířilo, ale v rámci zachování zpětné kompatibility je oddíl stále windows. Nyní se koukneme na atributy jednotlivého ovládání animace - window.

Atributy onMessage a offMessage

Tyto atributy se používají k definování hlášky, která se má zobrazit po najetí myši a to buď při otevřené animaci (animace je na konci - hláška v offMessage) nebo uzavřené animaci (ještě se na tlačítko nekliklo - hláška v onMessage). Oba tyto atributy musí obsahovat název definovaného textu v l10n v modDesc.xml.

Atribut name

Tento atribut slouží k zobecnění hlášek - pokud máme například 2 animace, tak pro obě můžeme vypisovat stejnou hlášku s tím, že místo name které se tam má doplnit, napíšeme do hlášky on/offMessage nějaký text a jako zástupný znak name použijeme %s. Ve výsledku tak máme třeba jednu onMessage, jednu offMessage a 2 animace používající stejné hlášky akorát s jiným name. Atribut name obsahuje název definovaného textu v l10n v modDesc.xml.

Atribut size

Size slouží k definování velikosti tlačítka pro klikní - nikoli velikosti vizuální! Hodnota je desetinné číslo v rozmezí 0 až 1. Toto číslo určije procentuální velikost klikatelného tlačítka oproti monitoru. Je dobré si s tímto pohrát aby se mohli používat tlačítka blízko u sebe.

Atribut mark

Tento atribut obsahuje index tlačítka v i3d stroje. Objekt na tomto indexu musí mít nejaký vnořený objekt pro případné přidání efektů. Doporučuji použít tlačítko z archivu který si stáhnete s IC. Kolem tohoto indexu se tvoří klikatelná oblast definovaná v size. Pokud není mark obsažen v tagu, vytvoří se pouze událost. Takto vytvořenou událost můžete používat v multiButtons.

Atribut animName

Tento atribut, jak již název napovídá, bude obsahovat název animace kterou bude tlačítko spouštět. Tato animace může být defiovaná v i3d a nebo v xml stroje.

Atribut synch

Atribut synch se používá pro multiplayer a může obsahovat hodnotu true a nebo false. Tento atribut není povinný a jeho základní hodnota je true. Pokud je hodnota false, pak není synchronizováno chování na MP - tzn.: jeden hráč může vidět něco spuštěné a druhý ne. Vhodné pro nějaké drobné funkce aby se nezatěžovala komunikace při MP.

Atribut isOutside

Tento atribut definuje, zda je tlačíko určeno pro použití mimo stroj a nebo pro použití v kabině. Pokud je false, tlačítko se zobrazí pouze tehdy, když jsme ve stroji. Pokud je true tak to zanmená, že aby se talčítko dalo spustit, tak musíme být v dosahu definovaném minDist. Tento atribut je nepovinný a jeho základní hodnota je false.

Ukázka zápisu animací

Nakonec vám zde přikládám ukázku zápisu animací do IC i s jejich definicí:

1
2<interactiveComponents minDist="13" toggleStyle="1">
3 <windows>
4 <window name="volant" mark="0>6|0|9|4|0" size="0.3" animName="naklon_volantu" onMessage="ic_volant_open" offMessage="ic_volant_close" />
5 <window name="okno" mark="0>6|0|3|5" size="0.3" animName="otevreni_okna" onMessage="ic_component_open" offMessage="ic_component_close" />
6 <window name="dvere" mark="0>6|0|5|1" size="0.3" animName="otevreni_dveri" onMessage="ic_component_open" offMessage="ic_component_close" />
7 <window name="dvere" mark="0>6|0|5|2" size="0.3" animName="otevreni_dveri" onMessage="ic_component_open" offMessage="ic_component_close" isOutside="true" />
8 </windows>
9</interactiveComponents>
10
11<animations>
12 <animation name="otevreni_okna">
13 <!--packa-->
14 <part node="0>6|0|3|4" startTime="0" endTime="2" startRot="9 0 0" endRot="9 0 -90"/>
15 <part node="0>6|0|3|4" startTime="2" endTime="4" startRot="9 0 -90" endRot="9 0 0"/>
16 <!--okno-->
17 <part node="0>6|0|3" startTime="2" endTime="5" startRot="0 0 0" endRot="45 0 0"/>
18 </animation>
19 <animation name="otevreni_dveri">
20 <!--dvere-->
21 <part node="0>6|0|5" startTime="0" endTime="5" startRot="0 0 0" endRot="0 40 7"/>
22 </animation>
23 <animation name="naklon_volantu">
24 <!--pedal-->
25 <part node="0>6|0|9|3" startTime="0" endTime="1" startRot="0 0 0" endRot="-50 0 0"/>
26 <part node="0>6|0|9|3" startTime="1" endTime="5" startRot="-50 0 0" endRot="-50 0 0"/>
27 <part node="0>6|0|9|3" startTime="5" endTime="6" startRot="-50 0 0" endRot="0 0 0"/>
28 <!--volant-->
29 <part node="0>6|0|14|0|1|1" startTime="1" endTime="5" startRot="0 0 0" endRot="-35 0 0"/>
30 </animation>
31</animations>

Související video

Skript ke stažení

  1. InteractiveControl (Farm-Share)