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); }
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); } }