Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SnowSplashParticleSystem.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public class SnowSplashParticleSystem : ParticleSystem<SnowSplashParticleSystem.Particle> {
6 public class Particle : Game.Particle {
7 public float TimeToLive;
8
10
11 public float FadeFactor;
12 }
13
14 public Random m_random = new();
15
16 public bool m_isActive;
17
18 public SnowSplashParticleSystem() : base(100) {
19 Texture = ContentManager.Get<Texture2D>("Textures/SnowParticle");
21 }
22
23 public void AddSplash(int value, Vector3 position, Vector2 size, Color color, int textureSlot) {
24 for (int i = 0; i < Particles.Length; i++) {
25 Particle particle = Particles[i];
26 if (!particle.IsActive) {
28 particle.IsActive = true;
29 particle.Position = position;
30 particle.BaseColor = color;
31 particle.BillboardingMode = ParticleBillboardingMode.Horizontal;
32 particle.Size = size;
33 particle.TextureSlot = textureSlot;
34 if (block is WaterBlock) {
35 ((WaterBlock)block).GetLevelHeight(FluidBlock.GetLevel(Terrain.ExtractData(value)));
36 particle.TimeToLive = m_random.Float(0.2f, 0.3f);
37 particle.FadeFactor = 1f;
38 }
39 else if (block.IsCollidable_(value)
40 || block is SnowBlock) {
41 particle.TimeToLive = m_random.Float(0.8f, 1.2f);
42 particle.FadeFactor = 1f;
43 }
44 break;
45 }
46 }
47 m_isActive = true;
48 }
49
50 public override bool Simulate(float dt) {
51 if (m_isActive) {
52 dt = Math.Clamp(dt, 0f, 0.1f);
53 bool flag = false;
54 for (int i = 0; i < Particles.Length; i++) {
55 Particle particle = Particles[i];
56 if (particle.IsActive) {
57 particle.Color = particle.BaseColor * MathUtils.Saturate(particle.FadeFactor * particle.TimeToLive);
58 particle.TimeToLive -= dt;
59 if (particle.TimeToLive <= 0f) {
60 particle.IsActive = false;
61 }
62 else {
63 flag = true;
64 }
65 }
66 }
67 if (!flag) {
68 m_isActive = false;
69 }
70 }
71 return false;
72 }
73 }
74}
static float Saturate(float x)
virtual bool IsCollidable_(int value)
static object Get(Type type, string name)
static int GetLevel(int data)
ParticleSystem(int particlesCount)
void AddSplash(int value, Vector3 position, Vector2 size, Color color, int textureSlot)
static int ExtractContents(int value)
static int ExtractData(int value)