// Spritesheet.cs using Simuspaces.Simulation; public class Spritesheet : SimuScriptBase { public SceneObject spritesheetTarget; public SceneObject nextButton; public SceneObject previousButton; public SceneObject resetButton; // Set this to rows * columns - 1. // Example: 10 digit sheet = 9. A 36-frame sheet = 35. public int maxFrame = 9; public int startingFrame = 0; public bool wrap = true; public bool stopAutoAnimateOnStart = true; private int currentFrame; public override void Start() { currentFrame = ClampFrame(startingFrame); if (stopAutoAnimateOnStart) SetSpritesheetPlayback(spritesheetTarget, false, 0f, true); SetSpritesheetFrame(spritesheetTarget, currentFrame); MakeInteractable(nextButton, OnNextPressed, true, hintText: "Next frame"); MakeInteractable(previousButton, OnPreviousPressed, true, hintText: "Previous frame"); MakeInteractable(resetButton, OnResetPressed, true, hintText: "Reset to 0"); } private void OnNextPressed(SVInteractionInfo info) { currentFrame++; if (currentFrame > maxFrame) currentFrame = wrap ? 0 : maxFrame; SetSpritesheetFrame(spritesheetTarget, currentFrame); } private void OnPreviousPressed(SVInteractionInfo info) { currentFrame--; if (currentFrame < 0) currentFrame = wrap ? maxFrame : 0; SetSpritesheetFrame(spritesheetTarget, currentFrame); } private void OnResetPressed(SVInteractionInfo info) { currentFrame = 0; SetSpritesheetFrame(spritesheetTarget, currentFrame); } private int ClampFrame(int frame) { if (frame < 0) return 0; if (frame > maxFrame) return maxFrame; return frame; } }