feat(blueprint): refactor BlueprintComponent as proper ECS Component (#433)
* feat(blueprint): refactor BlueprintComponent as proper ECS Component - Convert BlueprintComponent from interface to actual ECS Component class - Add ready-to-use BlueprintSystem that extends EntitySystem - Remove deprecated legacy APIs (createBlueprintSystem, etc.) - Update all blueprint documentation (Chinese & English) - Simplify user API: just add BlueprintSystem and BlueprintComponent BREAKING CHANGE: BlueprintComponent is now a class extending Component, not an interface. Use `new BlueprintComponent()` instead of `createBlueprintComponentData()`. * chore(blueprint): add changeset for ECS component refactor * fix(node-editor): fix connections not rendering when node is collapsed - getPinPosition now returns node header position when pin element is not found - Added collapsedNodesKey to force re-render connections after collapse/expand - Input pins connect to left side, output pins to right side of collapsed nodes * chore(node-editor): add changeset for collapse connection fix * feat(blueprint): add Add Component nodes for entity-component creation - Add type-specific Add_ComponentName nodes via ComponentNodeGenerator - Add generic ECS_AddComponent node for dynamic component creation - Add ExecutionContext.getComponentClass() for component lookup - Add registerComponentClass() helper for manual component registration - Each Add node supports initial property values from @BlueprintProperty * docs: update changeset with Add Component feature * feat(blueprint): improve event nodes with Self output and auto-create BeginPlay - Event Begin Play now outputs Self entity - Event Tick now outputs Self entity + Delta Seconds - Event End Play now outputs Self entity - createEmptyBlueprint() now includes Event Begin Play by default - Added menuPath to all event nodes for better organization
This commit is contained in:
@@ -75,8 +75,29 @@ export { NodeRegistry, RegisterNode } from './runtime/NodeRegistry';
|
||||
export { BlueprintVM } from './runtime/BlueprintVM';
|
||||
export { BlueprintComponent } from './runtime/BlueprintComponent';
|
||||
export { BlueprintSystem } from './runtime/BlueprintSystem';
|
||||
export { ExecutionContext } from './runtime/ExecutionContext';
|
||||
export { createEmptyBlueprint, validateBlueprintAsset } from './types/blueprint';
|
||||
|
||||
// Component registration helper
|
||||
import { ExecutionContext } from './runtime/ExecutionContext';
|
||||
import type { Component } from '@esengine/ecs-framework';
|
||||
|
||||
/**
|
||||
* @zh 注册组件类以支持在蓝图中动态创建
|
||||
* @en Register a component class for dynamic creation in blueprints
|
||||
*
|
||||
* @example
|
||||
* ```typescript
|
||||
* import { registerComponentClass } from '@esengine/blueprint';
|
||||
* import { MyComponent } from './MyComponent';
|
||||
*
|
||||
* registerComponentClass('MyComponent', MyComponent);
|
||||
* ```
|
||||
*/
|
||||
export function registerComponentClass(typeName: string, componentClass: new () => Component): void {
|
||||
ExecutionContext.registerComponentClass(typeName, componentClass);
|
||||
}
|
||||
|
||||
// Re-export registry for convenience
|
||||
export {
|
||||
BlueprintExpose,
|
||||
|
||||
Reference in New Issue
Block a user