internal static void GetSquadPsystem() { ParticleSystem pSystem; foreach (string psName in stockNames) { Log.Normal("searching for: " + psName); pSystem = Resources.FindObjectsOfTypeAll <ParticleSystem>().Where(ps => ps.name == psName).FirstOrDefault(); if (pSystem != null) { Log.Normal("found: " + psName); KKEmitter emitter = new KKEmitter { pSystems = new List <ParticleSystem> { pSystem } }; particleSystems.Add(psName, emitter); } } }
internal static void CustomSmoke() { foreach (UrlDir.UrlConfig smokeConfig in GameDatabase.Instance.GetConfigs("KKLaunchPadSmoke")) { ConfigNode smokeNode = smokeConfig.config; string path = Path.GetDirectoryName(Path.GetDirectoryName(smokeConfig.url)).Replace("\\", "/"); if (!smokeNode.HasValue("Name")) { continue; } string name = smokeNode.GetValue("Name"); if (particleSystems.ContainsKey(name)) { continue; } float intensity = 1; if (smokeNode.HasValue("Intensity")) { intensity = float.Parse(smokeNode.GetValue("Intensity")); } List <ParticleSystem> psEmitters = new List <ParticleSystem>(); List <KSPParticleEmitter> kspEmitters = new List <KSPParticleEmitter>(); foreach (string meshname in smokeNode.GetValues("EmitterPath")) { GameObject modelObject = GameDatabase.Instance.GetModelPrefab(path + "/" + meshname); if (modelObject == null) { modelObject = GameDatabase.Instance.GetModelPrefab(meshname); } if (modelObject == null) { Log.UserError("could not load smoke asset: " + name + " : " + meshname); Log.UserError("last error from file: " + smokeConfig.url); continue; } ParticleSystem ps = null; KSPParticleEmitter kspEmitter = modelObject.GetComponent <KSPParticleEmitter>(); if (kspEmitter != null) { kspEmitters.Add(kspEmitter); } else { ps = modelObject.GetComponent <ParticleSystem>(); } if (ps == null) { continue; } var main = ps.main; main.loop = true; main.playOnAwake = false; if (kspEmitter == null) { psEmitters.Add(ps); } } KKEmitter kKEmitter = new KKEmitter { kspEmitters = kspEmitters, pSystems = psEmitters }; particleSystems.Add(name, kKEmitter); } }