@@ -229,6 +229,7 @@ struct BrowserWorld::State {
229229 int ParentCount (const WidgetPtr& aWidget) const ;
230230 float ComputeNormalizedZ (const Widget& aWidget) const ;
231231 void SortWidgets ();
232+ void UpdateWidgetCylinder (const WidgetPtr& aWidget, const float aDensity);
232233};
233234
234235void
@@ -657,9 +658,27 @@ BrowserWorld::State::SortWidgets() {
657658 // Depth sort
658659 return da->second .second < db->second .second ;
659660 });
661+ }
660662
661-
662-
663+ void
664+ BrowserWorld::State::UpdateWidgetCylinder (const WidgetPtr& aWidget, const float aDensity) {
665+ const bool useCylinder = aDensity > 0 && aWidget->GetPlacement ()->cylinder ;
666+ if (useCylinder && aWidget->GetCylinder ()) {
667+ aWidget->SetCylinderDensity (aDensity);
668+ } else if (useCylinder && !aWidget->GetCylinder ()) {
669+ VRLayerSurfacePtr moveLayer = aWidget->GetLayer ();
670+ VRLayerCylinderPtr layer = device->CreateLayerCylinder (moveLayer);
671+ CylinderPtr cylinder = Cylinder::Create (create, layer);
672+ aWidget->SetCylinder (cylinder);
673+ aWidget->SetCylinderDensity (aDensity);
674+ } else if (aWidget->GetCylinder ()) {
675+ float w = 0 , h = 0 ;
676+ aWidget->GetWorldSize (w, h);
677+ VRLayerSurfacePtr moveLayer = aWidget->GetLayer ();
678+ VRLayerQuadPtr layer = device->CreateLayerQuad (moveLayer);
679+ QuadPtr quad = Quad::Create (create, w, h, layer);
680+ aWidget->SetQuad (quad);
681+ }
663682}
664683
665684static BrowserWorldPtr sWorldInstance ;
@@ -1037,7 +1056,7 @@ BrowserWorld::UpdateWidget(int32_t aHandle, const WidgetPlacementPtr& aPlacement
10371056 }
10381057
10391058 widget->SetPlacement (aPlacement);
1040- widget-> SetCylinderDensity ( m.cylinderDensity );
1059+ m. UpdateWidgetCylinder (widget, m.cylinderDensity );
10411060 widget->ToggleWidget (aPlacement->visible );
10421061 widget->SetSurfaceTextureSize (aPlacement->GetTextureWidth (), aPlacement->GetTextureHeight ());
10431062
@@ -1233,7 +1252,7 @@ BrowserWorld::LayoutWidget(int32_t aHandle) {
12331252 }
12341253 widget->SetTransform (parent ? parent->GetTransform ().PostMultiply (transform) : transform);
12351254
1236- if (!widget->GetCylinder () && parent ) {
1255+ if (!widget->GetCylinder ()) {
12371256 widget->LayoutQuadWithCylinderParent (parent);
12381257 }
12391258}
@@ -1304,21 +1323,7 @@ void
13041323BrowserWorld::SetCylinderDensity (const float aDensity) {
13051324 m.cylinderDensity = aDensity;
13061325 for (WidgetPtr& widget: m.widgets ) {
1307- const bool useCylinder = m.cylinderDensity > 0 && widget->GetPlacement ()->cylinder ;
1308- if (useCylinder && widget->GetCylinder ()) {
1309- widget->SetCylinderDensity (aDensity);
1310- } else if (useCylinder && !widget->GetCylinder ()) {
1311- VRLayerCylinderPtr layer = m.device ->CreateLayerCylinder (widget->GetLayer ());
1312- CylinderPtr cylinder = Cylinder::Create (m.create , layer);
1313- widget->SetCylinder (cylinder);
1314- widget->SetCylinderDensity (aDensity);
1315- } else if (widget->GetCylinder ()) {
1316- float w = 0 , h = 0 ;
1317- widget->GetWorldSize (w, h);
1318- VRLayerQuadPtr layer = m.device ->CreateLayerQuad (widget->GetLayer ());
1319- QuadPtr quad = Quad::Create (m.create , w, h, layer);
1320- widget->SetQuad (quad);
1321- }
1326+ m.UpdateWidgetCylinder (widget, aDensity);
13221327 }
13231328}
13241329
0 commit comments