MCPcopy Index your code
hub / github.com/4ian/GDevelop / getStructureNetworkSyncData

Method getStructureNetworkSyncData

GDJS/Runtime/variable.ts:188–260  ·  view source on GitHub ↗
(
      variable: gdjs.Variable
    )

Source from the content-addressed store, hash-verified

186 // Structure variables can contain other variables, so we need to recursively
187 // get the sync data for each child variable.
188 getStructureNetworkSyncData(
189 variable: gdjs.Variable
190 ): VariableNetworkSyncData[] | undefined {
191 if (variable.getType() === 'array') {
192 const allVariableNetworkSyncData: VariableNetworkSyncData[] = [];
193 variable.getAllChildrenArray().forEach((childVariable) => {
194 const childVariableType = childVariable.getType();
195 const childVariableValue =
196 childVariableType === 'structure' || childVariableType === 'array'
197 ? ''
198 : childVariable.getValue();
199
200 const childVariableOwner = childVariable.getPlayerOwnership();
201 if (
202 // Variable undefined.
203 childVariable.isUndefinedInContainer() ||
204 // Variable marked as not to be synchronized.
205 childVariableOwner === null
206 ) {
207 // In those cases, the variable should not be synchronized.
208 return;
209 }
210
211 allVariableNetworkSyncData.push({
212 name: '',
213 value: childVariableValue,
214 type: childVariableType,
215 children: this.getStructureNetworkSyncData(childVariable),
216 owner: childVariableOwner,
217 });
218 });
219
220 return allVariableNetworkSyncData;
221 }
222
223 if (variable.getType() === 'structure') {
224 const variableChildren = variable.getAllChildren();
225 if (!variableChildren) return undefined;
226 const allVariableNetworkSyncData: VariableNetworkSyncData[] = [];
227
228 Object.entries(variableChildren).forEach(
229 ([childVariableName, childVariable]) => {
230 const childVariableType = childVariable.getType();
231 const childVariableValue =
232 childVariableType === 'structure' || childVariableType === 'array'
233 ? ''
234 : childVariable.getValue();
235 const childVariableOwner = childVariable.getPlayerOwnership();
236 if (
237 // Variable undefined.
238 childVariable.isUndefinedInContainer() ||
239 // Variable marked as not to be synchronized.
240 childVariableOwner === null
241 ) {
242 // In those cases, the variable should not be synchronized.
243 return;
244 }
245

Callers 1

getNetworkSyncDataMethod · 0.95

Calls 8

forEachMethod · 0.80
getPlayerOwnershipMethod · 0.80
getValueMethod · 0.65
pushMethod · 0.65
getTypeMethod · 0.45
getAllChildrenArrayMethod · 0.45
getAllChildrenMethod · 0.45

Tested by

no test coverage detected