Wat u leert#
U schrijft een klein BASIC-programma, kijkt toe hoe de Scene Graph leeg blijft terwijl het duidelijk werkt, en laat vervolgens elk object verschijnen door het te benoemen. Aan het eind weet u waarom de boom het grootste deel van wat een programma bouwt verbergt, en hoe u kiest wat hij toont.
Voordat u begint#
- Engine is een module waarvoor steun nodig is. Inkwell, Vectra en PDF Studio zijn de drie gratis modules.
- Geen voorgaande tutorial nodig. Alles hieronder is één script.
- Houd het paneel Scene Graph open, naast de viewport. Dat is het hele punt van de oefening.
Stappen#
-
Open Engine, start een lege scène, en open de scripteditor. Plak dit en druk op Play:
image = LoadImage("hero.png") sprite = CreateSprite(image) SpritePosition(sprite, 100.0, 120.0) CreatePointLight(1, 0.0, 5.0, 0.0, 10.0, 255, 255, 255) DO Sync() LOOP -
Kijk naar de Scene Graph. De sprite staat op het scherm, het licht brandt, en de boom toont niets. Dit is geen bug, en het is de hele les.
Tip: het paneel toont een aantal naamloze objecten. Dat getal is de uitvoer van uw programma die de boom bewust niet heeft weergegeven.
-
Geef de sprite een naam. Voeg één regel toe na
SpritePosition, en druk opnieuw op Play:SpriteName(sprite, "player")playerverschijnt in de boom. Er verandert verder niets op het scherm: benoemen creëert, verplaatst of tekent niets. Het publiceert. -
Geef ook het licht een naam, met het commando dat bij dit idee hoort:
LightName(1, "sun")Nu twee items. Klik op één ervan: de inspector volgt, precies zoals bij een object dat u met de hand had geplaatst.
-
Voeg deeltjes toe en geef ze een naam, zodat u ziet dat de regel niet alleen voor sprites geldt:
CreateParticles(1, 200.0, 200.0) ParticlesName(1, "smoke") -
Verwijder nu de drie naamregels en druk op Play. De scène is identiek, de boom is weer leeg, en het aantal naamloze objecten staat weer op drie.
Waarschuwing: een naam is geen id.
SpriteName(sprite, "player")labelt de sprite waarvan het id inspritestaat; het laat u niet toe hem later via dat label terug te vinden. Het id blijft uw houvast.
Resultaat#
U bepaalt wat uw programma toont. Een prop, een licht en een emitter verschijnen onder de namen die u koos; de honderden technische objecten die een echt programma bouwt, blijven buiten beeld.
Waarom deze regel bestaat#
Een klassiek BASIC-programma maakt voortdurend objecten aan: een sprite per kogel, een tekst per scorecijfer, een afbeelding per tegel. Ze allemaal weergeven zou de Scene Graph binnen enkele seconden onleesbaar maken, en de drie objecten waar het u werkelijk om gaat, zouden verloren gaan in de ruis.
De boom toont dus niet alles en verbergt de rest niet door te gokken. Hij toont wat u benoemd hebt, en telt de rest zodat niets stilzwijgend verdwijnt. Het filter is van u, niet van de engine.
Welke objecten kunnen worden benoemd#
| Commando | Wat het benoemt |
|---|---|
SpriteName(id, name) | Een sprite |
TextName(id, name) | Een tekstobject |
ObjectName(id, name) | Een 3D-object |
LightName(id, name) | Een punt- of richtingslicht |
ParticlesName(id, name) | Een deeltjes-emitter, 2D of 3D |
Geluiden, afbeeldingen, memblocks en fonts hebben geen regel in de Scene Graph: het zijn resources, geen scèneobjecten, en ze benoemen zou nergens iets tonen.
Verder gaan#
- De rest van het dialect: de BASIC-taal.
- Elk naamgevingscommando met zijn parameters: de Studio-familie.