Пример #1
0
        internal static GameObject CreateSporeOrbEffect()
        {
            GameObject obj  = Resources.Load <GameObject>("Prefabs/NetworkedObjects/CaptainSupplyDrops/CaptainHealingWard").transform.Find("Indicator").gameObject.ClonePrefab("SporeOrbEffect", false);
            var        mult = ConfigModule.sporeParticleMultiplier;


            var indSphere = obj.transform.Find("IndicatorSphere");

            indSphere.gameObject.SetActive(ConfigModule.showSporeRangeIndicator);
            var renderer     = indSphere.GetComponent <Renderer>();
            var indSphereMat = new IntersectionCloudMaterial(renderer.material.Instantiate());

            renderer.material                 = indSphereMat.material;
            indSphereMat.softFactor           = 3.3f;
            indSphereMat.softPower            = 1f;
            indSphereMat.brightnessBoost      = 1.15f;
            indSphereMat.rimPower             = 10f;
            indSphereMat.rimStrength          = 2f;
            indSphereMat.alphaBoost           = 2f;
            indSphereMat.intersectionStrength = 2f;
            indSphereMat.cull                 = MaterialBase.CullMode.Off;
            indSphereMat.externalAlpha        = 1f;
            indSphereMat.sourceBlend          = UnityEngine.Rendering.BlendMode.SrcColor;
            indSphereMat.destinationBlend     = UnityEngine.Rendering.BlendMode.OneMinusSrcColor;
            indSphereMat.cutoffScrollSpeed    = new(0f, 0f, 5f, 3f);



            var indRing = obj.transform.Find("IndicatorRing");

            indRing.gameObject.Destroy();



            var efc = obj.AddComponent <EffectComponent>();

            efc.applyScale  = false;
            efc.effectIndex = EffectIndex.Invalid;
            efc.positionAtReferencedTransform = false;
            efc.parentToReferencedTransform   = false;
            efc.disregardZScale = false;
            efc.soundName       = "";

            var vfxAtr = obj.AddComponent <VFXAttributes>();

            vfxAtr.vfxPriority  = VFXAttributes.VFXPriority.Always;
            vfxAtr.vfxIntensity = VFXAttributes.VFXIntensity.Low;

            var mgr = obj.AddComponent <SporeEffectManager>();

            mgr.indicatorMaterial = indSphereMat;

            var flashes    = obj.transform.Find("Flashes");
            var flashPs    = flashes.GetComponent <ParticleSystem>();
            var flashPsr   = flashes.GetComponent <ParticleSystemRenderer>();
            var flashShape = flashPs.shape;

            flashShape.shapeType       = ParticleSystemShapeType.Sphere;
            flashShape.radiusThickness = rth;
            var flashMain = flashPs.main;

            flashMain.maxParticles  = 10000;
            flashMain.startLifetime = 0.5f;
            var flashEmis = flashPs.emission;

            flashEmis.rateOverTime = 0.6f * mult;


            var symbols  = obj.transform.Find("HealingSymbols");
            var symPs    = symbols.GetComponent <ParticleSystem>();
            var symPsr   = symbols.GetComponent <ParticleSystemRenderer>();
            var symShape = symPs.shape;

            symShape.shapeType       = ParticleSystemShapeType.Sphere;
            symShape.radiusThickness = rth;
            var symMain = symPs.main;

            symMain.maxParticles  = 10000;
            symMain.startLifetime = 1f;
            var symEmis = symPs.emission;

            symEmis.rateOverTime = 0.6f * mult;

            var spores   = UnityEngine.Object.Instantiate(symbols.gameObject, symbols.parent);
            var sporePs  = spores.GetComponent <ParticleSystem>();
            var sporePsr = spores.GetComponent <ParticleSystemRenderer>();

            sporePsr.material      = sporePsr.trailMaterial;
            sporePsr.trailMaterial = null;
            var sporeMain = sporePs.main;

            sporeMain.startLifetime = 2f;
            var sporeEm = sporePs.emission;

            sporeEm.rateOverTime = 3f * mult;

            var vec = new Vector3(1f - rth, 1f - rth, 1f - rth);


            var flashFull  = UnityEngine.Object.Instantiate(flashes.gameObject, flashes.parent);
            var flashFps   = flashFull.GetComponent <ParticleSystem>();
            var flashFEmis = flashFps.emission;

            flashFEmis.rateOverTime = 0.15f * mult;
            var flashFShape = flashFps.shape;

            flashFShape.scale           = vec;
            flashFShape.radiusThickness = 1f;

            var symFull  = UnityEngine.Object.Instantiate(symbols.gameObject, symbols.parent);
            var symFps   = symFull.GetComponent <ParticleSystem>();
            var symFEmis = symFps.emission;

            symFEmis.rateOverTime = 0.15f * mult;
            var symFShape = symFps.shape;

            symFShape.scale           = vec;
            symFShape.radiusThickness = 1f;

            var spoFull  = UnityEngine.Object.Instantiate(spores.gameObject, spores.transform.parent);
            var spoFps   = spoFull.GetComponent <ParticleSystem>();
            var spoFEmis = spoFps.emission;

            spoFEmis.rateOverTime = 0.25f * mult;
            var spoFShape = spoFps.shape;

            spoFShape.scale           = vec;
            spoFShape.radiusThickness = 1f;



            foreach (var v in obj.GetComponentsInChildren <IRuntimePrefabComponent>())
            {
                v.InitializePrefab();
            }
            return(obj);
        }
