Conquer Space 0.0.0
A space themed grand strategy game set in the near future, with realistic orbital mechanics, and an emphasis on economics and politics.
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
cqsp::client::systems::SysStarSystemRenderer Class Reference

#include <starsystemrenderer.h>

Public Member Functions

 SysStarSystemRenderer (core::Universe &, engine::Application &)
 
void Initialize ()
 
void OnTick ()
 
void Render (float delta_time)
 
void SeeStarSystem ()
 
void Update (float delta_time)
 
void DoUI (float delta_time)
 
double GetDivider ()
 
void DrawAllOrbits ()
 
 ~SysStarSystemRenderer ()
 

Public Attributes

double previous_mouseX
 
double previous_mouseY
 
double min_zoom = 1
 
double max_zoom = 9.4605284e15
 

Private Member Functions

void DrawStars ()
 
void DrawBodies ()
 
void DrawShips ()
 
void DrawSkybox ()
 
void DrawModels ()
 
void DrawEntityName (glm::vec3 &object_pos, entt::entity ent_id)
 
void DrawPlanetBillboard (const entt::entity &ent_id, const glm::vec3 &object_pos)
 
void DrawShipIcon (const glm::vec3 &object_pos)
 
void DrawCityIcon (const glm::vec3 &object_pos, float alpha_value)
 
void DrawAllCities (auto &bodies)
 
void DrawAllPlanets (auto &bodies)
 
void DrawAllPlanetBillboards (auto &bodies)
 
void DrawTexturedPlanet (const glm::vec3 &object_pos, const entt::entity entity)
 
void GetPlanetTexture (const entt::entity entity, bool &have_normal, bool &have_roughness, bool &have_province)
 
void DrawTerrainlessPlanet (const entt::entity &entity, glm::vec3 &object_pos)
 
void DrawStar (const entt::entity &entity, glm::vec3 &object_pos)
 
void RenderCities (glm::vec3 &object_pos, const entt::entity &body_entity)
 
bool CityIsVisible (glm::vec3 city_pos, glm::vec3 planet_pos, glm::vec3 cam_pos)
 
asset::ShaderProgram_t ConstructShader (const std::string &key)
 
void LoadPlanetTextures ()
 
void InitializeFramebuffers ()
 
void LoadProvinceMap ()
 
void InitializeMeshes ()
 
void DrawOrbit (const entt::entity &entity)
 
glm::vec3 CalculateFutureObjectPos (const entt::entity &)
 
glm::vec3 TranslateToNormalized (const glm::vec3 &)
 
glm::vec4 CalculateGLPosition (const glm::vec3 &object_pos)
 Calculates the GL position for a log renderbuffer. More...
 
bool GLPositionNotInBounds (const glm::vec4 &gl_Position, const glm::vec3 &pos)
 Check if the GL position is within the window More...
 
glm::mat4 GetBillboardMatrix (const glm::vec3 &pos)
 
glm::vec3 GetBillboardPosition (const glm::vec3 &object_pos)
 
void SetBillboardProjection (cqsp::asset::ShaderProgram_t &shader, glm::mat4 mat)
 
void CheckResourceDistRender ()
 
float GetWindowRatio ()
 
float Lerp (float a, float b, float t)
 

Private Attributes

core::Universeuniverse
 
engine::Applicationapp
 
StarSystemCamera camera
 
StarSystemController controller
 
StarSystemViewUI user_interface
 
SysOrbitGeometry orbit_geometry
 
engine::Renderable planet
 
engine::Renderable textured_planet
 
engine::Renderable sky
 
engine::Renderable planet_circle
 
engine::Renderable ship_overlay
 
engine::Renderable city
 
engine::Renderable sun
 
asset::ShaderProgram_t model_shader
 
asset::ShaderProgram_t orbit_shader
 
asset::ShaderProgram_t near_shader
 
asset::ShaderProgram_t vis_shader
 
asset::ShaderProgram_t circle_shader
 
asset::ShaderProgram_t planet_shader
 
asset::ShaderProgram_t textured_planet_shader
 
asset::ShaderProgram_t sun_shader
 
asset::ShaderProgram_t skybox_shader
 
asset::ShaderProgram_t buffer_shader
 
const double divider = 0.01
 
float window_ratio
 
const float circle_size = 0.01f
 
glm::vec3 sun_position
 
glm::vec3 sun_color
 
engine::LayerRenderer renderer
 
int ship_icon_layer
 
int planet_icon_layer
 
int physical_layer
 
int skybox_layer
 
float view_scale = 10.f
 
const int sphere_resolution = 64
 
bool have_province = false
 
friend StarSystemViewUI
 

Constructor & Destructor Documentation

◆ SysStarSystemRenderer()

cqsp::client::systems::SysStarSystemRenderer::SysStarSystemRenderer ( core::Universe _u,
engine::Application _a 
)

◆ ~SysStarSystemRenderer()

cqsp::client::systems::SysStarSystemRenderer::~SysStarSystemRenderer ( )
default

Member Function Documentation

