/
EugenyCh7
/
Puppet2D.Net
Обзор
Документация
Войти
/
EugenyCh7
/
Puppet2D.Net
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Puppet2D.Engine/Components/Colliders/BoxCollider.cs
68 строк
2 KB
Eugeny Chekmarev
++ Colliders
25 авг 2025, 11:35
25 авг 2025, 11:35
c916015
Код
Авторство
О чём код?
using Puppet2D.Engine.Geometry; using Puppet2D.Graphics; using Puppet2D.System; namespace Puppet2D.Engine.Components.Colliders { public class BoxCollider : Collider { public float Height { get; set; } public float Width { get; set; } public Polygon GetPolygon() { return new Polygon(B2.ShapeGetPolygon(ShapeId.Value)); } public override BoxCollider Clone() { return new BoxCollider { BodyShape = BodyShape.Clone(), Angle = Angle, Width = Width, Height = Height }; } public override RectangleShape GetShape() { Vector2 size = new Vector2(Width, Height); return new RectangleShape(size) { Origin = size * 0.5f, Rotation = Angle * degreesInRadians }; } public override RectangleShape GetBox() { Vector2 size = new Vector2(Width, Height); return new RectangleShape(size) { Origin = size * 0.5f, Rotation = Angle * degreesInRadians }; } public override MassData ComputeMassData(float density) { unsafe { B2.Polygon polygon = Cast(); return new MassData(B2.ComputePolygonMass(&polygon, density)); } } internal B2.Polygon Cast() { B2.Polygon polygon = B2.MakeBox(Width * 0.5f, Height * 0.5f); for (int i = 0; i < polygon.count; i++) { polygon.vertices[i] = polygon.vertices[i].Rotate(Angle); polygon.normals[i] = polygon.normals[i].Rotate(Angle); } return polygon; } } }