3.3 KiB
3.3 KiB
PSXSplash Test Scene
This Unity project is a complete test scene for PSXSplash's Lua scripting API. Open it in Unity with the SplashEdit package installed.
What's In the Scene
Game Objects
- PSXPlayer - Player controller at (0, 0, -10)
- Floor - Walkable ground plane
- Wall1-4 - Boundary walls
- Collectible1-3 - Pickup items (onCollideWithPlayer)
- NPC - Interactable NPC with multi-line dialogue
- Door - Interactable door with cutscene animation
- DoorBlocker - Invisible wall removed when door opens
- Switch - Toggle switch controlling SwitchTarget
- SwitchTarget - Object toggled by the switch
- Spinner - Object with looping cutscene rotation (onInteract to toggle)
- Movable - Object selected via onInteract, moved via D-pad button presses
- Scanner - Entity scanner terminal (onInteract)
Trigger Boxes (PSXTriggerBox)
Each trigger has its own Lua script - no trigger index routing.
- CutsceneTrigger at (-8, 0, 5) - Plays camera_flyover cutscene
- DamageTrigger at (8, 0, 5) - Damages player on entry
- PortalTrigger at (0, 0, 12) - Scene transition
- HealTrigger at (-8, 0, -5) - Heals player on entry
UI Canvases (PSXCanvas)
- HUD (always visible, sort order 10):
- ScoreText - shows "Score: 0"
- StatusText - shows status messages
- HealthBar - progress bar 0-100
- Dialogue (hidden by default, sort order 20):
- DialogueText - shows NPC dialogue lines
Still Needed
Cutscenes
Create PSXCutsceneClip assets with these names and add to SceneExporter:
ambient_spin- Looping background animationcamera_flyover- One-shot camera pan (Camera Position + Rotation tracks)door_open- Door opening animation (Object Position track)spin_loop- Full 360 rotation for Spinner (Object Rotation track)
Audio Clips
collect- pickup sounddoor_open- door openingswitch_on/switch_off- switch toggleheal- healing sound
Navigation
Bake nav regions from the floor geometry via PlayStation 1 > Nav Region Builder.
Design Notes
- Zero onUpdate. All logic is event-driven.
- Zero float literals. Uses
1/2instead of0.5etc. - Each trigger has its own script. No index-based routing.
- Scene globals. scene.lua defines: setStatus(), addScore(), applyDamage(), applyHeal(), startDialogue(), advanceDialogue(), isInDialogue(), endDialogue().
API Coverage
| Script | Callbacks | Namespaces |
|---|---|---|
| scene.lua | onSceneCreationStart/End | Scene, Persist, UI, Audio, Controls, Cutscene, Timer, Debug, PSXMath, Vec3 |
| collectible.lua | onCreate, onDestroy, onEnable, onDisable, onCollideWithPlayer | Entity, Audio, Persist |
| door.lua | onCreate, onInteract | Entity, Audio, Controls, Cutscene |
| npc.lua | onCreate, onInteract, onButtonPress | Input, Controls, UI |
| switch.lua | onCreate, onInteract | Entity, Audio |
| spinner.lua | onCreate, onInteract, onCollideWithPlayer | Cutscene, Entity, Timer |
| movable.lua | onCreate, onInteract, onButtonPress | Entity, Vec3, Camera, Input |
| entity_scanner.lua | onInteract | Entity, Vec3 |
| cutscene_trigger.lua | onTriggerEnter | Controls, Cutscene |
| damage_trigger.lua | onTriggerEnter, onTriggerExit | Debug |
| portal_trigger.lua | onTriggerEnter | Persist, Scene |
| heal_trigger.lua | onTriggerEnter, onTriggerExit | Audio, Debug |