mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-15 23:02:34 +02:00
* Broadphase refactor * Stuff * Working * TODO * Changes * Which fucking madman came up with this shit * Known gud state * Kinda shitcodey but it works so fuck it doin it live * Shuttle jankiness * Refactor entitylookups to be 30% more based * Refactor gucci * Done? * Fix most tests * nothing suss * Vera single-handedly saving shuttles * fex * Fix renderingtreecomp for relativity * Fix IEntityLookup * Fixes * Testing jank please revert some of it before merging * Fix the remaining bugs * Fix crash * Fix grid physics initialization * Shuttle collisions working * Fixes * Fixes * Velocity on transfers * Velocity on parent change * Fixes * world angular velocity too * Slightly faster map velocities * showbb revert * Sketch grids kinda workin * Fix PVS contact crash * Cleanup gridfixture updates 0.1% * Grid fixtures * AAAAAAAAAAAAAAA * a * termp * Fixes * Test reversion reversion? * Tests * Fix Equals * Slight box2i cleanup * Better initializer * Fix merge issues * Shuttles go BRRT * Remove MoveProxy from DynamicTreeBroadphase * Optimise a shit tonne * Approx * fix showbb * clean * Slightly more optimised * My almonds are activating * Contact transform caching * Avoid duplicates * Typo * Logger * Jitter 1% better * Okay shit maybe that's not it. * Contact fixes * Move check thingy up front * Revert some jank caching * Contact filtering * Fix master merge * Test fixes * Re-fix MapLoaderTest * Use proxies instead * uhh wtf? * Woops * Fix collisions * Fix grid fixture generation * Fix deserializing * Tile window fix * Cleanup broadphase * Bit more cleanup Co-authored-by: metalgearsloth <metalgearsloth@gmail.com>
114 lines
3.4 KiB
C#
114 lines
3.4 KiB
C#
using System.Collections.Generic;
|
|
using System.Runtime.CompilerServices;
|
|
using Robust.Shared.Maths;
|
|
using Robust.Shared.Physics.Dynamics;
|
|
|
|
namespace Robust.Shared.Physics {
|
|
|
|
public interface IBroadPhase
|
|
{
|
|
Box2 GetFatAabb(DynamicTree.Proxy proxy);
|
|
|
|
DynamicTree.Proxy AddProxy(ref FixtureProxy proxy);
|
|
|
|
void MoveProxy(DynamicTree.Proxy proxyId, in Box2 aabb, Vector2 displacement);
|
|
|
|
void RemoveProxy(DynamicTree.Proxy proxy);
|
|
|
|
void QueryAabb<TState>(
|
|
ref TState state,
|
|
DynamicTree<FixtureProxy>.QueryCallbackDelegate<TState> callback,
|
|
Box2 aabb,
|
|
bool approx = false);
|
|
|
|
IEnumerable<FixtureProxy> QueryAabb(Box2 aabb, bool approx = false);
|
|
|
|
IEnumerable<FixtureProxy> QueryAabb(List<FixtureProxy> proxies, Box2 aabb, bool approx = false);
|
|
|
|
void QueryPoint(DynamicTree<FixtureProxy>.QueryCallbackDelegate callback,
|
|
Vector2 point,
|
|
bool approx = false);
|
|
|
|
void QueryPoint<TState>(
|
|
ref TState state,
|
|
DynamicTree<FixtureProxy>.QueryCallbackDelegate<TState> callback,
|
|
Vector2 point,
|
|
bool approx = false);
|
|
|
|
IEnumerable<FixtureProxy> QueryPoint(Vector2 point, bool approx = false);
|
|
|
|
void QueryRay(
|
|
DynamicTree<FixtureProxy>.RayQueryCallbackDelegate callback,
|
|
in Ray ray,
|
|
bool approx = false);
|
|
|
|
void QueryRay<TState>(
|
|
ref TState state,
|
|
DynamicTree<FixtureProxy>.RayQueryCallbackDelegate<TState> callback,
|
|
in Ray ray,
|
|
bool approx = false);
|
|
}
|
|
|
|
public interface IBroadPhase<T> : ICollection<T> where T : notnull {
|
|
|
|
int Capacity { get; }
|
|
|
|
int Height {
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
get;
|
|
}
|
|
|
|
int MaxBalance {
|
|
[MethodImpl(MethodImplOptions.AggressiveOptimization | MethodImplOptions.NoInlining)]
|
|
get;
|
|
}
|
|
|
|
float AreaRatio {
|
|
[MethodImpl(MethodImplOptions.AggressiveOptimization | MethodImplOptions.NoInlining)]
|
|
get;
|
|
}
|
|
|
|
bool Add(in T item, Box2? newAABB = null);
|
|
|
|
bool Remove(in T item);
|
|
|
|
bool Update(in T item, Box2? newAABB = null);
|
|
|
|
void QueryAabb(
|
|
DynamicTree<T>.QueryCallbackDelegate callback,
|
|
Box2 aabb,
|
|
bool approx = false);
|
|
|
|
void QueryAabb<TState>(
|
|
ref TState state,
|
|
DynamicTree<T>.QueryCallbackDelegate<TState> callback,
|
|
Box2 aabb,
|
|
bool approx = false);
|
|
|
|
IEnumerable<T> QueryAabb(Box2 aabb, bool approx = false);
|
|
|
|
void QueryPoint(DynamicTree<T>.QueryCallbackDelegate callback,
|
|
Vector2 point,
|
|
bool approx = false);
|
|
|
|
void QueryPoint<TState>(
|
|
ref TState state,
|
|
DynamicTree<T>.QueryCallbackDelegate<TState> callback,
|
|
Vector2 point,
|
|
bool approx = false);
|
|
|
|
IEnumerable<T> QueryPoint(Vector2 point, bool approx = false);
|
|
|
|
void QueryRay(
|
|
DynamicTree<T>.RayQueryCallbackDelegate callback,
|
|
in Ray ray,
|
|
bool approx = false);
|
|
|
|
void QueryRay<TState>(
|
|
ref TState state,
|
|
DynamicTree<T>.RayQueryCallbackDelegate<TState> callback,
|
|
in Ray ray,
|
|
bool approx = false);
|
|
}
|
|
}
|