Skip to content

Commit f7c567a

Browse files
committed
Correctly handle resize in headless
1 parent b850635 commit f7c567a

3 files changed

Lines changed: 237 additions & 9 deletions

File tree

src/Packages/UnityWebBrowser/Runtime/Core/WebBrowserClient.cs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,8 @@ public Resolution Resolution
203203
public bool ignoreLogProcessJsonErrors = false;
204204

205205
/// <summary>
206-
/// Texture that the browser will paint to
206+
/// Texture that the browser will paint to.
207+
/// <para>In headless mode this will be null</para>
207208
/// </summary>
208209
public Texture2D BrowserTexture { get; private set; }
209210

@@ -975,17 +976,20 @@ public void Resize(Resolution newResolution)
975976
{
976977
CheckIfIsReadyAndConnected();
977978

978-
lock (resizeLock)
979+
if (!headless)
979980
{
980-
BrowserTexture.Reinitialize((int)newResolution.Width, (int)newResolution.Height);
981-
textureData = BrowserTexture.GetRawTextureData<byte>();
982-
communicationsManager.Resize(newResolution);
981+
lock (resizeLock)
982+
{
983+
BrowserTexture.Reinitialize((int)newResolution.Width, (int)newResolution.Height);
984+
textureData = BrowserTexture.GetRawTextureData<byte>();
983985

984-
nextTextureData.Dispose();
985-
nextTextureData = new NativeArray<byte>(textureData.ToArray(), Allocator.Persistent);
986-
communicationsManager.pixelsEventTypeReader.SetPixelDataArray(nextTextureData);
986+
nextTextureData.Dispose();
987+
nextTextureData = new NativeArray<byte>(textureData.ToArray(), Allocator.Persistent);
988+
communicationsManager.pixelsEventTypeReader.SetPixelDataArray(nextTextureData);
989+
}
987990
}
988-
991+
992+
communicationsManager.Resize(newResolution);
989993
logger.Debug($"Resized to {newResolution}.");
990994
}
991995

src/UnityWebBrowser.UnityProject/Assets/Scenes/UWBHeadless.unity

