Files
2026-05-29 18:21:53 +03:00

89 lines
2.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class JupiterDeath : MonoBehaviour
{
[Header("Òåêñòóðè òðîïîñôåðè")]
public Texture2D tropo100;
public Texture2D tropo70;
public Texture2D tropo50;
public Texture2D tropo30;
public Texture2D tropo0;
public Texture2D deadTexture;
[Range(0f, 1f)]
public float troposphereLevel = 1f;
public float stratosphereLevel = 1f;
public float thermosphereLevel = 1f;
public float exosphereLevel = 1f;
private Renderer planetRenderer;
private Material mat;
private float prevLevel = -1f;
private Texture2D originalTexture;
void Start()
{
planetRenderer = GetComponent<Renderer>();
if (planetRenderer == null)
planetRenderer = GetComponentInChildren<Renderer>();
if (planetRenderer != null)
{
mat = planetRenderer.material;
originalTexture = (Texture2D)mat.GetTexture("_BaseMap");
}
}
public void ResetTexture()
{
troposphereLevel = 1f;
stratosphereLevel = 1f;
thermosphereLevel = 1f;
exosphereLevel = 1f;
prevLevel = -1f;
if (mat != null && originalTexture != null)
{
mat.SetTexture("_BaseMap", originalTexture);
mat.SetTexture("_BaseMap2", originalTexture);
}
}
void Update()
{
if (mat == null) return;
UpdateTexture();
}
void UpdateTexture()
{
float worst = Mathf.Min(troposphereLevel, stratosphereLevel, thermosphereLevel, exosphereLevel);
if (worst >= 1f)
{
if (mat != null && originalTexture != null)
{
mat.SetTexture("_BaseMap", originalTexture);
mat.SetTexture("_BaseMap2", originalTexture);
}
return;
}
Texture2D tex = worst <= 0f ? deadTexture : GetTexture(worst);
if (tex != null)
{
mat.SetTexture("_BaseMap", tex);
mat.SetTexture("_BaseMap2", tex);
}
}
Texture2D GetTexture(float level)
{
if (level >= 0.7f) return tropo100;
else if (level >= 0.5f) return tropo70;
else if (level >= 0.3f) return tropo50;
else if (level > 0f) return tropo30;
else return tropo0;
}
}