+ m_color.r = MYMIN(MYMAX(color_diffuse.r * m_params.color_bright.getRed(),
+ m_params.color_ambient.getRed()), 255) / 255.0f;
+ m_color.g = MYMIN(MYMAX(color_diffuse.g * m_params.color_bright.getGreen(),
+ m_params.color_ambient.getGreen()), 255) / 255.0f;
+ m_color.b = MYMIN(MYMAX(color_diffuse.b * m_params.color_bright.getBlue(),
+ m_params.color_ambient.getBlue()), 255) / 255.0f;
+ m_color.a = m_params.color_bright.getAlpha() / 255.0f;
+
+ // is the camera inside the cloud mesh?
+ m_camera_inside_cloud = false; // default
+ if (m_enable_3d) {
+ float camera_height = camera_p.Y;
+ if (camera_height >= m_box.MinEdge.Y &&
+ camera_height <= m_box.MaxEdge.Y) {
+ v2f camera_in_noise;
+ camera_in_noise.X = floor((camera_p.X - m_origin.X) / cloud_size + 0.5);
+ camera_in_noise.Y = floor((camera_p.Z - m_origin.Y) / cloud_size + 0.5);
+ bool filled = gridFilled(camera_in_noise.X, camera_in_noise.Y);
+ m_camera_inside_cloud = filled;
+ }
+ }