Lines changed: 216 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,221 @@ NavMeshSettings:
122122
debug:
123123
m_Flags: 0
124124
m_NavMeshData: {fileID: 0}
125+
--- !u!1 &319541479
126+
GameObject:
127+
m_ObjectHideFlags: 0
128+
m_CorrespondingSourceObject: {fileID: 0}
129+
m_PrefabInstance: {fileID: 0}
130+
m_PrefabAsset: {fileID: 0}
131+
serializedVersion: 6
132+
m_Component:
133+
- component: {fileID: 319541480}
134+
- component: {fileID: 319541483}
135+
- component: {fileID: 319541482}
136+
- component: {fileID: 319541481}
137+
m_Layer: 5
138+
m_Name: ResizeTestBtn
139+
m_TagString: Untagged
140+
m_Icon: {fileID: 0}
141+
m_NavMeshLayer: 0
142+
m_StaticEditorFlags: 0
143+
m_IsActive: 1
144+
--- !u!224 &319541480
145+
RectTransform:
146+
m_ObjectHideFlags: 0
147+
m_CorrespondingSourceObject: {fileID: 0}
148+
m_PrefabInstance: {fileID: 0}
149+
m_PrefabAsset: {fileID: 0}
150+
m_GameObject: {fileID: 319541479}
151+
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
152+
m_LocalPosition: {x: 0, y: 0, z: 0}
153+
m_LocalScale: {x: 1, y: 1, z: 1}
154+
m_ConstrainProportionsScale: 0
155+
m_Children:
156+
- {fileID: 398936883}
157+
m_Father: {fileID: 898694511}
158+
m_RootOrder: 2
159+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
160+
m_AnchorMin: {x: 0.5, y: 0.5}
161+
m_AnchorMax: {x: 0.5, y: 0.5}
162+
m_AnchoredPosition: {x: -769, y: 301.2}
163+
m_SizeDelta: {x: 160, y: 30}
164+
m_Pivot: {x: 0.5, y: 0.5}
165+
--- !u!114 &319541481
166+
MonoBehaviour:
167+
m_ObjectHideFlags: 0
168+
m_CorrespondingSourceObject: {fileID: 0}
169+
m_PrefabInstance: {fileID: 0}
170+
m_PrefabAsset: {fileID: 0}
171+
m_GameObject: {fileID: 319541479}
172+
m_Enabled: 1
173+
m_EditorHideFlags: 0
174+
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
175+
m_Name:
176+
m_EditorClassIdentifier:
177+
m_Navigation:
178+
m_Mode: 3
179+
m_WrapAround: 0
180+
m_SelectOnUp: {fileID: 0}
181+
m_SelectOnDown: {fileID: 0}
182+
m_SelectOnLeft: {fileID: 0}
183+
m_SelectOnRight: {fileID: 0}
184+
m_Transition: 1
185+
m_Colors:
186+
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
187+
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
188+
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
189+
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
190+
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
191+
m_ColorMultiplier: 1
192+
m_FadeDuration: 0.1
193+
m_SpriteState:
194+
m_HighlightedSprite: {fileID: 0}
195+
m_PressedSprite: {fileID: 0}
196+
m_SelectedSprite: {fileID: 0}
197+
m_DisabledSprite: {fileID: 0}
198+
m_AnimationTriggers:
199+
m_NormalTrigger: Normal
200+
m_HighlightedTrigger: Highlighted
201+
m_PressedTrigger: Pressed
202+
m_SelectedTrigger: Selected
203+
m_DisabledTrigger: Disabled
204+
m_Interactable: 1
205+
m_TargetGraphic: {fileID: 319541482}
206+
m_OnClick:
207+
m_PersistentCalls:
208+
m_Calls:
209+
- m_Target: {fileID: 1847248009}
210+
m_TargetAssemblyTypeName: VoltstroStudios.UnityWebBrowser.Prj.UWBHeadless,
211+
VoltstroStudios.UnityWebBrowser.Prj
212+
m_MethodName: Resize
213+
m_Mode: 1
214+
m_Arguments:
215+
m_ObjectArgument: {fileID: 0}
216+
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
217+
m_IntArgument: 0
218+
m_FloatArgument: 0
219+
m_StringArgument:
220+
m_BoolArgument: 0
221+
m_CallState: 2
222+
--- !u!114 &319541482
223+
MonoBehaviour:
224+
m_ObjectHideFlags: 0
225+
m_CorrespondingSourceObject: {fileID: 0}
226+
m_PrefabInstance: {fileID: 0}
227+
m_PrefabAsset: {fileID: 0}
228+
m_GameObject: {fileID: 319541479}
229+
m_Enabled: 1
230+
m_EditorHideFlags: 0
231+
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
232+
m_Name:
233+
m_EditorClassIdentifier:
234+
m_Material: {fileID: 0}
235+
m_Color: {r: 1, g: 1, b: 1, a: 1}
236+
m_RaycastTarget: 1
237+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
238+
m_Maskable: 1
239+
m_OnCullStateChanged:
240+
m_PersistentCalls:
241+
m_Calls: []
242+
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
243+
m_Type: 1
244+
m_PreserveAspect: 0
245+
m_FillCenter: 1
246+
m_FillMethod: 4
247+
m_FillAmount: 1
248+
m_FillClockwise: 1
249+
m_FillOrigin: 0
250+
m_UseSpriteMesh: 0
251+
m_PixelsPerUnitMultiplier: 1
252+
--- !u!222 &319541483
253+
CanvasRenderer:
254+
m_ObjectHideFlags: 0
255+
m_CorrespondingSourceObject: {fileID: 0}
256+
m_PrefabInstance: {fileID: 0}
257+
m_PrefabAsset: {fileID: 0}
258+
m_GameObject: {fileID: 319541479}
259+
m_CullTransparentMesh: 1
260+
--- !u!1 &398936882
261+
GameObject:
262+
m_ObjectHideFlags: 0
263+
m_CorrespondingSourceObject: {fileID: 0}
264+
m_PrefabInstance: {fileID: 0}
265+
m_PrefabAsset: {fileID: 0}
266+
serializedVersion: 6
267+
m_Component:
268+
- component: {fileID: 398936883}
269+
- component: {fileID: 398936885}
270+
- component: {fileID: 398936884}
271+
m_Layer: 5
272+
m_Name: Text (Legacy)
273+
m_TagString: Untagged
274+
m_Icon: {fileID: 0}
275+
m_NavMeshLayer: 0
276+
m_StaticEditorFlags: 0
277+
m_IsActive: 1
278+
--- !u!224 &398936883
279+
RectTransform:
280+
m_ObjectHideFlags: 0
281+
m_CorrespondingSourceObject: {fileID: 0}
282+
m_PrefabInstance: {fileID: 0}
283+
m_PrefabAsset: {fileID: 0}
284+
m_GameObject: {fileID: 398936882}
285+
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
286+
m_LocalPosition: {x: 0, y: 0, z: 0}
287+
m_LocalScale: {x: 1, y: 1, z: 1}
288+
m_ConstrainProportionsScale: 0
289+
m_Children: []
290+
m_Father: {fileID: 319541480}
291+
m_RootOrder: 0
292+
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
293+
m_AnchorMin: {x: 0, y: 0}
294+
m_AnchorMax: {x: 1, y: 1}
295+
m_AnchoredPosition: {x: 0, y: 0}
296+
m_SizeDelta: {x: 0, y: 0}
297+
m_Pivot: {x: 0.5, y: 0.5}
298+
--- !u!114 &398936884
299+
MonoBehaviour:
300+
m_ObjectHideFlags: 0
301+
m_CorrespondingSourceObject: {fileID: 0}
302+
m_PrefabInstance: {fileID: 0}
303+
m_PrefabAsset: {fileID: 0}
304+
m_GameObject: {fileID: 398936882}
305+
m_Enabled: 1
306+
m_EditorHideFlags: 0
307+
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3}
308+
m_Name:
309+
m_EditorClassIdentifier:
310+
m_Material: {fileID: 0}
311+
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
312+
m_RaycastTarget: 1
313+
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
314+
m_Maskable: 1
315+
m_OnCullStateChanged:
316+
m_PersistentCalls:
317+
m_Calls: []
318+
m_FontData:
319+
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
320+
m_FontSize: 14
321+
m_FontStyle: 0
322+
m_BestFit: 0
323+
m_MinSize: 10
324+
m_MaxSize: 40
325+
m_Alignment: 4
326+
m_AlignByGeometry: 0
327+
m_RichText: 1
328+
m_HorizontalOverflow: 0
329+
m_VerticalOverflow: 0
330+
m_LineSpacing: 1
331+
m_Text: Resize Test
332+
--- !u!222 &398936885
333+
CanvasRenderer:
334+
m_ObjectHideFlags: 0
335+
m_CorrespondingSourceObject: {fileID: 0}
336+
m_PrefabInstance: {fileID: 0}
337+
m_PrefabAsset: {fileID: 0}
338+
m_GameObject: {fileID: 398936882}
339+
m_CullTransparentMesh: 1
125340
--- !u!1 &424505160
126341
GameObject:
127342
m_ObjectHideFlags: 0
@@ -502,6 +717,7 @@ RectTransform:
502717
m_Children:
503718
- {fileID: 721728176}
504719
- {fileID: 1086520978}
720+
- {fileID: 319541480}
505721
m_Father: {fileID: 0}
506722
m_RootOrder: 2
507723
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}

