Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/ARTNGAME/Skymaster/PlaceParticleOnGroundSKYMASTER.cs
2026-03-04 10:03:45 +08:00

101 lines
2.9 KiB
C#

using UnityEngine;
namespace Artngame.SKYMASTER
{
[ExecuteInEditMode]
public class PlaceParticleOnGroundSKYMASTER : MonoBehaviour
{
public ParticleSystem p11;
public bool make_circle;
public float Circle_radius = 5f;
public int loosen_circle = 1;
public bool is_target;
public float spread;
private ParticleSystem.Particle[] ParticleList;
private Transform thisTransform;
public Vector2 Grass_Up_Low_Threshold = new Vector2(1f, 1f);
public bool relaxed = true;
public float Dist_Above_Terrain = 1f;
private void Start()
{
p11 = base.gameObject.GetComponent("ParticleSystem") as ParticleSystem;
if (p11 == null)
{
Debug.Log("Please attach the script to a particle system");
}
}
private void LateUpdate()
{
if (p11 == null)
{
p11 = base.gameObject.GetComponent("ParticleSystem") as ParticleSystem;
}
else
{
if (!(Terrain.activeTerrain != null))
{
return;
}
ParticleList = new ParticleSystem.Particle[p11.particleCount];
p11.GetParticles(ParticleList);
for (int i = 0; i < ParticleList.Length; i++)
{
if (!make_circle)
{
int num = Random.Range(1, ParticleList.Length);
if ((i == num) | !relaxed)
{
ParticleList[i].position = new Vector3(ParticleList[i].position.x, Terrain.activeTerrain.transform.position.y + Terrain.activeTerrain.SampleHeight(ParticleList[i].position) + Dist_Above_Terrain, ParticleList[i].position.z);
}
if (relaxed & (base.gameObject.tag == "Grass"))
{
float num2 = Terrain.activeTerrain.transform.position.y + Terrain.activeTerrain.SampleHeight(ParticleList[i].position) + Dist_Above_Terrain;
float num3 = num2 + Grass_Up_Low_Threshold.x;
float num4 = num2 - Grass_Up_Low_Threshold.y;
float y = ParticleList[i].position.y;
if (ParticleList[i].position.y > num3)
{
y = num3;
}
if (ParticleList[i].position.y < num4)
{
y = num4;
}
ParticleList[i].position = new Vector3(ParticleList[i].position.x, y, ParticleList[i].position.z);
}
}
int num5 = Random.Range(1, loosen_circle);
if (make_circle & ((num5 == 1) | (is_target & (i < p11.particleCount / 1))))
{
float x = base.transform.position.x + Mathf.Sin(i) * (Circle_radius + (float)i * spread * 0.01f);
float z = base.transform.position.z + Mathf.Cos(i) * (Circle_radius + (float)i * spread * 0.01f);
float num6 = ParticleList[i].position.y;
if (!is_target)
{
num6 = Terrain.activeTerrain.SampleHeight(new Vector3(x, 0f, z)) + Dist_Above_Terrain + Terrain.activeTerrain.transform.position.y;
}
if (is_target)
{
num6 = Terrain.activeTerrain.SampleHeight(new Vector3(x, 0f, z)) + Dist_Above_Terrain + Terrain.activeTerrain.transform.position.y;
}
ParticleList[i].position = new Vector3(x, num6 + 0f, z);
}
}
p11.SetParticles(ParticleList, p11.particleCount);
}
}
}
}