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