src/UnityWebBrowser.UnityProject/Assets/Scripts/UWBHeadless.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
using VoltstroStudios.UnityWebBrowser.Communication;
33
using VoltstroStudios.UnityWebBrowser.Core;
44
using VoltstroStudios.UnityWebBrowser.Core.Engines;
5+
using VoltstroStudios.UnityWebBrowser.Shared;
56
using VoltstroStudios.UnityWebBrowser.Shared.Core;
7+
using Resolution = VoltstroStudios.UnityWebBrowser.Shared.Resolution;
68

79
namespace VoltstroStudios.UnityWebBrowser.Prj
810
{
@@ -58,6 +60,7 @@ public void Start()
5860

5961
webBrowserClient.engine = engineConfig;
6062
webBrowserClient.communicationLayer = comsLayer;
63+
webBrowserClient.logSeverity = LogSeverity.Debug;
6164

6265
webBrowserClient.Init();
6366
}
@@ -76,5 +79,10 @@ public void ExecuteJs()
7679
{
7780
webBrowserClient.ExecuteJs("console.log('Hello World!');");
7881
}
82+
83+
public void Resize()
84+
{
85+
webBrowserClient.Resize(new Resolution(1920, 1080));
86+
}
7987
}
8088
}

0 commit comments

Comments
 (0)