@webspatial/platform-visionos 0.0.1 → 0.0.3-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/web-spatial/libs/EventEmitter.swift +0 -7
- package/web-spatial/libs/SpatialComponent.swift +0 -7
- package/web-spatial/libs/SpatialEntity.swift +0 -7
- package/web-spatial/libs/SpatialInputComponent.swift +0 -7
- package/web-spatial/libs/SpatialMeshResource.swift +0 -7
- package/web-spatial/libs/SpatialModelComponent.swift +0 -7
- package/web-spatial/libs/SpatialObject.swift +0 -7
- package/web-spatial/libs/SpatialViewComponent.swift +0 -7
- package/web-spatial/libs/SpatialWindowComponent.swift +0 -8
- package/web-spatial/libs/SpatialWindowContainer.swift +19 -7
- package/web-spatial/libs/Utils/CommandManager.swift +18 -13
- package/web-spatial/libs/Utils/Logger.swift +0 -7
- package/web-spatial/libs/Utils/SceneManager.swift +0 -7
- package/web-spatial/libs/Utils/WindowContainerMgr.swift +0 -14
- package/web-spatial/libs/json/JsonParser.swift +0 -7
- package/web-spatial/libs/uiKitDelegate/Window.swift +0 -7
- package/web-spatial/libs/webView/UpdateSystem.swift +0 -7
- package/web-spatial/libs/webView/backend/NativeWebView.swift +0 -7
- package/web-spatial/views/ImmersiveView.swift +0 -7
- package/web-spatial/views/LoadingView.swift +0 -7
- package/web-spatial/views/MaterialWithBorderCornerModifier.swift +0 -6
- package/web-spatial/views/OpenDismissHandlerUI.swift +0 -7
- package/web-spatial/views/PlainWindowContainerView.swift +0 -7
- package/web-spatial/views/SpatialModel3DView.swift +0 -6
- package/web-spatial/views/SpatialWebViewUI.swift +0 -7
- package/web-spatial/views/VolumetricWindowContainerView.swift +0 -8
- package/web-spatial/views/ui/NavView.swift +0 -7
- package/web-spatial/web_spatialApp.swift +20 -19
- package/web-spatial.xcodeproj/project.pbxproj +14 -26
- package/web-spatialTests/web_spatialTests.swift +0 -34
package/package.json
CHANGED
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
//
|
|
2
|
-
// SpatialWindowContainer.swift
|
|
3
|
-
// web-spatial
|
|
4
|
-
//
|
|
5
|
-
// Created by ByteDance on 9/10/24.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
1
|
import Combine
|
|
9
2
|
import Foundation
|
|
10
3
|
import RealityKit
|
|
@@ -21,6 +14,25 @@ class SpatialWindowContainer: SpatialObject {
|
|
|
21
14
|
|
|
22
15
|
// Resources that will be destroyed when this window group is removed
|
|
23
16
|
private var childResources = [String: SpatialObject]()
|
|
17
|
+
public func addChildResource(_ spatialObject: SpatialObject) {
|
|
18
|
+
childResources[spatialObject.id] = spatialObject
|
|
19
|
+
spatialObject
|
|
20
|
+
.on(
|
|
21
|
+
event: SpatialObject.Events.BeforeDestroyed.rawValue,
|
|
22
|
+
listener: onSptatialObjectDestroyed
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
private func onSptatialObjectDestroyed(_ object: Any, _ data: Any) {
|
|
27
|
+
let spatialObject = object as! SpatialObject
|
|
28
|
+
spatialObject
|
|
29
|
+
.off(
|
|
30
|
+
event: SpatialObject.Events.BeforeDestroyed.rawValue,
|
|
31
|
+
listener: onSptatialObjectDestroyed
|
|
32
|
+
)
|
|
33
|
+
childResources.removeValue(forKey: spatialObject.id)
|
|
34
|
+
}
|
|
35
|
+
|
|
24
36
|
public var childContainers = [String: SpatialWindowContainer]()
|
|
25
37
|
|
|
26
38
|
var wgd: WindowContainerData
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
//
|
|
2
|
-
// CommandManager.swift
|
|
3
|
-
// web-spatial
|
|
4
|
-
//
|
|
5
|
-
// Created by ByteDance on 2024/10/15.
|
|
6
|
-
//
|
|
7
1
|
import Foundation
|
|
8
2
|
import RealityKit
|
|
9
3
|
import SwiftUI
|
|
@@ -134,8 +128,8 @@ class CommandManager {
|
|
|
134
128
|
}
|
|
135
129
|
|
|
136
130
|
private func setComponent(target: SpatialWindowComponent, info: CommandInfo) {
|
|
137
|
-
if let component =
|
|
138
|
-
let entity =
|
|
131
|
+
if let component = SpatialObject.get(info.resourceID) as? SpatialComponent,
|
|
132
|
+
let entity = SpatialObject.get(info.entityID) as? SpatialEntity
|
|
139
133
|
{
|
|
140
134
|
entity.addComponent(component)
|
|
141
135
|
} else {
|
|
@@ -153,6 +147,15 @@ class CommandManager {
|
|
|
153
147
|
}
|
|
154
148
|
}
|
|
155
149
|
|
|
150
|
+
private static func setParentResourceDependencies(object: SpatialObject, info: CommandInfo) {
|
|
151
|
+
if let parentWindowComponent = SpatialObject.get(info.resourceID) as? SpatialWindowComponent {
|
|
152
|
+
parentWindowComponent.addChildSpatialObject(object)
|
|
153
|
+
}
|
|
154
|
+
if let parentWindowContainer = SpatialWindowContainer.getSpatialWindowContainer(info.windowContainerID) {
|
|
155
|
+
parentWindowContainer.addChildResource(object)
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
156
159
|
private func createResource(target: SpatialWindowComponent, info: CommandInfo) {
|
|
157
160
|
let data = info.cmd.data!
|
|
158
161
|
if let type = data.type {
|
|
@@ -171,9 +174,11 @@ class CommandManager {
|
|
|
171
174
|
case "PhysicallyBasedMaterial":
|
|
172
175
|
sr = SpatialPhysicallyBasedMaterial(PhysicallyBasedMaterial())
|
|
173
176
|
case "SpatialWebView":
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
+
if let parentWindowContainer = SpatialWindowContainer.getSpatialWindowContainer(info.windowContainerID) {
|
|
178
|
+
sr = SpatialWindowComponent(parentWindowContainerID: parentWindowContainer.id)
|
|
179
|
+
let spatialWindowComponent = sr as! SpatialWindowComponent
|
|
180
|
+
spatialWindowComponent.parentWebviewID = target.id
|
|
181
|
+
}
|
|
177
182
|
case "SpatialView":
|
|
178
183
|
sr = SpatialViewComponent()
|
|
179
184
|
case "Model3DComponent":
|
|
@@ -212,8 +217,8 @@ class CommandManager {
|
|
|
212
217
|
|
|
213
218
|
Task.detached { @MainActor in
|
|
214
219
|
// Update state on main thread
|
|
220
|
+
CommandManager.setParentResourceDependencies(object: spatialModelComponent, info: info)
|
|
215
221
|
target.completeEvent(requestID: info.requestID, data: "{createdID: '" + spatialModelComponent.id + "'}")
|
|
216
|
-
target.addChildSpatialObject(spatialModelComponent)
|
|
217
222
|
logger.debug("Model load success!")
|
|
218
223
|
}
|
|
219
224
|
} catch {
|
|
@@ -230,8 +235,8 @@ class CommandManager {
|
|
|
230
235
|
default: logger.warning("failed to create sr of type \(type)")
|
|
231
236
|
}
|
|
232
237
|
if let srObject = sr {
|
|
238
|
+
CommandManager.setParentResourceDependencies(object: srObject, info: info)
|
|
233
239
|
target.completeEvent(requestID: info.requestID, data: "{createdID: '" + srObject.id + "'}")
|
|
234
|
-
target.addChildSpatialObject(srObject)
|
|
235
240
|
} else {
|
|
236
241
|
logger.warning("failed to create sr of type: \(type)")
|
|
237
242
|
}
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
//
|
|
2
|
-
// WindowContainerMgr.swift
|
|
3
|
-
// web-spatial
|
|
4
|
-
//
|
|
5
|
-
// Created by ByteDance on 2024/12/13.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
//
|
|
9
|
-
// WindowContainerModel.swift
|
|
10
|
-
// web-spatial
|
|
11
|
-
//
|
|
12
|
-
// Created by ByteDance on 2024/11/25.
|
|
13
|
-
//
|
|
14
|
-
|
|
15
1
|
import Combine
|
|
16
2
|
import SwiftUI
|
|
17
3
|
import UIKit
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
//
|
|
2
|
-
// web_spatialApp.swift
|
|
3
|
-
// web-spatial
|
|
4
|
-
//
|
|
5
|
-
// Created by ByteDance on 5/8/24.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
1
|
import typealias RealityKit.Attachment
|
|
9
2
|
import typealias RealityKit.Entity
|
|
10
3
|
import typealias RealityKit.MeshResource
|
|
@@ -18,15 +11,19 @@ let logger = Logger()
|
|
|
18
11
|
|
|
19
12
|
// To load a local path, remove http:// eg. "static-web/"
|
|
20
13
|
let nativeAPIVersion = "0.0.1"
|
|
14
|
+
// start URL
|
|
15
|
+
let startURL = pwaManager.start_url
|
|
21
16
|
|
|
22
17
|
// detect when app properties like defaultSize change so we can avoid race condition of setting default values and then opening window container
|
|
23
18
|
var sceneStateChangedCB: ((Any) -> Void) = { _ in
|
|
24
19
|
}
|
|
25
20
|
|
|
21
|
+
// TODO: we need to get rid of rootWGD and rootWC to cleanup memory and better handle close/reopen
|
|
22
|
+
weak var rootWC: SpatialWindowComponent?
|
|
23
|
+
|
|
26
24
|
@main
|
|
27
25
|
struct web_spatialApp: App {
|
|
28
26
|
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
|
|
29
|
-
@State var root: SpatialWindowComponent? = nil
|
|
30
27
|
@State var rootWGD: SpatialWindowContainer
|
|
31
28
|
@State var initialLaunch = true
|
|
32
29
|
|
|
@@ -35,7 +32,7 @@ struct web_spatialApp: App {
|
|
|
35
32
|
@Environment(\.scenePhase) private var scenePhase
|
|
36
33
|
|
|
37
34
|
init() {
|
|
38
|
-
logger.debug("WebSpatial App Started --------")
|
|
35
|
+
logger.debug("WebSpatial App Started -------- rootURL: " + startURL)
|
|
39
36
|
|
|
40
37
|
// init global logger
|
|
41
38
|
Logger.initLogger()
|
|
@@ -55,7 +52,7 @@ struct web_spatialApp: App {
|
|
|
55
52
|
// There seems to be a bug in WKWebView where it needs to be initialized after the app has loaded so we do this here instead of init()
|
|
56
53
|
// https://forums.developer.apple.com/forums/thread/61432
|
|
57
54
|
func initAppOnViewMount() {
|
|
58
|
-
if
|
|
55
|
+
if rootWC == nil {
|
|
59
56
|
let fileUrl = getFileUrl()
|
|
60
57
|
|
|
61
58
|
// Create a default entity with webview resource
|
|
@@ -65,7 +62,9 @@ struct web_spatialApp: App {
|
|
|
65
62
|
rootEntity.addComponent(windowComponent)
|
|
66
63
|
rootEntity.setParentWindowContainer(wg: rootWGD)
|
|
67
64
|
|
|
68
|
-
|
|
65
|
+
rootWGD.addChildResource(windowComponent)
|
|
66
|
+
rootWGD.addChildResource(rootEntity)
|
|
67
|
+
rootWC = windowComponent
|
|
69
68
|
}
|
|
70
69
|
}
|
|
71
70
|
|
|
@@ -79,14 +78,16 @@ struct web_spatialApp: App {
|
|
|
79
78
|
if windowData.windowContainerID == SpatialWindowContainer.getRootID() {
|
|
80
79
|
VStack {}.onAppear { initAppOnViewMount() }
|
|
81
80
|
|
|
82
|
-
PlainWindowContainerView().environment(rootWGD).background(Color.clear.opacity(0))
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
81
|
+
PlainWindowContainerView().environment(rootWGD).background(Color.clear.opacity(0))
|
|
82
|
+
// TODO: Universal link is currently broken
|
|
83
|
+
// .onOpenURL { myURL in
|
|
84
|
+
// initAppOnViewMount()
|
|
85
|
+
// let urlToLoad = pwaManager.checkInDeeplink(url: myURL.absoluteString)
|
|
86
|
+
//
|
|
87
|
+
// if let url = URL(string: urlToLoad) {
|
|
88
|
+
// // root!.navigateToURL(url: url)
|
|
89
|
+
// }
|
|
90
|
+
// }
|
|
90
91
|
} else {
|
|
91
92
|
let wg = SpatialWindowContainer.getOrCreateSpatialWindowContainer(
|
|
92
93
|
windowData.windowContainerID, windowData
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
2B2F1D6F2BEBFAAA006897EE /* ImmersiveView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B2F1D6E2BEBFAAA006897EE /* ImmersiveView.swift */; };
|
|
16
16
|
2B2F1D712BEBFAAC006897EE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2B2F1D702BEBFAAC006897EE /* Assets.xcassets */; };
|
|
17
17
|
2B2F1D742BEBFAAC006897EE /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 2B2F1D732BEBFAAC006897EE /* Preview Assets.xcassets */; };
|
|
18
|
-
2B2F1D7F2BEBFAAD006897EE /* web_spatialTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B2F1D7E2BEBFAAD006897EE /* web_spatialTests.swift */; };
|
|
19
18
|
2B2F1D8F2BED4D7A006897EE /* JsonParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B2F1D8E2BED4D7A006897EE /* JsonParser.swift */; };
|
|
20
19
|
2B2F1D912BED61A8006897EE /* NativeWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B2F1D902BED61A8006897EE /* NativeWebView.swift */; };
|
|
21
20
|
2B2F1D992BEDA8EF006897EE /* VolumetricWindowContainerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B2F1D982BEDA8EF006897EE /* VolumetricWindowContainerView.swift */; };
|
|
@@ -61,15 +60,14 @@
|
|
|
61
60
|
2B0B1C0F2C494E5400E644F9 /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
|
|
62
61
|
2B0B43092CBE21540003CEF3 /* CommandManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CommandManager.swift; sourceTree = "<group>"; };
|
|
63
62
|
2B23CB3E2D0BEE6900E70D95 /* WindowContainerMgr.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WindowContainerMgr.swift; sourceTree = "<group>"; };
|
|
64
|
-
2B2F1D632BEBFAAA006897EE /*
|
|
63
|
+
2B2F1D632BEBFAAA006897EE /* WebSpatial.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WebSpatial.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
65
64
|
2B2F1D672BEBFAAA006897EE /* RealityKitContent */ = {isa = PBXFileReference; lastKnownFileType = wrapper; path = RealityKitContent; sourceTree = "<group>"; };
|
|
66
65
|
2B2F1D6A2BEBFAAA006897EE /* web_spatialApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web_spatialApp.swift; sourceTree = "<group>"; };
|
|
67
66
|
2B2F1D6E2BEBFAAA006897EE /* ImmersiveView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImmersiveView.swift; sourceTree = "<group>"; };
|
|
68
67
|
2B2F1D702BEBFAAC006897EE /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
|
69
68
|
2B2F1D732BEBFAAC006897EE /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
|
|
70
69
|
2B2F1D752BEBFAAC006897EE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
71
|
-
2B2F1D7A2BEBFAAD006897EE /*
|
|
72
|
-
2B2F1D7E2BEBFAAD006897EE /* web_spatialTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = web_spatialTests.swift; sourceTree = "<group>"; };
|
|
70
|
+
2B2F1D7A2BEBFAAD006897EE /* WebSpatial.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebSpatial.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
73
71
|
2B2F1D8E2BED4D7A006897EE /* JsonParser.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JsonParser.swift; sourceTree = "<group>"; };
|
|
74
72
|
2B2F1D902BED61A8006897EE /* NativeWebView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeWebView.swift; sourceTree = "<group>"; };
|
|
75
73
|
2B2F1D982BEDA8EF006897EE /* VolumetricWindowContainerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VolumetricWindowContainerView.swift; sourceTree = "<group>"; };
|
|
@@ -136,7 +134,6 @@
|
|
|
136
134
|
children = (
|
|
137
135
|
2B2F1D652BEBFAAA006897EE /* web-spatial */,
|
|
138
136
|
2B2F1D662BEBFAAA006897EE /* Packages */,
|
|
139
|
-
2B2F1D7D2BEBFAAD006897EE /* web-spatialTests */,
|
|
140
137
|
2B2F1D642BEBFAAA006897EE /* Products */,
|
|
141
138
|
);
|
|
142
139
|
sourceTree = "<group>";
|
|
@@ -144,8 +141,8 @@
|
|
|
144
141
|
2B2F1D642BEBFAAA006897EE /* Products */ = {
|
|
145
142
|
isa = PBXGroup;
|
|
146
143
|
children = (
|
|
147
|
-
2B2F1D632BEBFAAA006897EE /*
|
|
148
|
-
2B2F1D7A2BEBFAAD006897EE /*
|
|
144
|
+
2B2F1D632BEBFAAA006897EE /* WebSpatial.app */,
|
|
145
|
+
2B2F1D7A2BEBFAAD006897EE /* WebSpatial.xctest */,
|
|
149
146
|
);
|
|
150
147
|
name = Products;
|
|
151
148
|
sourceTree = "<group>";
|
|
@@ -180,14 +177,6 @@
|
|
|
180
177
|
path = "Preview Content";
|
|
181
178
|
sourceTree = "<group>";
|
|
182
179
|
};
|
|
183
|
-
2B2F1D7D2BEBFAAD006897EE /* web-spatialTests */ = {
|
|
184
|
-
isa = PBXGroup;
|
|
185
|
-
children = (
|
|
186
|
-
2B2F1D7E2BEBFAAD006897EE /* web_spatialTests.swift */,
|
|
187
|
-
);
|
|
188
|
-
path = "web-spatialTests";
|
|
189
|
-
sourceTree = "<group>";
|
|
190
|
-
};
|
|
191
180
|
2B2F1D8A2BED4CD0006897EE /* libs */ = {
|
|
192
181
|
isa = PBXGroup;
|
|
193
182
|
children = (
|
|
@@ -291,7 +280,7 @@
|
|
|
291
280
|
2B2F1D682BEBFAAA006897EE /* RealityKitContent */,
|
|
292
281
|
);
|
|
293
282
|
productName = "web-spatial";
|
|
294
|
-
productReference = 2B2F1D632BEBFAAA006897EE /*
|
|
283
|
+
productReference = 2B2F1D632BEBFAAA006897EE /* WebSpatial.app */;
|
|
295
284
|
productType = "com.apple.product-type.application";
|
|
296
285
|
};
|
|
297
286
|
2B2F1D792BEBFAAD006897EE /* web-spatialTests */ = {
|
|
@@ -309,7 +298,7 @@
|
|
|
309
298
|
);
|
|
310
299
|
name = "web-spatialTests";
|
|
311
300
|
productName = "web-spatialTests";
|
|
312
|
-
productReference = 2B2F1D7A2BEBFAAD006897EE /*
|
|
301
|
+
productReference = 2B2F1D7A2BEBFAAD006897EE /* WebSpatial.xctest */;
|
|
313
302
|
productType = "com.apple.product-type.bundle.unit-test";
|
|
314
303
|
};
|
|
315
304
|
/* End PBXNativeTarget section */
|
|
@@ -417,7 +406,6 @@
|
|
|
417
406
|
isa = PBXSourcesBuildPhase;
|
|
418
407
|
buildActionMask = 2147483647;
|
|
419
408
|
files = (
|
|
420
|
-
2B2F1D7F2BEBFAAD006897EE /* web_spatialTests.swift in Sources */,
|
|
421
409
|
);
|
|
422
410
|
runOnlyForDeploymentPostprocessing = 0;
|
|
423
411
|
};
|
|
@@ -568,8 +556,8 @@
|
|
|
568
556
|
"@executable_path/Frameworks",
|
|
569
557
|
);
|
|
570
558
|
MARKETING_VERSION = 1.0;
|
|
571
|
-
PRODUCT_BUNDLE_IDENTIFIER =
|
|
572
|
-
PRODUCT_NAME =
|
|
559
|
+
PRODUCT_BUNDLE_IDENTIFIER = com.webspatial.test;
|
|
560
|
+
PRODUCT_NAME = WebSpatial;
|
|
573
561
|
SUPPORTED_PLATFORMS = "xros xrsimulator";
|
|
574
562
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
575
563
|
SWIFT_VERSION = 5.0;
|
|
@@ -595,8 +583,8 @@
|
|
|
595
583
|
"@executable_path/Frameworks",
|
|
596
584
|
);
|
|
597
585
|
MARKETING_VERSION = 1.0;
|
|
598
|
-
PRODUCT_BUNDLE_IDENTIFIER =
|
|
599
|
-
PRODUCT_NAME =
|
|
586
|
+
PRODUCT_BUNDLE_IDENTIFIER = com.webspatial.test;
|
|
587
|
+
PRODUCT_NAME = WebSpatial;
|
|
600
588
|
SUPPORTED_PLATFORMS = "xros xrsimulator";
|
|
601
589
|
SWIFT_EMIT_LOC_STRINGS = YES;
|
|
602
590
|
SWIFT_VERSION = 5.0;
|
|
@@ -613,8 +601,8 @@
|
|
|
613
601
|
CURRENT_PROJECT_VERSION = 1;
|
|
614
602
|
GENERATE_INFOPLIST_FILE = YES;
|
|
615
603
|
MARKETING_VERSION = 1.0;
|
|
616
|
-
PRODUCT_BUNDLE_IDENTIFIER =
|
|
617
|
-
PRODUCT_NAME =
|
|
604
|
+
PRODUCT_BUNDLE_IDENTIFIER = com.webspatial.test;
|
|
605
|
+
PRODUCT_NAME = WebSpatial;
|
|
618
606
|
SUPPORTED_PLATFORMS = "xros xrsimulator";
|
|
619
607
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
|
620
608
|
SWIFT_VERSION = 5.0;
|
|
@@ -632,8 +620,8 @@
|
|
|
632
620
|
CURRENT_PROJECT_VERSION = 1;
|
|
633
621
|
GENERATE_INFOPLIST_FILE = YES;
|
|
634
622
|
MARKETING_VERSION = 1.0;
|
|
635
|
-
PRODUCT_BUNDLE_IDENTIFIER =
|
|
636
|
-
PRODUCT_NAME =
|
|
623
|
+
PRODUCT_BUNDLE_IDENTIFIER = com.webspatial.test;
|
|
624
|
+
PRODUCT_NAME = WebSpatial;
|
|
637
625
|
SUPPORTED_PLATFORMS = "xros xrsimulator";
|
|
638
626
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
|
639
627
|
SWIFT_VERSION = 5.0;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// web_spatialTests.swift
|
|
3
|
-
// web-spatialTests
|
|
4
|
-
//
|
|
5
|
-
// Created by ByteDance on 5/8/24.
|
|
6
|
-
//
|
|
7
|
-
|
|
8
|
-
@testable import web_spatial
|
|
9
|
-
import XCTest
|
|
10
|
-
|
|
11
|
-
class web_spatialTests: XCTestCase {
|
|
12
|
-
override func setUpWithError() throws {
|
|
13
|
-
// Put setup code here. This method is called before the invocation of each test method in the class.
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
override func tearDownWithError() throws {
|
|
17
|
-
// Put teardown code here. This method is called after the invocation of each test method in the class.
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
func testExample() throws {
|
|
21
|
-
// This is an example of a functional test case.
|
|
22
|
-
// Use XCTAssert and related functions to verify your tests produce the correct results.
|
|
23
|
-
// Any test you write for XCTest can be annotated as throws and async.
|
|
24
|
-
// Mark your test throws to produce an unexpected failure when your test encounters an uncaught error.
|
|
25
|
-
// Mark your test async to allow awaiting for asynchronous code to complete. Check the results with assertions afterwards.
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
func testPerformanceExample() throws {
|
|
29
|
-
// This is an example of a performance test case.
|
|
30
|
-
measure {
|
|
31
|
-
// Put the code you want to measure the time of here.
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|