@series-inc/rundot-3d-engine 0.4.2 → 0.4.4

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/README.md CHANGED
@@ -21,7 +21,7 @@ A Three.js-based game engine with ECS architecture, physics, navigation, and com
21
21
  ```json
22
22
  {
23
23
  "dependencies": {
24
- "@series-ai/rundot-3d-engine": "^0.2.0"
24
+ "@series-inc/rundot-3d-engine": "^0.2.0"
25
25
  }
26
26
  }
27
27
  ```
@@ -35,8 +35,8 @@ git submodule update --init --recursive
35
35
  ## Usage
36
36
 
37
37
  ```typescript
38
- import { VenusGame, GameObject, Component } from "@series-ai/rundot-3d-engine"
39
- import { PhysicsSystem, UISystem } from "@series-ai/rundot-3d-engine/systems"
38
+ import { VenusGame, GameObject, Component } from "@series-inc/rundot-3d-engine"
39
+ import { PhysicsSystem, UISystem } from "@series-inc/rundot-3d-engine/systems"
40
40
 
41
41
  class MyGame extends VenusGame {
42
42
  async onCreate(): Promise<void> {
@@ -5,7 +5,7 @@ Component is the base class for all behaviors that can be attached to GameObject
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { Component } from "@series-ai/rundot-3d-engine"
8
+ import { Component } from "@series-inc/rundot-3d-engine"
9
9
 
10
10
  class RotateComponent extends Component {
11
11
  private speed: number = 1
@@ -5,7 +5,7 @@ GameObject is the base entity class in the Rundot 3D Engine, extending THREE.Obj
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { GameObject } from "@series-ai/rundot-3d-engine"
8
+ import { GameObject } from "@series-inc/rundot-3d-engine"
9
9
 
10
10
  // Create a GameObject (automatically added to scene)
11
11
  const player = new GameObject("Player")
@@ -5,8 +5,8 @@ VenusGame is the base class for your game application. It manages the Three.js r
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { VenusGame } from "@series-ai/rundot-3d-engine"
9
- import { GameObject, Component } from "@series-ai/rundot-3d-engine"
8
+ import { VenusGame } from "@series-inc/rundot-3d-engine"
9
+ import { GameObject, Component } from "@series-inc/rundot-3d-engine"
10
10
 
11
11
  class MyGame extends VenusGame {
12
12
  protected async onStart(): Promise<void> {
@@ -62,7 +62,7 @@ class MyGame extends VenusGame {
62
62
 
63
63
  ```typescript
64
64
  // From anywhere in your code after game initialization
65
- import { VenusGame } from "@series-ai/rundot-3d-engine"
65
+ import { VenusGame } from "@series-inc/rundot-3d-engine"
66
66
 
67
67
  // Access the scene
68
68
  const scene = VenusGame.scene
@@ -15,8 +15,8 @@ When loading meshes, you need to decide between:
15
15
  The simplest approach - automatically fit the collider to the mesh bounds:
16
16
 
17
17
  ```typescript
18
- import { Component, GameObject, MeshRenderer } from "@series-ai/rundot-3d-engine"
19
- import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-ai/rundot-3d-engine/systems"
18
+ import { Component, GameObject, MeshRenderer } from "@series-inc/rundot-3d-engine"
19
+ import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-inc/rundot-3d-engine/systems"
20
20
 
21
21
  class Crate extends Component {
22
22
  private rendererObject: GameObject | null = null
@@ -53,8 +53,8 @@ class Crate extends Component {
53
53
  Wait for mesh to load before calculating bounds:
54
54
 
55
55
  ```typescript
56
- import { Component, GameObject, MeshRenderer } from "@series-ai/rundot-3d-engine"
57
- import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-ai/rundot-3d-engine/systems"
56
+ import { Component, GameObject, MeshRenderer } from "@series-inc/rundot-3d-engine"
57
+ import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-inc/rundot-3d-engine/systems"
58
58
 
