X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fscene%2Fsky%2Fcloudfield.hxx;h=5016c6329f3bba01622d770249757aa84cae695b;hb=ccbc5abec63e508261b6d4bdbd5b1f780d233fc8;hp=2a547eb61497cac658f1bc2e11c70da2132b2747;hpb=d37992aaf9c21ebed166e093fb6d339dd6784316;p=simgear.git diff --git a/simgear/scene/sky/cloudfield.hxx b/simgear/scene/sky/cloudfield.hxx index 2a547eb6..5016c632 100644 --- a/simgear/scene/sky/cloudfield.hxx +++ b/simgear/scene/sky/cloudfield.hxx @@ -16,7 +16,7 @@ // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software -// Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. // // @@ -37,12 +37,17 @@ public: SGNewCloud *aCloud; sgVec3 eyePos; float dist; + float heading; + float alt; bool operator<(const culledCloud &b) const { - return this->dist < b.dist; + return (this->dist < b.dist); } }; typedef vector list_of_culledCloud; +/** + * A layer of 3D clouds. + */ class SGCloudField { private: @@ -51,12 +56,6 @@ private: SGNewCloud *aCloud; sgVec3 pos; bool visible; -// float dist; -// bool culled; - -// bool operator<(const Cloud &b) { -// return this->dist < b.dist; -// } }; @@ -77,14 +76,17 @@ private: sgMat4 transform; double deltax, deltay, alt; double last_lon, last_lat, last_course; - + sgSphere field_sphere; float last_density; + bool draw_in_3d; public: SGCloudField(); ~SGCloudField(); + void clear(void); + // add one cloud, data is not copied, ownership given void addCloud( sgVec3 pos, SGNewCloud *cloud); @@ -92,16 +94,20 @@ public: void buildTestLayer(void); // Render a cloud field - void Render(void); + void Render( float *sun_color ); // reposition the cloud layer at the specified origin and orientation - void reposition( sgVec3 p, sgVec3 up, double lon, double lat, double alt, double dt); + void reposition( sgVec3 p, sgVec3 up, double lon, double lat, double alt, double dt, float direction, float speed); + + bool is3D(void) { return draw_in_3d; } // visibility distance for clouds in meters static float CloudVis; - static float density; + static sgVec3 view_vec, view_X, view_Y; + static float density; + static double timer_dt; static double fieldSize; static bool enable3D;