◆ CalculateFutureObjectPos()

glm::vec3 cqsp::client::systems::SysStarSystemRenderer::CalculateFutureObjectPos ( const entt::entity &  ent)
private

◆ CalculateGLPosition()

glm::vec4 cqsp::client::systems::SysStarSystemRenderer::CalculateGLPosition ( const glm::vec3 &  object_pos)
private

Calculates the GL position for a log renderbuffer.

◆ CheckResourceDistRender()

void cqsp::client::systems::SysStarSystemRenderer::CheckResourceDistRender ( )
private

◆ CityIsVisible()

bool cqsp::client::systems::SysStarSystemRenderer::CityIsVisible ( glm::vec3  city_pos,
glm::vec3  planet_pos,
glm::vec3  cam_pos 
)
private

◆ ConstructShader()

ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::ConstructShader ( const std::string &  key)
private

◆ DoUI()

void cqsp::client::systems::SysStarSystemRenderer::DoUI ( float  delta_time)

◆ DrawAllCities()

void cqsp::client::systems::SysStarSystemRenderer::DrawAllCities ( auto &  bodies)
private

◆ DrawAllOrbits()

void cqsp::client::systems::SysStarSystemRenderer::DrawAllOrbits ( )

◆ DrawAllPlanetBillboards()

void cqsp::client::systems::SysStarSystemRenderer::DrawAllPlanetBillboards ( auto &  bodies)
private

◆ DrawAllPlanets()

void cqsp::client::systems::SysStarSystemRenderer::DrawAllPlanets ( auto &  bodies)
private

◆ DrawBodies()

void cqsp::client::systems::SysStarSystemRenderer::DrawBodies ( )
private

◆ DrawCityIcon()

void cqsp::client::systems::SysStarSystemRenderer::DrawCityIcon ( const glm::vec3 &  object_pos,
float  alpha_value 
)
private

◆ DrawEntityName()

void cqsp::client::systems::SysStarSystemRenderer::DrawEntityName ( glm::vec3 &  object_pos,
entt::entity  ent_id 
)
private

◆ DrawModels()

void cqsp::client::systems::SysStarSystemRenderer::DrawModels ( )
private

◆ DrawOrbit()

void cqsp::client::systems::SysStarSystemRenderer::DrawOrbit ( const entt::entity &  entity)
private

◆ DrawPlanetBillboard()

void cqsp::client::systems::SysStarSystemRenderer::DrawPlanetBillboard ( const entt::entity &  ent_id,
const glm::vec3 &  object_pos 
)
private

◆ DrawShipIcon()

void cqsp::client::systems::SysStarSystemRenderer::DrawShipIcon ( const glm::vec3 &  object_pos)
private

◆ DrawShips()

void cqsp::client::systems::SysStarSystemRenderer::DrawShips ( )
private

◆ DrawSkybox()

void cqsp::client::systems::SysStarSystemRenderer::DrawSkybox ( )
private

◆ DrawStar()

void cqsp::client::systems::SysStarSystemRenderer::DrawStar ( const entt::entity &  entity,
glm::vec3 &  object_pos 
)
private

◆ DrawStars()

void cqsp::client::systems::SysStarSystemRenderer::DrawStars ( )
private

◆ DrawTerrainlessPlanet()

void cqsp::client::systems::SysStarSystemRenderer::DrawTerrainlessPlanet ( const entt::entity &  entity,
glm::vec3 &  object_pos 
)
private

◆ DrawTexturedPlanet()

void cqsp::client::systems::SysStarSystemRenderer::DrawTexturedPlanet ( const glm::vec3 &  object_pos,
const entt::entity  entity 
)
private

◆ GetBillboardMatrix()

glm::mat4 cqsp::client::systems::SysStarSystemRenderer::GetBillboardMatrix ( const glm::vec3 &  pos)
private

◆ GetBillboardPosition()

glm::vec3 cqsp::client::systems::SysStarSystemRenderer::GetBillboardPosition ( const glm::vec3 &  object_pos)
private

◆ GetDivider()

double cqsp::client::systems::SysStarSystemRenderer::GetDivider ( )
inline

◆ GetPlanetTexture()

void cqsp::client::systems::SysStarSystemRenderer::GetPlanetTexture ( const entt::entity  entity,
bool &  have_normal,
bool &  have_roughness,
bool &  have_province 
)
private

◆ GetWindowRatio()

float cqsp::client::systems::SysStarSystemRenderer::GetWindowRatio ( )
private

◆ GLPositionNotInBounds()

bool cqsp::client::systems::SysStarSystemRenderer::GLPositionNotInBounds ( const glm::vec4 &  gl_Position,
const glm::vec3 &  pos 
)
private

Check if the GL position is within the window

◆ Initialize()

void cqsp::client::systems::SysStarSystemRenderer::Initialize ( )

◆ InitializeFramebuffers()

void cqsp::client::systems::SysStarSystemRenderer::InitializeFramebuffers ( )
private

◆ InitializeMeshes()

