using System; using System.Collections.Generic; using Unity.Mathematics; using UnityEngine; [CreateAssetMenu(fileName = "InfiniteBuildingConf", menuName = "ScriptableObjects/InfiniteBuildingConf", order = 1)] public class InfiniteBuildingConf : ScriptableObject { [Serializable] public class HeightConfigData { public int LvlThresh; public float craneHeightRise; public float craneHeightDescend; public float craneCycleTime; public float cameraDepth = 20f; } [Header("General Debug Settings")] public bool FreezeCrane = false; public int NextBlockToSpawn = -1; [Header("Block Generation Settings")] public int blockDestroyDelay = 4000;//in miliseconds, 1/1000 second public Vector2 craneAnchorOffset = new(0.2f, -0.5f); public float blockAnchorCoefficient = 0.8f; public Vector3 blockSpawnOffset = new(0, -3f, 0); public float blockDriftOffset = 2f; public float blockDestroyThreshAngle = 10f;//in deg public bool maxDistanceOnly = true; public bool hasAutoDistance = true; public float blockRestingOffset = -5f; public float blockDestroyOffset = -8f; public float deathWallOffset = -3; public float snapThresh = 0.5f; public float blockDepth = 20f; public float blockFreezeVelocity = 0.1f; public float blockFreezeAngularVelocity = 0.1f; public float blockFreezeAcc = 1f; public float blockFreezeAngularAcc = 1f; [Header("Crane Settings")] //public float craneRiseTime = 0.5f; //public List heightSpecificConfig = new List(); public float craneCycleHalfDistance = 5f; public float craneLineThickness = 0.1f; [Header("Camera Settings")] public float skyLoopTriggerHeight = 1200f; public float skyLoopOffsetDelta = 0.2f; [Header("FX Settings")] public Vector3 fxCollapse = -8f * Vector3.up; public Vector3 fxCloud = -5f * Vector3.up; public float fxCloudAppearHeight = 0f; public Vector3 fxFall = Vector3.zero; public Vector3 fxPerfect = Vector3.zero; [Header("Furniture Animation")] public float3 animationDurationRange = new float3(0.33f, 0.66f, 0.2f); public Color glassColor = new Color(0.7735f, 0.4370f, 0.2298f, 1); }