59
59
  class ComplexObject extends Component {
60
60
  private rendererObject: GameObject | null = null
@@ -251,8 +251,8 @@ for (let i = 0; i < 100; i++) {
251
251
  Combining mesh loading with auto-fitted trigger collision:
252
252
 
253
253
  ```typescript
254
- import { Component, GameObject, MeshRenderer } from "@series-ai/rundot-3d-engine"
255
- import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-ai/rundot-3d-engine/systems"
254
+ import { Component, GameObject, MeshRenderer } from "@series-inc/rundot-3d-engine"
255
+ import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-inc/rundot-3d-engine/systems"
256
256
 
257
257
  class CoinPickup extends Component {
258
258
  private rendererObject: GameObject | null = null
@@ -35,7 +35,7 @@ private createMeshRenderer(): void {
35
35
  ## Complete Example
36
36
 
37
37
  ```typescript
38
- import { Component, GameObject, MeshRenderer } from "@series-ai/rundot-3d-engine"
38
+ import { Component, GameObject, MeshRenderer } from "@series-inc/rundot-3d-engine"
39
39
 
40
40
  class Pickup extends Component {
41
41
  private rendererObject: GameObject | null = null
@@ -162,8 +162,8 @@ InstancedRenderer uses GPU instancing to render hundreds or thousands of the sam
162
162
  ### Basic Example
163
163
 
164
164
  ```typescript
165
- import { Component, GameObject } from "@series-ai/rundot-3d-engine"
166
- import { InstancedRenderer } from "@series-ai/rundot-3d-engine/rendering"
165
+ import { Component, GameObject } from "@series-inc/rundot-3d-engine"
166
+ import { InstancedRenderer } from "@series-inc/rundot-3d-engine/rendering"
167
167
  import * as THREE from "three"
168
168
 
169
169
  class CoinSpawner extends Component {
@@ -140,7 +140,7 @@ class PickupZone extends Component {
140
140
  Filter which objects collide with each other:
141
141
 
142
142
  ```typescript
143
- import { createCollisionGroup } from "@series-ai/rundot-3d-engine/systems"
143
+ import { createCollisionGroup } from "@series-inc/rundot-3d-engine/systems"
144
144
 
145
145
  // Define groups (16-bit bitmasks)
146
146
  const PLAYER_GROUP = 0x0001
@@ -5,7 +5,7 @@ PhysicsSystem manages Rapier3D physics simulation with fixed-step integration, c
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { PhysicsSystem } from "@series-ai/rundot-3d-engine/systems"
8
+ import { PhysicsSystem } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Initialize (done automatically by VenusGame)
11
11
  await PhysicsSystem.initialize()
@@ -19,7 +19,7 @@ await PhysicsSystem.initialize()
19
19
  ### Adding Physics to GameObject
20
20
 
21
21
  ```typescript
22
- import { RigidBodyComponentThree, RigidBodyType } from "@series-ai/rundot-3d-engine/systems"
22
+ import { RigidBodyComponentThree, RigidBodyType } from "@series-inc/rundot-3d-engine/systems"
23
23
 
24
24
  // Dynamic body (affected by gravity, forces)
25
25
  const box = new GameObject("Box")
@@ -5,7 +5,7 @@ RigidBodyComponentThree adds Rapier physics to GameObjects with automatic positi
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-ai/rundot-3d-engine/systems"
8
+ import { RigidBodyComponentThree, RigidBodyType, ColliderShape } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Dynamic physics object
11
11
  const ball = new GameObject("Ball")
@@ -5,7 +5,7 @@ AssetManager handles loading and caching of 3D assets (FBX, GLB, OBJ) with suppo
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { AssetManager } from "@series-ai/rundot-3d-engine/assets"
8
+ import { AssetManager } from "@series-inc/rundot-3d-engine/assets"
9
9
  import * as THREE from "three"
10
10
 
11
11
  // Initialize (done automatically by VenusGame)
@@ -5,8 +5,8 @@ InstancedRenderer uses GPU instancing to efficiently render many copies of the s
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { GameObject, InstancedRenderer } from "@series-ai/rundot-3d-engine"
9
- import { InstancedMeshManager } from "@series-ai/rundot-3d-engine/render"
8
+ import { GameObject, InstancedRenderer } from "@series-inc/rundot-3d-engine"
9
+ import { InstancedMeshManager } from "@series-inc/rundot-3d-engine/render"
10
10
 
11
11
  // 1. Pre-register a batch (optional - auto-creates if not done)
12
12
  await InstancedMeshManager.getInstance().registerMeshForInstancing(
@@ -246,7 +246,7 @@ tree.getComponent(InstancedRenderer)?.markDirty()
246
246
  ### Creating Batches Explicitly
247
247
 
248
248
  ```typescript
249
- import { InstancedMeshManager } from "@series-ai/rundot-3d-engine/render"
249
+ import { InstancedMeshManager } from "@series-inc/rundot-3d-engine/render"
250
250
 
251
251
  // Initialize manager (done automatically by VenusGame)
252
252
  const manager = InstancedMeshManager.getInstance()
@@ -5,7 +5,7 @@ MeshRenderer is a Component that loads and displays 3D meshes from the StowKit a
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { GameObject, MeshRenderer } from "@series-ai/rundot-3d-engine"
8
+ import { GameObject, MeshRenderer } from "@series-inc/rundot-3d-engine"
9
9
 
10
10
  // The correct pattern: MeshRenderer + child GameObject
11
11
  const renderer = new MeshRenderer("restaurant_display_Money")
@@ -5,8 +5,8 @@ SkeletalRenderer loads and displays animated character meshes with skeletal anim
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { GameObject, SkeletalRenderer } from "@series-ai/rundot-3d-engine"
9
- import { AssetManager } from "@series-ai/rundot-3d-engine/assets"
8
+ import { GameObject, SkeletalRenderer } from "@series-inc/rundot-3d-engine"
9
+ import { AssetManager } from "@series-inc/rundot-3d-engine/assets"
10
10
 
11
11
  // 1. Preload skeletal model
12
12
  await AssetManager.preloadSkeletalModel("Character/character_main.fbx")
@@ -62,7 +62,7 @@ const renderer = new SkeletalRenderer(
62
62
  ### Integration with Animation System
63
63
 
64
64
  ```typescript
65
- import { AnimationControllerComponent } from "@series-ai/rundot-3d-engine/systems"
65
+ import { AnimationControllerComponent } from "@series-inc/rundot-3d-engine/systems"
66
66
 
67
67
  class AnimatedCharacter extends Component {
68
68
  protected async onCreate(): Promise<void> {
@@ -5,7 +5,7 @@ Advanced animation system with state machines, blending, retargeting, and frustu
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { AnimationControllerComponent } from "@series-ai/rundot-3d-engine/systems"
8
+ import { AnimationControllerComponent } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Add to character with SkeletalRenderer
11
11
  const character = new GameObject("Character")
@@ -5,7 +5,7 @@
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { AudioSystem, Audio2D } from "@series-ai/rundot-3d-engine/systems"
8
+ import { AudioSystem, Audio2D } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Play 2D sound effect
11
11
  const sfx = new Audio2D("SFX/click.ogg")
@@ -5,7 +5,7 @@ Cross-platform input system for keyboard, mouse, and touch with mobile support.
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { InputManager } from "@series-ai/rundot-3d-engine/systems"
8
+ import { InputManager } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Check keyboard input
11
11
  if (InputManager.isKeyDown("w")) {
@@ -5,7 +5,7 @@ Lighting components for Three.js scenes with directional and ambient lights.
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { DirectionalLightComponentThree, AmbientLightComponentThree } from "@series-ai/rundot-3d-engine/systems"
8
+ import { DirectionalLightComponentThree, AmbientLightComponentThree } from "@series-inc/rundot-3d-engine/systems"
9
9
  import * as THREE from "three"
10
10
 
11
11
  // Add directional light (sun)
@@ -5,7 +5,7 @@ Flexible particle system for visual effects like smoke, fire, explosions, and ma
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { ParticleSystemPrefabComponent } from "@series-ai/rundot-3d-engine/systems"
8
+ import { ParticleSystemPrefabComponent } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Particles are typically created from prefabs
11
11
  // See prefab documentation for particle configuration
@@ -5,7 +5,7 @@ Prefab system for instantiating pre-configured GameObjects with components from
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { PrefabLoader, PrefabCollection } from "@series-ai/rundot-3d-engine/systems"
8
+ import { PrefabLoader, PrefabCollection } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Load prefabs (done via StowKitSystem)
11
11
  const prefabs = await StowKitSystem.getInstance().loadFromBuildJson(buildJson, config)
@@ -5,7 +5,7 @@ StowKitSystem loads assets from .stow pack files with automatic caching, prefab
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { StowKitSystem } from "@series-ai/rundot-3d-engine/systems"
8
+ import { StowKitSystem } from "@series-inc/rundot-3d-engine/systems"
9
9
  import RundotGameAPI from "@series-inc/rundot-game-sdk/api"
10
10
 
11
11
  // Load from build.json (includes all packs and prefabs)
@@ -5,7 +5,7 @@ Property animation system with easing functions for smooth transitions.
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { TweenSystem, Easing } from "@series-ai/rundot-3d-engine/systems"
8
+ import { TweenSystem, Easing } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Animate object property
11
11
  TweenSystem.tween(
@@ -5,7 +5,7 @@ UI utilities and loading screen management.
5
5
  ## Quick Start
6
6
 
7
7
  ```typescript
8
- import { UISystem } from "@series-ai/rundot-3d-engine/systems"
8
+ import { UISystem } from "@series-inc/rundot-3d-engine/systems"
9
9
 
10
10
  // Show loading screen
11
11
  UISystem.showLoadingScreen()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@series-inc/rundot-3d-engine",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "type": "module",
5
5
  "types": "./dist/index.d.ts",
6
6
  "scripts": {
@@ -10,7 +10,8 @@
10
10
  "lint:fix": "eslint src --fix",
11
11
  "format": "prettier --write .",
12
12
  "format:check": "prettier --check .",
13
- "postinstall": "node scripts/postinstall.mjs"
13
+ "postinstall": "node scripts/postinstall.mjs",
14
+ "gen-docs-index": "node scripts/gen-docs-index.mjs && node scripts/update-docs-index.mjs"
14
15
  },
15
16
  "repository": {
16
17
  "type": "git",
@@ -9,16 +9,25 @@ export function updateDocsIndex(cwd = resolve(import.meta.dirname, "..")) {
9
9
  }
10
10
 
11
11
  const fresh = readFileSync(indexPath, "utf-8").trimEnd();
12
- const label = "Docs Index";
13
- const escaped = label.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
12
+
13
+ // Extract the label from the index line, e.g. [Run.3DEngine Docs Index]|...
14
+ const labelMatch = fresh.match(/^\[([^\]]+)\]/);
15
+ if (!labelMatch) {
16
+ console.warn("Could not parse label from docs-index.txt, skipping");
17
+ return;
18
+ }
19
+ const escaped = labelMatch[1].replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
14
20
  const re = new RegExp(`\\[${escaped}\\][^\\n]*(?:\\n(?![\\[<])[^\\n]*)*`);
15
21
 
16
22
  const targets = ["AGENTS.md", "CLAUDE.md"];
17
23
 
18
24
  for (const file of targets) {
19
25
  const filePath = resolve(cwd, file);
26
+
20
27
  if (!existsSync(filePath)) {
21
- console.log(`${file} not found, skipping`);
28
+ // Create the file with just the index line
29
+ writeFileSync(filePath, fresh + "\n");
30
+ console.log(`Created ${file}`);
22
31
  continue;
23
32
  }
24
33