double ElevationAt(const glm::dvec3 &p) const noexcept { return glm::length(p) - Radius(); }
/// distance to planet center
double DistanceAt(const glm::dvec3 &p) const noexcept { return glm::length(p); }
+ /// acceleration due to gravity at given point
+ glm::dvec3 GravityAt(const glm::dvec3 &p) const noexcept { return NormalAt(p) * (-GravitationalParameter() / glm::length2(p)); }
/// get ground tile
Tile &TileAt(const glm::dvec3 &) noexcept;
// center point of tile on surface at elevation
glm::dvec3 TileCenter(int surface, int x, int y, double elevation = 0.0) const noexcept;
- void BuildVAO(const Set<TileType> &);
+ void BuildVAO();
void Draw(app::Assets &, graphics::Viewport &) override;
private:
glm::vec3 position;
glm::vec3 normal;
glm::vec3 tex_coord;
+ float shiny;
+ float glossy;
+ float metallic;
};
std::unique_ptr<graphics::SimpleVAO<Attributes, unsigned int>> vao;