Needle Engine

Changes between version 3.37.12-alpha and 3.37.12-alpha.3
Files changed (2) hide show
  1. src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +10 -1
  2. src/engine/engine_context.ts +6 -0
src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts CHANGED
@@ -68,10 +68,12 @@
68
68
 
69
69
  type Target = USDObject | USDObject[] | Object3D | Object3D[];
70
70
 
71
+ const addedStrings = new Set<string>();
71
72
  /** called to resolve target objects to usdz paths */
72
73
  function resolve(targetObject: Target, document: USDDocument): string {
73
74
  let result: string = "";
74
75
  if (Array.isArray(targetObject)) {
76
+ addedStrings.clear();
75
77
  let str = "[ ";
76
78
  for (let i = 0; i < targetObject.length; i++) {
77
79
  let obj = targetObject[i];
@@ -79,8 +81,11 @@
79
81
  console.warn("Invalid target object in behavior", targetObject + ". Is the object exported?");
80
82
  continue;
81
83
  }
82
- if (typeof obj === "string")
84
+ if (typeof obj === "string") {
85
+ if (addedStrings.has(obj)) continue;
83
86
  str += obj;
87
+ addedStrings.add(obj);
88
+ }
84
89
  else if (typeof obj === "object") {
85
90
  //@ts-ignore
86
91
  if (obj.isObject3D) {
@@ -92,12 +97,16 @@
92
97
  }
93
98
  }
94
99
  const res = (obj as any).getPath?.call(obj) as string;
100
+ if (addedStrings.has(res)) continue;
101
+ console.log(str, res, addedStrings)
95
102
  str += res;
103
+ addedStrings.add(res);
96
104
  }
97
105
  if (i + 1 < targetObject.length) str += ", ";
98
106
  }
99
107
  str += " ]";
100
108
  result = str;
109
+ addedStrings.clear();
101
110
  }
102
111
  else if (typeof targetObject === "object") {
103
112
  //@ts-ignore
src/engine/engine_context.ts CHANGED
@@ -1110,7 +1110,10 @@
1110
1110
  }
1111
1111
 
1112
1112
  private internalOnBeforeRender(timestamp: DOMHighResTimeStamp, frame: XRFrame | null) {
1113
+
1114
+ this.renderer.info.autoReset = false;
1113
1115
 
1116
+
1114
1117
  const sessionStarted = frame !== null && this._xrFrame === null;
1115
1118
  this._xrFrame = frame;
1116
1119
  if (sessionStarted) {
@@ -1314,6 +1317,9 @@
1314
1317
  this.domElement.dispatchEvent(new CustomEvent("ready"));
1315
1318
  ContextRegistry.dispatchCallback(ContextEvent.ContextFirstFrameRendered, this);
1316
1319
  }
1320
+
1321
+
1322
+ this.renderer.info.reset();
1317
1323
  }
1318
1324
 
1319
1325
  renderNow(camera?: Camera) {