bloody-engine 1.0.3 → 1.0.5

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.
Files changed (62) hide show
  1. package/dist/node/index.js +400 -0
  2. package/dist/web/core/buffer.d.ts +58 -0
  3. package/dist/web/core/buffer.d.ts.map +1 -0
  4. package/dist/web/core/grahpic-device.d.ts +66 -0
  5. package/dist/web/core/grahpic-device.d.ts.map +1 -0
  6. package/dist/web/core/index.d.ts +8 -0
  7. package/dist/web/core/index.d.ts.map +1 -0
  8. package/dist/web/core/resource-loader-factory.d.ts +90 -0
  9. package/dist/web/core/resource-loader-factory.d.ts.map +1 -0
  10. package/dist/web/core/resource-loader.d.ts +71 -0
  11. package/dist/web/core/resource-loader.d.ts.map +1 -0
  12. package/dist/web/core/resource-pipeline.d.ts +139 -0
  13. package/dist/web/core/resource-pipeline.d.ts.map +1 -0
  14. package/dist/web/core/shader.d.ts +62 -0
  15. package/dist/web/core/shader.d.ts.map +1 -0
  16. package/dist/web/core/texture.d.ts +69 -0
  17. package/dist/web/core/texture.d.ts.map +1 -0
  18. package/dist/web/demo-node.d.ts +2 -0
  19. package/dist/web/demo-node.d.ts.map +1 -0
  20. package/dist/web/examples/batch-renderer-demo.d.ts +10 -0
  21. package/dist/web/examples/batch-renderer-demo.d.ts.map +1 -0
  22. package/dist/web/examples/projection-examples.d.ts +87 -0
  23. package/dist/web/examples/projection-examples.d.ts.map +1 -0
  24. package/dist/web/examples/resource-loader-demo.d.ts +14 -0
  25. package/dist/web/examples/resource-loader-demo.d.ts.map +1 -0
  26. package/dist/web/examples/shader-examples.d.ts +92 -0
  27. package/dist/web/examples/shader-examples.d.ts.map +1 -0
  28. package/dist/web/examples/sprite-batch-renderer-demo.d.ts +12 -0
  29. package/dist/web/examples/sprite-batch-renderer-demo.d.ts.map +1 -0
  30. package/dist/web/index.d.ts +7 -0
  31. package/dist/web/index.d.ts.map +1 -0
  32. package/dist/web/index.js +760 -474
  33. package/dist/web/index.umd.js +23 -23
  34. package/dist/web/platforms/browser/browser-context.d.ts +31 -0
  35. package/dist/web/platforms/browser/browser-context.d.ts.map +1 -0
  36. package/dist/web/platforms/browser/browser-resource-loader.d.ts +67 -0
  37. package/dist/web/platforms/browser/browser-resource-loader.d.ts.map +1 -0
  38. package/dist/web/platforms/node/node-context.d.ts +31 -0
  39. package/dist/web/platforms/node/node-context.d.ts.map +1 -0
  40. package/dist/web/platforms/node/node-resource-loader.d.ts +73 -0
  41. package/dist/web/platforms/node/node-resource-loader.d.ts.map +1 -0
  42. package/dist/web/platforms/node/sdl-window.d.ts +41 -0
  43. package/dist/web/platforms/node/sdl-window.d.ts.map +1 -0
  44. package/dist/web/projection.test.d.ts +5 -0
  45. package/dist/web/projection.test.d.ts.map +1 -0
  46. package/dist/web/public-api.d.ts +25 -0
  47. package/dist/web/public-api.d.ts.map +1 -0
  48. package/dist/web/rendering/batch-renderer.d.ts +273 -0
  49. package/dist/web/rendering/batch-renderer.d.ts.map +1 -0
  50. package/dist/web/rendering/camera.d.ts +153 -0
  51. package/dist/web/rendering/camera.d.ts.map +1 -0
  52. package/dist/web/rendering/projection.d.ts +108 -0
  53. package/dist/web/rendering/projection.d.ts.map +1 -0
  54. package/dist/web/rendering/rendering-context-factory.d.ts +24 -0
  55. package/dist/web/rendering/rendering-context-factory.d.ts.map +1 -0
  56. package/dist/web/rendering/rendering-context.d.ts +77 -0
  57. package/dist/web/rendering/rendering-context.d.ts.map +1 -0
  58. package/dist/web/rendering/vertex.d.ts +98 -0
  59. package/dist/web/rendering/vertex.d.ts.map +1 -0
  60. package/dist/web/scene/scene.d.ts +139 -0
  61. package/dist/web/scene/scene.d.ts.map +1 -0
  62. package/package.json +5 -4
