@nice2dev/game-engine 1.1.9 → 1.1.10
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 +69 -0
- package/dist/cjs/ai/StateMachine.js +54 -0
- package/dist/cjs/editor/AnimationRetargeting.js +13 -0
- package/dist/cjs/editor/TimelineEditor.js +12 -0
- package/dist/cjs/index.js +8 -0
- package/dist/cjs/native-engine/AnimationSystem.js +840 -0
- package/dist/esm/ai/StateMachine.js +53 -1
- package/dist/esm/editor/AnimationRetargeting.js +13 -1
- package/dist/esm/editor/TimelineEditor.js +12 -1
- package/dist/esm/index.js +4 -3
- package/dist/esm/native-engine/AnimationSystem.js +835 -0
- package/dist/types/index.d.ts +4 -0
- package/package.json +3 -3
|
@@ -507,6 +507,55 @@ class StateMachine {
|
|
|
507
507
|
return new StateMachine(JSON.parse(JSON.stringify(this.definition)));
|
|
508
508
|
}
|
|
509
509
|
}
|
|
510
|
+
// ============================================================
|
|
511
|
+
// Animation State Machine
|
|
512
|
+
// ============================================================
|
|
513
|
+
/** Extended state machine for animation control */
|
|
514
|
+
class AnimatorController extends StateMachine {
|
|
515
|
+
constructor(definition) {
|
|
516
|
+
super(definition);
|
|
517
|
+
this.motionValues = new Map();
|
|
518
|
+
this.blendTrees = new Map();
|
|
519
|
+
}
|
|
520
|
+
/** Get blended motion value for animation sampling */
|
|
521
|
+
getMotionValue(layerId) {
|
|
522
|
+
return this.motionValues.get(layerId) || 0;
|
|
523
|
+
}
|
|
524
|
+
/** Get current motion/clip name */
|
|
525
|
+
getMotionClip(layerId) {
|
|
526
|
+
const state = this.getCurrentState(layerId);
|
|
527
|
+
return state?.motion || null;
|
|
528
|
+
}
|
|
529
|
+
/** Register a blend tree for a state */
|
|
530
|
+
registerBlendTree(stateId, blendTree) {
|
|
531
|
+
this.blendTrees.set(stateId, blendTree);
|
|
532
|
+
}
|
|
533
|
+
/** Sample blend tree for current parameters */
|
|
534
|
+
sampleBlendTree(stateId) {
|
|
535
|
+
const blendTree = this.blendTrees.get(stateId);
|
|
536
|
+
if (!blendTree) {
|
|
537
|
+
return null;
|
|
538
|
+
}
|
|
539
|
+
const params = {};
|
|
540
|
+
for (const [name, value] of this.getParameterMap()) {
|
|
541
|
+
if (typeof value === 'number') {
|
|
542
|
+
params[name] = value;
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
return blendTree.sample(params);
|
|
546
|
+
}
|
|
547
|
+
getParameterMap() {
|
|
548
|
+
const map = new Map();
|
|
549
|
+
const definition = this.getDefinition();
|
|
550
|
+
for (const param of definition.parameters) {
|
|
551
|
+
const value = this.getParameter(param.name);
|
|
552
|
+
if (value !== undefined) {
|
|
553
|
+
map.set(param.name, value);
|
|
554
|
+
}
|
|
555
|
+
}
|
|
556
|
+
return map;
|
|
557
|
+
}
|
|
558
|
+
}
|
|
510
559
|
class BlendTree {
|
|
511
560
|
constructor(type, parameterX, parameterY) {
|
|
512
561
|
this.motions = [];
|
|
@@ -640,6 +689,9 @@ class BlendTree {
|
|
|
640
689
|
function createStateMachine(definition) {
|
|
641
690
|
return new StateMachine(definition);
|
|
642
691
|
}
|
|
692
|
+
function createAnimatorController(definition) {
|
|
693
|
+
return new AnimatorController(definition);
|
|
694
|
+
}
|
|
643
695
|
function createBlendTree1D(parameter) {
|
|
644
696
|
return new BlendTree('1d', parameter);
|
|
645
697
|
}
|
|
@@ -729,4 +781,4 @@ function createSMContext(params) {
|
|
|
729
781
|
};
|
|
730
782
|
}
|
|
731
783
|
|
|
732
|
-
export { BlendTree, StateMachine, createBlendTree1D, createBlendTree2D, createSMCondition, createSMConditionGroup, createSMContext, createSMDefinition, createSMLayer, createSMParameter, createSMState, createSMTransition, createStateMachine };
|
|
784
|
+
export { AnimatorController, BlendTree, StateMachine, createAnimatorController, createBlendTree1D, createBlendTree2D, createSMCondition, createSMConditionGroup, createSMContext, createSMDefinition, createSMLayer, createSMParameter, createSMState, createSMTransition, createStateMachine };
|
|
@@ -733,5 +733,17 @@ function createBone(name, parentId = null, transform) {
|
|
|
733
733
|
children: [],
|
|
734
734
|
};
|
|
735
735
|
}
|
|
736
|
+
function createAnimationClip(name, sourceSkeletonId, duration = 1, frameRate = 30) {
|
|
737
|
+
return {
|
|
738
|
+
id: `clip_${Date.now()}`,
|
|
739
|
+
name,
|
|
740
|
+
duration,
|
|
741
|
+
frameRate,
|
|
742
|
+
tracks: [],
|
|
743
|
+
hasRootMotion: false,
|
|
744
|
+
isLooping: false,
|
|
745
|
+
sourceSkeletonId,
|
|
746
|
+
};
|
|
747
|
+
}
|
|
736
748
|
|
|
737
|
-
export { AnimationRetargeting, createAnimationRetargeting, createBone };
|
|
749
|
+
export { AnimationRetargeting, createAnimationClip, createAnimationRetargeting, createBone };
|
|
@@ -713,6 +713,17 @@ function createTrack(name, type) {
|
|
|
713
713
|
return baseTrack;
|
|
714
714
|
}
|
|
715
715
|
}
|
|
716
|
+
function createAnimationClip(trackId, startTime, duration) {
|
|
717
|
+
return {
|
|
718
|
+
id: `clip_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
|
719
|
+
name: 'Animation Clip',
|
|
720
|
+
type: 'animation',
|
|
721
|
+
trackId,
|
|
722
|
+
startTime,
|
|
723
|
+
duration,
|
|
724
|
+
curves: [],
|
|
725
|
+
};
|
|
726
|
+
}
|
|
716
727
|
function createAudioClip(trackId, startTime, duration, audioSource) {
|
|
717
728
|
return {
|
|
718
729
|
id: `clip_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
|
|
@@ -803,4 +814,4 @@ function createSignalMarker(name, time, signalName, payload) {
|
|
|
803
814
|
};
|
|
804
815
|
}
|
|
805
816
|
|
|
806
|
-
export { TimelinePlayer, TimelineRecorder, applyEasing, createAnimationCurve, createAudioClip, createCameraClip, createEventClip, createKeyframe, createMarker, createPropertyClip, createSignalMarker, createTimelineDefinition, createTimelinePlayer, createTimelineRecorder, createTrack, createTransformClip, evaluateCurve };
|
|
817
|
+
export { TimelinePlayer, TimelineRecorder, applyEasing, createAnimationClip, createAnimationCurve, createAudioClip, createCameraClip, createEventClip, createKeyframe, createMarker, createPropertyClip, createSignalMarker, createTimelineDefinition, createTimelinePlayer, createTimelineRecorder, createTrack, createTransformClip, evaluateCurve };
|
package/dist/esm/index.js
CHANGED
|
@@ -90,14 +90,14 @@ export { RustExporter } from './scripting/exporters/RustExporter.js';
|
|
|
90
90
|
export { TypeScriptExporter } from './scripting/exporters/TypeScriptExporter.js';
|
|
91
91
|
export { createExporter, getAvailableExporters, hasExporter } from './export/index.js';
|
|
92
92
|
export { canImport, createImporter, createNativeImporter, getImporterForFile, getSupportedExtensions, getSupportedFormats } from './import/index.js';
|
|
93
|
-
export { TimelinePlayer, TimelineRecorder, applyEasing, createAnimationCurve, createAudioClip, createCameraClip, createEventClip, createKeyframe, createMarker, createPropertyClip, createSignalMarker, createTimelineDefinition, createTimelinePlayer, createTimelineRecorder, createTrack, createTransformClip, evaluateCurve } from './editor/TimelineEditor.js';
|
|
93
|
+
export { TimelinePlayer, TimelineRecorder, applyEasing, createAnimationCurve, createAudioClip, createCameraClip, createEventClip, createKeyframe, createMarker, createPropertyClip, createSignalMarker, createAnimationClip as createTimelineAnimationClip, createTimelineDefinition, createTimelinePlayer, createTimelineRecorder, createTrack, createTransformClip, evaluateCurve } from './editor/TimelineEditor.js';
|
|
94
94
|
export { SHADER_NODE_LIBRARY, ShaderCodeGenerator, createEmptyShaderGraph, createShaderGraph, createShaderGraphEditorState, findNodeDef, generateShader, getNodeLibrary, getNodesByCategory } from './editor/ShaderGraph.js';
|
|
95
95
|
export { CATEGORY_COLORS, DEFAULT_PROFILER_CONFIG, ProfilerPanel, createProfilerPanel, generateStatsOverlay } from './editor/ProfilerPanel.js';
|
|
96
96
|
export { ConsolePro, DEFAULT_CONSOLE_CONFIG, captureStackTrace, createConsolePro, createGlobalConsole, inspectValue } from './editor/ConsolePro.js';
|
|
97
97
|
export { AssetBrowser, DEFAULT_BROWSER_CONFIG, DEFAULT_IMPORT_OPTIONS, ThumbnailGenerator, createAssetBrowser, createThumbnailGenerator } from './editor/AssetBrowser.js';
|
|
98
98
|
export { DEFAULT_TRANSFORM, PrefabManager, createComponent, createDefaultEntity, createPrefabManager } from './editor/PrefabSystem.js';
|
|
99
99
|
export { CommonExecutors, DEFAULT_UNDO_REDO_CONFIG, UndoRedoManager, createAction, createUndoRedoManager } from './editor/UndoRedoPro.js';
|
|
100
|
-
export { AnimationRetargeting, createAnimationRetargeting, createBone } from './editor/AnimationRetargeting.js';
|
|
100
|
+
export { AnimationRetargeting, createAnimationRetargeting, createBone, createAnimationClip as createRetargetingAnimationClip } from './editor/AnimationRetargeting.js';
|
|
101
101
|
export { DialogueManager, createCondition, createConditionGroup, createDialogueManager, createDialogueNode } from './editor/DialogueSystem.js';
|
|
102
102
|
export { createQuestCondition, createQuestManager } from './editor/QuestEditor.js';
|
|
103
103
|
export { CraftingEditor, createCraftingEditor, createIngredient, createOutput } from './editor/CraftingEditor.js';
|
|
@@ -126,7 +126,7 @@ export { DEFAULT_BRUSH, TerrainSystem, createFlatTerrain, createGrassDetail, cre
|
|
|
126
126
|
export { DEFAULT_LIGHTMAP_SETTINGS, LightingSystem, createAreaLight, createDefaultLightingSetup, createDirectionalLight, createLightProbe, createLightProbeGroup, createLightingSystem, createPointLight, createReflectionProbe, createSpotLight } from './systems/LightingSystem.js';
|
|
127
127
|
export { DEFAULT_DEBUG_COLORS, DEFAULT_DEBUG_OPTIONS, PhysicsDebugSystem, createCollider2D, createCollider3D, createPhysicsDebugSystem, createRigidbody2D, createRigidbody3D } from './systems/PhysicsDebugSystem.js';
|
|
128
128
|
export { BTBlackboard, BTComposite, BTConditionGuard, BTCooldown, BTFailer, BTInverter, BTLog, BTNode, BTNodeRegistry, BTRandomSelector, BTRandomSequence, BTRepeatUntilFail, BTRepeatUntilSuccess, BTRepeater, BTRoot, BTSubtree, BTSucceeder, BTTimeout, BTWait, BehaviorTree, createBTContext, createBehaviorTree, createBlackboard, createNodeRegistry } from './ai/BehaviorTree.js';
|
|
129
|
-
export { BlendTree, StateMachine, createBlendTree1D, createBlendTree2D, createSMCondition, createSMConditionGroup, createSMContext, createSMDefinition, createSMLayer, createSMParameter, createSMState, createSMTransition, createStateMachine } from './ai/StateMachine.js';
|
|
129
|
+
export { BlendTree, StateMachine, AnimatorController as StateMachineAnimatorController, createBlendTree1D, createBlendTree2D, createSMCondition, createSMConditionGroup, createSMContext, createSMDefinition, createSMLayer, createSMParameter, createSMState, createSMTransition, createStateMachine, createAnimatorController as createStateMachineAnimatorController } from './ai/StateMachine.js';
|
|
130
130
|
export { VSDebugger, VSGraphExecutor, VS_TYPE_COLORS, createBuiltInNodes, createVSConnection, createVSDebugger, createVSExecutor, createVSGraph, createVSNode } from './scripting/VisualScripting2.js';
|
|
131
131
|
export { UnityBuildCloud, createNiceToUnityConfig, createUnityBuildCloud, createUnityBuildConfig, createUnityPackageConfig, generateBuildScript, generateUnityDockerfile } from './build-cloud/UnityBuildCloud.js';
|
|
132
132
|
export { GodotBuildCloud, createGodotAddonConfig, createGodotBuildCloud, createGodotBuildConfig, createNiceToGodotConfig, generateGodotDockerfile } from './build-cloud/GodotBuildCloud.js';
|
|
@@ -150,6 +150,7 @@ export { Octree, SceneNode, createOctree, createSceneNode } from './native-engin
|
|
|
150
150
|
export { createAssetManager } from './native-engine/AssetPipeline.js';
|
|
151
151
|
export { PhysicsWorld, createPhysicsWorld } from './native-engine/PhysicsEngine.js';
|
|
152
152
|
export { AudioEngine, createAudioEngine } from './native-engine/AudioEngine.js';
|
|
153
|
+
export { AnimatorController, createAnimationClip, createAnimatorController } from './native-engine/AnimationSystem.js';
|
|
153
154
|
export { InputSystem, UISystem, createInputSystem, createUISystem } from './native-engine/InputSystem.js';
|
|
154
155
|
export { MatchmakingManager, NetworkEntity, createLobbyManager, createMatchmakingManager, createNetworkManager } from './native-engine/NetworkingSystem.js';
|
|
155
156
|
export { AsepriteImporter } from './import/AsepriteImporter.js';
|