Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SoundParticleSystem.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
5 public class SoundParticleSystem : ParticleSystem<SoundParticleSystem.Particle> {
6 public class Particle : Game.Particle {
7 public float TimeToLive;
8
10
12 }
13
14 public Random m_random = new();
15
17
19
20 // ReSharper disable UnusedParameter.Local
21 public SoundParticleSystem(SubsystemTerrain terrain, Vector3 position, Vector3 direction)
22 // ReSharper restore UnusedParameter.Local
23 : base(15) {
24 m_position = position;
25 m_direction = direction;
26 Texture = ContentManager.Get<Texture2D>("Textures/SoundParticle");
28 }
29
30 public void AddNote(Color color) {
31 int num = 0;
32 Particle particle;
33 while (true) {
34 if (num < Particles.Length) {
35 particle = Particles[num];
36 if (!Particles[num].IsActive) {
37 break;
38 }
39 num++;
40 continue;
41 }
42 return;
43 }
44 particle.IsActive = true;
45 particle.Position = m_position;
46 particle.Color = Color.White;
47 particle.Size = new Vector2(0.1f);
48 particle.TimeToLive = m_random.Float(1f, 1.5f);
49 particle.Velocity = 3f * (m_direction + m_random.Vector3(0.5f));
50 particle.BaseColor = color;
51 particle.TextureSlot = m_random.Int(0, TextureSlotsCount * TextureSlotsCount - 1);
52 particle.BillboardingMode = ParticleBillboardingMode.Vertical;
53 }
54
55 public override bool Simulate(float dt) {
56 dt = Math.Clamp(dt, 0f, 0.1f);
57 float num = MathF.Pow(0.02f, dt);
58 bool flag = false;
59 for (int i = 0; i < Particles.Length; i++) {
60 Particle particle = Particles[i];
61 if (particle.IsActive) {
62 flag = true;
63 particle.TimeToLive -= dt;
64 if (particle.TimeToLive > 0f) {
65 particle.Velocity += new Vector3(0f, 5f, 0f) * dt;
66 particle.Velocity *= num;
67 particle.Position += particle.Velocity * dt;
68 particle.Color = particle.BaseColor * MathUtils.Saturate(2f * particle.TimeToLive);
69 }
70 else {
71 particle.IsActive = false;
72 }
73 }
74 }
75 return !flag;
76 }
77 }
78}
Engine.Vector3 Vector3
static float Saturate(float x)
static object Get(Type type, string name)
ParticleSystem(int particlesCount)
SoundParticleSystem(SubsystemTerrain terrain, Vector3 position, Vector3 direction)
override bool Simulate(float dt)
static Color White