Commit 547dbe3
committed
[Model Element] Update entity transform if the model size changes with stagemode=orbit
https://bugs.webkit.org/show_bug.cgi?id=294162
rdar://151031284
Reviewed by Mike Wyrzykowski.
When stagemode is set to orbit, we ensure that the model's transform is
updated such that it can be rotated within the portal (fit according to
its bounding sphere). If the model size changes afterwards, we need to
update its transform based on the new size following the stagemode=orbit
fitting rules.
To fix this, when ModelProcessModelPlayerProxy is notified of a size change
and stagemode is orbit, set a flag to remember to recompute the model
transform for orbit fit after frame layout.
* LayoutTests/model-element/model-element-update-transform-after-resize-expected.txt: Added.
* LayoutTests/model-element/model-element-update-transform-after-resize.html: Added.
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.h:
* Source/WebKit/ModelProcess/cocoa/ModelProcessModelPlayerProxy.mm:
(WebKit::ModelProcessModelPlayerProxy::updateTransformAfterLayout):
If m_transformNeedsUpdateAfterNextLayout is set, call updateForCurrentStageMode()
to handle the transform update instead.
(WebKit::ModelProcessModelPlayerProxy::sizeDidChange):
Set m_transformNeedsUpdateAfterNextLayout to true if the model size changes
and stagemode is set to orbit.
(WebKit::ModelProcessModelPlayerProxy::updateForCurrentStageMode):
Logic moved from setStageMode().
(WebKit::ModelProcessModelPlayerProxy::setStageMode):
* Source/WebKit/ModelProcess/cocoa/WKModelProcessModelLayer.mm:
(-[WKModelProcessModelLayer layoutSublayers]):
Call ModelProcessModelPlayerProxy::updateTransformAfterLayout()
after frame layout.
Canonical link: https://commits.webkit.org/296026@main1 parent 2013017 commit 547dbe3
5 files changed
Lines changed: 105 additions & 10 deletions
File tree
- LayoutTests/model-element
- Source/WebKit/ModelProcess/cocoa
Lines changed: 4 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
Lines changed: 68 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
Lines changed: 4 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
82 | 82 | | |
83 | 83 | | |
84 | 84 | | |
85 | | - | |
| 85 | + | |
86 | 86 | | |
87 | 87 | | |
88 | 88 | | |
| |||
151 | 151 | | |
152 | 152 | | |
153 | 153 | | |
| 154 | + | |
154 | 155 | | |
155 | 156 | | |
156 | 157 | | |
157 | 158 | | |
158 | 159 | | |
159 | 160 | | |
| 161 | + | |
160 | 162 | | |
161 | 163 | | |
162 | 164 | | |
| |||
178 | 180 | | |
179 | 181 | | |
180 | 182 | | |
| 183 | + | |
181 | 184 | | |
182 | 185 | | |
183 | 186 | | |
| |||
Lines changed: 28 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
476 | 476 | | |
477 | 477 | | |
478 | 478 | | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
479 | 490 | | |
480 | 491 | | |
481 | 492 | | |
| |||
617 | 628 | | |
618 | 629 | | |
619 | 630 | | |
620 | | - | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
621 | 636 | | |
622 | 637 | | |
623 | 638 | | |
| |||
885 | 900 | | |
886 | 901 | | |
887 | 902 | | |
888 | | - | |
| 903 | + | |
889 | 904 | | |
890 | | - | |
891 | | - | |
892 | | - | |
893 | | - | |
894 | | - | |
895 | | - | |
| 905 | + | |
896 | 906 | | |
897 | 907 | | |
898 | 908 | | |
| |||
901 | 911 | | |
902 | 912 | | |
903 | 913 | | |
| 914 | + | |
| 915 | + | |
| 916 | + | |
| 917 | + | |
| 918 | + | |
| 919 | + | |
| 920 | + | |
| 921 | + | |
| 922 | + | |
| 923 | + | |
904 | 924 | | |
905 | 925 | | |
906 | 926 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
38 | 38 | | |
39 | 39 | | |
40 | 40 | | |
41 | | - | |
| 41 | + | |
42 | 42 | | |
43 | 43 | | |
44 | 44 | | |
| |||
0 commit comments