framework
parent
b3c44050da
commit
3918ef5bd5
88
src/main.cpp
88
src/main.cpp
|
@ -31,11 +31,13 @@
|
|||
blt::gfx::matrix_state_manager global_matrices;
|
||||
blt::gfx::resource_manager resources;
|
||||
blt::gfx::batch_renderer_2d renderer_2d(resources, global_matrices);
|
||||
blt::gfx::first_person_camera camera;
|
||||
blt::gfx::first_person_camera_2d camera;
|
||||
|
||||
std::array<char, 100> buffer;
|
||||
size_t last_time_ran = 0;
|
||||
|
||||
bool ready = false;
|
||||
|
||||
struct everything_t
|
||||
{
|
||||
float motorTargetAngle = 0;
|
||||
|
@ -53,31 +55,74 @@ struct everything_t
|
|||
blt::vec3f aaWorld;
|
||||
};
|
||||
|
||||
struct needed_t
|
||||
{
|
||||
float yaw = 0;
|
||||
float distance = 0;
|
||||
blt::vec2f position;
|
||||
};
|
||||
|
||||
blt::vec2 current_position;
|
||||
|
||||
void check_for_request()
|
||||
struct boy_trust_t
|
||||
{
|
||||
std::vector<blt::vec2f> point_cloud;
|
||||
std::vector<blt::gfx::line2d_t> lines;
|
||||
|
||||
void consolidate(blt::u64 run_time)
|
||||
{
|
||||
|
||||
}
|
||||
} point_data;
|
||||
|
||||
bool check_for_request(needed_t& data)
|
||||
{
|
||||
if (!ready)
|
||||
return false;
|
||||
const auto cur_time = blt::system::getCurrentTimeMilliseconds();
|
||||
if (cur_time - last_time_ran > 250)
|
||||
if (cur_time - last_time_ran > 100)
|
||||
{
|
||||
last_time_ran = cur_time;
|
||||
const std::string_view bad_code{buffer.data()};
|
||||
if (bad_code.empty())
|
||||
return false;
|
||||
const std::string this_is_terrible{bad_code};
|
||||
const auto result = blt::requests::send_get_request("http://" + this_is_terrible + "/get_stuff_bin");
|
||||
if (result.size() != sizeof(everything_t))
|
||||
if (result.size() != sizeof(needed_t))
|
||||
{
|
||||
BLT_WARN("Size of string from ESP32 ({}) doesn't match the size of the struct ({})", result.size(), sizeof(everything_t));
|
||||
BLT_WARN("Got string {}", result);
|
||||
BLT_WARN("Size of string from ESP32 ({}) doesn't match the size of the struct ({})", result.size(), sizeof(needed_t));
|
||||
return false;
|
||||
}
|
||||
std::memcpy(&data, result.data(), sizeof(needed_t));
|
||||
data.position *= 25.4;
|
||||
// blt::mem::fromBytes<true>(result.data(), data.yaw);
|
||||
// blt::mem::fromBytes<true>(result.data() + sizeof(float), data.distance);
|
||||
// blt::mem::fromBytes<true>(result.data() + sizeof(float) * 2, data.position);
|
||||
// BLT_TRACE("STRING {}", result);
|
||||
// BLT_TRACE("GOT {} {} {} {}", data.yaw, data.distance, data.position.x(), data.position.y());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void handle_data(needed_t& data)
|
||||
{
|
||||
if (data.distance > 8000)
|
||||
return;
|
||||
}
|
||||
everything_t data;
|
||||
std::memcpy(&data, result.data(), sizeof(everything_t));
|
||||
}
|
||||
blt::vec2f current_position;
|
||||
current_position[0] = data.position[0] + data.distance * std::cos(data.yaw + static_cast<float>(blt::PI/2.0f));
|
||||
current_position[1] = data.position[1] + data.distance * std::sin(data.yaw + static_cast<float>(blt::PI/2.0f));
|
||||
point_data.point_cloud.push_back(current_position);
|
||||
}
|
||||
|
||||
void init(const blt::gfx::window_data&)
|
||||
{
|
||||
using namespace blt::gfx;
|
||||
|
||||
std::memset(buffer.data(), 0, buffer.size());
|
||||
std::strcpy(buffer.data(), "192.168.5.11");
|
||||
|
||||
global_matrices.create_internals();
|
||||
resources.load_resources();
|
||||
renderer_2d.create();
|
||||
|
@ -91,14 +136,39 @@ void update(const blt::gfx::window_data& data)
|
|||
camera.update_view(global_matrices);
|
||||
global_matrices.update();
|
||||
|
||||
static float point_size = 25;
|
||||
|
||||
ImGui::SetNextWindowSize(ImVec2(300, static_cast<float>(data.height)));
|
||||
ImGui::SetNextWindowPos(ImVec2(0, 0));
|
||||
if (ImGui::Begin("Settings", nullptr, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize))
|
||||
{
|
||||
ImGui::InputText("IP Address", buffer.data(), buffer.size());
|
||||
ImGui::Checkbox("Run", &ready);
|
||||
ImGui::InputFloat("Point Size", &point_size);
|
||||
|
||||
if (ImGui::CollapsingHeader("Point Consolidation"))
|
||||
{
|
||||
static bool run_point = false;
|
||||
static int run_time = 100;
|
||||
ImGui::Checkbox("Run", &run_point);
|
||||
ImGui::InputInt("Run Time", &run_time);
|
||||
if (run_point)
|
||||
point_data.consolidate(static_cast<blt::u64>(run_time));
|
||||
}
|
||||
}
|
||||
ImGui::End();
|
||||
|
||||
needed_t robot_data;
|
||||
if (check_for_request(robot_data))
|
||||
{
|
||||
handle_data(robot_data);
|
||||
}
|
||||
|
||||
for (const auto& point_cloud : point_data.point_cloud)
|
||||
renderer_2d.drawPoint(blt::gfx::point2d_t{point_cloud, point_size}, blt::make_color(0, 1, 0), 1);
|
||||
for (const auto& line : point_data.lines)
|
||||
renderer_2d.drawLine(line, blt::make_color(1, 0, 0), 0);
|
||||
|
||||
renderer_2d.render(data.width, data.height);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue