cirnogodot/Scripts/Activables/ForceField.cs

53 lines
1.5 KiB
C#
Raw Normal View History

2025-02-23 01:24:29 +01:00
using Godot;
using System;
using Cirno.Scripts;
using System.Threading.Tasks;
public partial class ForceField : Door
{
[Export]
2025-02-24 14:23:59 +01:00
public Material TurnOffMaterial { get; private set; }
2025-03-03 21:15:20 +01:00
2025-02-23 01:24:29 +01:00
[Export]
2025-02-24 14:23:59 +01:00
public Material ActiveMaterial { get; private set; }
2025-03-01 23:46:25 +01:00
2025-02-23 01:24:29 +01:00
// Disable
public override void Open()
{
base.Open();
2025-02-24 14:23:59 +01:00
if (TurnOffMaterial is null) return;
2025-02-23 01:24:29 +01:00
2025-03-03 17:55:53 +01:00
//_animatedSprite.Material = TurnOffMaterial;
2025-02-24 14:23:59 +01:00
//((ShaderMaterial)_animatedSprite.Material).Shader = TurnOffShader;
2025-02-23 01:24:29 +01:00
_ = AnimateShutdownAsync();
}
2025-03-03 21:15:20 +01:00
protected async Task AnimateShutdownAsync()
2025-02-23 01:24:29 +01:00
{
Tween tween = GetTree().CreateTween();
2025-03-03 21:15:20 +01:00
tween.TweenMethod(Callable.From((float value) => SetShaderScanlineDensity(value)), 0f, 50f, 0.5);
tween.Parallel().TweenMethod(Callable.From((float value) => SetShaderTeleportProgress(value)), 0f, 1f, 0.5);
2025-02-23 01:24:29 +01:00
await ToSignal(tween, "finished");
}
// Enable
public override void Close()
{
base.Close();
2025-02-24 14:23:59 +01:00
if (ActiveMaterial is null) return;
2025-03-03 17:55:53 +01:00
//_animatedSprite.Material = ActiveMaterial;
2025-02-24 14:23:59 +01:00
//((ShaderMaterial)_animatedSprite.Material).Shader = ActiveShader;
2025-02-23 01:24:29 +01:00
}
private void SetShaderTeleportProgress(float value)
2025-03-03 21:15:20 +01:00
{
//((ShaderMaterial)_animatedSprite.Material).SetShaderParameter("teleport_progress", value);
}
private void SetShaderScanlineDensity(float value)
{
//((ShaderMaterial)_animatedSprite.Material).SetShaderParameter("scanline_density", value);
}
2025-02-23 01:24:29 +01:00
}