Пример #2
0
        private void FixedUpdate()
        {
            if (this.armorMat == null || this.armorMat.material != this.skinController.activeArmorMaterial)
            {
                this.armorMat     = new StandardMaterial(this.skinController.activeArmorMaterial);
                this.armorMatMenu = new Menu <StandardMaterial>(this.armorMat);
            }

            if (this.flameMat == null || this.flameMat.material != this.skinController.activeFlameMaterial)
            {
                this.flameMat     = new CloudMaterial(this.skinController.activeFlameMaterial);
                this.flameMatMenu = new Menu <CloudMaterial>(this.flameMat);

                //this.flameMat = new OpaqueCloudMaterial( this.skinController.activeFlameMaterial );
                //this.flameMatMenu = new Menu<OpaqueCloudMaterial>( this.flameMat );
            }

            if (this.tracerMat == null || this.tracerMat.material != this.skinController.activeTracerMaterial)
            {
                this.tracerMat     = new CloudMaterial(this.skinController.activeTracerMaterial);
                this.tracerMatMenu = new Menu <CloudMaterial>(this.tracerMat);
            }

            if (this.pillarMat == null || this.pillarMat.material != this.skinController.activeFlamePillarMaterial)
            {
                this.pillarMat     = new CloudMaterial(this.skinController.activeFlamePillarMaterial);
                this.pillarMatMenu = new Menu <CloudMaterial>(this.pillarMat);
            }

            if (this.indicatorMat == null || this.indicatorMat.material != this.skinController.activeAreaIndicatorMaterial)
            {
                this.indicatorMat     = new IntersectionCloudMaterial(this.skinController.activeAreaIndicatorMaterial);
                this.indicatorMatMenu = new Menu <IntersectionCloudMaterial>(this.indicatorMat);
            }

            if (this.indicatorMat2 == null || this.indicatorMat2.material != this.skinController.activeAreaIndicatorMaterial2)
            {
                this.indicatorMat2     = new IntersectionCloudMaterial(this.skinController.activeAreaIndicatorMaterial2);
                this.indicatorMatMenu2 = new Menu <IntersectionCloudMaterial>(this.indicatorMat2);
            }

            if (this.explosionMat == null || this.explosionMat.material != this.skinController.activeExplosionMaterial)
            {
                this.explosionMat     = new CloudMaterial(this.skinController.activeExplosionMaterial);
                this.explosionMatMenu = new Menu <CloudMaterial>(this.explosionMat);
            }

            if (this.beamMat == null || this.beamMat.material != this.skinController.activeBeamMaterial)
            {
                this.beamMat     = new CloudMaterial(this.skinController.activeBeamMaterial);
                this.beamMatMenu = new Menu <CloudMaterial>(this.beamMat);
            }

            if (this.distortionLMat == null || this.distortionLMat.material != this.skinController.activeDistortionLightMaterial)
            {
                this.distortionLMat     = new DistortionMaterial(this.skinController.activeDistortionLightMaterial);
                this.distortionLMatMenu = new Menu <DistortionMaterial>(this.distortionLMat);
            }

            if (this.distortionMat == null || this.distortionMat.material != this.skinController.activeDistortionMaterial)
            {
                this.distortionMat     = new DistortionMaterial(this.skinController.activeDistortionMaterial);
                this.distortionMatMenu = new Menu <DistortionMaterial>(this.distortionMat);
            }

            if (this.distortionHMat == null || this.distortionHMat.material != this.skinController.activeDistortionHeavyMaterial)
            {
                this.distortionHMat     = new DistortionMaterial(this.skinController.activeDistortionHeavyMaterial);
                this.distortionHMatMenu = new Menu <DistortionMaterial>(this.distortionHMat);
            }

            if (this.arcaneCircleMat == null || this.arcaneCircleMat.material != this.skinController.activeArcaneCircleMaterial)
            {
                this.arcaneCircleMat     = new CloudMaterial(this.skinController.activeArcaneCircleMaterial);
                this.arcaneCircleMatMenu = new Menu <CloudMaterial>(this.arcaneCircleMat);
            }

            if (this.flameTornadoMat == null || this.flameTornadoMat.material != this.skinController.activeFlameTornadoMaterial)
            {
                this.flameTornadoMat     = new CloudMaterial(this.skinController.activeFlameTornadoMaterial);
                this.flameTornadoMatMenu = new Menu <CloudMaterial>(this.flameTornadoMat);
            }

            if (this.bossIndicatorMat == null || this.bossIndicatorMat.material != this.skinController.activeBossAreaIndicatorMaterial)
            {
                this.bossIndicatorMat     = new IntersectionCloudMaterial(this.skinController.activeBossAreaIndicatorMaterial);
                this.bossIndicatorMatMenu = new Menu <IntersectionCloudMaterial>(this.bossIndicatorMat);
            }

            if (this.bossExplosionIndMat == null || this.bossExplosionIndMat.material != this.skinController.activeBossAreaExplosionMaterial)
            {
                this.bossExplosionIndMat     = new CloudMaterial(this.skinController.activeBossAreaExplosionMaterial);
                this.bossExplosionIndMatMenu = new Menu <CloudMaterial>(this.bossExplosionIndMat);
            }

            if (this.burnMat == null || this.burnMat.material != this.skinController.activeBurnMaterial)
            {
                this.burnMat     = new CloudMaterial(this.skinController.activeBurnMaterial);
                this.burnMatMenu = new Menu <CloudMaterial>(this.burnMat);
            }
        }