예제 #1
0
        /// <summary>Registers the item into it's registry</summary>
        public override IdentifiableItem Register()
        {
            base.Register();

            LookupRegistry.RegisterLiquid(ScriptableObjectsUtils.CreateLiquidDefinition(ID, InFx, VacFailFx));

            return(this);
        }
예제 #2
0
        protected virtual void BuildLiquidMaterialsAndRegister()
        {
            if (color != Color.clear)
            {
                Material  mat = new Material(BaseObjects.originMaterial["Depth Water Ball"]);
                Texture2D tex = new Texture2D(1, 1);
                tex.SetPixel(0, 0, color);

                mat.SetTexture("_ColorRamp", tex);

                materials = mat.Group();

                GameObject inFX = EffectObjects.fxWaterAcquire.CreatePrefabCopy();
                inFX.name = inFX.name.Replace("(Clone)", "." + mainObject.Name);
                ParticleSystem part = inFX.GetComponent <ParticleSystem>();
                if (part != null)
                {
                    ParticleSystem.MainModule main = part.main;
                    main.startColor = color;
                }

                ParticleSystemRenderer render = inFX.FindChild("Water Glops").GetComponent <ParticleSystemRenderer>();
                if (render != null)
                {
                    render.sharedMaterials = materials;
                }

                foreach (ParticleSystem childPart in inFX.GetComponentsInChildren <ParticleSystem>())
                {
                    ParticleSystem.MainModule main = childPart.main;
                    main.startColor = color;
                }

                GameObject outFX = EffectObjects.fxVacWaterOut.CreatePrefabCopy();
                outFX.name = outFX.name.Replace("(Clone)", "." + mainObject.Name);
                part       = outFX.GetComponent <ParticleSystem>();
                if (part != null)
                {
                    ParticleSystem.MainModule main = part.main;
                    main.startColor = color;
                }

                foreach (ParticleSystem childPart in outFX.GetComponentsInChildren <ParticleSystem>())
                {
                    ParticleSystem.MainModule main = childPart.main;
                    main.startColor = color;
                }

                GameObject vacFailFX = EffectObjects.fxWaterVacFail.CreatePrefabCopy();
                vacFailFX.name = vacFailFX.name.Replace("(Clone)", "." + mainObject.Name);
                part           = vacFailFX.GetComponent <ParticleSystem>();
                if (part != null)
                {
                    ParticleSystem.MainModule main = part.main;
                    main.startColor = color;
                }

                foreach (ParticleSystem childPart in vacFailFX.GetComponentsInChildren <ParticleSystem>())
                {
                    ParticleSystem.MainModule main = childPart.main;
                    main.startColor = color;
                }

                destroyFX      = EffectObjects.fxWaterSplat.CreatePrefabCopy();
                destroyFX.name = destroyFX.name.Replace("(Clone)", "." + mainObject.Name);
                part           = destroyFX.GetComponent <ParticleSystem>();
                if (part != null)
                {
                    ParticleSystem.MainModule main = part.main;
                    main.startColor = color;
                }

                render = destroyFX.FindChild("Water Glops").GetComponent <ParticleSystemRenderer>();
                if (render != null)
                {
                    render.sharedMaterials = materials;
                }

                foreach (ParticleSystem childPart in destroyFX.GetComponentsInChildren <ParticleSystem>())
                {
                    ParticleSystem.MainModule main = childPart.main;
                    main.startColor = color;
                }

                LookupRegistry.RegisterLiquid(new LookupDirector.Liquid()
                {
                    id        = ID,
                    inFX      = inFX,
                    outFX     = outFX,
                    vacFailFX = vacFailFX
                });
            }
            else
            {
                LookupRegistry.RegisterLiquid(new LookupDirector.Liquid()
                {
                    id        = ID,
                    inFX      = EffectObjects.fxWaterAcquire,
                    outFX     = EffectObjects.fxVacWaterOut,
                    vacFailFX = EffectObjects.fxWaterVacFail
                });
            }
        }