Rework bounding box bracket projection and implement ITr2BoundingBox on more space objects#9
Rework bounding box bracket projection and implement ITr2BoundingBox on more space objects#9Ikreb1 wants to merge 18 commits into
Conversation
# Conflicts: # trinity/Eve/EveEffectRoot2.cpp # trinity/Eve/EvePlanet_Blue.cpp # trinity/Eve/EveTransform.h # trinity/Interior/Tr2InteriorPlaceable.cpp # trinity/Tr2ProjectBoundingBoxBracket.cpp # trinity/Tr2ProjectBoundingBoxBracket_Blue.cpp
There was a problem hiding this comment.
Pull request overview
This PR improves bracket projection robustness by replacing the previous screen-space clamping approach with a clip-space based bounding-box projection (including near-plane handling), and expands bounding-box support across several Eve/Interior objects via ITr2BoundingBox so they can participate in bracket-style tracking.
Changes:
- Reworked
Tr2ProjectBoundingBoxBracketprojection to compute a projected rect from clip-space points and added projection state outputs + an update callback. - Implemented/exposed
ITr2BoundingBoxon additional scene objects (EveTransform,EvePlanet,EveEffectRoot2) and surfaced the interface to Blue. - Adjusted
Tr2InteriorPlaceable::IsBoundingBoxReady()to account for modified bounds.
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| trinity/Tr2ProjectBoundingBoxBracket.h | Adds projection state flags and a Blue callback; adds UpdateBracket() helper. |
| trinity/Tr2ProjectBoundingBoxBracket.cpp | Replaces projection logic with clip-space projection + near-plane intersection handling; centralizes bracket updates and invokes callback. |
| trinity/Tr2ProjectBoundingBoxBracket_Blue.cpp | Updates Blue exposure, deprecates screenMargin, exposes new projection state flags and callback. |
| trinity/Interior/Tr2InteriorPlaceable.cpp | Treats locally-modified bounding boxes as “ready” even if resources aren’t. |
| trinity/Eve/EveTransform.h | Makes EveTransform implement ITr2BoundingBox; fixes local-to-world transform to use m_worldTransform. |
| trinity/Eve/EveTransform.cpp | Implements local/world bounding box aggregation (including children) and readiness checks. |
| trinity/Eve/EveTransform_Blue.cpp | Exposes ITr2BoundingBox to Blue for EveTransform. |
| trinity/Eve/EveRootTransform_Blue.cpp | Exposes ITr2BoundingBox to Blue for EveRootTransform (via inheritance). |
| trinity/Eve/EvePlanet.h | Declares ITr2BoundingBox support for EvePlanet. |
| trinity/Eve/EvePlanet.cpp | Implements GetWorldBoundingBox()/IsBoundingBoxReady() for EvePlanet. |
| trinity/Eve/EvePlanet_Blue.cpp | Exposes ITr2BoundingBox to Blue for EvePlanet. |
| trinity/Eve/EveEffectRoot2.h | Declares ITr2BoundingBox support for EveEffectRoot2. |
| trinity/Eve/EveEffectRoot2.cpp | Implements world bounding box aggregation using root + child bounding spheres with validation. |
| trinity/Eve/EveEffectRoot2_Blue.cpp | Exposes ITr2BoundingBox to Blue for EveEffectRoot2. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Cpp-linter Review
Used clang-format v20.1.2
Click here for the full clang-format patch
diff --git a/trinity/Eve/EveEffectRoot2.h b/trinity/Eve/EveEffectRoot2.h
index d9c6003..ff0cd82 100644
--- a/trinity/Eve/EveEffectRoot2.h
+++ b/trinity/Eve/EveEffectRoot2.h
@@ -95 +95 @@ public:
- bool GetWorldBoundingBox( Vector3& min, Vector3& max ) const override;
+ bool GetWorldBoundingBox( Vector3 & min, Vector3 & max ) const override;
Have any feedback or feature suggestions? Share it here.
|
Anonymous CCP Employee seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
…e function in ITr2BoundingBox
There was a problem hiding this comment.
Cpp-linter Review
Used clang-format v20.1.2
Click here for the full clang-format patch
diff --git a/trinity/Eve/EveEffectRoot2.h b/trinity/Eve/EveEffectRoot2.h
index d9c6003..ff0cd82 100644
--- a/trinity/Eve/EveEffectRoot2.h
+++ b/trinity/Eve/EveEffectRoot2.h
@@ -95 +95 @@ public:
- bool GetWorldBoundingBox( Vector3& min, Vector3& max ) const override;
+ bool GetWorldBoundingBox( Vector3 & min, Vector3 & max ) const override;
Have any feedback or feature suggestions? Share it here.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Cpp-linter Review
Used clang-format v20.1.2
Click here for the full clang-format patch
diff --git a/trinity/TriMath.cpp b/trinity/TriMath.cpp
index 5fe9a31..058f9ae 100644
--- a/trinity/TriMath.cpp
+++ b/trinity/TriMath.cpp
@@ -898,2 +898 @@ bool IsFinite( const Vector4& vec )
- return IsFinite( vec.x ) && IsFinite( vec.y )
- && IsFinite( vec.z ) && IsFinite( vec.w );
+ return IsFinite( vec.x ) && IsFinite( vec.y ) && IsFinite( vec.z ) && IsFinite( vec.w );
Have any feedback or feature suggestions? Share it here.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Bounding-box bracket projection rework
https://fenriscreations.atlassian.net/browse/PLAT-11557
Summary
Rewrites
Tr2ProjectBoundingBoxBracketfrom screen-space clamping to clip-space projection with proper near-plane clipping, fixing brackets vanishing when the tracked object's bounds cross the near plane. Also:extendsOffscreen,coversViewport,containsCamera), reusing theEveProjectBracketconvention).ITr2BoundingBoxonEveTransform,EvePlanet,EveEffectRoot2(Blue-exposed, plusEveRootTransform) so more scene objects can be bracket-tracked.Tr2InteriorPlaceable::IsBoundingBoxReady()accounts for modified bounds.EveTransform::GetLocalToWorldTransformnow returnsm_worldTransforminstead of identity.Backwards incompatibility with EVE Online?
This might change the behavior in eve but I think not since my changes are behind flags and here is the only instance it is used:
eve/client/script/ui/login/charcreation_new/.../dollSelectionContainer.py: the character-creation doll-selection screen subclasses it withdefault_screenMargin = 10.0.EDIT: eve apparently added a second use case and I need to review if my changes affect that one