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

Method hasAny

packages/core/src/ECS/Utils/BigIntCompatibility.ts:60–73  ·  view source on GitHub ↗

* 检查掩码是否包含任意指定的位 * @param mask 要检查的掩码 * @param bits 指定的位模式 * @returns 如果掩码包含bits中的任意位则返回true

(mask: BitMask64Data, bits: BitMask64Data)

Source from the content-addressed store, hash-verified

58 * @returns 如果掩码包含bits中的任意位则返回true
59 */
60 public static hasAny(mask: BitMask64Data, bits: BitMask64Data): boolean {
61 const bitsBase = bits.base;
62 const maskBase = mask.base;
63 const bitsSegments = bits.segments;
64 const maskSegments = mask.segments;
65 const baseHasAny = (maskBase[SegmentPart.LOW] & bitsBase[SegmentPart.LOW]) !== 0 || (maskBase[SegmentPart.HIGH] & bitsBase[SegmentPart.HIGH]) !== 0;
66 // 基础区段就包含指定的位,或任意一个参数不含扩展区段,直接短路
67 if(baseHasAny || !bitsSegments || !maskSegments) return baseHasAny;
68 // 额外检查扩展区域是否包含指定的位 - 如果bitsSegments[index]不存在,会被转为NaN,NaN的位运算始终返回0
69 return maskSegments.some((seg, index) => {
70 const bitsSeg = bitsSegments[index];
71 return bitsSeg && ((seg[SegmentPart.LOW] & bitsSeg[SegmentPart.LOW]) !== 0 || (seg[SegmentPart.HIGH] & bitsSeg[SegmentPart.HIGH]) !== 0);
72 });
73 }
74
75 /**
76 * 检查掩码是否包含所有指定的位

Callers 6

hasComponentMethod · 0.45
intersectsMethod · 0.45
queryMultipleOrMethod · 0.45
hasComponentMethod · 0.45
matchesMethod · 0.45

Calls 1

someMethod · 0.45

Tested by

no test coverage detected