replace old renderer access pattern
This commit is contained in:
@@ -303,7 +303,7 @@ absl::Status Controller::OnEntry(std::string filename) {
|
||||
master_editor_.emulator().set_audio_device_id(audio_device_);
|
||||
}
|
||||
InitializeKeymap();
|
||||
master_editor_.SetupScreen(renderer_, filename);
|
||||
master_editor_.SetupScreen(filename);
|
||||
active_ = true;
|
||||
return absl::OkStatus();
|
||||
}
|
||||
@@ -367,9 +367,10 @@ absl::Status Controller::OnLoad() {
|
||||
|
||||
void Controller::DoRender() const {
|
||||
ImGui::Render();
|
||||
SDL_RenderClear(renderer_.get());
|
||||
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData(), renderer_.get());
|
||||
SDL_RenderPresent(renderer_.get());
|
||||
SDL_RenderClear(Renderer::GetInstance().renderer());
|
||||
ImGui_ImplSDLRenderer2_RenderDrawData(ImGui::GetDrawData(),
|
||||
Renderer::GetInstance().renderer());
|
||||
SDL_RenderPresent(Renderer::GetInstance().renderer());
|
||||
}
|
||||
|
||||
void Controller::OnExit() {
|
||||
@@ -420,18 +421,7 @@ absl::Status Controller::CreateSDL_Window() {
|
||||
}
|
||||
|
||||
absl::Status Controller::CreateRenderer() {
|
||||
renderer_ = std::unique_ptr<SDL_Renderer, sdl_deleter>(
|
||||
SDL_CreateRenderer(window_.get(), -1,
|
||||
SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC),
|
||||
sdl_deleter());
|
||||
if (renderer_ == nullptr) {
|
||||
return absl::InternalError(
|
||||
absl::StrFormat("SDL_CreateRenderer: %s\n", SDL_GetError()));
|
||||
} else {
|
||||
SDL_SetRenderDrawBlendMode(renderer_.get(), SDL_BLENDMODE_BLEND);
|
||||
SDL_SetRenderDrawColor(renderer_.get(), 0x00, 0x00, 0x00, 0x00);
|
||||
}
|
||||
return absl::OkStatus();
|
||||
return Renderer::GetInstance().CreateRenderer(window_.get());
|
||||
}
|
||||
|
||||
absl::Status Controller::CreateGuiContext() {
|
||||
@@ -446,8 +436,9 @@ absl::Status Controller::CreateGuiContext() {
|
||||
}
|
||||
|
||||
// Initialize ImGui for SDL
|
||||
ImGui_ImplSDL2_InitForSDLRenderer(window_.get(), renderer_.get());
|
||||
ImGui_ImplSDLRenderer2_Init(renderer_.get());
|
||||
ImGui_ImplSDL2_InitForSDLRenderer(window_.get(),
|
||||
Renderer::GetInstance().renderer());
|
||||
ImGui_ImplSDLRenderer2_Init(Renderer::GetInstance().renderer());
|
||||
|
||||
if (flags()->kLoadSystemFonts) {
|
||||
LoadSystemFonts();
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#define YAZE_APP_CORE_CONTROLLER_H
|
||||
|
||||
#include <SDL.h>
|
||||
|
||||
#include "imgui/backends/imgui_impl_sdl2.h"
|
||||
#include "imgui/backends/imgui_impl_sdlrenderer2.h"
|
||||
#include "imgui/imconfig.h"
|
||||
@@ -12,6 +13,7 @@
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/master_editor.h"
|
||||
#include "app/editor/utils/editor.h"
|
||||
#include "app/gui/icons.h"
|
||||
@@ -45,13 +47,12 @@ class Controller : public ExperimentFlags {
|
||||
absl::Status CreateGuiContext();
|
||||
absl::Status LoadFontFamilies() const;
|
||||
absl::Status LoadAudioDevice();
|
||||
|
||||
void SetupScreen() {
|
||||
master_editor_.SetupScreen(renderer_);
|
||||
}
|
||||
|
||||
void SetupScreen() { master_editor_.SetupScreen(); }
|
||||
auto master_editor() -> editor::MasterEditor & { return master_editor_; }
|
||||
auto renderer() -> SDL_Renderer * { return renderer_.get(); }
|
||||
auto renderer() -> SDL_Renderer * {
|
||||
return Renderer::GetInstance().renderer();
|
||||
}
|
||||
auto window() -> SDL_Window * { return window_.get(); }
|
||||
|
||||
private:
|
||||
@@ -81,7 +82,6 @@ class Controller : public ExperimentFlags {
|
||||
int16_t *audio_buffer_;
|
||||
SDL_AudioDeviceID audio_device_;
|
||||
std::shared_ptr<SDL_Window> window_;
|
||||
std::shared_ptr<SDL_Renderer> renderer_;
|
||||
};
|
||||
|
||||
} // namespace core
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
#include "dungeon_editor.h"
|
||||
|
||||
#include "imgui/imgui.h"
|
||||
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/labeling.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/gfx/snes_palette.h"
|
||||
#include "app/gui/canvas.h"
|
||||
#include "app/gui/color.h"
|
||||
@@ -12,12 +11,15 @@
|
||||
#include "app/rom.h"
|
||||
#include "app/zelda3/dungeon/object_names.h"
|
||||
#include "app/zelda3/dungeon/room_names.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "zelda3/dungeon/room.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
using ImGui::BeginChild;
|
||||
using ImGui::BeginTabBar;
|
||||
using ImGui::BeginTabItem;
|
||||
@@ -120,14 +122,14 @@ absl::Status DungeonEditor::RefreshGraphics() {
|
||||
int block = rooms_[current_room_id_].blocks()[i];
|
||||
RETURN_IF_ERROR(graphics_bin_[block].ApplyPaletteWithTransparent(
|
||||
current_palette_group_[current_palette_id_], 0));
|
||||
rom()->UpdateBitmap(&graphics_bin_[block], true);
|
||||
Renderer::GetInstance().UpdateBitmap(&graphics_bin_[block], true);
|
||||
}
|
||||
auto sprites_aux1_pal_group = rom()->palette_group().sprites_aux1;
|
||||
for (int i = 9; i < 16; i++) {
|
||||
int block = rooms_[current_room_id_].blocks()[i];
|
||||
RETURN_IF_ERROR(graphics_bin_[block].ApplyPaletteWithTransparent(
|
||||
sprites_aux1_pal_group[current_palette_id_], 0));
|
||||
rom()->UpdateBitmap(&graphics_bin_[block], true);
|
||||
Renderer::GetInstance().UpdateBitmap(&graphics_bin_[block], true);
|
||||
}
|
||||
return absl::OkStatus();
|
||||
}
|
||||
@@ -547,7 +549,7 @@ void DungeonEditor::DrawObjectRenderer() {
|
||||
current_object_ = i;
|
||||
object_renderer_.LoadObject(i,
|
||||
rooms_[current_room_id_].mutable_blocks());
|
||||
rom()->RenderBitmap(object_renderer_.bitmap());
|
||||
Renderer::GetInstance().RenderBitmap(object_renderer_.bitmap());
|
||||
object_loaded_ = true;
|
||||
}
|
||||
i += 1;
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
#include "app/gfx/compression.h"
|
||||
#include "app/gfx/scad_format.h"
|
||||
#include "app/gfx/snes_palette.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
|
||||
#include "app/gfx/snes_tile.h"
|
||||
#include "app/gui/asset_browser.h"
|
||||
#include "app/gui/canvas.h"
|
||||
@@ -25,6 +27,8 @@ namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
using gfx::kPaletteGroupAddressesKeys;
|
||||
using ImGui::Button;
|
||||
using ImGui::InputInt;
|
||||
@@ -142,7 +146,7 @@ void GraphicsEditor::DrawGfxEditToolset() {
|
||||
->mutable_bitmap_manager()
|
||||
->mutable_bitmap(current_sheet_)
|
||||
->Create(width, height, 8, png_data);
|
||||
rom()->UpdateBitmap(
|
||||
Renderer::GetInstance().UpdateBitmap(
|
||||
rom()->mutable_bitmap_manager()->mutable_bitmap(current_sheet_));
|
||||
}
|
||||
}
|
||||
@@ -291,7 +295,7 @@ absl::Status GraphicsEditor::UpdateGfxTabView() {
|
||||
auto draw_tile_event = [&]() {
|
||||
current_sheet_canvas_.DrawTileOnBitmap(tile_size_, ¤t_bitmap,
|
||||
current_color_);
|
||||
rom()->UpdateBitmap(¤t_bitmap, true);
|
||||
Renderer::GetInstance().UpdateBitmap(¤t_bitmap, true);
|
||||
};
|
||||
|
||||
current_sheet_canvas_.UpdateColorPainter(
|
||||
@@ -367,7 +371,7 @@ absl::Status GraphicsEditor::UpdatePaletteColumn() {
|
||||
RETURN_IF_ERROR(
|
||||
rom()->bitmap_manager()[current_sheet_].ApplyPaletteWithTransparent(
|
||||
palette, edit_palette_sub_index_));
|
||||
rom()->UpdateBitmap(
|
||||
Renderer::GetInstance().UpdateBitmap(
|
||||
rom()->mutable_bitmap_manager()->mutable_bitmap(current_sheet_),
|
||||
true);
|
||||
refresh_graphics_ = false;
|
||||
@@ -462,7 +466,7 @@ absl::Status GraphicsEditor::UpdateScadView() {
|
||||
for (int i = 0; i < graphics_bin_.size(); i++) {
|
||||
status_ = graphics_bin_[i].ApplyPalette(
|
||||
col_file_palette_group_[current_palette_index_]);
|
||||
rom()->UpdateBitmap(&graphics_bin_[i]);
|
||||
Renderer::GetInstance().UpdateBitmap(&graphics_bin_[i]);
|
||||
}
|
||||
refresh_graphics_ = false;
|
||||
}
|
||||
@@ -535,7 +539,7 @@ absl::Status GraphicsEditor::DrawCgxImport() {
|
||||
cgx_bitmap_.Create(0x80, 0x200, 8, decoded_cgx_);
|
||||
if (col_file_) {
|
||||
cgx_bitmap_.ApplyPalette(decoded_col_);
|
||||
rom()->RenderBitmap(&cgx_bitmap_);
|
||||
Renderer::GetInstance().RenderBitmap(&cgx_bitmap_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -570,7 +574,7 @@ absl::Status GraphicsEditor::DrawScrImport() {
|
||||
scr_bitmap_.Create(0x100, 0x100, 8, decoded_scr_data_);
|
||||
if (scr_loaded_) {
|
||||
scr_bitmap_.ApplyPalette(decoded_col_);
|
||||
rom()->RenderBitmap(&scr_bitmap_);
|
||||
Renderer::GetInstance().RenderBitmap(&scr_bitmap_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -775,7 +779,7 @@ absl::Status GraphicsEditor::DecompressImportData(int size) {
|
||||
}
|
||||
}
|
||||
|
||||
rom()->RenderBitmap(&bin_bitmap_);
|
||||
Renderer::GetInstance().RenderBitmap(&bin_bitmap_);
|
||||
gfx_loaded_ = true;
|
||||
|
||||
return absl::OkStatus();
|
||||
@@ -805,7 +809,7 @@ absl::Status GraphicsEditor::DecompressSuperDonkey() {
|
||||
status_ = graphics_bin_[i].ApplyPalette(z3_rom_palette_);
|
||||
}
|
||||
|
||||
rom()->RenderBitmap(&graphics_bin_[i]);
|
||||
Renderer::GetInstance().RenderBitmap(&graphics_bin_[i]);
|
||||
i++;
|
||||
}
|
||||
|
||||
@@ -830,7 +834,7 @@ absl::Status GraphicsEditor::DecompressSuperDonkey() {
|
||||
status_ = graphics_bin_[i].ApplyPalette(z3_rom_palette_);
|
||||
}
|
||||
|
||||
rom()->RenderBitmap(&graphics_bin_[i]);
|
||||
Renderer::GetInstance().RenderBitmap(&graphics_bin_[i]);
|
||||
i++;
|
||||
}
|
||||
super_donkey_ = true;
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "app/gfx/snes_tile.h"
|
||||
#include "app/gfx/tilesheet.h"
|
||||
#include "app/gui/canvas.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/gui/icons.h"
|
||||
#include "app/gui/input.h"
|
||||
#include "app/zelda3/dungeon/room.h"
|
||||
@@ -25,6 +26,8 @@ namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
absl::Status ScreenEditor::Update() {
|
||||
TAB_BAR("##TabBar")
|
||||
TAB_ITEM("Dungeon Maps")
|
||||
@@ -235,13 +238,13 @@ absl::Status ScreenEditor::LoadDungeonMapTile16() {
|
||||
|
||||
RETURN_IF_ERROR(tile16_sheet_.mutable_bitmap()->ApplyPalette(
|
||||
*rom()->mutable_dungeon_palette(3)));
|
||||
rom()->RenderBitmap(&*tile16_sheet_.mutable_bitmap().get());
|
||||
Renderer::GetInstance().RenderBitmap(&*tile16_sheet_.mutable_bitmap().get());
|
||||
|
||||
for (int i = 0; i < tile16_sheet_.num_tiles(); ++i) {
|
||||
if (tile16_individual_.count(i) == 0) {
|
||||
auto tile = tile16_sheet_.GetTile16(i);
|
||||
tile16_individual_[i] = tile;
|
||||
rom()->RenderBitmap(&tile16_individual_[i]);
|
||||
Renderer::GetInstance().RenderBitmap(&tile16_individual_[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -279,7 +282,7 @@ void ScreenEditor::DrawDungeonMapsTabs() {
|
||||
if (tile16_individual_.count(tile16_id) == 0) {
|
||||
auto tile = tile16_sheet_.GetTile16(tile16_id);
|
||||
std::cout << "Tile16: " << tile16_id << std::endl;
|
||||
rom()->RenderBitmap(&tile);
|
||||
Renderer::GetInstance().RenderBitmap(&tile);
|
||||
tile16_individual_[tile16_id] = tile;
|
||||
}
|
||||
screen_canvas_.DrawBitmap(tile16_individual_[tile16_id], (posX * 2),
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
#include "tile16_editor.h"
|
||||
|
||||
#include "ImGuiFileDialog/ImGuiFileDialog.h"
|
||||
#include "imgui/imgui.h"
|
||||
|
||||
#include <cmath>
|
||||
|
||||
#include "ImGuiFileDialog/ImGuiFileDialog.h"
|
||||
#include "absl/status/status.h"
|
||||
#include "absl/status/statusor.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/graphics/palette_editor.h"
|
||||
#include "app/editor/utils/editor.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
@@ -19,11 +18,14 @@
|
||||
#include "app/gui/style.h"
|
||||
#include "app/rom.h"
|
||||
#include "app/zelda3/overworld/overworld.h"
|
||||
#include "imgui/imgui.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
using ImGui::BeginChild;
|
||||
using ImGui::BeginMenu;
|
||||
using ImGui::BeginMenuBar;
|
||||
@@ -146,7 +148,7 @@ absl::Status Tile16Editor::UpdateBlockset() {
|
||||
auto ow_main_pal_group = rom()->palette_group().overworld_main;
|
||||
RETURN_IF_ERROR(current_tile16_bmp_->ApplyPalette(
|
||||
ow_main_pal_group[current_palette_]));
|
||||
rom()->RenderBitmap(current_tile16_bmp_);
|
||||
Renderer::GetInstance().RenderBitmap(current_tile16_bmp_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -197,7 +199,8 @@ absl::Status Tile16Editor::UpdateTile16Edit() {
|
||||
RETURN_IF_ERROR(
|
||||
current_gfx_individual_[current_tile8_].ApplyPaletteWithTransparent(
|
||||
ow_main_pal_group[0], current_palette_));
|
||||
rom()->UpdateBitmap(¤t_gfx_individual_[current_tile8_]);
|
||||
Renderer::GetInstance().UpdateBitmap(
|
||||
¤t_gfx_individual_[current_tile8_]);
|
||||
}
|
||||
tile8_source_canvas_.DrawBitmap(current_gfx_bmp_, 0, 0, 4.0f);
|
||||
tile8_source_canvas_.DrawGrid();
|
||||
@@ -214,7 +217,8 @@ absl::Status Tile16Editor::UpdateTile16Edit() {
|
||||
RETURN_IF_ERROR(
|
||||
current_gfx_individual_[current_tile8_].ApplyPaletteWithTransparent(
|
||||
ow_main_pal_group[0], current_palette_));
|
||||
rom()->UpdateBitmap(¤t_gfx_individual_[current_tile8_]);
|
||||
Renderer::GetInstance().UpdateBitmap(
|
||||
¤t_gfx_individual_[current_tile8_]);
|
||||
}
|
||||
|
||||
if (BeginChild("Tile16 Editor Options",
|
||||
@@ -227,7 +231,7 @@ absl::Status Tile16Editor::UpdateTile16Edit() {
|
||||
current_gfx_individual_[current_tile8_], 16, 2.0f)) {
|
||||
RETURN_IF_ERROR(
|
||||
DrawToCurrentTile16(tile16_edit_canvas_.drawn_tile_position()));
|
||||
rom()->UpdateBitmap(current_tile16_bmp_);
|
||||
Renderer::GetInstance().UpdateBitmap(current_tile16_bmp_);
|
||||
}
|
||||
}
|
||||
tile16_edit_canvas_.DrawGrid();
|
||||
@@ -260,8 +264,8 @@ absl::Status Tile16Editor::DrawTileEditControls() {
|
||||
current_gfx_bmp_.ApplyPaletteWithTransparent(palette, value));
|
||||
RETURN_IF_ERROR(
|
||||
current_tile16_bmp_->ApplyPaletteWithTransparent(palette, value));
|
||||
rom()->UpdateBitmap(¤t_gfx_bmp_);
|
||||
rom()->UpdateBitmap(current_tile16_bmp_);
|
||||
Renderer::GetInstance().UpdateBitmap(¤t_gfx_bmp_);
|
||||
Renderer::GetInstance().UpdateBitmap(current_tile16_bmp_);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -310,7 +314,7 @@ absl::Status Tile16Editor::LoadTile8() {
|
||||
current_gfx_individual_[index].Create(0x08, 0x08, 0x08, tile_data);
|
||||
RETURN_IF_ERROR(current_gfx_individual_[index].ApplyPaletteWithTransparent(
|
||||
ow_main_pal_group[0], current_palette_));
|
||||
rom()->RenderBitmap(¤t_gfx_individual_[index]);
|
||||
Renderer::GetInstance().RenderBitmap(¤t_gfx_individual_[index]);
|
||||
}
|
||||
|
||||
map_blockset_loaded_ = true;
|
||||
@@ -371,7 +375,7 @@ absl::Status Tile16Editor::UpdateTransferTileCanvas() {
|
||||
palette_ = transfer_overworld_.AreaPalette();
|
||||
|
||||
// Create the tile16 blockset image
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
0x80, 0x2000, 0x80, transfer_overworld_.Tile16Blockset(),
|
||||
transfer_blockset_bmp_, palette_));
|
||||
transfer_blockset_loaded_ = true;
|
||||
@@ -391,7 +395,7 @@ absl::Status Tile16Editor::SetCurrentTile(int id) {
|
||||
auto ow_main_pal_group = rom()->palette_group().overworld_main;
|
||||
RETURN_IF_ERROR(
|
||||
current_tile16_bmp_->ApplyPalette(ow_main_pal_group[current_palette_]));
|
||||
rom()->RenderBitmap(current_tile16_bmp_);
|
||||
Renderer::GetInstance().RenderBitmap(current_tile16_bmp_);
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
|
||||
@@ -3,17 +3,11 @@
|
||||
#include "ImGuiColorTextEdit/TextEditor.h"
|
||||
#include "ImGuiFileDialog/ImGuiFileDialog.h"
|
||||
#include "abseil-cpp/absl/strings/match.h"
|
||||
#include "imgui/backends/imgui_impl_sdl2.h"
|
||||
#include "imgui/backends/imgui_impl_sdlrenderer2.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "imgui/misc/cpp/imgui_stdlib.h"
|
||||
#include "imgui_internal.h"
|
||||
#include "imgui_memory_editor.h"
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/constants.h"
|
||||
#include "app/core/platform/file_dialog.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/code/assembly_editor.h"
|
||||
#include "app/editor/dungeon/dungeon_editor.h"
|
||||
#include "app/editor/graphics/graphics_editor.h"
|
||||
@@ -32,6 +26,12 @@
|
||||
#include "app/gui/input.h"
|
||||
#include "app/gui/style.h"
|
||||
#include "app/rom.h"
|
||||
#include "imgui/backends/imgui_impl_sdl2.h"
|
||||
#include "imgui/backends/imgui_impl_sdlrenderer2.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "imgui/misc/cpp/imgui_stdlib.h"
|
||||
#include "imgui_internal.h"
|
||||
#include "imgui_memory_editor.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
@@ -40,9 +40,9 @@ namespace editor {
|
||||
using namespace ImGui;
|
||||
|
||||
namespace {
|
||||
|
||||
bool BeginCentered(const char *name) {
|
||||
ImGuiIO const &io = GetIO();
|
||||
|
||||
bool BeginCentered(const char* name) {
|
||||
ImGuiIO const& io = GetIO();
|
||||
ImVec2 pos(io.DisplaySize.x * 0.5f, io.DisplaySize.y * 0.5f);
|
||||
SetNextWindowPos(pos, ImGuiCond_Always, ImVec2(0.5f, 0.5f));
|
||||
ImGuiWindowFlags flags =
|
||||
@@ -58,10 +58,7 @@ bool IsEditorActive(Editor* editor, std::vector<Editor*>& active_editors) {
|
||||
|
||||
} // namespace
|
||||
|
||||
void MasterEditor::SetupScreen(std::shared_ptr<SDL_Renderer> renderer,
|
||||
std::string filename) {
|
||||
sdl_renderer_ = renderer;
|
||||
rom()->SetupRenderer(renderer);
|
||||
void MasterEditor::SetupScreen(std::string filename) {
|
||||
if (!filename.empty()) {
|
||||
PRINT_IF_ERROR(rom()->LoadFromFile(filename));
|
||||
}
|
||||
@@ -656,7 +653,6 @@ void MasterEditor::DrawTestMenu() {
|
||||
MenuItem("Run Tests", nullptr, &show_tests_);
|
||||
EndMenu();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void MasterEditor::DrawProjectMenu() {
|
||||
|
||||
@@ -5,10 +5,6 @@
|
||||
|
||||
#include "ImGuiColorTextEdit/TextEditor.h"
|
||||
#include "ImGuiFileDialog/ImGuiFileDialog.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "imgui/misc/cpp/imgui_stdlib.h"
|
||||
#include "imgui_memory_editor.h"
|
||||
|
||||
#include "absl/status/status.h"
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/constants.h"
|
||||
@@ -32,6 +28,9 @@
|
||||
#include "app/gui/icons.h"
|
||||
#include "app/gui/input.h"
|
||||
#include "app/rom.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "imgui/misc/cpp/imgui_stdlib.h"
|
||||
#include "imgui_memory_editor.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
@@ -69,8 +68,7 @@ class MasterEditor : public SharedRom,
|
||||
active_editors_.push_back(&message_editor_);
|
||||
}
|
||||
|
||||
void SetupScreen(std::shared_ptr<SDL_Renderer> renderer,
|
||||
std::string filename = "");
|
||||
void SetupScreen(std::string filename = "");
|
||||
absl::Status Update();
|
||||
|
||||
auto emulator() -> emu::Emulator& { return emulator_; }
|
||||
@@ -111,8 +109,6 @@ class MasterEditor : public SharedRom,
|
||||
absl::Status status_;
|
||||
absl::Status prev_status_;
|
||||
|
||||
std::shared_ptr<SDL_Renderer> sdl_renderer_;
|
||||
|
||||
emu::Emulator emulator_;
|
||||
|
||||
Project current_project_;
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "absl/strings/str_replace.h"
|
||||
#include "absl/strings/str_split.h"
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/utils/editor.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
#include "app/gfx/snes_palette.h"
|
||||
@@ -24,6 +25,8 @@ namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
using ImGui::Begin;
|
||||
using ImGui::BeginChild;
|
||||
using ImGui::BeginTable;
|
||||
@@ -212,7 +215,7 @@ void MessageEditor::DrawCurrentMessage() {
|
||||
|
||||
Text("Message Preview");
|
||||
if (Button("Refresh Bitmap")) {
|
||||
rom()->UpdateBitmap(¤t_font_gfx16_bitmap_);
|
||||
Renderer::GetInstance().UpdateBitmap(¤t_font_gfx16_bitmap_);
|
||||
}
|
||||
gui::BeginPadding(1);
|
||||
BeginChild("CurrentGfxFont", ImVec2(0, 0), true,
|
||||
@@ -260,7 +263,7 @@ absl::Status MessageEditor::Initialize() {
|
||||
font_gfx16_data = gfx::SnesTo8bppSheet(data, /*bpp=*/2);
|
||||
|
||||
// 4bpp
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
128, 128, 8, font_gfx16_data, font_gfx_bitmap_, font_preview_colors_))
|
||||
|
||||
current_font_gfx16_data_.reserve(172 * 4096);
|
||||
@@ -269,7 +272,7 @@ absl::Status MessageEditor::Initialize() {
|
||||
}
|
||||
|
||||
// 8bpp
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
172, 4096, 64, current_font_gfx16_data_, current_font_gfx16_bitmap_,
|
||||
font_preview_colors_))
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/overworld_editor.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
void OverworldEditor::RefreshChildMap(int map_index) {
|
||||
overworld_.mutable_overworld_map(map_index)->LoadAreaGraphics();
|
||||
status_ = overworld_.mutable_overworld_map(map_index)->BuildTileset();
|
||||
@@ -50,7 +53,7 @@ void OverworldEditor::RefreshOverworldMap() {
|
||||
int n = is_large ? 4 : 1;
|
||||
// We do texture updating on the main thread
|
||||
for (int i = 0; i < n; ++i) {
|
||||
rom()->UpdateBitmap(&maps_bmp_[indices[i]]);
|
||||
Renderer::GetInstance().UpdateBitmap(&maps_bmp_[indices[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -106,7 +109,7 @@ absl::Status OverworldEditor::RefreshTile16Blockset() {
|
||||
overworld_.set_current_map(current_map_);
|
||||
palette_ = overworld_.AreaPalette();
|
||||
// Create the tile16 blockset image
|
||||
rom()->UpdateBitmap(&tile16_blockset_bmp_);
|
||||
Renderer::GetInstance().UpdateBitmap(&tile16_blockset_bmp_);
|
||||
RETURN_IF_ERROR(tile16_blockset_bmp_.ApplyPalette(palette_));
|
||||
|
||||
// Copy the tile16 data into individual tiles.
|
||||
@@ -146,7 +149,7 @@ absl::Status OverworldEditor::RefreshTile16Blockset() {
|
||||
// Render the bitmaps of each tile.
|
||||
for (int id = 0; id < 4096; id++) {
|
||||
RETURN_IF_ERROR(tile16_individual_[id].ApplyPalette(palette_));
|
||||
rom()->UpdateBitmap(&tile16_individual_[id]);
|
||||
Renderer::GetInstance().UpdateBitmap(&tile16_individual_[id]);
|
||||
}
|
||||
|
||||
return absl::OkStatus();
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "app/core/common.h"
|
||||
#include "app/core/constants.h"
|
||||
#include "app/core/platform/clipboard.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/graphics/palette_editor.h"
|
||||
#include "app/editor/overworld/entity.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
@@ -29,6 +30,8 @@ namespace yaze {
|
||||
namespace app {
|
||||
namespace editor {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
using ImGui::BeginChild;
|
||||
using ImGui::BeginTabBar;
|
||||
using ImGui::BeginTabItem;
|
||||
@@ -589,7 +592,7 @@ absl::Status OverworldEditor::CheckForCurrentMap() {
|
||||
ImGui::IsMouseClicked(ImGuiMouseButton_Right)) {
|
||||
RefreshOverworldMap();
|
||||
RETURN_IF_ERROR(RefreshTile16Blockset());
|
||||
rom()->UpdateBitmap(&maps_bmp_[current_map_]);
|
||||
Renderer::GetInstance().UpdateBitmap(&maps_bmp_[current_map_]);
|
||||
maps_bmp_[current_map_].set_modified(false);
|
||||
}
|
||||
|
||||
@@ -709,7 +712,7 @@ absl::Status OverworldEditor::DrawAreaGraphics() {
|
||||
overworld_.set_current_map(current_map_);
|
||||
palette_ = overworld_.AreaPalette();
|
||||
gfx::Bitmap bmp;
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
0x80, kOverworldMapSize, 0x08, overworld_.current_graphics(), bmp,
|
||||
palette_));
|
||||
current_graphics_set_[current_map_] = bmp;
|
||||
@@ -981,14 +984,14 @@ absl::Status OverworldEditor::LoadGraphics() {
|
||||
palette_ = overworld_.AreaPalette();
|
||||
|
||||
// Create the area graphics image
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(0x80, kOverworldMapSize, 0x40,
|
||||
overworld_.current_graphics(),
|
||||
current_gfx_bmp_, palette_));
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
0x80, kOverworldMapSize, 0x40, overworld_.current_graphics(),
|
||||
current_gfx_bmp_, palette_));
|
||||
|
||||
// Create the tile16 blockset image
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(0x80, 0x2000, 0x08,
|
||||
overworld_.Tile16Blockset(),
|
||||
tile16_blockset_bmp_, palette_));
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
0x80, 0x2000, 0x08, overworld_.Tile16Blockset(), tile16_blockset_bmp_,
|
||||
palette_));
|
||||
map_blockset_loaded_ = true;
|
||||
|
||||
// Copy the tile16 data into individual tiles.
|
||||
@@ -1016,7 +1019,7 @@ absl::Status OverworldEditor::LoadGraphics() {
|
||||
// Render the bitmaps of each tile.
|
||||
for (int id = 0; id < 4096; id++) {
|
||||
tile16_individual_.emplace_back();
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
0x10, 0x10, 0x80, tile16_individual_data_[id], tile16_individual_[id],
|
||||
palette_));
|
||||
}
|
||||
@@ -1025,7 +1028,7 @@ absl::Status OverworldEditor::LoadGraphics() {
|
||||
for (int i = 0; i < zelda3::overworld::kNumOverworldMaps; ++i) {
|
||||
overworld_.set_current_map(i);
|
||||
auto palette = overworld_.AreaPalette();
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
kOverworldMapSize, kOverworldMapSize, 0x200, overworld_.BitmapData(),
|
||||
maps_bmp_[i], palette));
|
||||
}
|
||||
@@ -1047,7 +1050,7 @@ absl::Status OverworldEditor::LoadSpriteGraphics() {
|
||||
auto spr_gfx = sprite.PreviewGraphics();
|
||||
sprite_previews_[sprite.id()].Create(width, height, depth, spr_gfx);
|
||||
RETURN_IF_ERROR(sprite_previews_[sprite.id()].ApplyPalette(palette_));
|
||||
rom()->RenderBitmap(&(sprite_previews_[sprite.id()]));
|
||||
Renderer::GetInstance().RenderBitmap(&(sprite_previews_[sprite.id()]));
|
||||
}
|
||||
return absl::OkStatus();
|
||||
}
|
||||
@@ -1321,7 +1324,7 @@ absl::Status OverworldEditor::LoadAnimatedMaps() {
|
||||
}
|
||||
RETURN_IF_ERROR(map.BuildBitmap(blockset));
|
||||
|
||||
RETURN_IF_ERROR(rom()->CreateAndRenderBitmap(
|
||||
RETURN_IF_ERROR(Renderer::GetInstance().CreateAndRenderBitmap(
|
||||
kOverworldMapSize, kOverworldMapSize, 0x200, map.bitmap_data(),
|
||||
animated_maps_[world_index], *map.mutable_current_palette()));
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
#include "app/emu/emulator.h"
|
||||
|
||||
#include "imgui/imgui.h"
|
||||
#include "imgui_memory_editor.h"
|
||||
|
||||
#include <cstdint>
|
||||
#include <vector>
|
||||
|
||||
#include "app/core/constants.h"
|
||||
#include "app/core/platform/file_dialog.h"
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/emu/snes.h"
|
||||
#include "app/gui/icons.h"
|
||||
#include "app/gui/input.h"
|
||||
#include "app/gui/zeml.h"
|
||||
#include "app/rom.h"
|
||||
#include "imgui/imgui.h"
|
||||
#include "imgui_memory_editor.h"
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
@@ -52,9 +52,9 @@ using ImGui::Text;
|
||||
void Emulator::Run() {
|
||||
static bool loaded = false;
|
||||
if (!snes_.running() && rom()->is_loaded()) {
|
||||
ppu_texture_ =
|
||||
SDL_CreateTexture(rom()->renderer().get(), SDL_PIXELFORMAT_ARGB8888,
|
||||
SDL_TEXTUREACCESS_STREAMING, 512, 480);
|
||||
ppu_texture_ = SDL_CreateTexture(core::Renderer::GetInstance().renderer(),
|
||||
SDL_PIXELFORMAT_ARGB8888,
|
||||
SDL_TEXTUREACCESS_STREAMING, 512, 480);
|
||||
if (ppu_texture_ == NULL) {
|
||||
printf("Failed to create texture: %s\n", SDL_GetError());
|
||||
return;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include <cmath>
|
||||
#include <string>
|
||||
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/editor/graphics/graphics_editor.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
#include "app/gui/color.h"
|
||||
@@ -15,6 +16,8 @@ namespace yaze {
|
||||
namespace app {
|
||||
namespace gui {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
using ImGui::BeginMenu;
|
||||
using ImGui::BeginPopup;
|
||||
using ImGui::EndMenu;
|
||||
@@ -133,19 +136,19 @@ void Canvas::DrawContextMenu(gfx::Bitmap *bitmap) {
|
||||
if (BeginMenu("Bitmap Format")) {
|
||||
if (MenuItem("Indexed")) {
|
||||
bitmap->Reformat(gfx::BitmapFormat::kIndexed);
|
||||
rom()->UpdateBitmap(bitmap);
|
||||
Renderer::GetInstance().UpdateBitmap(bitmap);
|
||||
}
|
||||
if (MenuItem("2BPP")) {
|
||||
bitmap->Reformat(gfx::BitmapFormat::k2bpp);
|
||||
rom()->UpdateBitmap(bitmap);
|
||||
Renderer::GetInstance().UpdateBitmap(bitmap);
|
||||
}
|
||||
if (MenuItem("4BPP")) {
|
||||
bitmap->Reformat(gfx::BitmapFormat::k4bpp);
|
||||
rom()->UpdateBitmap(bitmap);
|
||||
Renderer::GetInstance().UpdateBitmap(bitmap);
|
||||
}
|
||||
if (MenuItem("8BPP")) {
|
||||
bitmap->Reformat(gfx::BitmapFormat::k8bpp);
|
||||
rom()->UpdateBitmap(bitmap);
|
||||
Renderer::GetInstance().UpdateBitmap(bitmap);
|
||||
}
|
||||
EndMenu();
|
||||
}
|
||||
@@ -170,7 +173,7 @@ void Canvas::DrawContextMenu(gfx::Bitmap *bitmap) {
|
||||
if (refresh_graphics_) {
|
||||
auto status = bitmap->ApplyPaletteWithTransparent(
|
||||
*palette, edit_palette_sub_index_);
|
||||
rom()->UpdateBitmap(bitmap);
|
||||
Renderer::GetInstance().UpdateBitmap(bitmap);
|
||||
refresh_graphics_ = false;
|
||||
}
|
||||
ImGui::EndChild();
|
||||
|
||||
@@ -20,15 +20,17 @@
|
||||
#include "absl/strings/str_cat.h" // for StrCat
|
||||
#include "absl/strings/string_view.h" // for string_view, operator==
|
||||
#include "app/core/constants.h" // for Bytes, ASSIGN_OR_RETURN
|
||||
#include "app/gfx/bitmap.h" // for Bitmap, BitmapTable
|
||||
#include "app/gfx/compression.h" // for DecompressV2
|
||||
#include "app/gfx/snes_color.h" // for SNESColor
|
||||
#include "app/gfx/snes_palette.h" // for PaletteGroup
|
||||
#include "app/gfx/snes_tile.h" // for SnesTo8bppSheet
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/gfx/bitmap.h" // for Bitmap, BitmapTable
|
||||
#include "app/gfx/compression.h" // for DecompressV2
|
||||
#include "app/gfx/snes_color.h" // for SNESColor
|
||||
#include "app/gfx/snes_palette.h" // for PaletteGroup
|
||||
#include "app/gfx/snes_tile.h" // for SnesTo8bppSheet
|
||||
|
||||
namespace yaze {
|
||||
namespace app {
|
||||
|
||||
using core::Renderer;
|
||||
constexpr int Uncompressed3BPPSize = 0x0600;
|
||||
constexpr int kEntranceGfxGroup = 0x5D97;
|
||||
|
||||
@@ -74,7 +76,7 @@ absl::Status Rom::LoadLinkGraphics() {
|
||||
core::kTilesheetDepth, link_sheet_8bpp);
|
||||
RETURN_IF_ERROR(
|
||||
link_graphics_[i].ApplyPaletteWithTransparent(link_palette_, 0));
|
||||
RenderBitmap(&link_graphics_[i]);
|
||||
Renderer::GetInstance().RenderBitmap(&link_graphics_[i]);
|
||||
}
|
||||
|
||||
return absl::OkStatus();
|
||||
@@ -104,7 +106,7 @@ absl::Status Rom::LoadAllGraphicsData() {
|
||||
auto converted_sheet = gfx::SnesTo8bppSheet(sheet, 3);
|
||||
graphics_sheets_[i].Create(core::kTilesheetWidth, core::kTilesheetHeight,
|
||||
core::kTilesheetDepth, converted_sheet);
|
||||
graphics_sheets_[i].CreateTexture(renderer_);
|
||||
graphics_sheets_[i].CreateTexture(Renderer::GetInstance().renderer());
|
||||
|
||||
if (flags()->kUseBitmapManager) {
|
||||
graphics_manager_.LoadBitmap(i, converted_sheet, core::kTilesheetWidth,
|
||||
@@ -118,12 +120,12 @@ absl::Status Rom::LoadAllGraphicsData() {
|
||||
RETURN_IF_ERROR(graphics_manager_[i].ApplyPaletteWithTransparent(
|
||||
palette_groups_.dungeon_main[0], 0));
|
||||
}
|
||||
graphics_manager_[i].CreateTexture(renderer_);
|
||||
graphics_manager_[i].CreateTexture(Renderer::GetInstance().renderer());
|
||||
}
|
||||
graphics_bin_[i] =
|
||||
gfx::Bitmap(core::kTilesheetWidth, core::kTilesheetHeight,
|
||||
core::kTilesheetDepth, converted_sheet);
|
||||
graphics_bin_.at(i).CreateTexture(renderer_);
|
||||
graphics_bin_.at(i).CreateTexture(Renderer::GetInstance().renderer());
|
||||
|
||||
if (flags()->kUseBitmapManager) {
|
||||
for (int j = 0; j < graphics_manager_[i].size(); ++j) {
|
||||
|
||||
@@ -445,7 +445,6 @@ class Rom : public core::ExperimentFlags {
|
||||
auto filename() const { return filename_; }
|
||||
auto is_loaded() const { return is_loaded_; }
|
||||
auto version() const { return version_; }
|
||||
auto renderer() const { return renderer_; }
|
||||
|
||||
uint8_t& operator[](int i) {
|
||||
if (i > size_) {
|
||||
@@ -465,41 +464,6 @@ class Rom : public core::ExperimentFlags {
|
||||
}
|
||||
const uint8_t* operator&() { return rom_data_.data(); }
|
||||
|
||||
void SetupRenderer(std::shared_ptr<SDL_Renderer> renderer) {
|
||||
renderer_ = renderer;
|
||||
}
|
||||
|
||||
absl::Status CreateAndRenderBitmap(int width, int height, int depth,
|
||||
const Bytes& data, gfx::Bitmap& bitmap,
|
||||
gfx::SnesPalette& palette) {
|
||||
bitmap.Create(width, height, depth, data);
|
||||
RETURN_IF_ERROR(bitmap.ApplyPalette(palette));
|
||||
RenderBitmap(&bitmap);
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Used to render a bitmap to the screen.
|
||||
*/
|
||||
void RenderBitmap(gfx::Bitmap* bitmap) {
|
||||
if (flags()->kLoadTexturesAsStreaming) {
|
||||
bitmap->CreateTexture(renderer_.get());
|
||||
} else {
|
||||
bitmap->CreateTexture(renderer_);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Used to update a bitmap on the screen.
|
||||
*/
|
||||
void UpdateBitmap(gfx::Bitmap* bitmap, bool use_sdl_update = false) {
|
||||
if (flags()->kLoadTexturesAsStreaming) {
|
||||
bitmap->UpdateTexture(renderer_.get(), use_sdl_update);
|
||||
} else {
|
||||
bitmap->UpdateTexture(renderer_);
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::vector<uint8_t>> main_blockset_ids;
|
||||
std::vector<std::vector<uint8_t>> room_blockset_ids;
|
||||
std::vector<std::vector<uint8_t>> spriteset_ids;
|
||||
@@ -579,8 +543,6 @@ class Rom : public core::ExperimentFlags {
|
||||
gfx::SnesPalette link_palette_;
|
||||
gfx::PaletteGroupMap palette_groups_;
|
||||
core::ResourceLabelManager resource_label_manager_;
|
||||
|
||||
std::shared_ptr<SDL_Renderer> renderer_;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#include "inventory.h"
|
||||
|
||||
#include "app/core/platform/renderer.h"
|
||||
#include "app/gfx/bitmap.h"
|
||||
#include "app/gfx/snes_tile.h"
|
||||
#include "app/gui/canvas.h"
|
||||
@@ -10,6 +11,8 @@ namespace app {
|
||||
namespace zelda3 {
|
||||
namespace screen {
|
||||
|
||||
using core::Renderer;
|
||||
|
||||
absl::Status Inventory::Create() {
|
||||
data_.reserve(256 * 256);
|
||||
for (int i = 0; i < 256 * 256; i++) {
|
||||
@@ -65,7 +68,7 @@ absl::Status Inventory::Create() {
|
||||
|
||||
bitmap_.Create(256, 256, 8, data_);
|
||||
RETURN_IF_ERROR(bitmap_.ApplyPalette(palette_));
|
||||
rom()->RenderBitmap(&bitmap_);
|
||||
Renderer::GetInstance().RenderBitmap(&bitmap_);
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
@@ -84,7 +87,7 @@ absl::Status Inventory::BuildTileset() {
|
||||
auto hud_pal_group = rom()->palette_group().hud;
|
||||
palette_ = hud_pal_group[0];
|
||||
RETURN_IF_ERROR(tilesheets_bmp_.ApplyPalette(palette_))
|
||||
rom()->RenderBitmap(&tilesheets_bmp_);
|
||||
Renderer::GetInstance().RenderBitmap(&tilesheets_bmp_);
|
||||
return absl::OkStatus();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user