MCPcopy Create free account
hub / github.com/esengine/esengine / set

Method set

packages/core/src/ECS/Core/SoAStorage.ts:444–490  ·  view source on GitHub ↗
(_, prop: string | symbol, value)

Source from the content-addressed store, hash-verified

442 },
443
444 set(_, prop: string | symbol, value) {
445 const propStr = String(prop);
446
447 // entityId 是只读的
448 if (propStr === 'entityId') {
449 return false;
450 }
451
452 // TypedArray 字段
453 const array = self.fields.get(propStr);
454 if (array) {
455 const fieldType = self.getFieldType(propStr);
456 if (fieldType === 'boolean') {
457 array[index] = value ? 1 : 0;
458 } else {
459 array[index] = value;
460 }
461 return true;
462 }
463
464 // 字符串字段
465 const stringArray = self.stringFields.get(propStr);
466 if (stringArray) {
467 stringArray[index] = String(value);
468 return true;
469 }
470
471 // 序列化字段
472 if (self.serializedFields.has(propStr)) {
473 const serializedArray = self.serializedFields.get(propStr)!;
474 serializedArray[index] = SoASerializer.serialize(value, propStr, {
475 isMap: self.serializeMapFields.has(propStr),
476 isSet: self.serializeSetFields.has(propStr),
477 isArray: self.serializeArrayFields.has(propStr)
478 });
479 return true;
480 }
481
482 // 复杂字段
483 let complexFieldMap = self.complexFields.get(entityId);
484 if (!complexFieldMap) {
485 complexFieldMap = new Map();
486 self.complexFields.set(entityId, complexFieldMap);
487 }
488 complexFieldMap.set(propStr, value);
489 return true;
490 },
491
492 has(_, prop) {
493 const propStr = String(prop);

Callers

nothing calls this directly

Calls 5

getMethod · 0.65
hasMethod · 0.65
serializeMethod · 0.65
setMethod · 0.65
getFieldTypeMethod · 0.45

Tested by

no test coverage detected