83 lines
2.7 KiB
ActionScript 3
83 lines
2.7 KiB
ActionScript 3
// Demo scene script with input-driven behavior.
|
|
class SceneScript {
|
|
uint sceneRoot = 0;
|
|
uint camera = 0;
|
|
uint light = 0;
|
|
uint cube = 0;
|
|
float time = 0.0f;
|
|
bool highlight = false;
|
|
void Init() {
|
|
uint kvStore = KV::Open("demo_scene");
|
|
Log(LOG_INFO, "Demo scene script init");
|
|
int var;
|
|
if (Globals::Get("demo_var", var)) {
|
|
Log(LOG_INFO, "Loaded global variable 'demo_var' with value: " + var);
|
|
} else {
|
|
Log(LOG_INFO, "No global variable 'demo_var' found, starting fresh.");
|
|
var = 42;
|
|
}
|
|
Globals::Set("demo_var", var + 1);
|
|
int value;
|
|
string strValue;
|
|
if (KV::Get(kvStore, "int", value)) {
|
|
Log(LOG_INFO, "Loaded int value from KV store: " + value);
|
|
} else {
|
|
Log(LOG_INFO, "No int value found in KV store, starting fresh.");
|
|
value = 0;
|
|
}
|
|
|
|
if (KV::Get(kvStore, "str", strValue)) {
|
|
Log(LOG_INFO, "Loaded string value from KV store: " + strValue);
|
|
} else {
|
|
Log(LOG_INFO, "No string value found in KV store, starting fresh.");
|
|
strValue = "Hello, KV!";
|
|
}
|
|
|
|
cube = ECS::CreateEntity();
|
|
ECS::AddTransform(cube, 0.0f, 2.5f, 0.0f);
|
|
uint modelId = Asset::GetModelId("demo2_cube");
|
|
if (modelId == 0) {
|
|
modelId = Asset::LoadCube("demo2_cube", 1.0f, 1.0f, 1.0f);
|
|
}
|
|
ECS::AddModelRenderer(cube, int(modelId), 0xFFAA00FF, 0.0f);
|
|
ECS::AddTag(cube, "InputCube");
|
|
|
|
KV::Put(kvStore, "int", value+1);
|
|
KV::Put(kvStore, "str", strValue + " (updated " + value + ")");
|
|
var = 0;
|
|
if (Globals::Get("demo_var", var)) {
|
|
Log(LOG_INFO, "Updated global variable 'demo_var' to value: " + var);
|
|
}
|
|
}
|
|
|
|
void Shutdown() {
|
|
Log(LOG_INFO, "Demo scene script shutdown");
|
|
}
|
|
|
|
void Update(float dt) {
|
|
time += dt;
|
|
|
|
if (ECS::IsValid(cube) && ECS::HasTransform(cube)) {
|
|
ECS::SetRotationEuler(cube, 0.0f, time, time * 0.5f);
|
|
}
|
|
|
|
if (IsActionPressed("jump")) {
|
|
highlight = !highlight;
|
|
if (highlight) {
|
|
ECS::SetModelRendererColor(cube, 0x00FF88FF);
|
|
ECS::SetModelRendererOutline(cube, 2.0f);
|
|
Toast::Info("Highlight on");
|
|
} else {
|
|
ECS::SetModelRendererColor(cube, 0xFFAA00FF);
|
|
ECS::SetModelRendererOutline(cube, 0.0f);
|
|
Toast::Info("Highlight off");
|
|
}
|
|
}
|
|
|
|
if (IsActionPressed("attack")) {
|
|
ECS::SetLightDirection(light, -0.5f, 0.7f, -0.3f);
|
|
Toast::Success("Light toggled");
|
|
}
|
|
}
|
|
}
|