/
nantonenko95
/
raylib-introduction
Обзор
Документация
Войти
/
nantonenko95
/
raylib-introduction
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/colission.cpp
72 строки
2 KB
Nikita
Done
10 ноя 2024, 17:12
10 ноя 2024, 17:12
415bde2
Код
Авторство
О чём код?
#include "colission.h" #include "raylib.h" #include <iostream> #include <stdexcept> void Collider::draw() { if (!isShow) return; switch (type_) { case Type::RECTANGLE: DrawRectangleLinesEx(rectCollider(), 3, RED); break; case Type::CIRCLE: DrawCircleLinesV(position.toVector2(), radius, RED); break; } } void Collider::update() { } Collider Collider::newRectCollider(float width, float height) { Collider col = Collider(); col.type_ = Type::RECTANGLE; col.rectSize = {width, height}; return col; } Collider Collider::newCircleCollider(float radius) { auto col = Collider(); col.type_ = Type::CIRCLE; col.radius = radius; return col; } bool Collider::isCollideWith(const Collider &other) const { if (!isEnabled || !other.isEnabled) return false; if (isRect() && other.isRect()) { return CheckCollisionRecs(rectCollider(), other.rectCollider()); } else if (isCircle() && other.isCircle()) { return CheckCollisionCircles(position.toVector2(), radius, other.position.toVector2(), other.radius); } else if (isRect() && other.isCircle()) { return CheckCollisionCircleRec(other.position.toVector2(), other.radius, rectCollider()); } else if (isCircle() && other.isRect()) { return CheckCollisionCircleRec(position.toVector2(), radius, other.rectCollider()); } else throw std::logic_error("Unsuported combination"); } Rectangle Collider::rectCollider() const { auto topLeft = position - rectSize / 2; return {topLeft.x, topLeft.y, rectSize.x, rectSize.y}; }