simulation.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:4k
源码类别:

OpenGL

开发平台:

Visual C++

  1. // simulation.h
  2. //
  3. // Copyright (C) 2001, Chris Laurel <claurel@shatters.net>
  4. //
  5. // This program is free software; you can redistribute it and/or
  6. // modify it under the terms of the GNU General Public License
  7. // as published by the Free Software Foundation; either version 2
  8. // of the License, or (at your option) any later version.
  9. #ifndef _CELENGINE_SIMULATION_H_
  10. #define _CELENGINE_SIMULATION_H_
  11. #include <vector>
  12. #include <celmath/vecmath.h>
  13. #include <celmath/quaternion.h>
  14. #include <celengine/texture.h>
  15. #include <celengine/mesh.h>
  16. #include <celengine/universe.h>
  17. #include <celengine/astro.h>
  18. #include <celengine/galaxy.h>
  19. #include <celengine/globular.h>
  20. #include <celengine/texmanager.h>
  21. #include <celengine/render.h>
  22. #include <celengine/frame.h>
  23. #include <celengine/observer.h>
  24. class Simulation
  25. {
  26.  public:
  27.     Simulation(Universe*);
  28.     ~Simulation();
  29.     double getTime() const; // Julian date
  30.     void setTime(double t);
  31.     double getRealTime() const;
  32.     double getArrivalTime() const;
  33.     void update(double dt);
  34.     void render(Renderer&);
  35.     void draw(Renderer&);
  36.     void render(Renderer&, Observer&);
  37.     Selection pickObject(Vec3f pickRay, int renderFlags, float tolerance = 0.0f);
  38.     Universe* getUniverse() const;
  39.     void orbit(Quatf q);
  40.     void rotate(Quatf q);
  41.     void changeOrbitDistance(float d);
  42.     void setTargetSpeed(float s);
  43.     float getTargetSpeed();
  44.     Selection getSelection() const;
  45.     void setSelection(const Selection&);
  46.     Selection getTrackedObject() const;
  47.     void setTrackedObject(const Selection&);
  48.     void selectPlanet(int);
  49.     Selection findObject(std::string s, bool i18n = false);
  50.     Selection findObjectFromPath(std::string s, bool i18n = false);
  51.     std::vector<std::string> getObjectCompletion(std::string s, bool withLocations = false);
  52.     void gotoSelection(double gotoTime,
  53.                        Vec3f up, ObserverFrame::CoordinateSystem upFrame);
  54.     void gotoSelection(double gotoTime, double distance,
  55.                        Vec3f up, ObserverFrame::CoordinateSystem upFrame);
  56.     void gotoSelectionLongLat(double gotoTime,
  57.                               double distance,
  58.                               float longitude, float latitude,
  59.                               Vec3f up);
  60.     void gotoLocation(const UniversalCoord& toPosition, const Quatd& toOrientation, double duration);
  61.     void getSelectionLongLat(double& distance,
  62.                              double& longitude,
  63.                              double& latitude);
  64.     void gotoSurface(double duration);
  65.     void centerSelection(double centerTime = 0.5);
  66.     void centerSelectionCO(double centerTime = 0.5);
  67.     void follow();
  68.     void geosynchronousFollow();
  69.     void phaseLock();
  70.     void chase();
  71.     void cancelMotion();
  72.     Observer& getObserver();
  73.     void setObserverPosition(const UniversalCoord&);
  74.     void setObserverOrientation(const Quatf&);
  75.     void reverseObserverOrientation();
  76.     Observer* addObserver();
  77.     void removeObserver(Observer*);
  78.     Observer* getActiveObserver();
  79.     void setActiveObserver(Observer*);
  80.     SolarSystem* getNearestSolarSystem() const;
  81.     double getTimeScale() const;
  82.     void setTimeScale(double);
  83.     bool getSyncTime() const;
  84.     void setSyncTime(bool);
  85.     void synchronizeTime();
  86.     bool getPauseState() const;
  87.     void setPauseState(bool);
  88.     float getFaintestVisible() const;
  89.     void setFaintestVisible(float);
  90.     void setObserverMode(Observer::ObserverMode);
  91.     Observer::ObserverMode getObserverMode() const;
  92.     void setFrame(ObserverFrame::CoordinateSystem, const Selection& refObject, const Selection& targetObject); 
  93.     void setFrame(ObserverFrame::CoordinateSystem, const Selection& refObject);
  94.     const ObserverFrame* getFrame() const;
  95.  private:
  96.     SolarSystem* getSolarSystem(const Star* star);
  97.  private:
  98.     double realTime;
  99.     double timeScale;
  100.     double storedTimeScale;
  101.     bool syncTime;
  102.     Universe* universe;
  103.     SolarSystem* closestSolarSystem;
  104.     Selection selection;
  105.     Observer* activeObserver;
  106.     std::vector<Observer*> observers;
  107.     float faintestVisible;
  108.     bool pauseState;
  109. };
  110. #endif // _CELENGINE_SIMULATION_H_