nordic2025/scripts/Mouth.cs
2025-04-05 17:51:24 +02:00

58 lines
1.3 KiB
C#

using Godot;
public partial class Mouth : XRCamera3D
{
[Export]
public float MaxEatWeight = 1.0f;
[Export]
public float EatGrowthFactor = 0.1f;
[Export]
public XRHand RightHand;
[Export]
public XRHand LeftHand;
public override void _Ready()
{
UpdateWeights();
}
public void EnterMouth(Node node)
{
try
{
RigidBody3D body = (RigidBody3D)node;
if (body.Mass > MaxEatWeight)
return;
UpdateWeights(body.Mass);
}
catch (System.InvalidCastException)
{
// dont give a shit
}
}
void UpdateWeights(float mass = 0f)
{
GD.Print("Ate ", mass, "kg");
MaxEatWeight += (mass / MaxEatWeight) * EatGrowthFactor;
float WorldScale = MaxEatWeight;
// ((XROrigin3D)GetParent()).WorldScale = WorldScale;
((Node3D)GetParent()).GlobalScale(new Vector3(WorldScale, WorldScale, WorldScale));
RightHand.Strength = MaxEatWeight;
LeftHand.Strength = MaxEatWeight;
GD.Print("New MaxEatWeight: ", MaxEatWeight);
GD.Print("New WorldScale: ", WorldScale);
Near = 0.05f * MaxEatWeight;
Far = 4000f * MaxEatWeight;
GD.Print("New Near: ", Near);
GD.Print("New Far: ", Far);
}
}