- komplexní funkce, která umožňuje nastavit veškeré vlastnosti primu,
- umožňuje nastavit několik parametrů najednou, např. barvu, texturu a velikost v jednom kroku,
Funkce samotná je jednoduchá, komplikované jsou vstupní parametry,
llSetPrimitiveParams(list parametry);
VSTUP: neuspořádaný seznam požadovaných parametrů, vždy ve tvaru:
- konstanta označující druh změny
- parametry pro daný druh změny
VÝSTUP: nic
Důležité konstanty pro llSetPrimitiveParams
PRIM_COLOR integer strana, vector barva, float alpha
PRIM_FULLBRIGHT integer strana, integer ano_ne
Poznámka: ano_ne může být 0 nebo 1, resp. FALSE nebo TRUE
PRIM_PHANTOM integer ano_ne
PRIM_POINT_LIGHT integer ano_ne, vector barva, float intenzita, float dosah, float utlum
Poznámka: zapíná/vypíná prim jako zdroj světla, parametry souhlasí s Edit dialogem primu
PRIM_SIZE vector velikost
PRIM_TEXTURE integer strana, string nazev_textury, vector opakovani, vector posun, float natoceni
Poznámka: parametry odpovídají položkám v Edit dialogu primu pro úpravu textury
PRIM_TEXGEN integer strana, integer typ_mapovani
Poznámka: přepíná mapování textury mezi Default a Planar, typ_mapovani se zadavá pomocí konstant PRIM_TEXGEN_DEFAULT nebo PRIM_TEXGEN_PLANAR
PRIM_GLOW integer strana, float intenzita
PRIM_TYPE
PRIM_TYPE je nejsložitější na zadávání, protože každý typ objektu vyžaduje jinou sekvenci parametrů, je třeba mrknout na LSL wiki, kde jsou vždy potřebné parametry uvedené.PRIM_TYPE_BOX
PRIM_TYPE_CYLINDER
PRIM_TYPE_PRISM
PRIM_TYPE_SPHERE
PRIM_TYPE_TORUS
PRIM_TYPE_TUBE
PRIM_TYPE_RING
PRIM_TYPE_SCULPT
Příklad definice kostky a zadání kostky:
PRIM_TYPE, PRIM_TYPE_BOX, integer otvor, vector osekani, float velikost_otvoru, vector zkrouceni, vector zuzeni, vector zkoseni
[PRIM_TYPE, PRIM_TYPE_BOX, 0, <0.0, 1.0, 0.0>, 0.0, <0.0, 0.0, 0.0>, <1.0, 1.0, 0.0>, <0.0, 0.0, 0.0>]
Na příkladu si ukážeme vše podstatné a pěkně popíšeme.
strecha(integer open) // funkce oznámeni { if (open) { llSay(0, "oteviram střechu"); } else { llSay(0, "zavíram střechu"); } } default { state_entry() { llSetPrimitiveParams([ //zde se změní vzhled primu ihned po spuštění skriptu PRIM_SIZE, ‹8.0,10.0,5.0›, // přenastavíme velikost primu PRIM_TEXTURE, ALL_SIDES, TEXTURE_BLANK, ‹16.0, 26.0, 10.0›, ‹0.0, 0.0, 0.0›, 0.0, //texturu PRIM_BUMP_SHINY, ALL_SIDES, 2, 8, //nastavím lesk a bump texturu, PRIM_COLOR, ALL_SIDES, ‹1.0, 0.0, 0.0›, 1.0 ]); // barvu na červenou state closed; //přejdeme do zavřeného stavu střechy } } state closed // stav kdy je zavřena { state_entry() { float hollow = 0.95; vector twist = ‹0.0, 0.0, 0.0›; vector dimple = ‹0.2, 0.8, 0.0›; integer cyklus; strecha(FALSE); float x = 0.350; float y = 0.5; float z = 0.0; for (cyklus = 7; cyklus ›= 1; cyklus = cyklus-1) { x = x - 0.050; vector zavirani = ‹x, y, z›; llSetPrimitiveParams( [PRIM_TYPE, PRIM_TYPE_SPHERE, PRIM_HOLE_DEFAULT, zavirani, hollow, twist, dimple ] ); llSleep(0.2); } } touch_start(integer total_number) { state open; // pokud nekdo klikne, začne otvírat } } state open // stav kdy je otevřeno { state_entry() { float hollow = 0.95; vector twist = ‹0.0, 0.0, 0.0›; vector dimple = ‹0.2, 0.8, 0.0›; strecha(TRUE); integer cyklus; float x = 0.00; float y = 0.5; float z = 0.0; for (cyklus = 1; cyklus ‹= 7; cyklus = cyklus+1) { x = x + 0.050; vector zavirani = ‹x, y, z›; llSetPrimitiveParams( [PRIM_TYPE, PRIM_TYPE_SPHERE, PRIM_HOLE_DEFAULT, zavirani, hollow, twist, dimple ] ); llSleep(0.2); } } touch_start(integer num) { state closed; // pokud nekdo klikne, zavri } }
Všimněte si že po vložení scriptu do právě vytvořeného primu, se prim ihned upraví dle nastavených parametrů. To je z předchozích kapitol již jasné že to tím že definované parametry se nacházi ve state default.
Ve state closed kam default atomaticky přepne se nenápadně změní PRIM_TYPE na SPHERE 🙂
Script jsem nazval “Střecha” a to nejen proto že je zde prvně použitá jednoduchá funkce stejného jména která jediné co dělá že vám oznámí co zrovna dělá. Po kliknutí na náš tímto scriptem přetvořený prim se krokově otevře a nebo zavře a oznámí co z toho se stalo.
Script si samozřejmě stáhněte a vyzkoušejte si tam cokoli změnit a upravit.