Sfoglia il codice sorgente

Fix bugs in text display caused by indices not being normalized.
Fix FPS '.' position
Fix FPS display width.
Fix text spacing in texture frame.

Sam Jaffe 6 anni fa
parent
commit
f973fdc0f9
2 ha cambiato i file con 8 aggiunte e 3 eliminazioni
  1. 2 2
      engine/src/fps_counter.cxx
  2. 6 1
      engine/src/text_engine.cxx

+ 2 - 2
engine/src/fps_counter.cxx

@@ -28,7 +28,7 @@ fps_counter::~fps_counter() {}
 std::string fps_counter::fps(env::clock::duration const & since) const {
   auto fps = magnitude_ * env::clock::duration::period::den / since.count();
   std::string fps_str = std::to_string(fps);
-  fps_str.insert(fps_str.size() - digits_ + 1, ".");
+  fps_str.insert(fps_str.size() - digits_, ".");
   return fps_str;
 }
 
@@ -36,5 +36,5 @@ void fps_counter::set_frame_step(env::clock::duration const & since) {
   if (++counter_ != change_after_) { return; }
   counter_ = 0;
   text_engine_->create_text_cells(
-      glyphs_, {make_vector(5.f, 680.f), make_vector(20.f, 20.f), fps(since)});
+      glyphs_, {make_vector(5.f, 680.f), make_vector(10.f, 20.f), fps(since)});
 }

+ 6 - 1
engine/src/text_engine.cxx

@@ -37,7 +37,12 @@ text_engine::text_engine(std::string const & font,
     : font_(font), prototype_(to_object(font_material(font_), *manager)),
       glyphs_(glyph_locations(font_)) {
   // TODO (sjaffe): Also needs to be programmatic
-  prototype_.frame.size = make_vector(0.125f, 0.125f);
+  auto glyph_size = make_vector(0.125f, 0.125f);
+  // The font I chose is a monospace font where height = 2 * width
+  prototype_.frame.size = glyph_size / make_vector(2, 1);
+  for (auto & pair : glyphs_) {
+    pair.second *= glyph_size;
+  }
 }
 
 void text_engine::create_text_cells(std::vector<graphics::object> & out,