void Update() { for (int i = 0; i < emitters.Count; i++) { EmitterClass emit = emitters[i]; EmissionSettings settings = emit.settings; float travDist = (emit.lastEmissionPos - emit.emitterTransform.position).magnitude; int innerLoop = Mathf.FloorToInt(travDist); if (settings.interpolateEmission && innerLoop > 0) { for (int j = 0; j < innerLoop; j++) { Vector3 randomVelo = DarkRef.RandomVector3(settings.emitVelocity[0], settings.emitVelocity[1]); float randomSize = Random.Range(settings.emitSize.x, settings.emitSize.y); float randomLife = Random.Range(settings.emitLifetime.x, settings.emitLifetime.y); Color randomColor = Color.Lerp(settings.emitColors[0], settings.emitColors[1], Random.value); thisSystem.Emit(Vector3.Lerp(emit.lastEmissionPos, emit.emitterTransform.position, (1f / innerLoop) * j) + (Random.insideUnitSphere * settings.emissionRadius), randomVelo, randomSize, randomLife, randomColor); } } else if (travDist >= emit.settings.emissionDistance) { Vector3 randomVelo = DarkRef.RandomVector3(settings.emitVelocity[0], settings.emitVelocity[1]); float randomSize = Random.Range(settings.emitSize.x, settings.emitSize.y); float randomLife = Random.Range(settings.emitLifetime.x, settings.emitLifetime.y); Color randomColor = Color.Lerp(settings.emitColors[0], settings.emitColors[1], Random.value); thisSystem.Emit(emit.emitterTransform.position + (Random.insideUnitSphere * settings.emissionRadius), randomVelo, randomSize, randomLife, randomColor); } emit.lastEmissionPos = emit.emitterTransform.position; } }
public void AddToEmitters(EmitterClass newClass) { Initialize(); if (emitters.Contains(newClass)) { return; } newClass.lastEmissionPos = newClass.emitterTransform.position; emitters.Add(newClass); }