@nice2dev/game-engine 0.1.0 → 1.0.2
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/CHANGELOG.md +193 -1
- package/dist/cjs/audio/AudioBridge.js +454 -0
- package/dist/cjs/audio/AudioBridge.js.map +1 -0
- package/dist/cjs/devtools/GameplayAnalytics.js +651 -0
- package/dist/cjs/devtools/GameplayAnalytics.js.map +1 -0
- package/dist/cjs/dialogue/DialogueSystem.js +1023 -0
- package/dist/cjs/dialogue/DialogueSystem.js.map +1 -0
- package/dist/cjs/editor/NiceGameEditor.js +569 -71
- package/dist/cjs/editor/NiceGameEditor.js.map +1 -1
- package/dist/cjs/engine/SaveSystemV2.js +494 -0
- package/dist/cjs/engine/SaveSystemV2.js.map +1 -0
- package/dist/cjs/i18n/useTranslation.js +11 -11
- package/dist/cjs/index.js +90 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/input/GamepadNavigation.js +21 -21
- package/dist/cjs/input/useGamepads.js +6 -6
- package/dist/cjs/integration/IconSprite.js +281 -0
- package/dist/cjs/integration/IconSprite.js.map +1 -0
- package/dist/cjs/inventory/InventorySystem.js +930 -0
- package/dist/cjs/inventory/InventorySystem.js.map +1 -0
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
- package/dist/cjs/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
- package/dist/cjs/quest/QuestSystem.js +924 -0
- package/dist/cjs/quest/QuestSystem.js.map +1 -0
- package/dist/cjs/rendering/WebGPURenderPipeline.js +658 -0
- package/dist/cjs/rendering/WebGPURenderPipeline.js.map +1 -0
- package/dist/cjs/xr/ARVR.js.map +1 -1
- package/dist/esm/audio/AudioBridge.js +446 -0
- package/dist/esm/audio/AudioBridge.js.map +1 -0
- package/dist/esm/devtools/GameplayAnalytics.js +639 -0
- package/dist/esm/devtools/GameplayAnalytics.js.map +1 -0
- package/dist/esm/dialogue/DialogueSystem.js +1008 -0
- package/dist/esm/dialogue/DialogueSystem.js.map +1 -0
- package/dist/esm/editor/NiceGameEditor.js +556 -58
- package/dist/esm/editor/NiceGameEditor.js.map +1 -1
- package/dist/esm/engine/SaveSystemV2.js +487 -0
- package/dist/esm/engine/SaveSystemV2.js.map +1 -0
- package/dist/esm/index.js +11 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/integration/IconSprite.js +266 -0
- package/dist/esm/integration/IconSprite.js.map +1 -0
- package/dist/esm/inventory/InventorySystem.js +924 -0
- package/dist/esm/inventory/InventorySystem.js.map +1 -0
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AbortController.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/AccessTokenHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/DefaultReconnectPolicy.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Errors.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/FetchHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HandshakeProtocol.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HeaderNames.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HttpConnection.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnection.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/HubConnectionBuilder.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/IHubProtocol.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ILogger.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ITransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/JsonHubProtocol.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Loggers.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/LongPollingTransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/MessageBuffer.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/ServerSentEventsTransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Subject.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/TextMessageFormat.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/Utils.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/WebSocketTransport.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/XhrHttpClient.js.map +1 -1
- package/dist/esm/node_modules/@microsoft/signalr/dist/esm/pkg-version.js.map +1 -1
- package/dist/esm/quest/QuestSystem.js +916 -0
- package/dist/esm/quest/QuestSystem.js.map +1 -0
- package/dist/esm/rendering/WebGPURenderPipeline.js +642 -0
- package/dist/esm/rendering/WebGPURenderPipeline.js.map +1 -0
- package/dist/esm/xr/ARVR.js.map +1 -1
- package/dist/types/__tests__/setup.d.ts +1 -1
- package/dist/types/audio/AudioBridge.d.ts +199 -0
- package/dist/types/devtools/GameplayAnalytics.d.ts +279 -0
- package/dist/types/dialogue/DialogueSystem.d.ts +326 -0
- package/dist/types/dialogue/index.d.ts +2 -0
- package/dist/types/editor/NiceGameEditor.d.ts +12 -1
- package/dist/types/engine/SaveSystemV2.d.ts +155 -0
- package/dist/types/index.d.ts +19 -3
- package/dist/types/integration/IconSprite.d.ts +196 -0
- package/dist/types/inventory/InventorySystem.d.ts +336 -0
- package/dist/types/performance/WebGPUCompute.d.ts +0 -10
- package/dist/types/quest/QuestSystem.d.ts +287 -0
- package/dist/types/rendering/WebGPURenderPipeline.d.ts +255 -0
- package/package.json +7 -1
package/dist/cjs/index.js
CHANGED
|
@@ -36,6 +36,7 @@ var SceneEditor3D = require('./runtime3d/SceneEditor3D.js');
|
|
|
36
36
|
var ActionTemplates = require('./templates/ActionTemplates.js');
|
|
37
37
|
var PuzzleTemplates = require('./templates/PuzzleTemplates.js');
|
|
38
38
|
var RPGTemplates = require('./templates/RPGTemplates.js');
|
|
39
|
+
var InventorySystem = require('./inventory/InventorySystem.js');
|
|
39
40
|
var SportsTemplates = require('./templates/SportsTemplates.js');
|
|
40
41
|
var StrategyTemplates = require('./templates/StrategyTemplates.js');
|
|
41
42
|
var PartyTemplates = require('./templates/PartyTemplates.js');
|
|
@@ -70,6 +71,13 @@ var TutorialBranching = require('./tutorials/TutorialBranching.js');
|
|
|
70
71
|
var DevTools = require('./devtools/DevTools.js');
|
|
71
72
|
var KidTools = require('./kids/KidTools.js');
|
|
72
73
|
var BenchmarkSuite = require('./performance/BenchmarkSuite.js');
|
|
74
|
+
var IconSprite = require('./integration/IconSprite.js');
|
|
75
|
+
var WebGPURenderPipeline = require('./rendering/WebGPURenderPipeline.js');
|
|
76
|
+
var AudioBridge = require('./audio/AudioBridge.js');
|
|
77
|
+
var DialogueSystem = require('./dialogue/DialogueSystem.js');
|
|
78
|
+
var QuestSystem = require('./quest/QuestSystem.js');
|
|
79
|
+
var SaveSystemV2 = require('./engine/SaveSystemV2.js');
|
|
80
|
+
var GameplayAnalytics = require('./devtools/GameplayAnalytics.js');
|
|
73
81
|
|
|
74
82
|
|
|
75
83
|
|
|
@@ -88,6 +96,7 @@ exports.PRESET_PLATFORMER = InputManager.PRESET_PLATFORMER;
|
|
|
88
96
|
exports.PRESET_TOPDOWN = InputManager.PRESET_TOPDOWN;
|
|
89
97
|
exports.PRESET_TWIN_STICK = InputManager.PRESET_TWIN_STICK;
|
|
90
98
|
exports.GamepadNavigationProvider = GamepadNavigation.GamepadNavigationProvider;
|
|
99
|
+
exports.NiceGamepadNavigationProvider = GamepadNavigation.GamepadNavigationProvider;
|
|
91
100
|
exports.useGamepadNavigation = GamepadNavigation.useGamepadNavigation;
|
|
92
101
|
exports.useGamepadEdges = useGamepads.useGamepadEdges;
|
|
93
102
|
exports.useGamepads = useGamepads.useGamepads;
|
|
@@ -99,6 +108,7 @@ exports.PhysicsEngine2D = PhysicsEngine2D.PhysicsEngine2D;
|
|
|
99
108
|
exports.PhysicsSystem = PhysicsEngine2D.PhysicsSystem;
|
|
100
109
|
exports.SceneManager = SceneManager.SceneManager;
|
|
101
110
|
exports.GameUI = GameUI.GameUI;
|
|
111
|
+
exports.NiceGameUI = GameUI.GameUI;
|
|
102
112
|
exports.PLAYER_COLORS = LocalMultiplayer.PLAYER_COLORS;
|
|
103
113
|
exports.PlayerManager = LocalMultiplayer.PlayerManager;
|
|
104
114
|
exports.SplitScreenManager = LocalMultiplayer.SplitScreenManager;
|
|
@@ -111,8 +121,8 @@ exports.KEYBOARD_GROUPS = MiniGameTypes.KEYBOARD_GROUPS;
|
|
|
111
121
|
exports.MINI_PLAYER_COLORS = MiniGameTypes.MINI_PLAYER_COLORS;
|
|
112
122
|
exports.MINI_PLAYER_NAMES = MiniGameTypes.MINI_PLAYER_NAMES;
|
|
113
123
|
exports.gameRegistry = MiniGameTypes.gameRegistry;
|
|
114
|
-
exports.LootTable = Procedural.LootTable;
|
|
115
124
|
exports.PerlinNoise = Procedural.PerlinNoise;
|
|
125
|
+
exports.ProceduralLootTable = Procedural.LootTable;
|
|
116
126
|
exports.ProceduralSprite = Procedural.ProceduralSprite;
|
|
117
127
|
exports.SeededRandom = Procedural.SeededRandom;
|
|
118
128
|
exports.WaveGenerator = Procedural.WaveGenerator;
|
|
@@ -232,6 +242,11 @@ exports.createVNState = RPGTemplates.createVNState;
|
|
|
232
242
|
exports.generateDungeon = RPGTemplates.generateDungeon;
|
|
233
243
|
exports.parseVNLabels = RPGTemplates.parseVNLabels;
|
|
234
244
|
exports.xpForLevel = RPGTemplates.xpForLevel;
|
|
245
|
+
exports.InventoryManager = InventorySystem.InventoryManager;
|
|
246
|
+
exports.InventoryProvider = InventorySystem.InventoryProvider;
|
|
247
|
+
exports.useContainer = InventorySystem.useContainer;
|
|
248
|
+
exports.useEquipment = InventorySystem.useEquipment;
|
|
249
|
+
exports.useInventoryManager = InventorySystem.useInventoryManager;
|
|
235
250
|
exports.DEFAULT_BASKETBALL_CONFIG = SportsTemplates.DEFAULT_BASKETBALL_CONFIG;
|
|
236
251
|
exports.DEFAULT_BILLIARDS_CONFIG = SportsTemplates.DEFAULT_BILLIARDS_CONFIG;
|
|
237
252
|
exports.DEFAULT_GOLF_CONFIG = SportsTemplates.DEFAULT_GOLF_CONFIG;
|
|
@@ -523,4 +538,78 @@ exports.GuidedWizard = KidTools.GuidedWizard;
|
|
|
523
538
|
exports.KID_BLOCK_PALETTES = KidTools.KID_BLOCK_PALETTES;
|
|
524
539
|
exports.BUILTIN_BENCHMARKS = BenchmarkSuite.BUILTIN_BENCHMARKS;
|
|
525
540
|
exports.BenchmarkRunner = BenchmarkSuite.BenchmarkRunner;
|
|
541
|
+
exports.CHARACTER_ANIMATION_STATES = IconSprite.CHARACTER_ANIMATION_STATES;
|
|
542
|
+
exports.OBJECT_ANIMATION_STATES = IconSprite.OBJECT_ANIMATION_STATES;
|
|
543
|
+
exports.createIconAnimationClip = IconSprite.createIconAnimationClip;
|
|
544
|
+
exports.createIconAnimator = IconSprite.createIconAnimator;
|
|
545
|
+
exports.createIconEntity = IconSprite.createIconEntity;
|
|
546
|
+
exports.getIconTextureId = IconSprite.getIconTextureId;
|
|
547
|
+
exports.iconToSvgString = IconSprite.iconToSvgString;
|
|
548
|
+
exports.loadSvgImage = IconSprite.loadSvgImage;
|
|
549
|
+
exports.rasterizeSvg = IconSprite.rasterizeSvg;
|
|
550
|
+
exports.registerIconAnimationSet = IconSprite.registerIconAnimationSet;
|
|
551
|
+
exports.registerIconCanvasTexture = IconSprite.registerIconCanvasTexture;
|
|
552
|
+
exports.registerIconCatalog = IconSprite.registerIconCatalog;
|
|
553
|
+
exports.registerIconTexture = IconSprite.registerIconTexture;
|
|
554
|
+
exports.svgToDataUrl = IconSprite.svgToDataUrl;
|
|
555
|
+
exports.BLOOM_DEFAULTS = WebGPURenderPipeline.BLOOM_DEFAULTS;
|
|
556
|
+
exports.COLOR_GRADING_DEFAULTS = WebGPURenderPipeline.COLOR_GRADING_DEFAULTS;
|
|
557
|
+
exports.DEFAULT_PBR = WebGPURenderPipeline.DEFAULT_PBR;
|
|
558
|
+
exports.DEFAULT_RENDER_CONFIG = WebGPURenderPipeline.DEFAULT_RENDER_CONFIG;
|
|
559
|
+
exports.DOF_DEFAULTS = WebGPURenderPipeline.DOF_DEFAULTS;
|
|
560
|
+
exports.FXAA_DEFAULTS = WebGPURenderPipeline.FXAA_DEFAULTS;
|
|
561
|
+
exports.GPUResourceTracker = WebGPURenderPipeline.GPUResourceTracker;
|
|
562
|
+
exports.INSTANCE_LAYOUT = WebGPURenderPipeline.INSTANCE_LAYOUT;
|
|
563
|
+
exports.PostProcessStack = WebGPURenderPipeline.PostProcessStack;
|
|
564
|
+
exports.QUALITY_PRESET_CONFIGS = WebGPURenderPipeline.QUALITY_PRESET_CONFIGS;
|
|
565
|
+
exports.RenderPipelineManager = WebGPURenderPipeline.RenderPipelineManager;
|
|
566
|
+
exports.SSAO_DEFAULTS = WebGPURenderPipeline.SSAO_DEFAULTS;
|
|
567
|
+
exports.STANDARD_VERTEX_LAYOUT = WebGPURenderPipeline.STANDARD_VERTEX_LAYOUT;
|
|
568
|
+
exports.WebGPURenderer = WebGPURenderPipeline.WebGPURenderer;
|
|
569
|
+
exports.applyQualityPreset = WebGPURenderPipeline.applyQualityPreset;
|
|
570
|
+
exports.AudioBusMixer = AudioBridge.AudioBusMixer;
|
|
571
|
+
exports.DEFAULT_SPATIAL = AudioBridge.DEFAULT_SPATIAL;
|
|
572
|
+
exports.GameAudioBridge = AudioBridge.GameAudioBridge;
|
|
573
|
+
exports.GameAudioSettings = AudioBridge.GameAudioSettings;
|
|
574
|
+
exports.MusicManager = AudioBridge.MusicManager;
|
|
575
|
+
exports.SFXPool = AudioBridge.SFXPool;
|
|
576
|
+
exports.useGameAudio = AudioBridge.useGameAudio;
|
|
577
|
+
exports.ChoiceList = DialogueSystem.ChoiceList;
|
|
578
|
+
exports.DEFAULT_TEXT_SPEED = DialogueSystem.DEFAULT_TEXT_SPEED;
|
|
579
|
+
exports.DialogueBox = DialogueSystem.DialogueBox;
|
|
580
|
+
exports.DialogueEngine = DialogueSystem.DialogueEngine;
|
|
581
|
+
exports.DialogueTreeBuilder = DialogueSystem.DialogueTreeBuilder;
|
|
582
|
+
exports.EMOTION_COLORS = DialogueSystem.EMOTION_COLORS;
|
|
583
|
+
exports.applyLocalization = DialogueSystem.applyLocalization;
|
|
584
|
+
exports.createEmptyDialogueTree = DialogueSystem.createEmptyDialogueTree;
|
|
585
|
+
exports.deserializeDialogueTree = DialogueSystem.deserializeDialogueTree;
|
|
586
|
+
exports.extractTranslatableStrings = DialogueSystem.extractTranslatableStrings;
|
|
587
|
+
exports.findUnreachableNodes = DialogueSystem.findUnreachableNodes;
|
|
588
|
+
exports.serializeDialogueTree = DialogueSystem.serializeDialogueTree;
|
|
589
|
+
exports.useTypewriter = DialogueSystem.useTypewriter;
|
|
590
|
+
exports.validateDialogueTree = DialogueSystem.validateDialogueTree;
|
|
591
|
+
exports.DIFFICULTY_COLORS = QuestSystem.DIFFICULTY_COLORS;
|
|
592
|
+
exports.DIFFICULTY_XP_MULTIPLIERS = QuestSystem.DIFFICULTY_XP_MULTIPLIERS;
|
|
593
|
+
exports.QuestBuilder = QuestSystem.QuestBuilder;
|
|
594
|
+
exports.QuestList = QuestSystem.QuestList;
|
|
595
|
+
exports.QuestManager = QuestSystem.QuestManager;
|
|
596
|
+
exports.QuestTracker = QuestSystem.QuestTracker;
|
|
597
|
+
exports.createEmptyQuest = QuestSystem.createEmptyQuest;
|
|
598
|
+
exports.DEFAULT_SAVE_CONFIG = SaveSystemV2.DEFAULT_SAVE_CONFIG;
|
|
599
|
+
exports.MigrationEngine = SaveSystemV2.MigrationEngine;
|
|
600
|
+
exports.SaveSystemV2 = SaveSystemV2.SaveSystemV2;
|
|
601
|
+
exports.compressSaveData = SaveSystemV2.compressSaveData;
|
|
602
|
+
exports.crc32 = SaveSystemV2.crc32;
|
|
603
|
+
exports.decompressSaveData = SaveSystemV2.decompressSaveData;
|
|
604
|
+
exports.AnalyticsDashboard = GameplayAnalytics.AnalyticsDashboard;
|
|
605
|
+
exports.DEFAULT_HEATMAP_CONFIG = GameplayAnalytics.DEFAULT_HEATMAP_CONFIG;
|
|
606
|
+
exports.DEFAULT_RECORDING_CONFIG = GameplayAnalytics.DEFAULT_RECORDING_CONFIG;
|
|
607
|
+
exports.DEFAULT_TELEMETRY_CONFIG = GameplayAnalytics.DEFAULT_TELEMETRY_CONFIG;
|
|
608
|
+
exports.FunnelTracker = GameplayAnalytics.FunnelTracker;
|
|
609
|
+
exports.GameplayAnalytics = GameplayAnalytics.GameplayAnalytics;
|
|
610
|
+
exports.HeatmapGenerator = GameplayAnalytics.HeatmapGenerator;
|
|
611
|
+
exports.SessionPlayer = GameplayAnalytics.SessionPlayer;
|
|
612
|
+
exports.SessionRecorder = GameplayAnalytics.SessionRecorder;
|
|
613
|
+
exports.TelemetryPipeline = GameplayAnalytics.TelemetryPipeline;
|
|
614
|
+
exports.useGameplayAnalytics = GameplayAnalytics.useGameplayAnalytics;
|
|
526
615
|
//# sourceMappingURL=index.js.map
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
-
var
|
|
4
|
+
var React = require('react');
|
|
5
5
|
|
|
6
|
-
const Ctx =
|
|
6
|
+
const Ctx = React.createContext(undefined);
|
|
7
7
|
/* ── Provider ──────────────────────────────────────────────────── */
|
|
8
8
|
function GamepadNavigationProvider({ children }) {
|
|
9
|
-
const [focusables, setFocusables] =
|
|
10
|
-
const [activeId, setActiveId] =
|
|
11
|
-
const focusablesRef =
|
|
12
|
-
const activeIdRef =
|
|
13
|
-
const focusTrapStackRef =
|
|
14
|
-
const gameModeLockRef =
|
|
15
|
-
const enterGameMode =
|
|
16
|
-
const exitGameMode =
|
|
17
|
-
const pushFocusTrap =
|
|
9
|
+
const [focusables, setFocusables] = React.useState([]);
|
|
10
|
+
const [activeId, setActiveId] = React.useState(null);
|
|
11
|
+
const focusablesRef = React.useRef([]);
|
|
12
|
+
const activeIdRef = React.useRef(null);
|
|
13
|
+
const focusTrapStackRef = React.useRef([]);
|
|
14
|
+
const gameModeLockRef = React.useRef(0);
|
|
15
|
+
const enterGameMode = React.useCallback(() => { gameModeLockRef.current += 1; }, []);
|
|
16
|
+
const exitGameMode = React.useCallback(() => { gameModeLockRef.current = Math.max(0, gameModeLockRef.current - 1); }, []);
|
|
17
|
+
const pushFocusTrap = React.useCallback((prefix, onDismiss) => {
|
|
18
18
|
focusTrapStackRef.current = [...focusTrapStackRef.current, { prefix, onDismiss }];
|
|
19
19
|
}, []);
|
|
20
|
-
const popFocusTrap =
|
|
20
|
+
const popFocusTrap = React.useCallback(() => {
|
|
21
21
|
var _a;
|
|
22
22
|
const stack = focusTrapStackRef.current;
|
|
23
23
|
if (stack.length === 0)
|
|
@@ -26,16 +26,16 @@ function GamepadNavigationProvider({ children }) {
|
|
|
26
26
|
focusTrapStackRef.current = stack.slice(0, -1);
|
|
27
27
|
(_a = top.onDismiss) === null || _a === void 0 ? void 0 : _a.call(top);
|
|
28
28
|
}, []);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
const register =
|
|
29
|
+
React.useEffect(() => { focusablesRef.current = focusables; }, [focusables]);
|
|
30
|
+
React.useEffect(() => { activeIdRef.current = activeId; }, [activeId]);
|
|
31
|
+
const register = React.useCallback((meta) => {
|
|
32
32
|
setFocusables(prev => {
|
|
33
33
|
if (prev.some(f => f.id === meta.id))
|
|
34
34
|
return prev;
|
|
35
35
|
return [...prev, meta];
|
|
36
36
|
});
|
|
37
37
|
}, []);
|
|
38
|
-
const unregister =
|
|
38
|
+
const unregister = React.useCallback((id) => {
|
|
39
39
|
setFocusables(prev => {
|
|
40
40
|
var _a, _b;
|
|
41
41
|
const filtered = prev.filter(f => f.id !== id);
|
|
@@ -52,7 +52,7 @@ function GamepadNavigationProvider({ children }) {
|
|
|
52
52
|
return filtered;
|
|
53
53
|
});
|
|
54
54
|
}, []);
|
|
55
|
-
const moveFocus =
|
|
55
|
+
const moveFocus = React.useCallback((dx, dy) => {
|
|
56
56
|
var _a, _b;
|
|
57
57
|
if (gameModeLockRef.current > 0)
|
|
58
58
|
return;
|
|
@@ -96,12 +96,12 @@ function GamepadNavigationProvider({ children }) {
|
|
|
96
96
|
activeIdRef.current = best.id;
|
|
97
97
|
(_b = best.ref.current) === null || _b === void 0 ? void 0 : _b.focus();
|
|
98
98
|
}, []);
|
|
99
|
-
const setActiveById =
|
|
99
|
+
const setActiveById = React.useCallback((id) => {
|
|
100
100
|
setActiveId(id);
|
|
101
101
|
activeIdRef.current = id;
|
|
102
102
|
}, []);
|
|
103
103
|
// Keyboard navigation (Arrow keys)
|
|
104
|
-
|
|
104
|
+
React.useEffect(() => {
|
|
105
105
|
const handler = (e) => {
|
|
106
106
|
if (gameModeLockRef.current > 0)
|
|
107
107
|
return;
|
|
@@ -131,7 +131,7 @@ function GamepadNavigationProvider({ children }) {
|
|
|
131
131
|
return () => window.removeEventListener("keydown", handler);
|
|
132
132
|
}, [moveFocus, popFocusTrap]);
|
|
133
133
|
// Gamepad polling
|
|
134
|
-
|
|
134
|
+
React.useEffect(() => {
|
|
135
135
|
let raf = 0;
|
|
136
136
|
let prevDx = 0, prevDy = 0;
|
|
137
137
|
const poll = () => {
|
|
@@ -170,7 +170,7 @@ function GamepadNavigationProvider({ children }) {
|
|
|
170
170
|
return jsxRuntime.jsx(Ctx.Provider, { value: value, children: children });
|
|
171
171
|
}
|
|
172
172
|
function useGamepadNavigation() {
|
|
173
|
-
const ctx =
|
|
173
|
+
const ctx = React.useContext(Ctx);
|
|
174
174
|
if (!ctx)
|
|
175
175
|
throw new Error("useGamepadNavigation must be inside GamepadNavigationProvider");
|
|
176
176
|
return ctx;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var React = require('react');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* useGamepads — polls connected gamepads every frame.
|
|
@@ -42,9 +42,9 @@ function snapshot(gp) {
|
|
|
42
42
|
};
|
|
43
43
|
}
|
|
44
44
|
function useGamepads() {
|
|
45
|
-
const [pads, setPads] =
|
|
46
|
-
const rafRef =
|
|
47
|
-
|
|
45
|
+
const [pads, setPads] = React.useState([]);
|
|
46
|
+
const rafRef = React.useRef(0);
|
|
47
|
+
React.useEffect(() => {
|
|
48
48
|
const poll = () => {
|
|
49
49
|
var _a, _b;
|
|
50
50
|
const raw = (_b = (_a = navigator.getGamepads) === null || _a === void 0 ? void 0 : _a.call(navigator)) !== null && _b !== void 0 ? _b : [];
|
|
@@ -67,7 +67,7 @@ function useGamepads() {
|
|
|
67
67
|
*/
|
|
68
68
|
function useGamepadEdges() {
|
|
69
69
|
const pads = useGamepads();
|
|
70
|
-
const prevRef =
|
|
70
|
+
const prevRef = React.useRef([]);
|
|
71
71
|
const justPressed = (padIndex, button) => {
|
|
72
72
|
const cur = pads.find(p => p.index === padIndex);
|
|
73
73
|
const prev = prevRef.current.find(p => p.index === padIndex);
|
|
@@ -77,7 +77,7 @@ function useGamepadEdges() {
|
|
|
77
77
|
const pv = prev === null || prev === void 0 ? void 0 : prev[button];
|
|
78
78
|
return cv === true && pv !== true;
|
|
79
79
|
};
|
|
80
|
-
|
|
80
|
+
React.useEffect(() => { prevRef.current = pads; });
|
|
81
81
|
return { pads, justPressed };
|
|
82
82
|
}
|
|
83
83
|
|
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/* ────────────────────────────────────────────────────────────────
|
|
4
|
+
IconSprite — Bridge between @nice2dev/icons-gaming SVG icons
|
|
5
|
+
and the game-engine Canvas 2D renderer.
|
|
6
|
+
|
|
7
|
+
Converts React SVG icon components to rasterized textures that
|
|
8
|
+
can be used as Sprite assets, including multi-frame animation
|
|
9
|
+
sheets generated from different animation states.
|
|
10
|
+
──────────────────────────────────────────────────────────────── */
|
|
11
|
+
/* ── SVG to Image conversion ──────────────────────────────────── */
|
|
12
|
+
/**
|
|
13
|
+
* Render an icon component to an SVG string using React's static markup API.
|
|
14
|
+
* This function must be called with the result of ReactDOMServer.renderToStaticMarkup().
|
|
15
|
+
*/
|
|
16
|
+
function iconToSvgString(svgMarkup, size) {
|
|
17
|
+
// Ensure SVG has xmlns for standalone rendering
|
|
18
|
+
if (!svgMarkup.includes('xmlns=')) {
|
|
19
|
+
svgMarkup = svgMarkup.replace('<svg', '<svg xmlns="http://www.w3.org/2000/svg"');
|
|
20
|
+
}
|
|
21
|
+
// Ensure dimensions
|
|
22
|
+
if (!svgMarkup.includes('width=')) {
|
|
23
|
+
svgMarkup = svgMarkup.replace('<svg', `<svg width="${size}" height="${size}"`);
|
|
24
|
+
}
|
|
25
|
+
return svgMarkup;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Convert an SVG string to a data URL suitable for Image loading.
|
|
29
|
+
*/
|
|
30
|
+
function svgToDataUrl(svgString) {
|
|
31
|
+
const encoded = encodeURIComponent(svgString)
|
|
32
|
+
.replace(/'/g, '%27')
|
|
33
|
+
.replace(/"/g, '%22');
|
|
34
|
+
return `data:image/svg+xml,${encoded}`;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Load an SVG data URL into an HTMLImageElement (async).
|
|
38
|
+
*/
|
|
39
|
+
function loadSvgImage(dataUrl) {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
const img = new Image();
|
|
42
|
+
img.onload = () => resolve(img);
|
|
43
|
+
img.onerror = () => reject(new Error('Failed to load SVG image'));
|
|
44
|
+
img.src = dataUrl;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Rasterize an SVG string to an OffscreenCanvas / HTMLCanvasElement.
|
|
49
|
+
*/
|
|
50
|
+
async function rasterizeSvg(svgString, size) {
|
|
51
|
+
const dataUrl = svgToDataUrl(svgString);
|
|
52
|
+
const img = await loadSvgImage(dataUrl);
|
|
53
|
+
const canvas = document.createElement('canvas');
|
|
54
|
+
canvas.width = size;
|
|
55
|
+
canvas.height = size;
|
|
56
|
+
const ctx = canvas.getContext('2d');
|
|
57
|
+
if (!ctx)
|
|
58
|
+
throw new Error('Failed to get 2D context');
|
|
59
|
+
ctx.drawImage(img, 0, 0, size, size);
|
|
60
|
+
return canvas;
|
|
61
|
+
}
|
|
62
|
+
/* ── Texture registration ─────────────────────────────────────── */
|
|
63
|
+
/**
|
|
64
|
+
* Generate a deterministic texture ID for an icon + options combination.
|
|
65
|
+
*/
|
|
66
|
+
function getIconTextureId(displayName, options) {
|
|
67
|
+
const parts = [`icon:${displayName}`];
|
|
68
|
+
if (options === null || options === void 0 ? void 0 : options.size)
|
|
69
|
+
parts.push(`s${options.size}`);
|
|
70
|
+
if (options === null || options === void 0 ? void 0 : options.color)
|
|
71
|
+
parts.push(`c${options.color}`);
|
|
72
|
+
if ((options === null || options === void 0 ? void 0 : options.animation) && options.animation !== 'none')
|
|
73
|
+
parts.push(`a${options.animation}`);
|
|
74
|
+
return parts.join(':');
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Register an SVG icon as a texture in the game-engine renderer.
|
|
78
|
+
*
|
|
79
|
+
* @param renderer The Renderer2D instance
|
|
80
|
+
* @param textureId Unique texture identifier
|
|
81
|
+
* @param svgMarkup Static SVG markup from ReactDOMServer.renderToStaticMarkup(<Icon ... />)
|
|
82
|
+
* @param size Rasterization size in px
|
|
83
|
+
* @returns Promise that resolves when the texture is ready
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* import { renderToStaticMarkup } from 'react-dom/server';
|
|
88
|
+
* import { GiWarrior } from '@nice2dev/icons-gaming';
|
|
89
|
+
* import { registerIconTexture, getIconTextureId } from '@nice2dev/game-engine';
|
|
90
|
+
*
|
|
91
|
+
* const id = getIconTextureId('GiWarrior', { size: 64 });
|
|
92
|
+
* const svg = renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />);
|
|
93
|
+
* await registerIconTexture(renderer, id, svg, 64);
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
async function registerIconTexture(renderer, textureId, svgMarkup, size) {
|
|
97
|
+
const existing = renderer.getTexture(textureId);
|
|
98
|
+
if (existing)
|
|
99
|
+
return; // already loaded
|
|
100
|
+
const prepared = iconToSvgString(svgMarkup, size);
|
|
101
|
+
const dataUrl = svgToDataUrl(prepared);
|
|
102
|
+
await renderer.loadTexture(textureId, dataUrl);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Register an SVG icon as a rasterized canvas texture (sync-safe after await).
|
|
106
|
+
* Useful when you need pixel-perfect rendering without scaling artifacts.
|
|
107
|
+
*/
|
|
108
|
+
async function registerIconCanvasTexture(renderer, textureId, svgMarkup, size) {
|
|
109
|
+
const existing = renderer.getTexture(textureId);
|
|
110
|
+
if (existing)
|
|
111
|
+
return;
|
|
112
|
+
const prepared = iconToSvgString(svgMarkup, size);
|
|
113
|
+
const canvas = await rasterizeSvg(prepared, size);
|
|
114
|
+
renderer.setTexture(textureId, canvas);
|
|
115
|
+
}
|
|
116
|
+
/* ── Entity helpers ───────────────────────────────────────────── */
|
|
117
|
+
/**
|
|
118
|
+
* Create a game entity with Sprite component sourced from an icon texture.
|
|
119
|
+
*
|
|
120
|
+
* The texture must already be registered via `registerIconTexture()`.
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```ts
|
|
124
|
+
* const entityId = createIconEntity(world, 'GiWarrior', textureId, {
|
|
125
|
+
* x: 200, y: 150, displayWidth: 64, displayHeight: 64, layer: 1,
|
|
126
|
+
* });
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
function createIconEntity(world, name, textureId, options) {
|
|
130
|
+
var _a, _b, _c, _d, _e, _f;
|
|
131
|
+
const entity = world.createEntity((_a = options === null || options === void 0 ? void 0 : options.name) !== null && _a !== void 0 ? _a : name);
|
|
132
|
+
entity.tags.add('icon-sprite');
|
|
133
|
+
world.addComponent(entity.id, 'Transform', {
|
|
134
|
+
position: { x: (_b = options === null || options === void 0 ? void 0 : options.x) !== null && _b !== void 0 ? _b : 0, y: (_c = options === null || options === void 0 ? void 0 : options.y) !== null && _c !== void 0 ? _c : 0 },
|
|
135
|
+
scale: { x: 1, y: 1 },
|
|
136
|
+
});
|
|
137
|
+
const spriteOverrides = {
|
|
138
|
+
assetId: textureId,
|
|
139
|
+
width: (_d = options === null || options === void 0 ? void 0 : options.displayWidth) !== null && _d !== void 0 ? _d : 32,
|
|
140
|
+
height: (_e = options === null || options === void 0 ? void 0 : options.displayHeight) !== null && _e !== void 0 ? _e : 32,
|
|
141
|
+
layer: (_f = options === null || options === void 0 ? void 0 : options.layer) !== null && _f !== void 0 ? _f : 0,
|
|
142
|
+
visible: true,
|
|
143
|
+
};
|
|
144
|
+
if (options === null || options === void 0 ? void 0 : options.tint)
|
|
145
|
+
spriteOverrides.tint = options.tint;
|
|
146
|
+
if ((options === null || options === void 0 ? void 0 : options.opacity) !== undefined)
|
|
147
|
+
spriteOverrides.opacity = options.opacity;
|
|
148
|
+
world.addComponent(entity.id, 'Sprite', spriteOverrides);
|
|
149
|
+
return entity.id;
|
|
150
|
+
}
|
|
151
|
+
/* ── Animation sheet helpers ──────────────────────────────────── */
|
|
152
|
+
/**
|
|
153
|
+
* Create a SpriteAnimation clip from multiple icon animation frames.
|
|
154
|
+
*
|
|
155
|
+
* Each frame is a separate registered texture. The AnimatorComponent
|
|
156
|
+
* switches `assetId` each frame to show different icon states.
|
|
157
|
+
*
|
|
158
|
+
* @param frames Array of { assetId, duration } for each frame
|
|
159
|
+
* @param loop Whether animation loops
|
|
160
|
+
*/
|
|
161
|
+
function createIconAnimationClip(frames, fps = 8, loop = true) {
|
|
162
|
+
return {
|
|
163
|
+
frames: frames.map(f => ({
|
|
164
|
+
assetId: f.assetId,
|
|
165
|
+
srcRect: null,
|
|
166
|
+
duration: f.duration,
|
|
167
|
+
})),
|
|
168
|
+
fps,
|
|
169
|
+
loop,
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Predefined character animation state sequences.
|
|
174
|
+
* Maps game animation concepts to sets of icon animation states
|
|
175
|
+
* that can be baked into textures.
|
|
176
|
+
*/
|
|
177
|
+
const CHARACTER_ANIMATION_STATES = [
|
|
178
|
+
'idle', 'move', 'jump', 'attack-melee', 'attack-ranged', 'attack-magic', 'damage', 'death',
|
|
179
|
+
];
|
|
180
|
+
const OBJECT_ANIMATION_STATES = [
|
|
181
|
+
'idle', 'spin', 'float', 'shake', 'glow', 'bounce', 'flicker',
|
|
182
|
+
];
|
|
183
|
+
/**
|
|
184
|
+
* Batch-register all animation states of an icon as separate textures.
|
|
185
|
+
*
|
|
186
|
+
* @returns Map of animation state → texture ID
|
|
187
|
+
*
|
|
188
|
+
* @example
|
|
189
|
+
* ```ts
|
|
190
|
+
* const textures = await registerIconAnimationSet(
|
|
191
|
+
* renderer,
|
|
192
|
+
* 'GiWarrior',
|
|
193
|
+
* (anim) => renderToStaticMarkup(<GiWarrior size={64} animation={anim} color="#e74c3c" />),
|
|
194
|
+
* CHARACTER_ANIMATION_STATES,
|
|
195
|
+
* 64,
|
|
196
|
+
* );
|
|
197
|
+
* // textures = { idle: 'icon:GiWarrior:s64:aidle', move: 'icon:GiWarrior:s64:amove', ... }
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
async function registerIconAnimationSet(renderer, displayName, renderFn, states, size) {
|
|
201
|
+
const result = {};
|
|
202
|
+
for (const state of states) {
|
|
203
|
+
const textureId = getIconTextureId(displayName, { size, animation: state });
|
|
204
|
+
const svgMarkup = renderFn(state);
|
|
205
|
+
await registerIconTexture(renderer, textureId, svgMarkup, size);
|
|
206
|
+
result[state] = textureId;
|
|
207
|
+
}
|
|
208
|
+
return result;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Create an Animator component configuration from a registered animation set.
|
|
212
|
+
*
|
|
213
|
+
* @param textureMap Result from `registerIconAnimationSet()`
|
|
214
|
+
* @param defaultState Initial animation state (default: 'idle')
|
|
215
|
+
* @param fps Frames per second for each clip
|
|
216
|
+
*/
|
|
217
|
+
function createIconAnimator(textureMap, defaultState = 'idle', fps = 1) {
|
|
218
|
+
const animations = {};
|
|
219
|
+
for (const [state, assetId] of Object.entries(textureMap)) {
|
|
220
|
+
animations[state] = {
|
|
221
|
+
frames: [{ assetId, srcRect: null }],
|
|
222
|
+
fps,
|
|
223
|
+
loop: true,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
currentAnimation: defaultState,
|
|
228
|
+
animations,
|
|
229
|
+
frame: 0,
|
|
230
|
+
elapsed: 0,
|
|
231
|
+
playing: true,
|
|
232
|
+
loop: true,
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Register an entire icon map (e.g. `characterIcons`, `weaponIcons`)
|
|
237
|
+
* and return a catalog array for the asset manager / picker.
|
|
238
|
+
*
|
|
239
|
+
* @param renderer Renderer2D
|
|
240
|
+
* @param iconMap Map of name→icon render functions (SVG markup generators)
|
|
241
|
+
* @param category Category label for the asset catalog
|
|
242
|
+
* @param size Texture size
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```ts
|
|
246
|
+
* const catalog = await registerIconCatalog(
|
|
247
|
+
* renderer,
|
|
248
|
+
* {
|
|
249
|
+
* GiWarrior: () => renderToStaticMarkup(<GiWarrior size={64} color="#e74c3c" />),
|
|
250
|
+
* GiMage: () => renderToStaticMarkup(<GiMage size={64} color="#3498db" />),
|
|
251
|
+
* },
|
|
252
|
+
* 'characters',
|
|
253
|
+
* 64,
|
|
254
|
+
* );
|
|
255
|
+
* ```
|
|
256
|
+
*/
|
|
257
|
+
async function registerIconCatalog(renderer, iconMap, category, size) {
|
|
258
|
+
const catalog = [];
|
|
259
|
+
for (const [name, renderFn] of Object.entries(iconMap)) {
|
|
260
|
+
const textureId = getIconTextureId(name, { size });
|
|
261
|
+
await registerIconTexture(renderer, textureId, renderFn(), size);
|
|
262
|
+
catalog.push({ name, textureId, category });
|
|
263
|
+
}
|
|
264
|
+
return catalog;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
exports.CHARACTER_ANIMATION_STATES = CHARACTER_ANIMATION_STATES;
|
|
268
|
+
exports.OBJECT_ANIMATION_STATES = OBJECT_ANIMATION_STATES;
|
|
269
|
+
exports.createIconAnimationClip = createIconAnimationClip;
|
|
270
|
+
exports.createIconAnimator = createIconAnimator;
|
|
271
|
+
exports.createIconEntity = createIconEntity;
|
|
272
|
+
exports.getIconTextureId = getIconTextureId;
|
|
273
|
+
exports.iconToSvgString = iconToSvgString;
|
|
274
|
+
exports.loadSvgImage = loadSvgImage;
|
|
275
|
+
exports.rasterizeSvg = rasterizeSvg;
|
|
276
|
+
exports.registerIconAnimationSet = registerIconAnimationSet;
|
|
277
|
+
exports.registerIconCanvasTexture = registerIconCanvasTexture;
|
|
278
|
+
exports.registerIconCatalog = registerIconCatalog;
|
|
279
|
+
exports.registerIconTexture = registerIconTexture;
|
|
280
|
+
exports.svgToDataUrl = svgToDataUrl;
|
|
281
|
+
//# sourceMappingURL=IconSprite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconSprite.js","sources":["../../../src/integration/IconSprite.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|