@@ -0,0 +1,98 @@
1
+ /**
2
+ * 2.5D Sprite Vertex Structure
3
+ *
4
+ * Defines the vertex format for 2.5D sprites with support for:
5
+ * - Position (x, y, z)
6
+ * - Texture coordinates (u, v)
7
+ * - Color tint (r, g, b, a)
8
+ * - Texture index (for texture atlases)
9
+ *
10
+ * Vertex Layout (9 floats per vertex):
11
+ * [0-2] Position: x, y, z
12
+ * [3-4] TexCoord: u, v
13
+ * [5-8] Color: r, g, b, a
14
+ * [9] TexIndex: texture index (integer passed as float)
15
+ */
16
+ /**
17
+ * Represents a single vertex with all 2.5D sprite attributes
18
+ */
19
+ export interface SpriteVertex {
20
+ /** Position in world space */
21
+ x: number;
22
+ y: number;
23
+ z: number;
24
+ /** Texture coordinates */
25
+ u: number;
26
+ v: number;
27
+ /** Color tint (0-1 range) */
28
+ r: number;
29
+ g: number;
30
+ b: number;
31
+ a: number;
32
+ /** Texture index for texture atlas selection */
33
+ texIndex: number;
34
+ }
35
+ /**
36
+ * Float layout per vertex in the vertex buffer
37
+ * Total: 10 floats per vertex
38
+ */
39
+ export declare const VERTEX_LAYOUT: {
40
+ readonly FLOATS_PER_VERTEX: 10;
41
+ readonly POSITION_OFFSET: 0;
42
+ readonly TEXCOORD_OFFSET: 3;
43
+ readonly COLOR_OFFSET: 5;
44
+ readonly TEXINDEX_OFFSET: 9;
45
+ readonly STRIDE: number;
46
+ };
47
+ /**
48
+ * Convert a SpriteVertex to a Float32Array segment
49
+ * Useful for building vertex buffers
50
+ */
51
+ export declare function spriteVertexToArray(vertex: SpriteVertex): Float32Array;
52
+ /**
53
+ * Create a default sprite vertex
54
+ * Useful for initialization
55
+ */
56
+ export declare function createDefaultSpriteVertex(): SpriteVertex;
57
+ /**
58
+ * Sprite quad instance data for batch rendering
59
+ * Extends the basic QuadInstance with 2.5D sprite features
60
+ */
61
+ export interface SpriteQuadInstance {
62
+ /** Position in 2.5D space */
63
+ x: number;
64
+ y: number;
65
+ z: number;
66
+ /** Width and height */
67
+ width: number;
68
+ height: number;
69
+ /** Rotation in radians */
70
+ rotation: number;
71
+ /** Color tint (0-1 range, default white) */
72
+ color?: {
73
+ r: number;
74
+ g: number;
75
+ b: number;
76
+ a: number;
77
+ };
78
+ /** Texture coordinates (UV region in texture atlas) */
79
+ uvRect?: {
80
+ uMin: number;
81
+ vMin: number;
82
+ uMax: number;
83
+ vMax: number;
84
+ };
85
+ /** Texture index for atlas selection */
86
+ texIndex?: number;
87
+ /** Grid position for GPU-based transformation (optional) */
88
+ gridX?: number;
89
+ gridY?: number;
90
+ }
91
+ /**
92
+ * Generate 6 vertices (2 triangles) for a quad with the specified properties
93
+ *
94
+ * @param instance The sprite quad instance data
95
+ * @returns Array of 6 vertices forming the quad
96
+ */
97
+ export declare function generateQuadVertices(instance: SpriteQuadInstance): SpriteVertex[];
98
+ //# sourceMappingURL=vertex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vertex.d.ts","sourceRoot":"","sources":["../../../src/rendering/vertex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8BAA8B;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,6BAA6B;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;CAOhB,CAAC;AAEX;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAatE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,YAAY,CAaxD;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,6BAA6B;IAC7B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,KAAK,CAAC,EAAE;QACN,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;QACV,CAAC,EAAE,MAAM,CAAC;KACX,CAAC;IACF,uDAAuD;IACvD,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,kBAAkB,GAC3B,YAAY,EAAE,CAmEhB"}
@@ -0,0 +1,139 @@
1
+ import { ProjectionConfig, GridCoord } from '../rendering/projection';
2
+ /**
3
+ * Scene configuration and constants
4
+ * Shared between Node.js and Browser rendering
5
+ */
6
+ export declare const SCENE_CONFIG: {
7
+ width: number;
8
+ height: number;
9
+ targetFPS: number;
10
+ };
11
+ export declare const PROJECTION_CONFIG: ProjectionConfig;
12
+ /**
13
+ * Entity for visualization (used in projection demo)
14
+ */
15
+ export interface VisualizationEntity {
16
+ id: string;
17
+ name: string;
18
+ gridPos: GridCoord;
19
+ color: [number, number, number];
20
+ size: number;
21
+ }
22
+ /**
23
+ * Projection visualization entities to render
24
+ */
25
+ export declare const PROJECTION_ENTITIES: VisualizationEntity[];
26
+ export declare const GEOMETRY: {
27
+ quad: {
28
+ name: string;
29
+ vertices: Float32Array<ArrayBuffer>;
30
+ stride: number;
31
+ };
32
+ triangle: {
33
+ name: string;
34
+ vertices: Float32Array<ArrayBuffer>;
35
+ stride: number;
36
+ };
37
+ };
38
+ export declare const SHADERS_V1: {
39
+ vertex: string;
40
+ fragment: string;
41
+ };
42
+ export declare const SHADERS_V2: {
43
+ vertex: string;
44
+ fragment: string;
45
+ };
46
+ export declare const SHADERS: {
47
+ vertex: string;
48
+ fragment: string;
49
+ };
50
+ /**
51
+ * SHADERS_V3 - GPU-Based 2.5D Transformation
52
+ *
53
+ * This version moves the isometric projection from CPU to GPU.
54
+ * The vertex shader receives grid coordinates and transforms them to screen space.
55
+ *
56
+ * Attributes:
57
+ * - aGridPosition: Grid position (x, y) in world space
58
+ * - aZPosition: Z position for depth layering
59
+ * - aLocalOffset: Local offset from quad center (for rotation)
60
+ * - aTexCoord: Texture coordinates
61
+ * - aColor: Color tint
62
+ * - aTexIndex: Texture atlas index
63
+ *
64
+ * Uniforms:
65
+ * - uTileSize: Size of tiles (width, height) for isometric projection
66
+ * - uCamera: Camera position (x, y) and zoom
67
+ * - uRotation: Rotation angle in radians
68
+ * - uQuadSize: Size of the quad (width, height)
69
+ * - uZScale: Scale factor for Z height (vertical exaggeration)
70
+ * - uResolution: Screen resolution for NDC conversion
71
+ */
72
+ export declare const SHADERS_V3: {
73
+ vertex: string;
74
+ fragment: string;
75
+ };
76
+ export declare const TEXTURE_CONFIG: {
77
+ size: number;
78
+ type: string;
79
+ };
80
+ export declare const ANIMATION_CONFIG: {
81
+ background: {
82
+ offsetR: number;
83
+ amplitudeR: number;
84
+ speedR: number;
85
+ offsetG: number;
86
+ amplitudeG: number;
87
+ speedG: number;
88
+ offsetB: number;
89
+ amplitudeB: number;
90
+ speedB: number;
91
+ };
92
+ quads: {
93
+ count: number;
94
+ scale: number;
95
+ baseRadius: number;
96
+ radiusVariation: number;
97
+ radiusSpeed: number;
98
+ orbitalSpeed: number;
99
+ rotationSpeed: number;
100
+ colors: number[][];
101
+ };
102
+ triangles: {
103
+ count: number;
104
+ scale: number;
105
+ baseRadius: number;
106
+ radiusVariation: number;
107
+ radiusSpeed: number;
108
+ orbitalSpeed: number;
109
+ rotationSpeed: number;
110
+ rotationDirection: number;
111
+ colors: number[][];
112
+ };
113
+ };
114
+ /**
115
+ * Calculate background color for a given elapsed time
116
+ */
117
+ export declare function getBackgroundColor(elapsedSeconds: number): {
118
+ r: number;
119
+ g: number;
120
+ b: number;
121
+ a: number;
122
+ };
123
+ /**
124
+ * Calculate quad transformations for animation
125
+ */
126
+ export declare function getQuadTransforms(elapsedSeconds: number): {
127
+ matrix: Float32Array<ArrayBuffer>;
128
+ color: number[];
129
+ index: number;
130
+ }[];
131
+ /**
132
+ * Calculate triangle transformations for animation
133
+ */
134
+ export declare function getTriangleTransforms(elapsedSeconds: number): {
135
+ matrix: Float32Array<ArrayBuffer>;
136
+ color: number[];
137
+ index: number;
138
+ }[];
139
+ //# sourceMappingURL=scene.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../../src/scene/scene.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAE3E;;;GAGG;AAEH,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AAMF,eAAO,MAAM,iBAAiB,kBAI7B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,mBAAmB,EAoCpD,CAAC;AAGF,eAAO,MAAM,QAAQ;;;;;;;;;;;CA6DpB,CAAC;AAKF,eAAO,MAAM,UAAU;;;CA2BtB,CAAC;AAKF,eAAO,MAAM,UAAU;;;CAsCtB,CAAC;AAGF,eAAO,MAAM,OAAO;;;CAAa,CAAC;AAElC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,UAAU;;;CAgFtB,CAAC;AAGF,eAAO,MAAM,cAAc;;;CAG1B,CAAC;AAGF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4C5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM;;;;;EAQxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,cAAc,EAAE,MAAM;;;;IA6CvD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM;;;;IA8C3D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "bloody-engine",
3
- "version": "1.0.3",
3
+ "version": "1.0.5",
4
4
  "description": "A WebGL-based 2.5D graphics engine for isometric rendering",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -39,8 +39,8 @@
39
39
  "scripts": {
40
40
  "dev": "vite",
41
41
  "build": "npm run build:web && npm run build:node",
42
- "build:web": "vite build --config vite.config.web.ts",
43
- "build:node": "vite build --config vite.config.node.ts",
42
+ "build:web": "tsc --emitDeclarationOnly --declaration --declarationMap --outDir dist/web && vite build --config vite.config.web.ts",
43
+ "build:node": "tsc --emitDeclarationOnly --declaration --declarationMap --outDir dist/node && vite build --config vite.config.node.ts",
44
44
  "build:demo": "vite build --config vite.config.demo.ts",
45
45
  "preview": "vite preview",
46
46
  "demo": "npm run build:demo && node dist/demo/index.js"
@@ -49,7 +49,8 @@
49
49
  "@types/gl": "^6.0.5",
50
50
  "@types/node": "^20.10.6",
51
51
  "typescript": "^5.3.3",
52
- "vite": "^7.3.0"
52
+ "vite": "^7.3.0",
53
+ "vite-plugin-dts": "^4.5.4"
53
54
  },
54
55
  "dependencies": {
55
56
  "@kmamal/sdl": "^0.11.13",