@pix3/cli 1.6.0 → 1.6.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/LICENSE +201 -201
- package/README.md +788 -754
- package/dist/index.js +208 -203
- package/dist/runtime-types.json +1 -1
- package/dist/smoke/prebuilt/{chunk-J2SJVMDO.mjs → chunk-7MZGPAUK.mjs} +1 -1
- package/dist/smoke/prebuilt/chunk-7WOFGLW3.mjs +239 -0
- package/dist/smoke/prebuilt/runtime.mjs +1 -1
- package/dist/smoke/prebuilt/smoke-worker.mjs +1 -1
- package/dist/smoke/prebuilt/tree-defaults.mjs +1 -1
- package/dist/validate/prebuilt/bundle-main.js +13 -13
- package/dist/validate/prebuilt/chunk-HKG6YI6Y.js +239 -0
- package/dist/validate/prebuilt/runtime.js +1 -1
- package/kit/files/.claude/skills/pix3-nodes/SKILL.md +210 -210
- package/kit/files/.claude/skills/pix3-nodes/reference.md +32 -24
- package/kit/files/.claude/skills/pix3-scene-format/SKILL.md +238 -235
- package/kit/files/.claude/skills/pix3-scene-format/reference.md +28 -28
- package/kit/files/.claude/skills/pix3-scripts/SKILL.md +285 -281
- package/kit/files/.claude/skills/pix3-scripts/reference.md +69 -52
- package/kit/files/.claude/skills/pix3-verify/SKILL.md +298 -256
- package/kit/files/.claude/skills/pix3-verify/reference.md +21 -21
- package/kit/files/AGENTS.md +203 -203
- package/kit/files/CLAUDE.md +1 -1
- package/kit/kit.json +2 -2
- package/package.json +54 -54
- package/templates/empty-2d/files/README.md +20 -20
- package/templates/empty-2d/files/scenes/main.pix3scene +68 -68
- package/templates/empty-2d/template.yaml +7 -7
- package/templates/empty-3d/files/README.md +20 -20
- package/templates/empty-3d/files/scenes/main.pix3scene +108 -108
- package/templates/empty-3d/template.yaml +7 -7
- package/templates/idea-blank/files/README.md +22 -22
- package/templates/idea-blank/files/scenes/main.pix3scene +37 -37
- package/templates/idea-blank/template.yaml +10 -10
- package/templates/minigame-2d/files/README.md +44 -44
- package/templates/minigame-2d/files/design/tests/reachability.json +1 -1
- package/templates/minigame-2d/files/design/tests/routines/mute-music.json +44 -44
- package/templates/minigame-2d/files/scenes/main.pix3scene +84 -84
- package/templates/minigame-2d/files/scenes/menu.pix3scene +118 -118
- package/templates/minigame-2d/files/scenes/ui/settings-window.pix3scene +138 -138
- package/templates/minigame-2d/files/scripts/GameFlow.ts +133 -133
- package/templates/minigame-2d/files/scripts/MenuFlow.ts +217 -217
- package/templates/minigame-2d/files/scripts/SettingsWindow.ts +198 -198
- package/templates/minigame-2d/template.yaml +10 -10
- package/templates/playable-2d/files/README.md +30 -30
- package/templates/playable-2d/files/design/recipe.md +83 -83
- package/templates/playable-2d/files/design/tests/reachability.json +4 -4
- package/templates/playable-2d/files/design/tests/routines/intro-to-cta.json +32 -32
- package/templates/playable-2d/files/scenes/main.pix3scene +111 -111
- package/templates/playable-2d/files/scenes/ui/end-screen.pix3scene +91 -91
- package/templates/playable-2d/files/scenes/ui/intro.pix3scene +65 -65
- package/templates/playable-2d/files/scripts/GameFlow.ts +256 -256
- package/templates/playable-2d/template.yaml +9 -9
- package/templates/playable-3d/files/README.md +32 -32
- package/templates/playable-3d/files/design/recipe.md +127 -127
- package/templates/playable-3d/files/design/tests/reachability.json +4 -4
- package/templates/playable-3d/files/design/tests/routines/intro-to-cta.json +32 -32
- package/templates/playable-3d/files/scenes/main.pix3scene +230 -230
- package/templates/playable-3d/files/scenes/ui/end-screen.pix3scene +91 -91
- package/templates/playable-3d/files/scenes/ui/intro.pix3scene +65 -65
- package/templates/playable-3d/files/scripts/GameFlow.ts +309 -309
- package/templates/playable-3d/files/scripts/GameRules.ts +290 -290
- package/templates/playable-3d/files/scripts/ScoreHud.ts +113 -113
- package/templates/playable-3d/template.yaml +9 -9
- package/templates/recipe-arena-2d/files/README.md +48 -48
- package/templates/recipe-arena-2d/files/design/recipe.md +127 -127
- package/templates/recipe-arena-2d/files/scenes/main.pix3scene +292 -292
- package/templates/recipe-arena-2d/files/scenes/menu.pix3scene +100 -100
- package/templates/recipe-arena-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
- package/templates/recipe-arena-2d/files/scenes/prefabs/pickup.pix3scene +45 -45
- package/templates/recipe-arena-2d/files/scenes/ui/result.pix3scene +85 -85
- package/templates/recipe-arena-2d/files/scripts/GameRules.ts +368 -368
- package/templates/recipe-arena-2d/files/scripts/MenuFlow.ts +106 -106
- package/templates/recipe-arena-2d/files/scripts/PlayerController.ts +151 -151
- package/templates/recipe-arena-2d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-arena-2d/files/scripts/Spawner.ts +214 -214
- package/templates/recipe-arena-2d/files/scripts/TouchRules.ts +174 -174
- package/templates/recipe-arena-2d/template.yaml +10 -10
- package/templates/recipe-blank-2d/files/README.md +61 -61
- package/templates/recipe-blank-2d/files/design/recipe.md +148 -148
- package/templates/recipe-blank-2d/files/design/tests/reachability.json +4 -4
- package/templates/recipe-blank-2d/files/design/tests/routines/restart.json +27 -27
- package/templates/recipe-blank-2d/files/scenes/main.pix3scene +224 -224
- package/templates/recipe-blank-2d/files/scenes/ui/result.pix3scene +85 -85
- package/templates/recipe-blank-2d/files/scripts/GameRules.ts +350 -350
- package/templates/recipe-blank-2d/files/scripts/ScoreHud.ts +110 -110
- package/templates/recipe-blank-2d/template.yaml +10 -10
- package/templates/recipe-bouncer-2d/files/README.md +81 -81
- package/templates/recipe-bouncer-2d/files/design/recipe.md +146 -146
- package/templates/recipe-bouncer-2d/files/scenes/main.pix3scene +615 -615
- package/templates/recipe-bouncer-2d/files/scenes/menu.pix3scene +191 -191
- package/templates/recipe-bouncer-2d/files/scenes/ui/result.pix3scene +87 -87
- package/templates/recipe-bouncer-2d/files/scripts/BallBody.ts +298 -298
- package/templates/recipe-bouncer-2d/files/scripts/GameRules.ts +377 -377
- package/templates/recipe-bouncer-2d/files/scripts/MenuFlow.ts +109 -109
- package/templates/recipe-bouncer-2d/files/scripts/PaddleController.ts +112 -112
- package/templates/recipe-bouncer-2d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-bouncer-2d/files/scripts/TouchRules.ts +263 -263
- package/templates/recipe-bouncer-2d/files/scripts/ball-collision.ts +307 -307
- package/templates/recipe-bouncer-2d/template.yaml +10 -10
- package/templates/recipe-grid-3d/files/README.md +22 -22
- package/templates/recipe-grid-3d/files/design/recipe.md +110 -110
- package/templates/recipe-grid-3d/files/scenes/main.pix3scene +169 -169
- package/templates/recipe-grid-3d/files/scenes/menu.pix3scene +100 -100
- package/templates/recipe-grid-3d/files/scenes/ui/result.pix3scene +105 -105
- package/templates/recipe-grid-3d/files/scripts/GridBoard.ts +319 -319
- package/templates/recipe-grid-3d/files/scripts/GridRules.ts +278 -278
- package/templates/recipe-grid-3d/files/scripts/MenuFlow.ts +106 -106
- package/templates/recipe-grid-3d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-grid-3d/template.yaml +10 -10
- package/templates/recipe-tapper-2d/files/README.md +39 -39
- package/templates/recipe-tapper-2d/files/design/recipe.md +132 -132
- package/templates/recipe-tapper-2d/files/design/tests/reachability.json +4 -4
- package/templates/recipe-tapper-2d/files/design/tests/routines/terminal-retry.json +23 -23
- package/templates/recipe-tapper-2d/files/scenes/main.pix3scene +269 -269
- package/templates/recipe-tapper-2d/files/scenes/menu.pix3scene +100 -100
- package/templates/recipe-tapper-2d/files/scenes/prefabs/hazard.pix3scene +42 -42
- package/templates/recipe-tapper-2d/files/scenes/prefabs/target.pix3scene +45 -45
- package/templates/recipe-tapper-2d/files/scenes/ui/result.pix3scene +85 -85
- package/templates/recipe-tapper-2d/files/scripts/GameRules.ts +368 -368
- package/templates/recipe-tapper-2d/files/scripts/MenuFlow.ts +106 -106
- package/templates/recipe-tapper-2d/files/scripts/ScoreHud.ts +94 -94
- package/templates/recipe-tapper-2d/files/scripts/Spawner.ts +214 -214
- package/templates/recipe-tapper-2d/files/scripts/TouchRules.ts +192 -192
- package/templates/recipe-tapper-2d/template.yaml +10 -10
- package/dist/smoke/prebuilt/chunk-OJXQXIIQ.mjs +0 -239
- package/dist/validate/prebuilt/chunk-BS2OZM7U.js +0 -239
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { createRequire as __pix3CreateRequire } from 'node:module'; const require = __pix3CreateRequire(import.meta.url);
|
|
2
|
-
import{$ as _,$a as $o,$b as $r,$c as $e,$d as om,$e as op,A as z,Aa as Ao,Ab as Ar,Ac as Ae,Ad as Bf,Ae as Bm,Af as Bp,B as A,Ba as Bo,Bb as Br,Bc as Be,Bd as Cf,Be as Cm,Bf as Cp,C as B,Ca as Co,Cb as Cr,Cc as Ce,Cd as Df,Ce as Dm,Cf as Dp,D as C,Da as Do,Db as Dr,Dc as De,Dd as Ef,De as Em,Df as Ep,E as D,Ea as Eo,Eb as Er,Ec as Ee,Ed as Ff,Ee as Fm,Ef as Fp,F as E,Fa as Fo,Fb as Fr,Fc as Fe,Fd as Gf,Fe as Gm,Ff as Gp,G as F,Ga as Go,Gb as Gr,Gc as Ge,Gd as Hf,Ge as Hm,Gf as Hp,H as G,Ha as Ho,Hb as Hr,Hc as He,Hd as If,He as Im,Hf as Ip,I as H,Ia as Io,Ib as Ir,Ic as Ie,Id as Jf,Ie as Jm,If as Jp,J as I,Ja as Jo,Jb as Jr,Jc as Je,Jd as Kf,Je as Km,Jf as Kp,K as J,Ka as Ko,Kb as Kr,Kc as Ke,Kd as Lf,Ke as Lm,Kf as Lp,L as K,La as Lo,Lb as Lr,Lc as Le,Ld as Mf,Le as Mm,Lf as Mp,M as L,Ma as Mo,Mb as Mr,Mc as Me,Md as Nf,Me as Nm,Mf as Np,N as M,Na as No,Nb as Nr,Nc as Ne,Nd as Of,Ne as Om,Nf as Op,O as N,Oa as Oo,Ob as Or,Oc as Oe,Od as Pf,Oe as Pm,Of as Pp,P as O,Pa as Po,Pb as Pr,Pc as Pe,Pd as Qf,Pe as Qm,Pf as Qp,Q as P,Qa as Qo,Qb as Qr,Qc as Qe,Qd as Rf,Qe as Rm,Qf as Rp,R as Q,Ra as Ro,Rb as Rr,Rc as Re,Rd as Sf,Re as Sm,Rf as Sp,S as R,Sa as So,Sb as Sr,Sc as Se,Sd as Tf,Se as Tm,T as S,Ta as To,Tb as Tr,Tc as Te,Td as Uf,Te as Um,U as T,Ua as Uo,Ub as Ur,Uc as Ue,Ud as Vf,Ue as Vm,V as U,Va as Vo,Vb as Vr,Vc as Ve,Vd as Wf,Ve as Wm,W as V,Wa as Wo,Wb as Wr,Wc as We,Wd as Xf,We as Xm,X as W,Xa as Xo,Xb as Xr,Xc as Xe,Xd as Yf,Xe as Ym,Y as X,Ya as Yo,Yb as Yr,Yc as Ye,Yd as Zf,Ye as Zm,Z as Y,Za as Zo,Zb as Zr,Zc as Ze,Zd as _f,Ze as _m,_ as Z,_a as _o,_b as _r,_c as _e,_d as $f,_e as $m,aa as $,ab as or,ac as oe,ad as of,ae as rm,af as rp,b as o,ba as oo,bb as rr,bc as re,bd as rf,be as em,bf as ep,c as r,ca as ro,cb as er,cc as ee,cd as ef,ce as fm,cf as fp,d as e,da as eo,db as fr,dc as fe,dd as ff,de as mm,df as mp,e as f,ea as fo,eb as mr,ec as me,ed as mf,ee as pm,ef as pp,f as m,fa as mo,fb as pr,fc as pe,fd as pf,fe as tm,ff as tp,g as p,ga as po,gb as tr,gc as te,gd as tf,ge as xm,gf as xp,h as t,ha as to,hb as xr,hc as xe,hd as xf,he as am,hf as ap,i as x,ia as xo,ib as ar,ic as ae,id as af,ie as bm,if as bp,j as a,ja as ao,jb as br,jc as be,jd as bf,je as cm,jf as cp,k as b,ka as bo,kb as cr,kc as ce,kd as cf,ke as dm,kf as dp,l as c,la as co,lb as dr,lc as de,ld as df,le as gm,lf as gp,m as d,ma as go,mb as gr,mc as ge,md as gf,me as hm,mf as hp,n as g,na as ho,nb as hr,nc as he,nd as hf,ne as im,nf as ip,o as h,oa as io,ob as ir,oc as ie,od as jf,oe as jm,of as jp,p as i,pa as jo,pb as jr,pc as je,pd as kf,pe as km,pf as kp,q as j,qa as ko,qb as kr,qc as ke,qd as lf,qe as lm,qf as lp,r as k,ra as lo,rb as lr,rc as le,rd as nf,re as nm,rf as np,s as l,sa as no,sb as nr,sc as ne,sd as qf,se as qm,sf as qp,t as n,ta as qo,tb as qr,tc as qe,td as sf,te as sm,tf as sp,u as q,ua as so,ub as sr,uc as se,ud as uf,ue as um,uf as up,v as s,va as uo,vb as ur,vc as ue,vd as vf,ve as vm,vf as vp,w as u,wa as vo,wb as vr,wc as ve,wd as wf,we as wm,wf as wp,x as v,xa as wo,xb as wr,xc as we,xd as yf,xe as ym,xf as yp,y as w,ya as yo,yb as yr,yc as ye,yd as zf,ye as zm,yf as zp,z as y,za as zo,zb as zr,zc as ze,zd as Af,ze as Am,zf as Ap}from"./chunk-BS2OZM7U.js";import"./chunk-6ACT6FNV.js";export{Ke as AO_MODES,up as ATLAS_MANIFEST_PATH,oo as ATLAS_REGION_KEY,vp as ATLAS_SHEET_DIR,$ as ATLAS_SHEET_SCHEME,ro as ATLAS_SIZE_KEY,ko as AUDIO_BUS_NAMES,Hr as AmbientLightNode,hr as AnimatedSprite2D,Qr as AnimatedSprite3D,rp as AnimationPlayerBehavior,jo as AssetLoader,Im as AudioApi,ve as AudioPlayer,lo as AudioService,fr as BATCHABLE_2D_KEY,Jo as BLEND_MODES_2D,Ko as BLEND_MODE_2D_OPTIONS,Vo as BUILTIN_SHADER_EFFECTS,wm as BURST_MAX_PARTICLES,ae as Bar2D,mr as Batch2DSystem,Gp as BurstOnSignalBehavior,te as Button2D,Ar as CAMERA2D_DEFAULTS,Sf as CONTACT_MARGIN,Xe as CURRENT_SCENE_FORMAT_VERSION,Br as Camera2D,Ee as Camera3D,ep as CameraBrainBehavior,Dr as CanvasLayer2D,be as Checkbox2D,Lp as Collider2DBehavior,Rf as Collision2DService,kr as ColorRect2D,fp as CutsceneApi,Vm as DEFAULT_CLIP_DURATION,gp as DEFAULT_FIXED_DELTA_SEC,ye as DEFAULT_GEOMETRY_MATERIAL_TYPE,ip as DEFAULT_RUNTIME_TIME_CONFIG,k as DIRECTION_AXES_ENABLED_KEY,Er as DirectionalLightNode,Fe as EASING_NAMES,bp as ECSService,ff as EMOJI_GUARDED_TEXT_PROPERTIES,Cp as FadeBehavior,zm as FloatText2D,r as GAME_DEBUG_GLOBAL_KEY,ze as GEOMETRY_KINDS,we as GEOMETRY_MATERIAL_TYPES,sm as GameCommandRegistry,qm as GameTime,Ae as GeometryMesh,wr as Group2D,Or as HemisphereLightNode,Jp as Hitbox2DBehavior,ef as INSTANCE_TRANSFORM_KEYS,nf as InputService,Be as InstancedMesh3D,ce as InventorySlot2D,Wr as Joystick2D,Cm as JuiceApi,Ir as KNOWN_SCENE_NODE_TYPES,ie as LABEL_AUTO_SIZE_BLEED,je as LABEL_GLOW_STRENGTH_LIMIT,de as LABEL_H_ALIGN_VALUES,he as LABEL_LINE_HEIGHT_FACTOR,ge as LABEL_V_ALIGN_VALUES,ue as Label2D,mp as LocalizationService,Zf as MAX_NET_KIND,sf as MAX_POLYGON_VERTICES,hp as MAX_TICKS_PER_FRAME,Um as MIN_CLIP_DURATION,qf as MIN_POLYGON_VERTICES,L as MeshInstance,xm as NET_APP_FLAGS_SHIFT,tm as NET_OWNERSHIP_MASK,_f as NetKindTable,im as NetRoomVars,gm as NetworkConnectError,nm as NetworkNodeBinder,jm as NetworkService,dm as NetworkSpawnError,Op as NetworkedNodeBehavior,Po as Node2D,G as Node3D,F as NodeBase,re as OVERLAY_2D_FLAG,h as PHYSICS_DEBUG_ENABLED_KEY,c as PHYSICS_DEBUG_GLOBAL_KEY,Oe as POST_PROCESS_DEFAULTS,Le as PROJECT_AO_MODES,xf as PROJECT_SCRIPT_DIRECTORIES,af as PROJECT_SCRIPT_ENTRY_PATTERN,S as PROJECT_TEXTURE_FILTERING_MODES,ym as ParticleBurst2D,Rr as Particles3D,Xf as Physics2DService,Kp as PhysicsBody2DBehavior,Mp as PhysicsWorld2DBehavior,Bp as PinToNodeBehavior,Ep as PlaySoundBehavior,Fr as PointLightNode,vm as PopInBehavior,Pe as PostProcess,xp as PostProcessingPipeline,um as PunchScaleBehavior,x as RUNTIME_PROPERTY_SINK_GLOBAL_KEY,m as RUNTIME_SCENE_GLOBAL_KEY,Dp as RadialProgressBehavior,Yf as RejectCode,Pp as ReplicatedTransformBehavior,o as ResourceManager,Np as RevoluteJoint2DBehavior,yp as RotateBehavior,sp as RuntimeRenderer,_e as SCENE_COMPONENT_DEFINITION_KEYS,$e as SCENE_DISK_FORMAT_TYPES,Ye as SCENE_DOCUMENT_KEYS,Ze as SCENE_NODE_DEFINITION_KEYS,u as SCRIPT_ERROR_SINK_GLOBAL_KEY,me as SEMANTIC_POINTER_ID,Em as SFX_PRESETS,E as SHARED_UNIT_QUAD_GEOMETRY,y as SIGNAL_EMIT_SINK_GLOBAL_KEY,Te as SceneLoader,lf as SceneManager,qp as SceneRunner,kf as SceneSaver,pp as SceneService,Se as SceneValidationError,qo as Script,no as ScriptRegistry,fe as ScrollContainer2D,Fp as SfxOnSignalBehavior,Hm as SfxSynth,or as ShaderEffectStack,yr as ShakeBehavior,zp as SimpleMoveBehavior,Ap as SineBehavior,xe as Slider2D,jr as SpineSkeleton2D,ir as SpineSkeletonView,Gr as SpotLightNode,ar as Sprite2D,Pr as Sprite3D,Ce as TARGET_DISTANCE,q as TEST_COMPONENT_TYPE_PREFIX,Am as TRAIL_MAX_POINTS,vr as TiledSprite2D,Bm as Trail2D,Dm as TweenApi,pe as UIControl2D,bf as USER_SCRIPT_ID_PREFIX,Ie as VIRTUAL_CAMERA_DEFAULTS,Je as VirtualCamera3D,mm as WS_CLOSE_NORMAL,fm as WS_CLOSE_PROTOCOL_VIOLATION,pm as WsTransport,nr as ZERO_SLICE_BORDER,Oo as Z_INDEX_LIMIT,De as aimCameraNodeAt,Qe as aoModeUsesSSAO,No as applyBlendMode2DToMaterial,Tm as applyClipAtTime,He as applyEasing,ap as applyLocaleToTree,$r as applyTextStyle,Y as applyTextureRegionToTexture,ee as assign2DRenderOrder,K as assignWithoutSchemaRefresh,fo as atlasSizeOf,Ao as attachComponentDefinitions,eo as baseRegionOf,Mo as blendingForMode2D,Ef as boxPolygon,ur as buildSkinGeometry,lr as buildTiledSpriteGeometry,Gf as capsulePolygon,Jf as circleIntersectsPolygon,Ff as circlePolygon,Gm as clampSfxPitch,Af as cleanPolygon,Ym as coerceKeyframeValue,er as coerceTextureResource,Ro as coerceToPropertyType,Mm as collectAudioKeysInRange,P as collectClipPointNames,Co as collectComponentDefinitions,Nm as collectEventKeysInRange,Ue as collectRenderabilityIssues,Lm as collectTimedKeysInRange,Uf as collideCirclePolygon,Tf as collideCircles,Vf as collidePolygons,Zo as composeEffectShaders,Z as composeTextureRegion,W as configure2DTexture,Bf as convexHull,Mf as convexPolygonsIntersect,po as copyAtlasMetadata,to as createAtlasResolver,Sm as createClipBindings,$m as createDefaultClip,_m as createEmptyAnimationSet,Zr as cssFont,Xr as cssFontFamily,Yr as cssFontWeight,lm as decodeSignalPayload,Of as decomposeConvex,So as defineGroup,Qo as defineProperty,uo as describeFontFace,hm as describeRejectCode,D as describeThrown,Nr as describeUnknownNodeType,If as distanceToPolygonBoundary,_r as drawStyledText,Uo as effectSupportsTarget,km as encodeSignalPayload,zf as ensureCounterClockwise,Cr as findActiveCamera2D,R as findAnimationClip,O as findAnimationFramePoint,tf as findEmojiArtInSceneYaml,op as findKeyframeClip,Om as fireEventKey,Qm as fromSchemaValue,Xm as generateTrackId,tr as getActiveLocalization,Yo as getAllShaderEffectTypes,M as getAnimationFrameTexturePath,zo as getComponentSchemaProperties,f as getGameDebug,$f as getNetKindTable,Do as getNodePropertySchema,g as getPhysicsDebugSource,Ne as getProjectAODefault,V as getProjectTextureFiltering,Eo as getPropertiesByGroup,Fo as getPropertyDefinition,Go as getPropertyDisplayValue,b as getRuntimeLivePropertySink,t as getRuntimeSceneRoot,of as getSceneNodeDiskFormat,w as getScriptErrorSink,Xo as getShaderEffectType,A as getSignalEmitSink,wp as installAtlasFromManifest,I as installReactiveSchemaProperties,Jm as interpolateValue,n as isDirectionAxesEnabled,mf as isEmojiOnlyText,wo as isFontFaceRegistered,Re as isHighEndDevice,We as isInertNode,Sr as isInteractive,Ge as isKeyframeEasing,Lr as isKnownSceneNodeType,cm as isNetTeleport,j as isPhysicsDebugEnabled,yf as isPolygonConvex,gf as isProjectScriptEntry,df as isProjectScriptPath,_ as isSameTextureRegion,so as isScriptComponent,hf as isScriptComponentClass,N as isSequenceAnimationFrame,Fm as isSfxPreset,$o as isShaderEffectHost,sr as isSliceBorderEmpty,ao as isSpineModuleAvailable,s as isTestHarnessComponentType,pf as isTextProperty,rr as isTextureResourceRef,Wm as isTrackValueType,ne as labelDecorationPadding,ke as labelGlowBlurPx,le as labelGlowPasses,qe as layoutLabelText,yo as loadProjectFonts,io as loadSpineAsset,bo as loadSpineModule,H as makeSchemaPropertyReactive,To as mergeSchemas,bm as netFlagsByte,am as netOwnershipOf,Q as normalizeAnimationResource,Lo as normalizeBlendMode2D,Zm as normalizeKeyframeAnimationSet,Jr as normalizeNodeTypeName,Hp as normalizePolygonConfig,T as normalizeProjectTextureFiltering,qr as normalizeSliceBorder,se as paintLabelCanvas,br as parseEventArgs,ho as parseSpineAtlasPageNames,np as playable,Hf as pointInPolygon,vf as polygonArea,Cf as polygonBounds,wf as polygonCentroid,uf as polygonSignedArea,Rp as property,Qf as quaternionToRotationZ,J as reactiveSchemaPropertyNames,Ur as readBooleanArg,Tr as readNumberArg,Vr as readStringArg,Pf as readWorldTransform2D,Lf as rectIntersectsConvexPolygon,Kf as rectIntersectsPolygon,Qp as registerBuiltInScripts,e as registerGameDebug,rm as registerNetworkPrefab,d as registerPhysicsDebugSource,jf as registerProjectScriptExports,a as registerRuntimeLivePropertySink,p as registerRuntimeSceneRoot,v as registerScriptErrorSink,Wo as registerShaderEffect,z as registerSignalEmitSink,C as reportScriptError,B as reportSignalEmit,em as resetNetKindTable,vo as resetProjectFontRegistry,cr as resolveAnimatedSpriteFrameLayout,dr as resolveFramePointToLocal,gr as resolveFramePolygonToLocal,xr as resolveLocalizedText,Bo as resolvePendingComponents,jp as resolveRuntimeTimeConfig,rf as resolveSceneDiskKey,Kr as resolveSceneNodeType,go as resolveSpinePagePath,Rm as resolveTrackTarget,Km as sampleTrack,X as sanitizeTextureRegion,Nf as segmentPolygonT,Ip as serializePolygonConfig,pr as setActiveLocalization,lp as setDefaultStoreUrl,l as setDirectionAxesEnabled,om as setNetworkPrefabTable,Io as setNodePropertyValue,i as setPhysicsDebugEnabled,kp as setPlayableAdapter,tp as setPostprocessingModuleLoader,Me as setProjectAODefault,U as setProjectTextureFiltering,xo as setSpineModuleLoader,_o as shaderEffectsCacheKey,zr as shakeNoise,co as spineAssetKey,mo as stampAtlasView,Sp as state,oe as styledTextPadding,Mr as suggestSceneNodeType,Ve as summarizeRenderabilityIssues,Wf as sweepCircleAgainstPolygon,Pm as toSchemaValue,Df as transformPolygon,cf as userScriptComponentId,Ho as validatePropertyValue,cp as worldToCanvasLogical,dp as worldToCanvasThroughCamera};
|
|
2
|
+
import{$ as _,$a as $o,$b as $r,$c as $e,$d as om,$e as op,A as z,Aa as Ao,Ab as Ar,Ac as Ae,Ad as Bf,Ae as Bm,Af as Bp,B as A,Ba as Bo,Bb as Br,Bc as Be,Bd as Cf,Be as Cm,Bf as Cp,C as B,Ca as Co,Cb as Cr,Cc as Ce,Cd as Df,Ce as Dm,Cf as Dp,D as C,Da as Do,Db as Dr,Dc as De,Dd as Ef,De as Em,Df as Ep,E as D,Ea as Eo,Eb as Er,Ec as Ee,Ed as Ff,Ee as Fm,Ef as Fp,F as E,Fa as Fo,Fb as Fr,Fc as Fe,Fd as Gf,Fe as Gm,Ff as Gp,G as F,Ga as Go,Gb as Gr,Gc as Ge,Gd as Hf,Ge as Hm,Gf as Hp,H as G,Ha as Ho,Hb as Hr,Hc as He,Hd as If,He as Im,Hf as Ip,I as H,Ia as Io,Ib as Ir,Ic as Ie,Id as Jf,Ie as Jm,If as Jp,J as I,Ja as Jo,Jb as Jr,Jc as Je,Jd as Kf,Je as Km,Jf as Kp,K as J,Ka as Ko,Kb as Kr,Kc as Ke,Kd as Lf,Ke as Lm,Kf as Lp,L as K,La as Lo,Lb as Lr,Lc as Le,Ld as Mf,Le as Mm,Lf as Mp,M as L,Ma as Mo,Mb as Mr,Mc as Me,Md as Nf,Me as Nm,Mf as Np,N as M,Na as No,Nb as Nr,Nc as Ne,Nd as Of,Ne as Om,Nf as Op,O as N,Oa as Oo,Ob as Or,Oc as Oe,Od as Pf,Oe as Pm,Of as Pp,P as O,Pa as Po,Pb as Pr,Pc as Pe,Pd as Qf,Pe as Qm,Pf as Qp,Q as P,Qa as Qo,Qb as Qr,Qc as Qe,Qd as Rf,Qe as Rm,Qf as Rp,R as Q,Ra as Ro,Rb as Rr,Rc as Re,Rd as Sf,Re as Sm,Rf as Sp,S as R,Sa as So,Sb as Sr,Sc as Se,Sd as Tf,Se as Tm,Sf as Tp,T as S,Ta as To,Tb as Tr,Tc as Te,Td as Uf,Te as Um,Tf as Up,U as T,Ua as Uo,Ub as Ur,Uc as Ue,Ud as Vf,Ue as Vm,V as U,Va as Vo,Vb as Vr,Vc as Ve,Vd as Wf,Ve as Wm,W as V,Wa as Wo,Wb as Wr,Wc as We,Wd as Xf,We as Xm,X as W,Xa as Xo,Xb as Xr,Xc as Xe,Xd as Yf,Xe as Ym,Y as X,Ya as Yo,Yb as Yr,Yc as Ye,Yd as Zf,Ye as Zm,Z as Y,Za as Zo,Zb as Zr,Zc as Ze,Zd as _f,Ze as _m,_ as Z,_a as _o,_b as _r,_c as _e,_d as $f,_e as $m,aa as $,ab as or,ac as oe,ad as of,ae as rm,af as rp,b as o,ba as oo,bb as rr,bc as re,bd as rf,be as em,bf as ep,c as r,ca as ro,cb as er,cc as ee,cd as ef,ce as fm,cf as fp,d as e,da as eo,db as fr,dc as fe,dd as ff,de as mm,df as mp,e as f,ea as fo,eb as mr,ec as me,ed as mf,ee as pm,ef as pp,f as m,fa as mo,fb as pr,fc as pe,fd as pf,fe as tm,ff as tp,g as p,ga as po,gb as tr,gc as te,gd as tf,ge as xm,gf as xp,h as t,ha as to,hb as xr,hc as xe,hd as xf,he as am,hf as ap,i as x,ia as xo,ib as ar,ic as ae,id as af,ie as bm,if as bp,j as a,ja as ao,jb as br,jc as be,jd as bf,je as cm,jf as cp,k as b,ka as bo,kb as cr,kc as ce,kd as cf,ke as dm,kf as dp,l as c,la as co,lb as dr,lc as de,ld as df,le as gm,lf as gp,m as d,ma as go,mb as gr,mc as ge,md as gf,me as hm,mf as hp,n as g,na as ho,nb as hr,nc as he,nd as hf,ne as im,nf as ip,o as h,oa as io,ob as ir,oc as ie,od as jf,oe as jm,of as jp,p as i,pa as jo,pb as jr,pc as je,pd as kf,pe as km,pf as kp,q as j,qa as ko,qb as kr,qc as ke,qd as lf,qe as lm,qf as lp,r as k,ra as lo,rb as lr,rc as le,rd as nf,re as nm,rf as np,s as l,sa as no,sb as nr,sc as ne,sd as qf,se as qm,sf as qp,t as n,ta as qo,tb as qr,tc as qe,td as sf,te as sm,tf as sp,u as q,ua as so,ub as sr,uc as se,ud as uf,ue as um,uf as up,v as s,va as uo,vb as ur,vc as ue,vd as vf,ve as vm,vf as vp,w as u,wa as vo,wb as vr,wc as ve,wd as wf,we as wm,wf as wp,x as v,xa as wo,xb as wr,xc as we,xd as yf,xe as ym,xf as yp,y as w,ya as yo,yb as yr,yc as ye,yd as zf,ye as zm,yf as zp,z as y,za as zo,zb as zr,zc as ze,zd as Af,ze as Am,zf as Ap}from"./chunk-HKG6YI6Y.js";import"./chunk-6ACT6FNV.js";export{Ke as AO_MODES,up as ATLAS_MANIFEST_PATH,oo as ATLAS_REGION_KEY,vp as ATLAS_SHEET_DIR,$ as ATLAS_SHEET_SCHEME,ro as ATLAS_SIZE_KEY,ko as AUDIO_BUS_NAMES,Hr as AmbientLightNode,hr as AnimatedSprite2D,Qr as AnimatedSprite3D,rp as AnimationPlayerBehavior,jo as AssetLoader,Im as AudioApi,ve as AudioPlayer,lo as AudioService,fr as BATCHABLE_2D_KEY,Jo as BLEND_MODES_2D,Ko as BLEND_MODE_2D_OPTIONS,Vo as BUILTIN_SHADER_EFFECTS,wm as BURST_MAX_PARTICLES,ae as Bar2D,mr as Batch2DSystem,Gp as BurstOnSignalBehavior,te as Button2D,Ar as CAMERA2D_DEFAULTS,Op as CHARACTER_STATE_FINISHED_SIGNAL,Sf as CONTACT_MARGIN,Xe as CURRENT_SCENE_FORMAT_VERSION,Br as Camera2D,Ee as Camera3D,ep as CameraBrainBehavior,Dr as CanvasLayer2D,Pp as CharacterVisual2DBehavior,be as Checkbox2D,Lp as Collider2DBehavior,Rf as Collision2DService,kr as ColorRect2D,fp as CutsceneApi,Vm as DEFAULT_CLIP_DURATION,gp as DEFAULT_FIXED_DELTA_SEC,ye as DEFAULT_GEOMETRY_MATERIAL_TYPE,ip as DEFAULT_RUNTIME_TIME_CONFIG,k as DIRECTION_AXES_ENABLED_KEY,Er as DirectionalLightNode,Fe as EASING_NAMES,bp as ECSService,ff as EMOJI_GUARDED_TEXT_PROPERTIES,Cp as FadeBehavior,zm as FloatText2D,r as GAME_DEBUG_GLOBAL_KEY,ze as GEOMETRY_KINDS,we as GEOMETRY_MATERIAL_TYPES,sm as GameCommandRegistry,qm as GameTime,Ae as GeometryMesh,wr as Group2D,Or as HemisphereLightNode,Jp as Hitbox2DBehavior,ef as INSTANCE_TRANSFORM_KEYS,nf as InputService,Be as InstancedMesh3D,ce as InventorySlot2D,Wr as Joystick2D,Cm as JuiceApi,Ir as KNOWN_SCENE_NODE_TYPES,ie as LABEL_AUTO_SIZE_BLEED,je as LABEL_GLOW_STRENGTH_LIMIT,de as LABEL_H_ALIGN_VALUES,he as LABEL_LINE_HEIGHT_FACTOR,ge as LABEL_V_ALIGN_VALUES,ue as Label2D,mp as LocalizationService,Zf as MAX_NET_KIND,sf as MAX_POLYGON_VERTICES,hp as MAX_TICKS_PER_FRAME,Um as MIN_CLIP_DURATION,qf as MIN_POLYGON_VERTICES,L as MeshInstance,xm as NET_APP_FLAGS_SHIFT,tm as NET_OWNERSHIP_MASK,_f as NetKindTable,im as NetRoomVars,gm as NetworkConnectError,nm as NetworkNodeBinder,jm as NetworkService,dm as NetworkSpawnError,Qp as NetworkedNodeBehavior,Po as Node2D,G as Node3D,F as NodeBase,re as OVERLAY_2D_FLAG,h as PHYSICS_DEBUG_ENABLED_KEY,c as PHYSICS_DEBUG_GLOBAL_KEY,Oe as POST_PROCESS_DEFAULTS,Le as PROJECT_AO_MODES,xf as PROJECT_SCRIPT_DIRECTORIES,af as PROJECT_SCRIPT_ENTRY_PATTERN,S as PROJECT_TEXTURE_FILTERING_MODES,ym as ParticleBurst2D,Rr as Particles3D,Xf as Physics2DService,Kp as PhysicsBody2DBehavior,Mp as PhysicsWorld2DBehavior,Bp as PinToNodeBehavior,Ep as PlaySoundBehavior,Fr as PointLightNode,vm as PopInBehavior,Pe as PostProcess,xp as PostProcessingPipeline,um as PunchScaleBehavior,x as RUNTIME_PROPERTY_SINK_GLOBAL_KEY,m as RUNTIME_SCENE_GLOBAL_KEY,Dp as RadialProgressBehavior,Yf as RejectCode,Rp as ReplicatedTransformBehavior,o as ResourceManager,Np as RevoluteJoint2DBehavior,yp as RotateBehavior,sp as RuntimeRenderer,_e as SCENE_COMPONENT_DEFINITION_KEYS,$e as SCENE_DISK_FORMAT_TYPES,Ye as SCENE_DOCUMENT_KEYS,Ze as SCENE_NODE_DEFINITION_KEYS,u as SCRIPT_ERROR_SINK_GLOBAL_KEY,me as SEMANTIC_POINTER_ID,Em as SFX_PRESETS,E as SHARED_UNIT_QUAD_GEOMETRY,y as SIGNAL_EMIT_SINK_GLOBAL_KEY,Te as SceneLoader,lf as SceneManager,qp as SceneRunner,kf as SceneSaver,pp as SceneService,Se as SceneValidationError,qo as Script,no as ScriptRegistry,fe as ScrollContainer2D,Fp as SfxOnSignalBehavior,Hm as SfxSynth,or as ShaderEffectStack,yr as ShakeBehavior,zp as SimpleMoveBehavior,Ap as SineBehavior,xe as Slider2D,jr as SpineSkeleton2D,ir as SpineSkeletonView,Gr as SpotLightNode,ar as Sprite2D,Pr as Sprite3D,Ce as TARGET_DISTANCE,q as TEST_COMPONENT_TYPE_PREFIX,Am as TRAIL_MAX_POINTS,vr as TiledSprite2D,Bm as Trail2D,Dm as TweenApi,pe as UIControl2D,bf as USER_SCRIPT_ID_PREFIX,Ie as VIRTUAL_CAMERA_DEFAULTS,Je as VirtualCamera3D,mm as WS_CLOSE_NORMAL,fm as WS_CLOSE_PROTOCOL_VIOLATION,pm as WsTransport,nr as ZERO_SLICE_BORDER,Oo as Z_INDEX_LIMIT,De as aimCameraNodeAt,Qe as aoModeUsesSSAO,No as applyBlendMode2DToMaterial,Tm as applyClipAtTime,He as applyEasing,ap as applyLocaleToTree,$r as applyTextStyle,Y as applyTextureRegionToTexture,ee as assign2DRenderOrder,K as assignWithoutSchemaRefresh,fo as atlasSizeOf,Ao as attachComponentDefinitions,eo as baseRegionOf,Mo as blendingForMode2D,Ef as boxPolygon,ur as buildSkinGeometry,lr as buildTiledSpriteGeometry,Gf as capsulePolygon,Jf as circleIntersectsPolygon,Ff as circlePolygon,Gm as clampSfxPitch,Af as cleanPolygon,Ym as coerceKeyframeValue,er as coerceTextureResource,Ro as coerceToPropertyType,Mm as collectAudioKeysInRange,P as collectClipPointNames,Co as collectComponentDefinitions,Nm as collectEventKeysInRange,Ue as collectRenderabilityIssues,Lm as collectTimedKeysInRange,Uf as collideCirclePolygon,Tf as collideCircles,Vf as collidePolygons,Zo as composeEffectShaders,Z as composeTextureRegion,W as configure2DTexture,Bf as convexHull,Mf as convexPolygonsIntersect,po as copyAtlasMetadata,to as createAtlasResolver,Sm as createClipBindings,$m as createDefaultClip,_m as createEmptyAnimationSet,Zr as cssFont,Xr as cssFontFamily,Yr as cssFontWeight,lm as decodeSignalPayload,Of as decomposeConvex,So as defineGroup,Qo as defineProperty,uo as describeFontFace,hm as describeRejectCode,D as describeThrown,Nr as describeUnknownNodeType,If as distanceToPolygonBoundary,_r as drawStyledText,Uo as effectSupportsTarget,km as encodeSignalPayload,zf as ensureCounterClockwise,Cr as findActiveCamera2D,R as findAnimationClip,O as findAnimationFramePoint,tf as findEmojiArtInSceneYaml,op as findKeyframeClip,Om as fireEventKey,Qm as fromSchemaValue,Xm as generateTrackId,tr as getActiveLocalization,Yo as getAllShaderEffectTypes,M as getAnimationFrameTexturePath,zo as getComponentSchemaProperties,f as getGameDebug,$f as getNetKindTable,Do as getNodePropertySchema,g as getPhysicsDebugSource,Ne as getProjectAODefault,V as getProjectTextureFiltering,Eo as getPropertiesByGroup,Fo as getPropertyDefinition,Go as getPropertyDisplayValue,b as getRuntimeLivePropertySink,t as getRuntimeSceneRoot,of as getSceneNodeDiskFormat,w as getScriptErrorSink,Xo as getShaderEffectType,A as getSignalEmitSink,wp as installAtlasFromManifest,I as installReactiveSchemaProperties,Jm as interpolateValue,n as isDirectionAxesEnabled,mf as isEmojiOnlyText,wo as isFontFaceRegistered,Re as isHighEndDevice,We as isInertNode,Sr as isInteractive,Ge as isKeyframeEasing,Lr as isKnownSceneNodeType,cm as isNetTeleport,j as isPhysicsDebugEnabled,yf as isPolygonConvex,gf as isProjectScriptEntry,df as isProjectScriptPath,_ as isSameTextureRegion,so as isScriptComponent,hf as isScriptComponentClass,N as isSequenceAnimationFrame,Fm as isSfxPreset,$o as isShaderEffectHost,sr as isSliceBorderEmpty,ao as isSpineModuleAvailable,s as isTestHarnessComponentType,pf as isTextProperty,rr as isTextureResourceRef,Wm as isTrackValueType,ne as labelDecorationPadding,ke as labelGlowBlurPx,le as labelGlowPasses,qe as layoutLabelText,yo as loadProjectFonts,io as loadSpineAsset,bo as loadSpineModule,H as makeSchemaPropertyReactive,To as mergeSchemas,bm as netFlagsByte,am as netOwnershipOf,Q as normalizeAnimationResource,Lo as normalizeBlendMode2D,Zm as normalizeKeyframeAnimationSet,Jr as normalizeNodeTypeName,Hp as normalizePolygonConfig,T as normalizeProjectTextureFiltering,qr as normalizeSliceBorder,se as paintLabelCanvas,br as parseEventArgs,ho as parseSpineAtlasPageNames,np as playable,Hf as pointInPolygon,vf as polygonArea,Cf as polygonBounds,wf as polygonCentroid,uf as polygonSignedArea,Tp as property,Qf as quaternionToRotationZ,J as reactiveSchemaPropertyNames,Ur as readBooleanArg,Tr as readNumberArg,Vr as readStringArg,Pf as readWorldTransform2D,Lf as rectIntersectsConvexPolygon,Kf as rectIntersectsPolygon,Sp as registerBuiltInScripts,e as registerGameDebug,rm as registerNetworkPrefab,d as registerPhysicsDebugSource,jf as registerProjectScriptExports,a as registerRuntimeLivePropertySink,p as registerRuntimeSceneRoot,v as registerScriptErrorSink,Wo as registerShaderEffect,z as registerSignalEmitSink,C as reportScriptError,B as reportSignalEmit,em as resetNetKindTable,vo as resetProjectFontRegistry,cr as resolveAnimatedSpriteFrameLayout,dr as resolveFramePointToLocal,gr as resolveFramePolygonToLocal,xr as resolveLocalizedText,Bo as resolvePendingComponents,jp as resolveRuntimeTimeConfig,rf as resolveSceneDiskKey,Kr as resolveSceneNodeType,go as resolveSpinePagePath,Rm as resolveTrackTarget,Km as sampleTrack,X as sanitizeTextureRegion,Nf as segmentPolygonT,Ip as serializePolygonConfig,pr as setActiveLocalization,lp as setDefaultStoreUrl,l as setDirectionAxesEnabled,om as setNetworkPrefabTable,Io as setNodePropertyValue,i as setPhysicsDebugEnabled,kp as setPlayableAdapter,tp as setPostprocessingModuleLoader,Me as setProjectAODefault,U as setProjectTextureFiltering,xo as setSpineModuleLoader,_o as shaderEffectsCacheKey,zr as shakeNoise,co as spineAssetKey,mo as stampAtlasView,Up as state,oe as styledTextPadding,Mr as suggestSceneNodeType,Ve as summarizeRenderabilityIssues,Wf as sweepCircleAgainstPolygon,Pm as toSchemaValue,Df as transformPolygon,cf as userScriptComponentId,Ho as validatePropertyValue,cp as worldToCanvasLogical,dp as worldToCanvasThroughCamera};
|
|
@@ -1,210 +1,210 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: pix3-nodes
|
|
3
|
-
description: Compact property reference for the Pix3 2D node types used by the recipes — Group2D, ColorRect2D, Sprite2D, Label2D, Button2D, Bar2D, CanvasLayer2D, PostProcess — plus the Node2D base properties, anchor layout and paint order; the full per-node reference (every 2D and 3D node) is reference.md beside it. Use when adding a node to a .pix3scene, choosing which node type to use, or checking a property name/type before writing it.
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<!-- Pix3 agent kit 1.6.
|
|
7
|
-
# 2D nodes — compact reference
|
|
8
|
-
|
|
9
|
-
Property names below are the exact YAML keys under `properties:`. A misspelled key is kept
|
|
10
|
-
silently and does nothing, so copy them from here or from an existing node in the project
|
|
11
|
-
(`pix3 check` flags unknown keys). Every node type, 2D and 3D, is in `reference.md` beside
|
|
12
|
-
this file — grep `### <NodeName>` there instead of reading it whole.
|
|
13
|
-
|
|
14
|
-
## Which node
|
|
15
|
-
|
|
16
|
-
| Need | Node |
|
|
17
|
-
| --- | --- |
|
|
18
|
-
| Scene root, a panel, a spawn band, any sized container | `Group2D` |
|
|
19
|
-
| Solid rectangle; the honest placeholder | `ColorRect2D` |
|
|
20
|
-
| An image (PNG/JPG/WebP) | `Sprite2D` |
|
|
21
|
-
| A nine-slice panel / tiled background | `TiledSprite2D` |
|
|
22
|
-
| Text | `Label2D` |
|
|
23
|
-
| Tappable button | `Button2D` |
|
|
24
|
-
| Health / progress bar | `Bar2D` |
|
|
25
|
-
| Fixed HUD layer that ignores the 2D camera and is never post-processed | `CanvasLayer2D` |
|
|
26
|
-
| Bloom / vignette | `PostProcess` (no transform; set `affect2D: true` in a 2D scene) |
|
|
27
|
-
| Bare transform, no size | `Node2D` |
|
|
28
|
-
|
|
29
|
-
Other 2D types exist (`AnimatedSprite2D`, `Slider2D`, `Checkbox2D`, `Joystick2D`,
|
|
30
|
-
`ScrollContainer2D`, `InventorySlot2D`, `Camera2D`, `SpineSkeleton2D`); do not guess their
|
|
31
|
-
keys — read their section in `reference.md` first. `Layout2D` is removed and fails the load.
|
|
32
|
-
|
|
33
|
-
## Node2D — every 2D node has these
|
|
34
|
-
|
|
35
|
-
| Key | Type | Default | Notes |
|
|
36
|
-
| --- | --- | --- | --- |
|
|
37
|
-
| `transform` | block | — | `{ position: [x, y], scale: [sx, sy], rotation: degrees }` — centre of the node, Y up, positive rotation = counter-clockwise |
|
|
38
|
-
| `visible` | bool | true | On an overlay **instance**: editor-only hide (see pix3-scene-format) |
|
|
39
|
-
| `initiallyVisible` | bool | — | Applied when play mode starts; authored on an overlay file's root |
|
|
40
|
-
| `opacity` | number | 1 | 0..1, multiplies into children |
|
|
41
|
-
| `zIndex` | int | 0 | -4096..4096; higher draws on top; ties = tree order |
|
|
42
|
-
| `zAsRelative` | bool | true | Add to the parent's z instead of absolute |
|
|
43
|
-
| `blendMode` | enum | normal | `normal`, `additive` (glow/VFX), `multiply`, `subtract`; not inherited |
|
|
44
|
-
| `layout` | block | — | `{ enabled, horizontalAlign: left/center/right/stretch, verticalAlign: top/center/bottom/stretch }` |
|
|
45
|
-
| `flow` | block | — | `{ enabled, direction: vertical/horizontal, gap, paddingX, paddingY, align: start/center/end, autoSize }` |
|
|
46
|
-
|
|
47
|
-
Paint order = tree order (later sibling / deeper node on top) unless `zIndex` says otherwise.
|
|
48
|
-
Shader `effects` exist only on `Sprite2D`, `AnimatedSprite2D` and `Button2D`.
|
|
49
|
-
|
|
50
|
-
## Group2D
|
|
51
|
-
|
|
52
|
-
Sized container; draws nothing. Use it as the scene root (sized to `viewportBaseSize` from
|
|
53
|
-
`pix3project.yaml` — `width: 1080, height: 1920` in the recipes — `layout` stretch/stretch) and for any panel whose children anchor or flow against it.
|
|
54
|
-
|
|
55
|
-
| Key | Type | Default |
|
|
56
|
-
| --- | --- | --- |
|
|
57
|
-
| `width` | number | 100 |
|
|
58
|
-
| `height` | number | 100 |
|
|
59
|
-
|
|
60
|
-
## ColorRect2D
|
|
61
|
-
|
|
62
|
-
The only untextured 2D fill. Build the game from these first, swap to sprites later.
|
|
63
|
-
|
|
64
|
-
| Key | Type | Default | Notes |
|
|
65
|
-
| --- | --- | --- | --- |
|
|
66
|
-
| `width` | number | 100 | |
|
|
67
|
-
| `height` | number | 100 | |
|
|
68
|
-
| `color` | colour | "#ffffff" | Quoted hex. Alpha via `opacity`, not the colour |
|
|
69
|
-
|
|
70
|
-
## Sprite2D
|
|
71
|
-
|
|
72
|
-
| Key | Type | Default | Notes |
|
|
73
|
-
| --- | --- | --- | --- |
|
|
74
|
-
| `texture` | texture | — | `{ type: 'texture', url: 'res://sprites/x.png' }` (a bare `texturePath` string is only read for compatibility) |
|
|
75
|
-
| `width` | number | texture width | Display size; the image is scaled to it (64 until the texture loads) |
|
|
76
|
-
| `height` | number | texture height | |
|
|
77
|
-
| `anchor` | vector2 | [0.5, 0.5] | Pivot the image is positioned around |
|
|
78
|
-
| `aspectRatioLocked` | bool | false | Keep the texture's aspect while resizing |
|
|
79
|
-
| `effects` | list | — | `[{ type: core:tint, params: { color: "#hex", amount: 1 } }]` — how a near-white placeholder gets its colour |
|
|
80
|
-
|
|
81
|
-
There is no tint property: colour a sprite with a `core:tint` effect. Recipe placeholders are
|
|
82
|
-
near-white `sprites/ph-*.png` + `effects: [{ type: core:tint, params: { color, amount: 1 } }]`.
|
|
83
|
-
|
|
84
|
-
### An SVG you write as a sprite
|
|
85
|
-
|
|
86
|
-
A `.svg` in `sprites/` works as a `Sprite2D` / `Button2D` texture in the editor, in play mode and
|
|
87
|
-
in the single-file export — **when a browser `<img>` would decode it**, because that is how every
|
|
88
|
-
texture loads. The browser rasterises it once, at its own `width`/`height`, and the GPU scales that
|
|
89
|
-
bitmap. So:
|
|
90
|
-
|
|
91
|
-
```xml
|
|
92
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
|
93
|
-
<circle cx="64" cy="64" r="56" fill="#ffcf33" stroke="#8a5a00" stroke-width="8"/>
|
|
94
|
-
</svg>
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
- `xmlns="http://www.w3.org/2000/svg"` on the root — without it nothing renders.
|
|
98
|
-
- `width` and `height` in px **and** a matching `viewBox`. Without a size the browser invents a
|
|
99
|
-
300x150 box (art letterboxed or cropped, the sprite auto-sizes to 300x150).
|
|
100
|
-
- Make `width`/`height` the size the node draws it at (the node's `width`/`height`), or larger —
|
|
101
|
-
a 32px SVG drawn at 256px is a blurry bitmap, not crisp vectors.
|
|
102
|
-
- Self-contained: no `<image href="http…">`, no `<use href="other.svg#…">`, no CSS `url(file)`,
|
|
103
|
-
no `@import`, no webfonts — none of them load when an SVG is an image (only `#id` and `data:`
|
|
104
|
-
do). Text only with generic families (`font-family="sans-serif"`); better, draw shapes.
|
|
105
|
-
|
|
106
|
-
`pix3 validate` checks every `.svg` a scene references: `E_SVG_INVALID` (no `<svg>` root or no
|
|
107
|
-
xmlns), `E_SVG_NO_SIZE`, `W_SVG_VIEWBOX_ONLY`, `W_SVG_EXTERNAL_REF`.
|
|
108
|
-
|
|
109
|
-
## Label2D
|
|
110
|
-
|
|
111
|
-
| Key | Type | Default | Notes |
|
|
112
|
-
| --- | --- | --- | --- |
|
|
113
|
-
| `label` | string | "" | The text; `\n` breaks lines. Never only emoji |
|
|
114
|
-
| `labelFontSize` | number | 16 | px |
|
|
115
|
-
| `labelColor` | colour | "#ffffff" | |
|
|
116
|
-
| `labelFontFamily` | string | Arial | A family the project ships in `fonts/`, else a system face |
|
|
117
|
-
| `labelFontWeight` | number | 400 | 400 / 700 / 900 … |
|
|
118
|
-
| `labelAlign` | enum | center | `left`, `center`, `right` |
|
|
119
|
-
| `labelVAlign` | enum | middle | `top`, `middle`, `bottom` |
|
|
120
|
-
| `width` / `height` | number | 0 | 0 = auto-size, no wrap. Set `width` to word-wrap |
|
|
121
|
-
| `glowColor` / `glowStrength` | colour / 0–4 | "#ffffff" / 0 | Canvas-drawn neon glow; 2–3 reads as neon |
|
|
122
|
-
| `outlineColor` / `outlineWidth` | colour / px | "#000000" / 0 | Contrast outline |
|
|
123
|
-
| `labelShadowColor`, `labelShadowOffsetX/Y`, `labelLetterSpacing`, `typewriterSpeed` | | | see `reference.md` |
|
|
124
|
-
|
|
125
|
-
Scripts: `label.setText('SCORE 5')`.
|
|
126
|
-
|
|
127
|
-
## Button2D
|
|
128
|
-
|
|
129
|
-
| Key | Type | Default | Notes |
|
|
130
|
-
| --- | --- | --- | --- |
|
|
131
|
-
| `width` / `height` | number | 100 / 40 | |
|
|
132
|
-
| `label` | string | "" | Caption; `labelFontSize` (16), `labelColor` ("#ffffff"), `labelAlign` as on Label2D |
|
|
133
|
-
| `backgroundColor` | colour | "#4a4a4a" | Flat idle colour |
|
|
134
|
-
| `hoverColor` | colour | "#5a5a5a" | |
|
|
135
|
-
| `pressedColor` | colour | "#3a3a3a" | |
|
|
136
|
-
| `buttonAction` | string | "Submit" | Free identifier for scripts |
|
|
137
|
-
| `enabled` | bool | true | A disabled button takes no input |
|
|
138
|
-
| `textureNormal` / `textureHover` / `texturePressed` / `textureDisabled` | texture | — | Skin sprites; a set slot replaces the flat colour |
|
|
139
|
-
| `sliceBorderLeft/Right/Top/Bottom` | number | 0 | Nine-slice insets in source pixels |
|
|
140
|
-
| `effects` | list | — | Shader effects on the skin |
|
|
141
|
-
|
|
142
|
-
Signals: `pressed` (finger/button went down inside it), `released`, `click` (down **and** up
|
|
143
|
-
inside it — a completed tap; sliding off cancels it), `pointerdown`, `pointerup`. The recipes
|
|
144
|
-
wire `pressed` for an instant response; use `click` where an accidental touch must be
|
|
145
|
-
cancellable (menus, purchases). `button.connect('click', this, handler)`.
|
|
146
|
-
|
|
147
|
-
## Bar2D
|
|
148
|
-
|
|
149
|
-
| Key | Type | Default | Notes |
|
|
150
|
-
| --- | --- | --- | --- |
|
|
151
|
-
| `width` / `height` | number | 150 / 20 | |
|
|
152
|
-
| `minValue` / `maxValue` / `value` | number | 0 / 100 / 100 | Fill = value within the range (clamped) |
|
|
153
|
-
| `barColor` | colour | "#ff4444" | Fill colour |
|
|
154
|
-
| `backBackgroundColor` | colour | "#333333" | Trough colour |
|
|
155
|
-
| `showBorder` / `borderColor` / `borderWidth` | bool / colour / px | true / "#000000" / 2 | The recipes set `showBorder: false` |
|
|
156
|
-
| `textureTrough` / `textureFill` | texture | — | Skin sprites |
|
|
157
|
-
| `sliceBorderLeft/Right/Top/Bottom` | number | 0 | Nine-slice insets of the skins |
|
|
158
|
-
|
|
159
|
-
Scripts: `bar.maxValue = n; bar.setValue(v)`.
|
|
160
|
-
|
|
161
|
-
## CanvasLayer2D
|
|
162
|
-
|
|
163
|
-
A HUD band: rendered after post-processing (never blooms) with a fixed camera. Same keys as
|
|
164
|
-
`Group2D` (`width`, `height`, transform, layout). Put score/time/lives/buttons under it.
|
|
165
|
-
Its ancestors' transform, opacity and visibility still apply.
|
|
166
|
-
|
|
167
|
-
## PostProcess
|
|
168
|
-
|
|
169
|
-
No transform — keys sit flat in `properties`. The first active one in the tree wins.
|
|
170
|
-
|
|
171
|
-
| Key | Type | Default | Notes |
|
|
172
|
-
| --- | --- | --- | --- |
|
|
173
|
-
| `affect2D` | bool | true | Apply to the 2D layer too |
|
|
174
|
-
| `bloomEnabled` / `bloomIntensity` / `bloomThreshold` | bool / number / number | true / 1 / 0.9 | Bloom lifts only what is already bright |
|
|
175
|
-
| `bloomSmoothing` / `bloomRadius` | number | | |
|
|
176
|
-
| `vignetteEnabled` / `vignetteOffset` / `vignetteDarkness` | bool / number / number | | |
|
|
177
|
-
| `chromaticAberrationEnabled` / `chromaticAberrationOffset` | bool / number | | |
|
|
178
|
-
|
|
179
|
-
Brighten the colour or lower `bloomThreshold` rather than raising `bloomIntensity`. The
|
|
180
|
-
opposite for a pastel or light look: a pale ground sits above a low threshold and the whole
|
|
181
|
-
screen blooms — **raise** `bloomThreshold` (0.85–0.95) so only the accents glow.
|
|
182
|
-
|
|
183
|
-
## Example — a new HUD label anchored top-right
|
|
184
|
-
|
|
185
|
-
```yaml
|
|
186
|
-
- id: combo-label
|
|
187
|
-
type: Label2D
|
|
188
|
-
name: Combo Label
|
|
189
|
-
properties:
|
|
190
|
-
label: ""
|
|
191
|
-
labelFontSize: 40
|
|
192
|
-
labelColor: "#f5ae39"
|
|
193
|
-
labelAlign: right
|
|
194
|
-
transform:
|
|
195
|
-
position: [340, 790]
|
|
196
|
-
scale: [1, 1]
|
|
197
|
-
rotation: 0
|
|
198
|
-
layout:
|
|
199
|
-
enabled: true
|
|
200
|
-
horizontalAlign: right
|
|
201
|
-
verticalAlign: top
|
|
202
|
-
children: []
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
## Known gaps
|
|
206
|
-
|
|
207
|
-
- On a **cloud** project (opened from the Pix3 server, not a folder or `pix3 serve`) an `.svg`
|
|
208
|
-
sprite renders on first load and then goes blank: the local cache hands SVGs back as
|
|
209
|
-
`text/plain`, which no browser decodes as an image. Folder and `pix3 serve` projects are fine;
|
|
210
|
-
on cloud, use a PNG.
|
|
1
|
+
---
|
|
2
|
+
name: pix3-nodes
|
|
3
|
+
description: Compact property reference for the Pix3 2D node types used by the recipes — Group2D, ColorRect2D, Sprite2D, Label2D, Button2D, Bar2D, CanvasLayer2D, PostProcess — plus the Node2D base properties, anchor layout and paint order; the full per-node reference (every 2D and 3D node) is reference.md beside it. Use when adding a node to a .pix3scene, choosing which node type to use, or checking a property name/type before writing it.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- Pix3 agent kit 1.6.2 -->
|
|
7
|
+
# 2D nodes — compact reference
|
|
8
|
+
|
|
9
|
+
Property names below are the exact YAML keys under `properties:`. A misspelled key is kept
|
|
10
|
+
silently and does nothing, so copy them from here or from an existing node in the project
|
|
11
|
+
(`pix3 check` flags unknown keys). Every node type, 2D and 3D, is in `reference.md` beside
|
|
12
|
+
this file — grep `### <NodeName>` there instead of reading it whole.
|
|
13
|
+
|
|
14
|
+
## Which node
|
|
15
|
+
|
|
16
|
+
| Need | Node |
|
|
17
|
+
| --- | --- |
|
|
18
|
+
| Scene root, a panel, a spawn band, any sized container | `Group2D` |
|
|
19
|
+
| Solid rectangle; the honest placeholder | `ColorRect2D` |
|
|
20
|
+
| An image (PNG/JPG/WebP) | `Sprite2D` |
|
|
21
|
+
| A nine-slice panel / tiled background | `TiledSprite2D` |
|
|
22
|
+
| Text | `Label2D` |
|
|
23
|
+
| Tappable button | `Button2D` |
|
|
24
|
+
| Health / progress bar | `Bar2D` |
|
|
25
|
+
| Fixed HUD layer that ignores the 2D camera and is never post-processed | `CanvasLayer2D` |
|
|
26
|
+
| Bloom / vignette | `PostProcess` (no transform; set `affect2D: true` in a 2D scene) |
|
|
27
|
+
| Bare transform, no size | `Node2D` |
|
|
28
|
+
|
|
29
|
+
Other 2D types exist (`AnimatedSprite2D`, `Slider2D`, `Checkbox2D`, `Joystick2D`,
|
|
30
|
+
`ScrollContainer2D`, `InventorySlot2D`, `Camera2D`, `SpineSkeleton2D`); do not guess their
|
|
31
|
+
keys — read their section in `reference.md` first. `Layout2D` is removed and fails the load.
|
|
32
|
+
|
|
33
|
+
## Node2D — every 2D node has these
|
|
34
|
+
|
|
35
|
+
| Key | Type | Default | Notes |
|
|
36
|
+
| --- | --- | --- | --- |
|
|
37
|
+
| `transform` | block | — | `{ position: [x, y], scale: [sx, sy], rotation: degrees }` — centre of the node, Y up, positive rotation = counter-clockwise |
|
|
38
|
+
| `visible` | bool | true | On an overlay **instance**: editor-only hide (see pix3-scene-format) |
|
|
39
|
+
| `initiallyVisible` | bool | — | Applied when play mode starts; authored on an overlay file's root |
|
|
40
|
+
| `opacity` | number | 1 | 0..1, multiplies into children |
|
|
41
|
+
| `zIndex` | int | 0 | -4096..4096; higher draws on top; ties = tree order |
|
|
42
|
+
| `zAsRelative` | bool | true | Add to the parent's z instead of absolute |
|
|
43
|
+
| `blendMode` | enum | normal | `normal`, `additive` (glow/VFX), `multiply`, `subtract`; not inherited |
|
|
44
|
+
| `layout` | block | — | `{ enabled, horizontalAlign: left/center/right/stretch, verticalAlign: top/center/bottom/stretch }` |
|
|
45
|
+
| `flow` | block | — | `{ enabled, direction: vertical/horizontal, gap, paddingX, paddingY, align: start/center/end, autoSize }` |
|
|
46
|
+
|
|
47
|
+
Paint order = tree order (later sibling / deeper node on top) unless `zIndex` says otherwise.
|
|
48
|
+
Shader `effects` exist only on `Sprite2D`, `AnimatedSprite2D` and `Button2D`.
|
|
49
|
+
|
|
50
|
+
## Group2D
|
|
51
|
+
|
|
52
|
+
Sized container; draws nothing. Use it as the scene root (sized to `viewportBaseSize` from
|
|
53
|
+
`pix3project.yaml` — `width: 1080, height: 1920` in the recipes — `layout` stretch/stretch) and for any panel whose children anchor or flow against it.
|
|
54
|
+
|
|
55
|
+
| Key | Type | Default |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `width` | number | 100 |
|
|
58
|
+
| `height` | number | 100 |
|
|
59
|
+
|
|
60
|
+
## ColorRect2D
|
|
61
|
+
|
|
62
|
+
The only untextured 2D fill. Build the game from these first, swap to sprites later.
|
|
63
|
+
|
|
64
|
+
| Key | Type | Default | Notes |
|
|
65
|
+
| --- | --- | --- | --- |
|
|
66
|
+
| `width` | number | 100 | |
|
|
67
|
+
| `height` | number | 100 | |
|
|
68
|
+
| `color` | colour | "#ffffff" | Quoted hex. Alpha via `opacity`, not the colour |
|
|
69
|
+
|
|
70
|
+
## Sprite2D
|
|
71
|
+
|
|
72
|
+
| Key | Type | Default | Notes |
|
|
73
|
+
| --- | --- | --- | --- |
|
|
74
|
+
| `texture` | texture | — | `{ type: 'texture', url: 'res://sprites/x.png' }` (a bare `texturePath` string is only read for compatibility) |
|
|
75
|
+
| `width` | number | texture width | Display size; the image is scaled to it (64 until the texture loads) |
|
|
76
|
+
| `height` | number | texture height | |
|
|
77
|
+
| `anchor` | vector2 | [0.5, 0.5] | Pivot the image is positioned around |
|
|
78
|
+
| `aspectRatioLocked` | bool | false | Keep the texture's aspect while resizing |
|
|
79
|
+
| `effects` | list | — | `[{ type: core:tint, params: { color: "#hex", amount: 1 } }]` — how a near-white placeholder gets its colour |
|
|
80
|
+
|
|
81
|
+
There is no tint property: colour a sprite with a `core:tint` effect. Recipe placeholders are
|
|
82
|
+
near-white `sprites/ph-*.png` + `effects: [{ type: core:tint, params: { color, amount: 1 } }]`.
|
|
83
|
+
|
|
84
|
+
### An SVG you write as a sprite
|
|
85
|
+
|
|
86
|
+
A `.svg` in `sprites/` works as a `Sprite2D` / `Button2D` texture in the editor, in play mode and
|
|
87
|
+
in the single-file export — **when a browser `<img>` would decode it**, because that is how every
|
|
88
|
+
texture loads. The browser rasterises it once, at its own `width`/`height`, and the GPU scales that
|
|
89
|
+
bitmap. So:
|
|
90
|
+
|
|
91
|
+
```xml
|
|
92
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128">
|
|
93
|
+
<circle cx="64" cy="64" r="56" fill="#ffcf33" stroke="#8a5a00" stroke-width="8"/>
|
|
94
|
+
</svg>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
- `xmlns="http://www.w3.org/2000/svg"` on the root — without it nothing renders.
|
|
98
|
+
- `width` and `height` in px **and** a matching `viewBox`. Without a size the browser invents a
|
|
99
|
+
300x150 box (art letterboxed or cropped, the sprite auto-sizes to 300x150).
|
|
100
|
+
- Make `width`/`height` the size the node draws it at (the node's `width`/`height`), or larger —
|
|
101
|
+
a 32px SVG drawn at 256px is a blurry bitmap, not crisp vectors.
|
|
102
|
+
- Self-contained: no `<image href="http…">`, no `<use href="other.svg#…">`, no CSS `url(file)`,
|
|
103
|
+
no `@import`, no webfonts — none of them load when an SVG is an image (only `#id` and `data:`
|
|
104
|
+
do). Text only with generic families (`font-family="sans-serif"`); better, draw shapes.
|
|
105
|
+
|
|
106
|
+
`pix3 validate` checks every `.svg` a scene references: `E_SVG_INVALID` (no `<svg>` root or no
|
|
107
|
+
xmlns), `E_SVG_NO_SIZE`, `W_SVG_VIEWBOX_ONLY`, `W_SVG_EXTERNAL_REF`.
|
|
108
|
+
|
|
109
|
+
## Label2D
|
|
110
|
+
|
|
111
|
+
| Key | Type | Default | Notes |
|
|
112
|
+
| --- | --- | --- | --- |
|
|
113
|
+
| `label` | string | "" | The text; `\n` breaks lines. Never only emoji |
|
|
114
|
+
| `labelFontSize` | number | 16 | px |
|
|
115
|
+
| `labelColor` | colour | "#ffffff" | |
|
|
116
|
+
| `labelFontFamily` | string | Arial | A family the project ships in `fonts/`, else a system face |
|
|
117
|
+
| `labelFontWeight` | number | 400 | 400 / 700 / 900 … |
|
|
118
|
+
| `labelAlign` | enum | center | `left`, `center`, `right` |
|
|
119
|
+
| `labelVAlign` | enum | middle | `top`, `middle`, `bottom` |
|
|
120
|
+
| `width` / `height` | number | 0 | 0 = auto-size, no wrap. Set `width` to word-wrap |
|
|
121
|
+
| `glowColor` / `glowStrength` | colour / 0–4 | "#ffffff" / 0 | Canvas-drawn neon glow; 2–3 reads as neon |
|
|
122
|
+
| `outlineColor` / `outlineWidth` | colour / px | "#000000" / 0 | Contrast outline |
|
|
123
|
+
| `labelShadowColor`, `labelShadowOffsetX/Y`, `labelLetterSpacing`, `typewriterSpeed` | | | see `reference.md` |
|
|
124
|
+
|
|
125
|
+
Scripts: `label.setText('SCORE 5')`.
|
|
126
|
+
|
|
127
|
+
## Button2D
|
|
128
|
+
|
|
129
|
+
| Key | Type | Default | Notes |
|
|
130
|
+
| --- | --- | --- | --- |
|
|
131
|
+
| `width` / `height` | number | 100 / 40 | |
|
|
132
|
+
| `label` | string | "" | Caption; `labelFontSize` (16), `labelColor` ("#ffffff"), `labelAlign` as on Label2D |
|
|
133
|
+
| `backgroundColor` | colour | "#4a4a4a" | Flat idle colour |
|
|
134
|
+
| `hoverColor` | colour | "#5a5a5a" | |
|
|
135
|
+
| `pressedColor` | colour | "#3a3a3a" | |
|
|
136
|
+
| `buttonAction` | string | "Submit" | Free identifier for scripts |
|
|
137
|
+
| `enabled` | bool | true | A disabled button takes no input |
|
|
138
|
+
| `textureNormal` / `textureHover` / `texturePressed` / `textureDisabled` | texture | — | Skin sprites; a set slot replaces the flat colour |
|
|
139
|
+
| `sliceBorderLeft/Right/Top/Bottom` | number | 0 | Nine-slice insets in source pixels |
|
|
140
|
+
| `effects` | list | — | Shader effects on the skin |
|
|
141
|
+
|
|
142
|
+
Signals: `pressed` (finger/button went down inside it), `released`, `click` (down **and** up
|
|
143
|
+
inside it — a completed tap; sliding off cancels it), `pointerdown`, `pointerup`. The recipes
|
|
144
|
+
wire `pressed` for an instant response; use `click` where an accidental touch must be
|
|
145
|
+
cancellable (menus, purchases). `button.connect('click', this, handler)`.
|
|
146
|
+
|
|
147
|
+
## Bar2D
|
|
148
|
+
|
|
149
|
+
| Key | Type | Default | Notes |
|
|
150
|
+
| --- | --- | --- | --- |
|
|
151
|
+
| `width` / `height` | number | 150 / 20 | |
|
|
152
|
+
| `minValue` / `maxValue` / `value` | number | 0 / 100 / 100 | Fill = value within the range (clamped) |
|
|
153
|
+
| `barColor` | colour | "#ff4444" | Fill colour |
|
|
154
|
+
| `backBackgroundColor` | colour | "#333333" | Trough colour |
|
|
155
|
+
| `showBorder` / `borderColor` / `borderWidth` | bool / colour / px | true / "#000000" / 2 | The recipes set `showBorder: false` |
|
|
156
|
+
| `textureTrough` / `textureFill` | texture | — | Skin sprites |
|
|
157
|
+
| `sliceBorderLeft/Right/Top/Bottom` | number | 0 | Nine-slice insets of the skins |
|
|
158
|
+
|
|
159
|
+
Scripts: `bar.maxValue = n; bar.setValue(v)`.
|
|
160
|
+
|
|
161
|
+
## CanvasLayer2D
|
|
162
|
+
|
|
163
|
+
A HUD band: rendered after post-processing (never blooms) with a fixed camera. Same keys as
|
|
164
|
+
`Group2D` (`width`, `height`, transform, layout). Put score/time/lives/buttons under it.
|
|
165
|
+
Its ancestors' transform, opacity and visibility still apply.
|
|
166
|
+
|
|
167
|
+
## PostProcess
|
|
168
|
+
|
|
169
|
+
No transform — keys sit flat in `properties`. The first active one in the tree wins.
|
|
170
|
+
|
|
171
|
+
| Key | Type | Default | Notes |
|
|
172
|
+
| --- | --- | --- | --- |
|
|
173
|
+
| `affect2D` | bool | true | Apply to the 2D layer too |
|
|
174
|
+
| `bloomEnabled` / `bloomIntensity` / `bloomThreshold` | bool / number / number | true / 1 / 0.9 | Bloom lifts only what is already bright |
|
|
175
|
+
| `bloomSmoothing` / `bloomRadius` | number | | |
|
|
176
|
+
| `vignetteEnabled` / `vignetteOffset` / `vignetteDarkness` | bool / number / number | | |
|
|
177
|
+
| `chromaticAberrationEnabled` / `chromaticAberrationOffset` | bool / number | | |
|
|
178
|
+
|
|
179
|
+
Brighten the colour or lower `bloomThreshold` rather than raising `bloomIntensity`. The
|
|
180
|
+
opposite for a pastel or light look: a pale ground sits above a low threshold and the whole
|
|
181
|
+
screen blooms — **raise** `bloomThreshold` (0.85–0.95) so only the accents glow.
|
|
182
|
+
|
|
183
|
+
## Example — a new HUD label anchored top-right
|
|
184
|
+
|
|
185
|
+
```yaml
|
|
186
|
+
- id: combo-label
|
|
187
|
+
type: Label2D
|
|
188
|
+
name: Combo Label
|
|
189
|
+
properties:
|
|
190
|
+
label: ""
|
|
191
|
+
labelFontSize: 40
|
|
192
|
+
labelColor: "#f5ae39"
|
|
193
|
+
labelAlign: right
|
|
194
|
+
transform:
|
|
195
|
+
position: [340, 790]
|
|
196
|
+
scale: [1, 1]
|
|
197
|
+
rotation: 0
|
|
198
|
+
layout:
|
|
199
|
+
enabled: true
|
|
200
|
+
horizontalAlign: right
|
|
201
|
+
verticalAlign: top
|
|
202
|
+
children: []
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
## Known gaps
|
|
206
|
+
|
|
207
|
+
- On a **cloud** project (opened from the Pix3 server, not a folder or `pix3 serve`) an `.svg`
|
|
208
|
+
sprite renders on first load and then goes blank: the local cache hands SVGs back as
|
|
209
|
+
`text/plain`, which no browser decodes as an image. Folder and `pix3 serve` projects are fine;
|
|
210
|
+
on cloud, use a PNG.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<!-- Pix3 agent kit 1.6.
|
|
2
|
-
# Pix3 node reference
|
|
3
|
-
|
|
4
|
-
Every node type the loader knows, with its properties. **Grep `### <NodeName>`** for one node
|
|
5
|
-
instead of reading this file. Keys are YAML keys under `properties:`; `position` / `rotation` /
|
|
6
|
-
`scale` go in the `transform:` block, `flow.*` in the `flow:` block, and the anchor keys in
|
|
7
|
-
`layout:` (see `pix3-scene-format`). Where a row says "not saved", the key does nothing in a file.
|
|
8
|
-
Source paths quoted here (`src/…`, `packages/…`) are files of the Pix3 engine repository, not of this project.
|
|
9
|
-
|
|
10
|
-
## Quick reference
|
|
11
|
-
|
|
1
|
+
<!-- Pix3 agent kit 1.6.2 — generated from docs/node-types-reference.md. Do not edit: pix3 kit --update regenerates it. -->
|
|
2
|
+
# Pix3 node reference
|
|
3
|
+
|
|
4
|
+
Every node type the loader knows, with its properties. **Grep `### <NodeName>`** for one node
|
|
5
|
+
instead of reading this file. Keys are YAML keys under `properties:`; `position` / `rotation` /
|
|
6
|
+
`scale` go in the `transform:` block, `flow.*` in the `flow:` block, and the anchor keys in
|
|
7
|
+
`layout:` (see `pix3-scene-format`). Where a row says "not saved", the key does nothing in a file.
|
|
8
|
+
Source paths quoted here (`src/…`, `packages/…`) are files of the Pix3 engine repository, not of this project.
|
|
9
|
+
|
|
10
|
+
## Quick reference
|
|
11
|
+
|
|
12
12
|
| Node Type | Key Properties |
|
|
13
13
|
| -------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
14
14
|
| NodeBase | id, name, type, visible, locked |
|
|
@@ -43,10 +43,10 @@ Source paths quoted here (`src/…`, `packages/…`) are files of the Pix3 engin
|
|
|
43
43
|
| InventorySlot2D | width, height, quantity, showQuantity, backdropColor, selectionColor |
|
|
44
44
|
| AudioPlayer | audioTrack, autoplay, loop, volume, bus, pitchVariation, volumeVariation |
|
|
45
45
|
| PostProcess | affect2D, bloom*, vignette*, chromaticAberration*, aoMode, ssao*, lut\* |
|
|
46
|
-
| Group | NodeBase only — an organisational container |
|
|
47
|
-
|
|
48
|
-
## Choosing the right node
|
|
49
|
-
|
|
46
|
+
| Group | NodeBase only — an organisational container |
|
|
47
|
+
|
|
48
|
+
## Choosing the right node
|
|
49
|
+
|
|
50
50
|
#### For 2D Projects:
|
|
51
51
|
|
|
52
52
|
1. **Start with a Group2D** as your scene root (the game viewport size comes from project settings; use anchor layout for responsiveness)
|
|
@@ -67,8 +67,8 @@ Source paths quoted here (`src/…`, `packages/…`) are files of the Pix3 engin
|
|
|
67
67
|
5. Add **PointLightNode** or **SpotLightNode** for localized lighting
|
|
68
68
|
6. Add **AmbientLightNode** or **HemisphereLightNode** as fill so unlit faces are not black
|
|
69
69
|
7. For cinematics / dynamic framing, add **VirtualCamera3D** nodes and a **Camera Brain** (`core:CameraBrain`) on the Camera3D to blend between them by priority
|
|
70
|
-
8. For bloom / vignette / colour grading, add one **PostProcess** node anywhere in the tree
|
|
71
|
-
|
|
70
|
+
8. For bloom / vignette / colour grading, add one **PostProcess** node anywhere in the tree
|
|
71
|
+
|
|
72
72
|
## 2D Nodes
|
|
73
73
|
|
|
74
74
|
All 2D nodes operate in screen space and are rendered using an orthographic camera. They use a left-handed coordinate system where X increases to the right and Y increases upward.
|
|
@@ -252,6 +252,14 @@ node, use the `core:AnimationPlayer` behaviour.
|
|
|
252
252
|
`fps` property here, unlike AnimatedSprite3D.
|
|
253
253
|
- `freeOnFinish` + a one-shot clip is the whole "spawn an explosion" pattern: no script needed.
|
|
254
254
|
- `sizeMode: native` is what you want for a trimmed spritesheet whose frames differ in size.
|
|
255
|
+
- **Scripts switch clips with `play(name?, { restart? })`**, not by writing `currentClip`. It
|
|
256
|
+
returns `false` (and changes nothing) for a clip the loaded resource does not have — no silent
|
|
257
|
+
fallback to the first clip. A different clip starts at frame 0; the current clip keeps its
|
|
258
|
+
position unless `restart: true`, which is also how a finished one-shot (`isPlaying` went false on
|
|
259
|
+
its last frame) is played again — a repeated `attack` must begin at frame 0. `getClipNames()`
|
|
260
|
+
lists the resource's clips once it has loaded.
|
|
261
|
+
- Sequence frames are keyed by their `texturePath`, so clips are independent: `attack[0]` and
|
|
262
|
+
`idle[0]` are different files and never share a texture slot.
|
|
255
263
|
|
|
256
264
|
---
|
|
257
265
|
|
|
@@ -758,8 +766,8 @@ A Godot-style `CanvasLayer` — a clean UI overlay band. Its subtree renders on
|
|
|
758
766
|
- Content under a CanvasLayer2D is pinned in design-space coordinates regardless of the active Camera2D, and its pointer hit-tests stay correct while the world camera pans.
|
|
759
767
|
- Multiple CanvasLayer2D nodes stack by scene-tree order (like ordinary 2D draw order).
|
|
760
768
|
- Unlike Godot, inheritance is **not** broken: an ancestor's transform, opacity, and visibility still flow into the overlay subtree — only the render camera differs. Author at the scene root for a fully independent layer.
|
|
761
|
-
- Runtime overlay behavior is play-mode only; in the editor it renders as a normal Group2D container.
|
|
762
|
-
|
|
769
|
+
- Runtime overlay behavior is play-mode only; in the editor it renders as a normal Group2D container.
|
|
770
|
+
|
|
763
771
|
## 3D Nodes
|
|
764
772
|
|
|
765
773
|
All 3D nodes operate in world space using a perspective camera by default. They use a right-handed coordinate system where X is right, Y is up, and Z is toward the viewer.
|
|
@@ -1226,8 +1234,8 @@ world-space; there is no migration — the field finally does what its label say
|
|
|
1226
1234
|
`emissionRate: 0` so it only fires from bursts. Bursts are deferred to after the
|
|
1227
1235
|
simulation loop, so self-reference and any tick order are safe (≤1 frame latency).
|
|
1228
1236
|
- Trail material is additive and untextured in v1.
|
|
1229
|
-
- All new fields are flat scalars, so they are keyframe-animatable from the timeline.
|
|
1230
|
-
|
|
1237
|
+
- All new fields are flat scalars, so they are keyframe-animatable from the timeline.
|
|
1238
|
+
|
|
1231
1239
|
## Post-processing
|
|
1232
1240
|
|
|
1233
1241
|
### PostProcess
|
|
@@ -1266,8 +1274,8 @@ and builds a composer from it; with no such node the plain two-pass path runs an
|
|
|
1266
1274
|
apply.
|
|
1267
1275
|
- The whole stack is one lazily-created composer. Every effect off = no composer at all.
|
|
1268
1276
|
- In a single-file playable export, `postprocessing` is pulled in through a generated
|
|
1269
|
-
`virtual:runtime-*` module — using this node is fine for an export, it just adds weight.
|
|
1270
|
-
|
|
1277
|
+
`virtual:runtime-*` module — using this node is fine for an export, it just adds weight.
|
|
1278
|
+
|
|
1271
1279
|
## Audio
|
|
1272
1280
|
|
|
1273
1281
|
### AudioPlayer
|
|
@@ -1328,4 +1336,4 @@ authored mix.
|
|
|
1328
1336
|
automatically blends to `'muffled'` and back on return to normal speed. This is
|
|
1329
1337
|
driven by the slow-mo base scale, **not** the frozen scale — a `hitstop(…)`
|
|
1330
1338
|
freeze does **not** muffle audio (otherwise every micro-freeze would pump the
|
|
1331
|
-
filter).
|
|
1339
|
+
filter).
|