예제 #1
0
        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);
                }
            }
        }
예제 #2
0
        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);
            }
        }