Aetheria/Assets/Scripts/ServerShared/ZoneConstructionData.cs

117 lines
2.6 KiB
C#
Raw Normal View History

2026-06-13 04:30:24 +01:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
using System.Collections;
using System.Collections.Generic;
using UniRx;
2026-06-21 09:37:54 +01:00
using cfloat3 = CultMath.float3;
using float2 = Unity.Mathematics.float2;
using float3 = Unity.Mathematics.float3;
2026-06-21 09:37:54 +01:00
using float4 = Unity.Mathematics.float4;
public class ZoneConstructionBlueprint
{
2026-06-14 21:30:31 +01:00
public List<BodyConstructionData> Bodies = new List<BodyConstructionData>();
public List<OrbitConstructionData> Orbits = new List<OrbitConstructionData>();
public List<EntityConstructionBlueprint> Entities = new List<EntityConstructionBlueprint>();
public float Radius = 2000;
public float Mass = 10000;
public double Time;
}
2026-06-14 21:30:31 +01:00
public abstract class BodyConstructionData : INamedEntry
{
public string BodyKey = "";
public string Name = "";
public string OrbitKey = "";
public float Mass = 0;
2026-06-15 03:35:40 +01:00
public Dictionary<string, float> Resources = new Dictionary<string, float>();
public float BodyRadiusMultiplier = 1;
public float GravityRadiusMultiplier = 1;
public float GravityDepthMultiplier = 1;
public float GravityDepthExponent = 16;
2026-06-13 04:56:50 +01:00
public string EntryName
{
get => Name;
set => Name = value;
}
}
2026-06-14 21:30:31 +01:00
public class PlanetConstructionData : BodyConstructionData
{
2026-06-13 04:56:50 +01:00
}
2026-06-14 21:30:31 +01:00
public class AsteroidBeltConstructionData : BodyConstructionData
{
public Asteroid[] Asteroids;
}
2026-06-14 21:30:31 +01:00
public class GasGiantConstructionData : BodyConstructionData
{
public float FirstOffsetDomainRotationSpeed = 1;
2026-06-13 04:56:50 +01:00
public float FirstOffsetRotationSpeed = 1;
2026-06-13 04:56:50 +01:00
public float SecondOffsetDomainRotationSpeed = 1;
2026-06-13 04:56:50 +01:00
public float SecondOffsetRotationSpeed = 1;
2026-06-13 04:56:50 +01:00
public float AlbedoRotationSpeed = 1;
public float WaveRadiusMultiplier = 1;
public float WaveDepthMultiplier = 1;
public float WaveDepthExponent = 8;
public float WaveSpeedMultiplier = 8;
2026-06-13 04:56:50 +01:00
public List<string> MaterialOverrides = new List<string>();
2026-06-13 04:56:50 +01:00
public float4[] Colors = new float4[0];
}
2026-06-14 21:30:31 +01:00
public class SunConstructionData : GasGiantConstructionData
{
2026-06-21 09:37:54 +01:00
public cfloat3 LightColor = cfloat3.zero;
2026-06-13 04:56:50 +01:00
2026-06-21 09:37:54 +01:00
public cfloat3 FogTintColor = cfloat3.zero;
public float LightRadiusMultiplier = 1;
}
public class Asteroid
{
public float Distance;
2026-06-13 04:56:50 +01:00
public float Phase;
2026-06-13 04:56:50 +01:00
public float Size;
2026-06-13 04:56:50 +01:00
public float RotationSpeed;
}
2026-06-14 21:30:31 +01:00
public class OrbitConstructionData
{
public string OrbitKey = "";
public string ParentOrbitKey = "";
public float Distance;
public float Phase;
2026-06-13 04:56:50 +01:00
2026-06-21 09:37:54 +01:00
public float2 FixedPosition = new float2(0, 0);
2026-06-13 04:56:50 +01:00
2026-06-13 08:15:17 +01:00
}