Esempio n. 1
0
        partial void pUpdateWeight()
        {
            int address = Process.ReadInt(zCSkyControler.activeSkyController);

            if (address != 0)
            {
                var gCtrl = new zCSkyControler_Outdoor(address);

                int m_enuWeather = Process.ReadInt(address + 0x30);
                if (m_enuWeather != (int)this.type)
                {
                    Process.Write(address + 0x30, (int)this.type);
                    int rainAddr = Process.ReadInt(address + zCSkyControler_Outdoor.VarOffsets.outdoorRainFX);
                    if (rainAddr != 0)
                    {
                        new zCOutdoorRainFX(rainAddr).SetWeatherType((int)this.type);
                    }
                    else
                    {
                        return;
                    }
                }

                gCtrl.OutdoorRainFXWeight = this.CurrentWeight;
                if (this.type == WeatherTypes.Rain && this.CurrentWeight > 0.5f)
                {
                    gCtrl.RenderLightning = true;
                }
                else
                {
                    gCtrl.RenderLightning = false;
                }
            }
        }
Esempio n. 2
0
        public static void SetScale(Vec3f scale)
        {
            var barrier = new zCSkyControler_Outdoor(zCSkyControler.ActiveSkyController.Address).Barrier;
            var mesh    = barrier.FrontierMesh;

            mesh.Scale(scale.X / formerScale.X, scale.Y / formerScale.Y, scale.Z / formerScale.Z);
            formerScale = scale;
        }
Esempio n. 3
0
        static void Init()
        {
            if (inited)
            {
                return;
            }
            inited = true;

            try
            {
                var barrier = new zCSkyControler_Outdoor(zCSkyControler.ActiveSkyController.Address).Barrier;
                var mat     = barrier.FrontierMesh.GetSomethingMaterial();
                mat.AlphaFunc = 3;
                mat.SetTexture("BARRIERE.TGA");
                mat.Color.R = 0xFF;
                mat.Color.G = 0xFF;
                mat.Color.B = 0xFF;
                mat.Color.A = barrierAlpha;

                var mesh     = barrier.FrontierMesh;
                int numPolys = mesh.NumPolygons;

                float maxHeight = mesh.BBox3D.Max.Y;
                float minHeight = maxHeight * 0.925000011920929f;

                for (int i = 0; i < numPolys; i++)
                {
                    var poly     = mesh.GetPolygon(i);
                    var numVerts = poly.NumVertices;

                    for (int j = 0; j < numVerts; j++)
                    {
                        var feat = poly.GetVertFeature(j);
                        var vert = poly.GetVertex(j);

                        int alpha;
                        if (vert.Position.Y <= minHeight)
                        {
                            alpha = (int)(vert.Position.Y * 0.0001250000059371814f * 255f);
                        }
                        else
                        {
                            alpha = (int)((maxHeight - vert.Position.Y) * 255.0f / (maxHeight - minHeight));
                        }

                        if (alpha > 255)
                        {
                            alpha = 255;
                        }
                        if (alpha < 0)
                        {
                            alpha = 0;
                        }

                        feat.Color.R = 255;
                        feat.Color.G = 255;
                        feat.Color.B = 255;
                        feat.Color.A = (byte)alpha;

                        feat.maybeDefaultColor.R = 255;
                        feat.maybeDefaultColor.G = 255;
                        feat.maybeDefaultColor.B = 255;
                        feat.maybeDefaultColor.A = (byte)alpha;
                    }
                }
            }
            catch (Exception e)
            {
                Logger.LogError(e);
            }
        }