ActivateActionSetLayer-jäsenfunktion kutsuminen ei vaadi paljon resursseja, ja sitä voidaan huoletta kutsua toistuvasti (katso selite jäljempänä)Tarkkana useiden kerrosten kanssa!
Vaikka voit käyttää toimintosarjan kerrosten jokaiseen kehykseen, se ei ole suositeltavaa varsinkaan, jos kerroksia on enemmän kuin yksi. Viimeisin käytetty kerros korvaa aiemmin käytetyt tiedot, joten varmista, että käytät kerroksia oikeassa järjestyksessä. Koodissa voi olla ajoitukseen liittyviä virheitä, jotka voivat muuttaa järjestystä.
Toimintosarjan kerrokset on tarkoitettu rajoitettuun käyttöön. Niitä kannattaa käyttää tai poistaa vain pelin tietyissä muutosvaiheissa.
Jos pelissä on Steam-syötetuki, kehittäjä voi määrittää toimintosarjan kerroksia, jotka pelin koodi käynnistää. Legacy-tilassa pelaajat voivat määrittää omia toimintosarjan kerroksia ja niitä käynnistäviä syötteitä. Samalla tavalla he voivat määrittää omia pelaajan käynnistämiä toimintosarjan kerroksia.Käytännön esimerkki
Oletetaan, että kyseessä on luokkapohjainen ammuskelupeli, jossa on ajoneuvoja. Pelissä on Steam-syötetuki, ja siinä käytetään toimintosarjan kerroksia. Peruspelissä perustoimintosarja on aina aktiivinen ja kattaa juoksemisen, esineiden nostamisen, hypyt jne.
Kun pelaaja valitsee luokan, soveltuva kerros lisätään, esimerkiksi "tarkka-ampuja".
Koodi voi näyttää tältä:
void changeClass(EClassID myClass)
{
if(myClass == SNIPER)
{
SteamInput()->ActivateActionSetLayer( controllerHandle1, sniperLayerHandle );
}
//logiikka muille luokille
}
Jos pelaaja nousee ajoneuvoon tai poistuu siitä, ajoneuvokerroksen ohjaimet aktivoidaan tai niiden aktivointi poistetaan tasojen vaihtuessa. Tällöin ajoneuvon toimintojen uusia ohjaimia lisätään tai poistetaan.
void changeVehicle(EVehicleID myVehicle, bool entering)
{
InputActionSetHandle_t layerHandle;
if(myVehicle == AUTOMATIC)
{
layerHandle = automaticHandle; //automaattivaihteisto – ohjaus, kaasu, jarru
}
else if(myVehicle == STICK_SHIFT)
{
layerHandle = stickShiftHandle; //manuaalivaihteisto – ohjaus, kaasu, jarru, kytkin, vaihteen vaihto jne.
}
if(entering)
{
SteamInput()>ActivateActionSetLayer( controllerHandle1, layerHandle ); // käytä ajoneuvon toimintosarjan kerrosta, kun menet autoon
}
else
{
SteamInput()>DeactivateActionSetLayer( controllerHandle1, layerHandle ); /poista ajoneuvon toimintosarjan kerrosta, kun poistut autosta
}
}
Tässä pelissä pelaajat voivat käyttää asetta myös ajoneuvon kyydistä. Kun tarkka-ampuja käyttää tarkkuuskiväärin tähtäintä, kolmas toimintosarjan kerros aktivoituu. Ei väliä, käveleekö pelaaja vai ajaako autolla.
void useScope(bool entering)
{
if(entering)
{
SteamInput()->ActivateActionSetLayer( controllerHandle1, scopeHandle ); //käytä tähtäinkerrosta tähdättäessä
}
else
{
SteamInput()->DeactivateActionSetLayer( controllerHandle1, scopeHandle ); //poista tähtäinkerros, kun tähtäin lasketaan
}
}
Näin kerrokset yhdistyvät:
Huomaa, että kerrokset voivat sekä lisätä uusia toimintoja entisten päälle että korvata aiempia määrityksiä. Tässä tapauksessa ajoneuvon "jarru"- ja "kaasu"-toiminnot korvaavat peruskerroksen "hyppää"- ja "vuorovaikutus"-toiminnot. Lisäksi "ohjaa" korvaa "liiku"-toiminnon, joka on sidottu kosketuslevyyn ja sauvaan perustasolla. "Tähtää"-toiminto hylkää puolestaan kiikaritähtäimen toimintosarjakerroksen. Kun kaikki kolme toimintosarjan kerrosta on pinottu, perussarjan ainoa jäljellä oleva toiminto on "ammu".Legacy-tila
Voit luoda toimintosarjakerroksia melkein samalla tavalla kuin tavallisia toimintosarjoja. Klikkaa määrittäjässä Lisää toimintokerros -painiketta:
Voit antaa toimintosarjakerrokselle nimen ja valita määritykset. Koska kyseessä on vanha toimintosarjakerros, peli ei tunnista sitä. Pelaajan on aktivoitava se itse. Valitse ensin syöte, joka käynnistää toimintosarjakerroksen. Avaa sitten määritysvalikko ja klikkaa toimintosarjan aktivointikuvaketta vasemmalta:
Toimintosarjan aktivointivalikko avautuu:
Tässä tapauksessa käytetään kerrosta, ei aktivoida toimintosarjaa. Valitse alasvetovalikosta Käytä toimintokerrosta:
Valitse sitten, mihin kerrokseen sitä käytetään:
Samalla tavalla voit myös poistaa kerroksen erillisillä määrityksillä.