コード例 #1
0
                public static void AddCometTail(PSystemBody body, Tail tail)
                {
                    Transform scaledVersion = body.scaledVersion.transform;

                    GameObject obj = new GameObject("CometTail");

                    obj.layer            = GameLayers.ScaledSpace;
                    obj.transform.parent = Kopernicus.Utility.Deactivator;

                    MeshRenderer mr = obj.AddComponent <MeshRenderer>();
                    MeshFilter   mf = obj.AddComponent <MeshFilter>();

                    Teardrop teardrop = new Teardrop(1f, (tail.length / tail.radius), 60, 90);

                    mf.mesh = teardrop;

                    mr.sharedMaterial = new Material(ShaderLoader.GetShader("KopernicusExpansion/CometTail"));

                    //set default material values
                    mr.sharedMaterial.SetColor("_TintColor", new Color(tail.color.r, tail.color.g, tail.color.b, 0.5f));

                    mr.sharedMaterial.SetFloat("_RimPower", tail.rimPower);
                    mr.sharedMaterial.SetFloat("_Distortion", tail.distortion);
                    mr.sharedMaterial.SetFloat("_AlphaDistortion", tail.alphaDistortion);
                    mr.sharedMaterial.SetFloat("_ZDistortion", tail.zDistortion);
                    mr.sharedMaterial.SetFloat("_VertexDistortion", 0f);
                    mr.sharedMaterial.SetFloat("_Frequency", tail.frequency);
                    mr.sharedMaterial.SetFloat("_Lacunarity", tail.lacunarity);
                    mr.sharedMaterial.SetFloat("_Gain", tail.gain);

                    mr.shadowCastingMode = ShadowCastingMode.Off;
                    mr.receiveShadows    = false;

                    CometTailController cometController = obj.AddComponent <CometTailController>();

                    cometController.type            = tail.type;
                    cometController.color           = tail.color;
                    cometController.orbit           = body.celestialBody.orbit;
                    cometController.opacityCurve    = tail.opacityCurve;
                    cometController.brightnessCurve = tail.brightnessCurve;

                    obj.transform.parent        = scaledVersion;
                    obj.transform.localPosition = Vector3.zero;
                    obj.transform.localScale    = (Vector3.one * tail.length);
                    obj.SetActive(true);
                    obj.layer = GameLayers.ScaledSpace;
                }
コード例 #2
0
        public static void AddCometTail(PSystemBody body, CometTail tail)
        {
            Transform scaledVersion = body.scaledVersion.transform;

            GameObject obj = new GameObject("CometTail");

            obj.layer            = GameLayers.ScaledSpace;
            obj.transform.parent = Kopernicus.Utility.Deactivator;

            var mr = obj.AddComponent <MeshRenderer> ();
            var mf = obj.AddComponent <MeshFilter> ();

            var teardrop = new Teardrop(1f, (tail.length / tail.radius), 60, 90);

            mf.mesh = teardrop;

            if (Settings.AllowAdvancedCometShader)
            {
                mr.sharedMaterial = new Material(Shaders.CometTail);

                //set default material values
                mr.sharedMaterial.SetColor("_TintColor", new Color(tail.color.r, tail.color.g, tail.color.b, 0.5f));

                mr.sharedMaterial.SetFloat("_RimPower", tail.rimPower);
                mr.sharedMaterial.SetFloat("_Distortion", tail.distortion);
                mr.sharedMaterial.SetFloat("_AlphaDistortion", tail.alphaDistortion);
                mr.sharedMaterial.SetFloat("_ZDistortion", tail.zDistortion);
                mr.sharedMaterial.SetFloat("_VertexDistortion", 0f);
                mr.sharedMaterial.SetFloat("_Frequency", tail.frequency);
                mr.sharedMaterial.SetFloat("_Lacunarity", tail.lacunarity);
                mr.sharedMaterial.SetFloat("_Gain", tail.gain);
            }
            else
            {
                mr.sharedMaterial = new Material(Shader.Find(FallbackShader));

                //set default material values
                mr.sharedMaterial.SetColor("_TintColor", new Color(tail.color.r, tail.color.g, tail.color.b, 0.3f));
            }

            mr.castShadows    = false;
            mr.receiveShadows = false;

            var cometController = obj.AddComponent <CometTailController> ();

            cometController.targetBodyName      = "Sun";
            cometController.usingAdvancedShader = Settings.AllowAdvancedCometShader;
            cometController.type            = tail.type;
            cometController.color           = tail.color;
            cometController.orbit           = body.celestialBody.orbit;
            cometController.opacityCurve    = tail.opacityCurve;
            cometController.brightnessCurve = tail.brightnessCurve;

            obj.transform.parent        = scaledVersion;
            obj.transform.localPosition = Vector3.zero;
            obj.transform.localScale    = (Vector3.one * tail.length);
            obj.SetActive(true);
            obj.layer = GameLayers.ScaledSpace;

            //initialize comet
            cometController.Init();
        }