@alife-sdk/ai 0.3.0 → 0.4.1
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/dist/combat/CombatTransitionChain.d.ts +1 -3
- package/dist/combat/CombatTransitionChain.d.ts.map +1 -1
- package/dist/combat/CombatTransitionChain.js +1 -6
- package/dist/combat/CombatTransitionChain.js.map +1 -1
- package/dist/combat/LoadoutBuilder.js +1 -1
- package/dist/combat/LoadoutBuilder.js.map +1 -1
- package/dist/cover/CoverEvaluators.d.ts.map +1 -1
- package/dist/cover/CoverEvaluators.js +20 -13
- package/dist/cover/CoverEvaluators.js.map +1 -1
- package/dist/cover/CoverLockRegistry.d.ts.map +1 -1
- package/dist/cover/CoverLockRegistry.js +1 -0
- package/dist/cover/CoverLockRegistry.js.map +1 -1
- package/dist/cover/CoverRegistry.d.ts +2 -1
- package/dist/cover/CoverRegistry.d.ts.map +1 -1
- package/dist/cover/CoverRegistry.js +4 -3
- package/dist/cover/CoverRegistry.js.map +1 -1
- package/dist/goap/GOAPController.d.ts.map +1 -1
- package/dist/goap/GOAPController.js +21 -3
- package/dist/goap/GOAPController.js.map +1 -1
- package/dist/goap/GoalSelector.d.ts +1 -1
- package/dist/goap/GoalSelector.d.ts.map +1 -1
- package/dist/goap/GoalSelector.js +27 -2
- package/dist/goap/GoalSelector.js.map +1 -1
- package/dist/goap/WorldStateBuilder.js +2 -2
- package/dist/goap/WorldStateBuilder.js.map +1 -1
- package/dist/navigation/PathSmoother.d.ts.map +1 -1
- package/dist/navigation/PathSmoother.js +7 -2
- package/dist/navigation/PathSmoother.js.map +1 -1
- package/dist/navigation/RestrictedZoneManager.d.ts +10 -1
- package/dist/navigation/RestrictedZoneManager.d.ts.map +1 -1
- package/dist/navigation/RestrictedZoneManager.js +14 -3
- package/dist/navigation/RestrictedZoneManager.js.map +1 -1
- package/dist/navigation/SmoothPathFollower.d.ts +3 -0
- package/dist/navigation/SmoothPathFollower.d.ts.map +1 -1
- package/dist/navigation/SmoothPathFollower.js +8 -5
- package/dist/navigation/SmoothPathFollower.js.map +1 -1
- package/dist/perception/NPCSensors.d.ts +6 -6
- package/dist/perception/NPCSensors.d.ts.map +1 -1
- package/dist/perception/NPCSensors.js +6 -6
- package/dist/perception/NPCSensors.js.map +1 -1
- package/dist/perception/PerceptionQuery.d.ts +1 -5
- package/dist/perception/PerceptionQuery.d.ts.map +1 -1
- package/dist/perception/PerceptionQuery.js +2 -9
- package/dist/perception/PerceptionQuery.js.map +1 -1
- package/dist/states/INPCOnlineState.d.ts +42 -12
- package/dist/states/INPCOnlineState.d.ts.map +1 -1
- package/dist/states/IStateConfig.d.ts +22 -4
- package/dist/states/IStateConfig.d.ts.map +1 -1
- package/dist/states/IStateConfig.js +4 -2
- package/dist/states/IStateConfig.js.map +1 -1
- package/dist/states/IStateTransitionMap.d.ts +1 -0
- package/dist/states/IStateTransitionMap.d.ts.map +1 -1
- package/dist/states/IStateTransitionMap.js +1 -0
- package/dist/states/IStateTransitionMap.js.map +1 -1
- package/dist/states/NPCOnlineState.js +6 -5
- package/dist/states/NPCOnlineState.js.map +1 -1
- package/dist/states/handlers/AlertState.d.ts.map +1 -1
- package/dist/states/handlers/AlertState.js +0 -1
- package/dist/states/handlers/AlertState.js.map +1 -1
- package/dist/states/handlers/CampState.js +5 -5
- package/dist/states/handlers/CampState.js.map +1 -1
- package/dist/states/handlers/ChargeState.d.ts.map +1 -1
- package/dist/states/handlers/ChargeState.js +14 -6
- package/dist/states/handlers/ChargeState.js.map +1 -1
- package/dist/states/handlers/CombatState.d.ts +1 -1
- package/dist/states/handlers/CombatState.d.ts.map +1 -1
- package/dist/states/handlers/CombatState.js +16 -7
- package/dist/states/handlers/CombatState.js.map +1 -1
- package/dist/states/handlers/CombatTransitionHandler.d.ts +8 -1
- package/dist/states/handlers/CombatTransitionHandler.d.ts.map +1 -1
- package/dist/states/handlers/CombatTransitionHandler.js +18 -4
- package/dist/states/handlers/CombatTransitionHandler.js.map +1 -1
- package/dist/states/handlers/DeadState.d.ts.map +1 -1
- package/dist/states/handlers/DeadState.js +0 -3
- package/dist/states/handlers/DeadState.js.map +1 -1
- package/dist/states/handlers/EvadeGrenadeState.d.ts +1 -1
- package/dist/states/handlers/EvadeGrenadeState.d.ts.map +1 -1
- package/dist/states/handlers/EvadeGrenadeState.js +8 -17
- package/dist/states/handlers/EvadeGrenadeState.js.map +1 -1
- package/dist/states/handlers/FleeState.d.ts.map +1 -1
- package/dist/states/handlers/FleeState.js +34 -5
- package/dist/states/handlers/FleeState.js.map +1 -1
- package/dist/states/handlers/IdleState.d.ts.map +1 -1
- package/dist/states/handlers/IdleState.js +16 -6
- package/dist/states/handlers/IdleState.js.map +1 -1
- package/dist/states/handlers/KillWoundedState.d.ts.map +1 -1
- package/dist/states/handlers/KillWoundedState.js +14 -0
- package/dist/states/handlers/KillWoundedState.js.map +1 -1
- package/dist/states/handlers/PatrolState.d.ts.map +1 -1
- package/dist/states/handlers/PatrolState.js +10 -0
- package/dist/states/handlers/PatrolState.js.map +1 -1
- package/dist/states/handlers/RetreatState.d.ts.map +1 -1
- package/dist/states/handlers/RetreatState.js +19 -9
- package/dist/states/handlers/RetreatState.js.map +1 -1
- package/dist/states/handlers/SleepState.d.ts.map +1 -1
- package/dist/states/handlers/SleepState.js +9 -12
- package/dist/states/handlers/SleepState.js.map +1 -1
- package/dist/states/handlers/StalkState.js +2 -2
- package/dist/states/handlers/TakeCoverState.d.ts.map +1 -1
- package/dist/states/handlers/TakeCoverState.js +6 -13
- package/dist/states/handlers/TakeCoverState.js.map +1 -1
- package/dist/states/handlers/WoundedState.d.ts.map +1 -1
- package/dist/states/handlers/WoundedState.js +4 -3
- package/dist/states/handlers/WoundedState.js.map +1 -1
- package/dist/states/handlers/_utils.d.ts +2 -0
- package/dist/states/handlers/_utils.d.ts.map +1 -1
- package/dist/states/handlers/_utils.js +16 -3
- package/dist/states/handlers/_utils.js.map +1 -1
- package/dist/suspicion/SuspicionAccumulator.d.ts +6 -5
- package/dist/suspicion/SuspicionAccumulator.d.ts.map +1 -1
- package/dist/suspicion/SuspicionAccumulator.js +7 -6
- package/dist/suspicion/SuspicionAccumulator.js.map +1 -1
- package/dist/types/ICoverPoint.d.ts +6 -0
- package/dist/types/ICoverPoint.d.ts.map +1 -1
- package/dist/types/ICoverPoint.js.map +1 -1
- package/dist/types/IPerceptionTypes.d.ts +27 -4
- package/dist/types/IPerceptionTypes.d.ts.map +1 -1
- package/dist/types/IPerceptionTypes.js +9 -4
- package/dist/types/IPerceptionTypes.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PathSmoother.js","sourceRoot":"","sources":["../../src/navigation/PathSmoother.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,8DAA8D;AAC9D,
|
|
1
|
+
{"version":3,"file":"PathSmoother.js","sourceRoot":"","sources":["../../src/navigation/PathSmoother.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,7 +33,7 @@ export interface IRestrictedZone {
|
|
|
33
33
|
* const zones = new RestrictedZoneManager(20); // 20px safety margin
|
|
34
34
|
* zones.addZone({ id: 'rad_1', type: RestrictionType.OUT, x: 100, y: 100, radius: 50, active: true });
|
|
35
35
|
*
|
|
36
|
-
* if (!zones.
|
|
36
|
+
* if (!zones.isAccessible(110, 110)) {
|
|
37
37
|
* const safe = zones.getSafeDirection(110, 110);
|
|
38
38
|
* // Move NPC along safe.dx, safe.dy
|
|
39
39
|
* }
|
|
@@ -59,6 +59,15 @@ export declare class RestrictedZoneManager {
|
|
|
59
59
|
* - DANGER zones: ignored (soft avoidance only).
|
|
60
60
|
*
|
|
61
61
|
* Uses squared-distance for performance. Early-exit on first violation.
|
|
62
|
+
*
|
|
63
|
+
* Implements {@link IRestrictedZoneAccess.isAccessible}.
|
|
64
|
+
*/
|
|
65
|
+
isAccessible(x: number, y: number): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* @deprecated Use {@link isAccessible} instead.
|
|
68
|
+
*
|
|
69
|
+
* Alias kept for backwards compatibility with existing call sites.
|
|
70
|
+
* Will be removed in a future major version.
|
|
62
71
|
*/
|
|
63
72
|
accessible(x: number, y: number): boolean;
|
|
64
73
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestrictedZoneManager.d.ts","sourceRoot":"","sources":["../../src/navigation/RestrictedZoneManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,MAAM;IAQ9B,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAIpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAK5C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQnC,WAAW,IAAI,SAAS,eAAe,EAAE;IAIzC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAa5D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAQb
|
|
1
|
+
{"version":3,"file":"RestrictedZoneManager.d.ts","sourceRoot":"","sources":["../../src/navigation/RestrictedZoneManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;CAIlB,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,OAAO,eAAe,CAAC,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;gBAExB,UAAU,EAAE,MAAM;IAQ9B,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IAIpC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI5B,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAK5C,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQnC,WAAW,IAAI,SAAS,eAAe,EAAE;IAIzC,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAa5D,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,KAAK,IAAI,IAAI;IAQb;;;;;;;;;;OAUG;IACH,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAmB3C;;;;;OAKG;IACH,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAQzC;;;OAGG;IACH,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAgB1C;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAuCnD;;;OAGG;IACH,yBAAyB,CAAC,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE;CAGxE"}
|
|
@@ -22,7 +22,7 @@ export const RestrictionType = {
|
|
|
22
22
|
* const zones = new RestrictedZoneManager(20); // 20px safety margin
|
|
23
23
|
* zones.addZone({ id: 'rad_1', type: RestrictionType.OUT, x: 100, y: 100, radius: 50, active: true });
|
|
24
24
|
*
|
|
25
|
-
* if (!zones.
|
|
25
|
+
* if (!zones.isAccessible(110, 110)) {
|
|
26
26
|
* const safe = zones.getSafeDirection(110, 110);
|
|
27
27
|
* // Move NPC along safe.dx, safe.dy
|
|
28
28
|
* }
|
|
@@ -89,8 +89,10 @@ export class RestrictedZoneManager {
|
|
|
89
89
|
* - DANGER zones: ignored (soft avoidance only).
|
|
90
90
|
*
|
|
91
91
|
* Uses squared-distance for performance. Early-exit on first violation.
|
|
92
|
+
*
|
|
93
|
+
* Implements {@link IRestrictedZoneAccess.isAccessible}.
|
|
92
94
|
*/
|
|
93
|
-
|
|
95
|
+
isAccessible(x, y) {
|
|
94
96
|
for (const zone of this.zones.values()) {
|
|
95
97
|
if (!zone.active)
|
|
96
98
|
continue;
|
|
@@ -109,6 +111,15 @@ export class RestrictedZoneManager {
|
|
|
109
111
|
}
|
|
110
112
|
return true;
|
|
111
113
|
}
|
|
114
|
+
/**
|
|
115
|
+
* @deprecated Use {@link isAccessible} instead.
|
|
116
|
+
*
|
|
117
|
+
* Alias kept for backwards compatibility with existing call sites.
|
|
118
|
+
* Will be removed in a future major version.
|
|
119
|
+
*/
|
|
120
|
+
accessible(x, y) {
|
|
121
|
+
return this.isAccessible(x, y);
|
|
122
|
+
}
|
|
112
123
|
// -----------------------------------------------------------------
|
|
113
124
|
// Soft Danger Check
|
|
114
125
|
// -----------------------------------------------------------------
|
|
@@ -173,7 +184,7 @@ export class RestrictedZoneManager {
|
|
|
173
184
|
* O(waypoints × zones).
|
|
174
185
|
*/
|
|
175
186
|
filterAccessibleWaypoints(waypoints) {
|
|
176
|
-
return waypoints.filter((wp) => this.
|
|
187
|
+
return waypoints.filter((wp) => this.isAccessible(wp.x, wp.y));
|
|
177
188
|
}
|
|
178
189
|
}
|
|
179
190
|
//# sourceMappingURL=RestrictedZoneManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RestrictedZoneManager.js","sourceRoot":"","sources":["../../src/navigation/RestrictedZoneManager.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,6CAA6C;AAC7C,+DAA+D;AAI/D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,EAAE,EAAE,CAAC;IACL,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;CACD,CAAC;AAiBX;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,qBAAqB;IAIhC,YAAY,UAAkB;QAHb,UAAK,GAAG,IAAI,GAAG,EAA2B,CAAC;QAI1D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,oEAAoE;IACpE,iBAAiB;IACjB,oEAAoE;IAEpE,OAAO,CAAC,IAAqB;QAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,EAAU,EAAE,MAAe;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,gBAAgB,CAAC,GAAW;QAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpC,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG;gBAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,MAAM,EAAE,IAAI,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,WAAW;QACT,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,CAAS,EAAE,CAAS;QAC7B,MAAM,MAAM,GAAsB,EAAE,CAAC;QACrC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAC3B,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACtB,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YACtB,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED,oEAAoE;IACpE,wBAAwB;IACxB,oEAAoE;IAEpE
|
|
1
|
+
{"version":3,"file":"RestrictedZoneManager.js","sourceRoot":"","sources":["../../src/navigation/RestrictedZoneManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ export declare class SmoothPathFollower {
|
|
|
27
27
|
constructor(points: readonly Vec2[], config: INavigationConfig);
|
|
28
28
|
/**
|
|
29
29
|
* Advance the cursor if the NPC is close enough to the current target.
|
|
30
|
+
* Also steps the velocity multiplier lerp exactly once per frame.
|
|
30
31
|
* @returns `true` if the cursor advanced, `false` if not yet arrived.
|
|
31
32
|
*/
|
|
32
33
|
updatePosition(x: number, y: number): boolean;
|
|
@@ -38,6 +39,8 @@ export declare class SmoothPathFollower {
|
|
|
38
39
|
* Smoothed velocity multiplier for the current path segment.
|
|
39
40
|
* Value in approximately [velocitySlow, velocityFast] — transitions
|
|
40
41
|
* gradually between speed bands.
|
|
42
|
+
*
|
|
43
|
+
* Pure read — the lerp step is advanced once per frame by updatePosition().
|
|
41
44
|
*/
|
|
42
45
|
getCurrentVelocityMultiplier(): number;
|
|
43
46
|
/** Reset cursor to the start (for looping patrols). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmoothPathFollower.d.ts","sourceRoot":"","sources":["../../src/navigation/SmoothPathFollower.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAKlE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoB;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,yBAAyB,CAAS;gBAE9B,MAAM,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB;IAQ9D
|
|
1
|
+
{"version":3,"file":"SmoothPathFollower.d.ts","sourceRoot":"","sources":["../../src/navigation/SmoothPathFollower.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAKlE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAoB;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,yBAAyB,CAAS;gBAE9B,MAAM,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,EAAE,iBAAiB;IAQ9D;;;;OAIG;IACH,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO;IAsB7C,4EAA4E;IAC5E,gBAAgB,IAAI,IAAI,GAAG,IAAI;IAI/B,uDAAuD;IACvD,UAAU,IAAI,OAAO;IAIrB;;;;;;OAMG;IACH,4BAA4B,IAAI,MAAM;IAItC,uDAAuD;IACvD,KAAK,IAAI,IAAI;IAQb,kCAAkC;IAClC,WAAW,IAAI,MAAM;IAKrB,iDAAiD;IACjD,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,OAAO,CAAC,wBAAwB;CA8CjC"}
|
|
@@ -31,9 +31,15 @@ export class SmoothPathFollower {
|
|
|
31
31
|
}
|
|
32
32
|
/**
|
|
33
33
|
* Advance the cursor if the NPC is close enough to the current target.
|
|
34
|
+
* Also steps the velocity multiplier lerp exactly once per frame.
|
|
34
35
|
* @returns `true` if the cursor advanced, `false` if not yet arrived.
|
|
35
36
|
*/
|
|
36
37
|
updatePosition(x, y) {
|
|
38
|
+
const targetMultiplier = this.isComplete()
|
|
39
|
+
? 1.0
|
|
40
|
+
: (this.velocityMultipliers[this.currentIndex] ?? 1.0);
|
|
41
|
+
this.currentVelocityMultiplier +=
|
|
42
|
+
(targetMultiplier - this.currentVelocityMultiplier) * this.transitionRate;
|
|
37
43
|
if (this.isComplete())
|
|
38
44
|
return false;
|
|
39
45
|
const target = this.points[this.currentIndex];
|
|
@@ -58,13 +64,10 @@ export class SmoothPathFollower {
|
|
|
58
64
|
* Smoothed velocity multiplier for the current path segment.
|
|
59
65
|
* Value in approximately [velocitySlow, velocityFast] — transitions
|
|
60
66
|
* gradually between speed bands.
|
|
67
|
+
*
|
|
68
|
+
* Pure read — the lerp step is advanced once per frame by updatePosition().
|
|
61
69
|
*/
|
|
62
70
|
getCurrentVelocityMultiplier() {
|
|
63
|
-
if (this.isComplete())
|
|
64
|
-
return 1.0;
|
|
65
|
-
const target = this.velocityMultipliers[this.currentIndex] ?? 1.0;
|
|
66
|
-
this.currentVelocityMultiplier +=
|
|
67
|
-
(target - this.currentVelocityMultiplier) * this.transitionRate;
|
|
68
71
|
return this.currentVelocityMultiplier;
|
|
69
72
|
}
|
|
70
73
|
/** Reset cursor to the start (for looping patrols). */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmoothPathFollower.js","sourceRoot":"","sources":["../../src/navigation/SmoothPathFollower.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,qEAAqE;AACrE,8DAA8D;AAK9D,MAAM,wBAAwB,GAAG,IAAI,CAAC;AACtC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEzC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAkB;IAQ7B,YAAY,MAAuB,EAAE,MAAyB;QAHtD,iBAAY,GAAG,CAAC,CAAC;QAIvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QACrE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,sBAAsB,CAAC;QACpD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACjE,IAAI,CAAC,yBAAyB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC5D,CAAC;IAED
|
|
1
|
+
{"version":3,"file":"SmoothPathFollower.js","sourceRoot":"","sources":["../../src/navigation/SmoothPathFollower.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,13 +102,13 @@ export declare class NPCSensors {
|
|
|
102
102
|
*
|
|
103
103
|
* O(h) where h = hearer count.
|
|
104
104
|
*
|
|
105
|
-
* @param sourcePos
|
|
106
|
-
* @param soundRange
|
|
107
|
-
* @param sourceId
|
|
108
|
-
* @param
|
|
109
|
-
* @param hearers
|
|
105
|
+
* @param sourcePos - World-space origin of the sound.
|
|
106
|
+
* @param soundRange - Maximum propagation range in world units.
|
|
107
|
+
* @param sourceId - Entity id of the sound source (excluded from results).
|
|
108
|
+
* @param sourceFactionId - Faction of the sound source (unused — sound is omnidirectional).
|
|
109
|
+
* @param hearers - Candidate entities that may hear the sound.
|
|
110
110
|
*/
|
|
111
|
-
detectSound(sourcePos: Vec2, soundRange: number, sourceId: string, _sourceFactionId
|
|
111
|
+
detectSound(sourcePos: Vec2, soundRange: number, sourceId: string, _sourceFactionId?: string, hearers?: readonly IPerceptibleEntity[]): IDetectionEvent[];
|
|
112
112
|
}
|
|
113
113
|
/**
|
|
114
114
|
* Filter squad-shared target intel by freshness.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NPCSensors.d.ts","sourceRoot":"","sources":["../../src/perception/NPCSensors.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOnD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,WAAW,EAAE,WAAW,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACzD,uEAAuE;IACvE,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;IACvE;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,OAAO,CAAC;CACxD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;gBAElE,MAAM,EAAE,iBAAiB;IAMrC;;;;;;;;;OASG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,eAAe,EAAE;IA4CzE;;;;;;;;;;;;;OAaG;IACH,WAAW,CACT,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"NPCSensors.d.ts","sourceRoot":"","sources":["../../src/perception/NPCSensors.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAOnD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,8CAA8C;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,sFAAsF;IACtF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,yDAAyD;AACzD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IACrC;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,WAAW,EAAE,WAAW,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACzD,uEAAuE;IACvE,SAAS,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC;IACvE;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,KAAK,OAAO,CAAC;CACxD;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA8C;IACpE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoC;IAC/D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;gBAElE,MAAM,EAAE,iBAAiB;IAMrC;;;;;;;;;OASG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,kBAAkB,EAAE,GAAG,eAAe,EAAE;IA4CzE;;;;;;;;;;;;;OAaG;IACH,WAAW,CACT,SAAS,EAAE,IAAI,EACf,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,GAAE,SAAS,kBAAkB,EAAO,GAC1C,eAAe,EAAE;CA+BrB;AAMD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,EAChF,aAAa,EAAE,MAAM,EACrB,WAAW,SAAO,GACjB,aAAa,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,IAAI,CAAA;CAAE,CAAC,CAQ/C"}
|
|
@@ -89,13 +89,13 @@ export class NPCSensors {
|
|
|
89
89
|
*
|
|
90
90
|
* O(h) where h = hearer count.
|
|
91
91
|
*
|
|
92
|
-
* @param sourcePos
|
|
93
|
-
* @param soundRange
|
|
94
|
-
* @param sourceId
|
|
95
|
-
* @param
|
|
96
|
-
* @param hearers
|
|
92
|
+
* @param sourcePos - World-space origin of the sound.
|
|
93
|
+
* @param soundRange - Maximum propagation range in world units.
|
|
94
|
+
* @param sourceId - Entity id of the sound source (excluded from results).
|
|
95
|
+
* @param sourceFactionId - Faction of the sound source (unused — sound is omnidirectional).
|
|
96
|
+
* @param hearers - Candidate entities that may hear the sound.
|
|
97
97
|
*/
|
|
98
|
-
detectSound(sourcePos, soundRange, sourceId, _sourceFactionId, hearers) {
|
|
98
|
+
detectSound(sourcePos, soundRange, sourceId, _sourceFactionId, hearers = []) {
|
|
99
99
|
if (soundRange <= 0)
|
|
100
100
|
return [];
|
|
101
101
|
const results = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NPCSensors.js","sourceRoot":"","sources":["../../src/perception/NPCSensors.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,4DAA4D;AAC5D,EAAE;AACF,wEAAwE;AACxE,kGAAkG;AAClG,EAAE;AACF,sEAAsE;AAItE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA+DxD,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,UAAU;IAKrB,YAAY,MAAyB;QACnC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC;IAC/C,CAAC;IAED;;;;;;;;;OASG;IACH,YAAY,CAAC,SAAwC;QACnD,MAAM,OAAO,GAAsB,EAAE,CAAC;QAEtC,iEAAiE;QACjE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;QACxD,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAElD,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,OAAO;gBAAE,SAAS;YAEhC,2EAA2E;YAC3E,MAAM,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;YAExF,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;gBAC9B,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;oBAAE,SAAS;gBAEtC,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,SAAS;gBACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAErE,IAAI,CAAC,OAAO,CACV,QAAQ,CAAC,QAAQ,EACjB,QAAQ,CAAC,WAAW,EACpB,MAAM,CAAC,QAAQ,EACf,QAAQ,CAAC,WAAW,EACpB,QAAQ,CAAC,eAAe,CACzB;oBAAE,SAAS;gBAEZ,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;oBAAE,SAAS;gBAExF,OAAO,CAAC,IAAI,CAAC;oBACX,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,cAAc,EAAE,MAAM,CAAC,QAAQ;oBAC/B,OAAO,EAAE,QAAQ;oBACjB,UAAU,EAAE,GAAG;iBAChB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,WAAW,CACT,SAAe,EACf,UAAkB,EAClB,QAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"NPCSensors.js","sourceRoot":"","sources":["../../src/perception/NPCSensors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Vec2 } from '@alife-sdk/core';
|
|
2
|
+
export { distanceSq } from '@alife-sdk/core';
|
|
2
3
|
import type { IPerceivedEntity, IPerceptionConfig } from '../types/IPerceptionTypes';
|
|
3
4
|
/**
|
|
4
5
|
* Check if a target is within a vision cone.
|
|
@@ -45,11 +46,6 @@ export declare function filterHostileEntities(entities: readonly IPerceivedEntit
|
|
|
45
46
|
* Returns a reusable scratch array — do not hold a reference across calls.
|
|
46
47
|
*/
|
|
47
48
|
export declare function filterFriendlyEntities(entities: readonly IPerceivedEntity[], observerFactionId: string, isHostile: (factionA: string, factionB: string) => boolean): IPerceivedEntity[];
|
|
48
|
-
/**
|
|
49
|
-
* Calculate squared distance between two points.
|
|
50
|
-
* Avoid sqrt when only comparing relative distances.
|
|
51
|
-
*/
|
|
52
|
-
export declare function distanceSq(a: Vec2, b: Vec2): number;
|
|
53
49
|
/**
|
|
54
50
|
* Find the closest entity to a position.
|
|
55
51
|
* Returns null if array is empty.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerceptionQuery.d.ts","sourceRoot":"","sources":["../../src/perception/PerceptionQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"PerceptionQuery.d.ts","sourceRoot":"","sources":["../../src/perception/PerceptionQuery.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAWrF;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAgBT;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,SAAS,gBAAgB,EAAE,EACvC,MAAM,EAAE,iBAAiB,GACxB,gBAAgB,EAAE,CA8BpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,IAAI,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,EAAE,CAiBpB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GACzD,gBAAgB,EAAE,CASpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,EACrC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,GACzD,gBAAgB,EAAE,CAYpB;AAED;;;GAGG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,IAAI,EACZ,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACpC,gBAAgB,GAAG,IAAI,CAazB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,IAAI,EACZ,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,SAAS,gBAAgB,EAAE,EACvC,iBAAiB,EAAE,MAAM,EACzB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,OAAO,EAC1D,MAAM,EAAE,iBAAiB,GACxB,gBAAgB,EAAE,CAgCpB"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
// perception/PerceptionQuery.ts
|
|
2
2
|
// Pure math functions for spatial perception queries.
|
|
3
3
|
// No side effects, no state — all functions are deterministic.
|
|
4
|
+
import { distanceSq } from '@alife-sdk/core';
|
|
5
|
+
export { distanceSq } from '@alife-sdk/core';
|
|
4
6
|
// ---------------------------------------------------------------------------
|
|
5
7
|
// Reusable scratch arrays — one per filter function.
|
|
6
8
|
// Single-threaded, safe to reuse between calls.
|
|
@@ -134,15 +136,6 @@ export function filterFriendlyEntities(entities, observerFactionId, isHostile) {
|
|
|
134
136
|
}
|
|
135
137
|
return _friendlyScratch;
|
|
136
138
|
}
|
|
137
|
-
/**
|
|
138
|
-
* Calculate squared distance between two points.
|
|
139
|
-
* Avoid sqrt when only comparing relative distances.
|
|
140
|
-
*/
|
|
141
|
-
export function distanceSq(a, b) {
|
|
142
|
-
const dx = a.x - b.x;
|
|
143
|
-
const dy = a.y - b.y;
|
|
144
|
-
return dx * dx + dy * dy;
|
|
145
|
-
}
|
|
146
139
|
/**
|
|
147
140
|
* Find the closest entity to a position.
|
|
148
141
|
* Returns null if array is empty.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PerceptionQuery.js","sourceRoot":"","sources":["../../src/perception/PerceptionQuery.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,sDAAsD;AACtD,+DAA+D;
|
|
1
|
+
{"version":3,"file":"PerceptionQuery.js","sourceRoot":"","sources":["../../src/perception/PerceptionQuery.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,8 @@ export interface IChargePhase {
|
|
|
24
24
|
targetX: number;
|
|
25
25
|
/** World Y of the charge target when the charge was initiated. */
|
|
26
26
|
targetY: number;
|
|
27
|
+
/** scene.time.now when the full-speed charge began (ms), for timeout. */
|
|
28
|
+
chargeStartMs: number;
|
|
27
29
|
}
|
|
28
30
|
/**
|
|
29
31
|
* Bloodsucker stalk approach phase data.
|
|
@@ -74,8 +76,8 @@ export interface IPsiPhase {
|
|
|
74
76
|
* in tests). All online state handlers are stateless — they read and write
|
|
75
77
|
* this bag each frame via {@link INPCContext.state}.
|
|
76
78
|
*
|
|
77
|
-
* Fields match those in the game-layer AIComponent
|
|
78
|
-
* (
|
|
79
|
+
* Fields match those in the game-layer AIComponent and use absolute ms
|
|
80
|
+
* timestamps compared via subtraction (ctx.now() - field).
|
|
79
81
|
*/
|
|
80
82
|
export interface INPCOnlineState {
|
|
81
83
|
/** Stable entity ID of the current combat target, or null when no target. */
|
|
@@ -93,7 +95,7 @@ export interface INPCOnlineState {
|
|
|
93
95
|
alertStartMs: number;
|
|
94
96
|
/** ctx.now() when SEARCH state was entered. */
|
|
95
97
|
searchStartMs: number;
|
|
96
|
-
/** ctx.now() of the last
|
|
98
|
+
/** ctx.now() of the last restricted-zone check (throttle for zone-exit logic in IdleState). */
|
|
97
99
|
lastIdleAnimChangeMs: number;
|
|
98
100
|
/** ctx.now() of the last melee attack performed. */
|
|
99
101
|
lastMeleeMs: number;
|
|
@@ -104,15 +106,25 @@ export interface INPCOnlineState {
|
|
|
104
106
|
/** ctx.now() of the last grenade throw. */
|
|
105
107
|
lastGrenadeMs: number;
|
|
106
108
|
/** ctx.now() of the last suppressive fire shot during RETREAT. */
|
|
107
|
-
|
|
109
|
+
lastSuppressiveFireMs: number;
|
|
108
110
|
/** ctx.now() when the current grenade throw wind-up began. */
|
|
109
111
|
grenadeThrowStartMs: number;
|
|
110
112
|
/** ctx.now() when EVADE_GRENADE state was entered. */
|
|
111
113
|
evadeStartMs: number;
|
|
112
114
|
/** ctx.now() when WOUNDED state was entered. */
|
|
113
115
|
woundedStartMs: number;
|
|
114
|
-
/**
|
|
115
|
-
|
|
116
|
+
/**
|
|
117
|
+
* ctx.now() when SleepState began tracking a detected threat.
|
|
118
|
+
* Used exclusively by SleepState as its delayed-reaction timer so that it
|
|
119
|
+
* does not pollute woundedStartMs (which CombatTransitionHandler reads to
|
|
120
|
+
* compute timeSinceWoundedMs for the WOUNDED transition guard).
|
|
121
|
+
* 0 = no pending reaction.
|
|
122
|
+
*/
|
|
123
|
+
sleepReactionStartMs: number;
|
|
124
|
+
/** ctx.now() when RETREAT state was entered. Used to enforce retreatMaxDurationMs on the no-cover flee path. */
|
|
125
|
+
retreatStartMs: number;
|
|
126
|
+
/** ctx.now() of the last medkit use. 0 = never used. */
|
|
127
|
+
lastMedkitMs: number;
|
|
116
128
|
/** ctx.now() when INVESTIGATE state was entered. */
|
|
117
129
|
investigateStartMs: number;
|
|
118
130
|
/** ctx.now() when the NPC arrived at the investigate target and began looking around. -1 = not yet arrived. */
|
|
@@ -147,10 +159,6 @@ export interface INPCOnlineState {
|
|
|
147
159
|
killWoundedTargetY: number;
|
|
148
160
|
/** Timestamp of last outgoing pack broadcast (ms). Used to throttle MonsterCombatController broadcasts. */
|
|
149
161
|
packLastBroadcastMs: number;
|
|
150
|
-
/** Current patrol waypoint index (wraps by handler). */
|
|
151
|
-
patrolWaypointIndex: number;
|
|
152
|
-
/** Current search waypoint index. */
|
|
153
|
-
searchWaypointIndex: number;
|
|
154
162
|
/** ID of the primary weapon (e.g. 'rifle'), or null if unarmed. */
|
|
155
163
|
primaryWeapon: string | null;
|
|
156
164
|
/** ID of the secondary weapon (e.g. 'pistol'), or null if not carrying one. */
|
|
@@ -163,15 +171,27 @@ export interface INPCOnlineState {
|
|
|
163
171
|
isAlert: boolean;
|
|
164
172
|
/** True while the NPC is occupying a cover position. */
|
|
165
173
|
hasTakenCover: boolean;
|
|
166
|
-
/**
|
|
174
|
+
/**
|
|
175
|
+
* ctx.now() when the NPC last transitioned to TakeCoverState.
|
|
176
|
+
* Used to enforce a cooldown before seeking cover again after returning to
|
|
177
|
+
* CombatState, preventing the cover-seek ping-pong loop.
|
|
178
|
+
*/
|
|
179
|
+
lastSeekCoverMs: number;
|
|
180
|
+
/** World X of the current cover destination (set on cover-state entry, used for movement). */
|
|
167
181
|
coverPointX: number;
|
|
168
|
-
/** World Y of the current cover
|
|
182
|
+
/** World Y of the current cover destination (set on cover-state entry, used for movement). */
|
|
169
183
|
coverPointY: number;
|
|
170
184
|
/**
|
|
171
185
|
* TakeCoverState loophole peek-fire-return-wait cycle data.
|
|
172
186
|
* Null when not in TAKE_COVER state.
|
|
173
187
|
*/
|
|
174
188
|
loophole: ILoopholeState | null;
|
|
189
|
+
/**
|
|
190
|
+
* Absolute timestamp (ms) at which the current loophole WAIT phase ends.
|
|
191
|
+
* Written by TakeCoverState; separate from lastGrenadeMs to avoid
|
|
192
|
+
* corrupting the grenade cooldown when cycling through GrenadeState.
|
|
193
|
+
*/
|
|
194
|
+
loopholeWaitEndMs: number;
|
|
175
195
|
/** Boar charge attack data. */
|
|
176
196
|
chargePhase?: IChargePhase;
|
|
177
197
|
/** Bloodsucker stalk approach data. */
|
|
@@ -186,6 +206,16 @@ export interface INPCOnlineState {
|
|
|
186
206
|
* Undefined for NPCs that never enter EAT_CORPSE.
|
|
187
207
|
*/
|
|
188
208
|
eatCorpsePhase?: IEatCorpsePhase;
|
|
209
|
+
/**
|
|
210
|
+
* Set of corpse entity IDs that have already contributed suspicion during
|
|
211
|
+
* the current PATROL entry. Cleared on each PatrolState.enter() so that
|
|
212
|
+
* a corpse the NPC has not yet reacted to can still trigger suspicion on
|
|
213
|
+
* re-entry. Undefined until the first corpse is seen.
|
|
214
|
+
*
|
|
215
|
+
* Prevents the PATROL→ALERT→PATROL oscillation caused by the same static
|
|
216
|
+
* corpse adding suspicion every frame.
|
|
217
|
+
*/
|
|
218
|
+
seenCorpseIds?: Set<string>;
|
|
189
219
|
/**
|
|
190
220
|
* Morale value in the range [-1, 1].
|
|
191
221
|
* 0 = neutral, +1 = fully confident, -1 = fully panicked.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"INPCOnlineState.d.ts","sourceRoot":"","sources":["../../src/states/INPCOnlineState.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAMpE;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,6EAA6E;IAC7E,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,QAAQ,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"INPCOnlineState.d.ts","sourceRoot":"","sources":["../../src/states/INPCOnlineState.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,7 +36,7 @@ export interface IMovementConfig {
|
|
|
36
36
|
/** Melee attack range (px) for monster close-combat states. */
|
|
37
37
|
meleeRange: number;
|
|
38
38
|
/** Distance at which a bloodsucker uncloaks for the melee strike (px). */
|
|
39
|
-
|
|
39
|
+
stalkUncloakDistance: number;
|
|
40
40
|
/** Interval (ms) between restricted-zone position checks. */
|
|
41
41
|
restrictedZoneCheckIntervalMs: number;
|
|
42
42
|
/**
|
|
@@ -68,7 +68,7 @@ export interface ICombatConfig {
|
|
|
68
68
|
bulletDamage: number;
|
|
69
69
|
/** Fraction of max HP restored by a single medkit use. */
|
|
70
70
|
medkitHealRatio: number;
|
|
71
|
-
/**
|
|
71
|
+
/** Minimum cooldown (ms) between successive medkit uses. */
|
|
72
72
|
medkitUseDurationMs: number;
|
|
73
73
|
/**
|
|
74
74
|
* HP ratio below which a visible enemy is considered "wounded" and may trigger
|
|
@@ -83,6 +83,12 @@ export interface ICombatConfig {
|
|
|
83
83
|
* @default 80
|
|
84
84
|
*/
|
|
85
85
|
killWoundedExecuteRange: number;
|
|
86
|
+
/**
|
|
87
|
+
* Minimum interval (ms) between successive cover-seek transitions in CombatState.
|
|
88
|
+
* Prevents ping-pong between COMBAT and TakeCoverState on consecutive frames.
|
|
89
|
+
* @default 3000
|
|
90
|
+
*/
|
|
91
|
+
coverSeekCooldownMs: number;
|
|
86
92
|
}
|
|
87
93
|
/**
|
|
88
94
|
* Monster-specific melee, ability, and lair parameters.
|
|
@@ -99,6 +105,13 @@ export interface IMonsterConfig {
|
|
|
99
105
|
meleeCooldownMs: number;
|
|
100
106
|
/** Wind-up phase duration (ms) before boar starts charging. */
|
|
101
107
|
chargeWindupMs: number;
|
|
108
|
+
/**
|
|
109
|
+
* Maximum time (ms) the boar may spend in the CHARGING phase before the
|
|
110
|
+
* charge is aborted. Prevents infinite charges when the locked target is
|
|
111
|
+
* unreachable (e.g. blocked by a wall).
|
|
112
|
+
* @default 3000
|
|
113
|
+
*/
|
|
114
|
+
chargeTimeoutMs: number;
|
|
102
115
|
/** Wind-up phase duration (ms) before a snork leaps. */
|
|
103
116
|
leapWindupMs: number;
|
|
104
117
|
/** Airborne phase duration (ms) for the snork leap. */
|
|
@@ -113,8 +126,6 @@ export interface IMonsterConfig {
|
|
|
113
126
|
outerRadius: number;
|
|
114
127
|
/** Alpha while fully invisible during stalk approach. */
|
|
115
128
|
stalkAlphaInvisible: number;
|
|
116
|
-
/** Alpha shimmer while moving during stalk approach. */
|
|
117
|
-
stalkAlphaShimmer: number;
|
|
118
129
|
}
|
|
119
130
|
/**
|
|
120
131
|
* Timeouts, durations, and periodic intervals that drive state timing.
|
|
@@ -214,6 +225,13 @@ export interface ITimingConfig {
|
|
|
214
225
|
* @default 1000
|
|
215
226
|
*/
|
|
216
227
|
killWoundedPauseMs: number;
|
|
228
|
+
/**
|
|
229
|
+
* How long (ms) the NPC sprints away from a grenade before checking whether
|
|
230
|
+
* to return to COMBAT or SEARCH. Long enough to clear a typical blast radius
|
|
231
|
+
* at sprint speed.
|
|
232
|
+
* @default 2000
|
|
233
|
+
*/
|
|
234
|
+
evadeGrenadeDurationMs: number;
|
|
217
235
|
/**
|
|
218
236
|
* Minimum interval (ms) between outgoing pack broadcasts from MonsterCombatController.
|
|
219
237
|
* Prevents saturating the host's pack record with per-frame writes.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IStateConfig.d.ts","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAMpE;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAK9B,6DAA6D;IAC7D,aAAa,EAAE,MAAM,CAAC;IAEtB,0DAA0D;IAC1D,mBAAmB,EAAE,MAAM,CAAC;IAE5B,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAE5B,wDAAwD;IACxD,sBAAsB,EAAE,MAAM,CAAC;IAE/B,mDAAmD;IACnD,oBAAoB,EAAE,MAAM,CAAC;IAE7B,iDAAiD;IACjD,qBAAqB,EAAE,MAAM,CAAC;IAE9B,uDAAuD;IACvD,oBAAoB,EAAE,MAAM,CAAC;IAM7B,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;IAExB,0DAA0D;IAC1D,uBAAuB,EAAE,MAAM,CAAC;IAEhC,2EAA2E;IAC3E,WAAW,EAAE,MAAM,CAAC;IAEpB,kFAAkF;IAClF,YAAY,EAAE,MAAM,CAAC;IAErB,sFAAsF;IACtF,iBAAiB,EAAE,MAAM,CAAC;IAE1B,mEAAmE;IACnE,qBAAqB,EAAE,MAAM,CAAC;IAE9B,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAC;IAEnB,0EAA0E;IAC1E,oBAAoB,EAAE,MAAM,CAAC;IAE7B,6DAA6D;IAC7D,6BAA6B,EAAE,MAAM,CAAC;IAEtC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;CAC9C;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAK5B,6DAA6D;IAC7D,kBAAkB,EAAE,MAAM,CAAC;IAM3B,wEAAwE;IACxE,sBAAsB,EAAE,MAAM,CAAC;IAE/B,wEAAwE;IACxE,oBAAoB,EAAE,MAAM,CAAC;IAM7B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;IAMxB,6DAA6D;IAC7D,YAAY,EAAE,MAAM,CAAC;IAErB,0DAA0D;IAC1D,eAAe,EAAE,MAAM,CAAC;IAExB,
|
|
1
|
+
{"version":3,"file":"IStateConfig.d.ts","sourceRoot":"","sources":["../../src/states/IStateConfig.ts"],"names":[],"mappings":"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"}
|