47 for (
int i = 0; i <
Particles.Length; i++) {
51 particle.IsActive =
true;
52 particle.EndTime = 12f;
53 particle.Position =
new Vector3(point)
57 particle.BaseColor = color * color2;
62 particle.Phase =
m_random.Float(0f, (
float)Math.PI * 2f);
63 particle.PhaseSpeed = 2f * particle.Speed *
m_random.Float(0.75f, 1.25f);
64 particle.Angle =
m_random.Float(0f, (
float)Math.PI * 2f);
74 for (
int i = 0; i <
Particles.Length; i++) {
80 particle.Phase += particle.PhaseSpeed * dt;
81 particle.Rotation = -0.5f * MathF.Sin(particle.
Phase) + (float)Math.PI / 2f;
82 particle.Angle += particle.AngleSpeed * dt;
86 particle.Right = particle.Size.X *
new Vector3(v.
X * vector2.
X, v.
Y, v.
X * vector2.
Y);
87 particle.Up = particle.Size.Y *
new Vector3(vector.
X * vector2.
X, vector.
Y, vector.
X * vector2.
Y);
89 particle.Position += 0.8f * particle.Speed * num * dt *
new Vector3(0f, -1f, 0f);
90 particle.Position += 0.4f * particle.Speed * num * dt * MathF.Cos(particle.
Phase) *
new Vector3(vector2.
X, 0f, vector2.
Y);
91 particle.Position += 0.3f * particle.Speed * num * dt * MathF.Cos(2f * particle.
Phase) *
new Vector3(0f, -1f, 0f);
97 if (chunkAtCell !=
null
106 particle.Color *= num5;
112 particle.EndTime = particle.
Time;
120 && num8 < num7 - 0f) {
122 particle.Position = ray.
Sample(num8.Value) +
new Vector3(num2, num3 + 0.03f, num4);
123 particle.EndTime = particle.Time + 2f;
127 .CreateFallenLeaves(
m_point,
true);
134 particle.IsActive =
false;
static float Saturate(float x)
static float Lerp(float x1, float x2, float f)
virtual ? float Raycast(Ray3 ray, SubsystemTerrain subsystemTerrain, int value, bool useInteractionBoxes, out int nearestBoxIndex, out BoundingBox nearestBox)
static object Get(Type type, string name)
Color GetLeavesBlockColor(int value, Terrain terrain, int x, int y, int z)
override bool Simulate(float dt)
LeavesParticleSystem(SubsystemTerrain subsystemTerrain, Point3 point, int leavesCount, bool fadeIn, bool createFallenLeaves, int value)
SubsystemTerrain m_subsystemTerrain
bool m_createFallenLeaves
static readonly float[] LightIntensityByLightValue
ParticleBillboardingMode BillboardingMode
ParticleSystem(int particlesCount)
static int ExtractContents(int value)
virtual int GetCellLight(int x, int y, int z)
virtual int GetCellValue(int x, int y, int z)
static int ToCell(float x)
virtual TerrainChunk GetChunkAtCell(int x, int z)
static Color Lerp(Color c1, Color c2, float f)
static Color MultiplyColorOnlyNotSaturated(Color c, float s)
Vector3 Sample(float distance)
static Vector2 Rotate(Vector2 v, float angle)
static readonly Vector2 UnitY
static readonly Vector2 UnitX
static Vector2 Perpendicular(Vector2 v)
static readonly Vector3 UnitY