void cqsp::client::systems::SysStarSystemRenderer::InitializeMeshes ( )
private

◆ Lerp()

float cqsp::client::systems::SysStarSystemRenderer::Lerp ( float  a,
float  b,
float  t 
)
private

◆ LoadPlanetTextures()

void cqsp::client::systems::SysStarSystemRenderer::LoadPlanetTextures ( )
private

◆ LoadProvinceMap()

void cqsp::client::systems::SysStarSystemRenderer::LoadProvinceMap ( )
private

◆ OnTick()

void cqsp::client::systems::SysStarSystemRenderer::OnTick ( )

◆ Render()

void cqsp::client::systems::SysStarSystemRenderer::Render ( float  delta_time)

◆ RenderCities()

void cqsp::client::systems::SysStarSystemRenderer::RenderCities ( glm::vec3 &  object_pos,
const entt::entity &  body_entity 
)
private

◆ SeeStarSystem()

void cqsp::client::systems::SysStarSystemRenderer::SeeStarSystem ( )

◆ SetBillboardProjection()

void cqsp::client::systems::SysStarSystemRenderer::SetBillboardProjection ( cqsp::asset::ShaderProgram_t shader,
glm::mat4  mat 
)
private

◆ TranslateToNormalized()

glm::vec3 cqsp::client::systems::SysStarSystemRenderer::TranslateToNormalized ( const glm::vec3 &  pos)
private

◆ Update()

void cqsp::client::systems::SysStarSystemRenderer::Update ( float  delta_time)

Member Data Documentation

◆ app

engine::Application& cqsp::client::systems::SysStarSystemRenderer::app
private

◆ buffer_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::buffer_shader
private

◆ camera

StarSystemCamera cqsp::client::systems::SysStarSystemRenderer::camera
private

◆ circle_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::circle_shader
private

◆ circle_size

const float cqsp::client::systems::SysStarSystemRenderer::circle_size = 0.01f
private

◆ city

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::city
private

◆ controller

StarSystemController cqsp::client::systems::SysStarSystemRenderer::controller
private

◆ divider

const double cqsp::client::systems::SysStarSystemRenderer::divider = 0.01
private

◆ have_province

bool cqsp::client::systems::SysStarSystemRenderer::have_province = false
private

◆ max_zoom

double cqsp::client::systems::SysStarSystemRenderer::max_zoom = 9.4605284e15

◆ min_zoom

double cqsp::client::systems::SysStarSystemRenderer::min_zoom = 1

◆ model_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::model_shader
private

◆ near_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::near_shader
private

◆ orbit_geometry

SysOrbitGeometry cqsp::client::systems::SysStarSystemRenderer::orbit_geometry
private

◆ orbit_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::orbit_shader
private

◆ physical_layer

int cqsp::client::systems::SysStarSystemRenderer::physical_layer
private

◆ planet

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::planet
private

◆ planet_circle

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::planet_circle
private

◆ planet_icon_layer

int cqsp::client::systems::SysStarSystemRenderer::planet_icon_layer
private

◆ planet_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::planet_shader
private

◆ previous_mouseX

double cqsp::client::systems::SysStarSystemRenderer::previous_mouseX

◆ previous_mouseY

double cqsp::client::systems::SysStarSystemRenderer::previous_mouseY

◆ renderer

engine::LayerRenderer cqsp::client::systems::SysStarSystemRenderer::renderer
private

◆ ship_icon_layer

int cqsp::client::systems::SysStarSystemRenderer::ship_icon_layer
private

◆ ship_overlay

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::ship_overlay
private

◆ sky

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::sky
private

◆ skybox_layer

int cqsp::client::systems::SysStarSystemRenderer::skybox_layer
private

◆ skybox_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::skybox_shader
private

◆ sphere_resolution

const int cqsp::client::systems::SysStarSystemRenderer::sphere_resolution = 64
private

◆ StarSystemViewUI

friend cqsp::client::systems::SysStarSystemRenderer::StarSystemViewUI
private

◆ sun

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::sun
private

◆ sun_color

glm::vec3 cqsp::client::systems::SysStarSystemRenderer::sun_color
private

◆ sun_position

glm::vec3 cqsp::client::systems::SysStarSystemRenderer::sun_position
private

◆ sun_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::sun_shader
private

◆ textured_planet

engine::Renderable cqsp::client::systems::SysStarSystemRenderer::textured_planet
private

◆ textured_planet_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::textured_planet_shader
private

◆ universe

core::Universe& cqsp::client::systems::SysStarSystemRenderer::universe
private

◆ user_interface

StarSystemViewUI cqsp::client::systems::SysStarSystemRenderer::user_interface
private

◆ view_scale

float cqsp::client::systems::SysStarSystemRenderer::view_scale = 10.f
private

◆ vis_shader

asset::ShaderProgram_t cqsp::client::systems::SysStarSystemRenderer::vis_shader
private

◆ window_ratio

float cqsp::client::systems::SysStarSystemRenderer::window_ratio
private

The documentation for this class was generated from the following files: