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.
- package/dist/node/index.js +400 -0
- package/dist/web/core/buffer.d.ts +58 -0
- package/dist/web/core/buffer.d.ts.map +1 -0
- package/dist/web/core/grahpic-device.d.ts +66 -0
- package/dist/web/core/grahpic-device.d.ts.map +1 -0
- package/dist/web/core/index.d.ts +8 -0
- package/dist/web/core/index.d.ts.map +1 -0
- package/dist/web/core/resource-loader-factory.d.ts +90 -0
- package/dist/web/core/resource-loader-factory.d.ts.map +1 -0
- package/dist/web/core/resource-loader.d.ts +71 -0
- package/dist/web/core/resource-loader.d.ts.map +1 -0
- package/dist/web/core/resource-pipeline.d.ts +139 -0
- package/dist/web/core/resource-pipeline.d.ts.map +1 -0
- package/dist/web/core/shader.d.ts +62 -0
- package/dist/web/core/shader.d.ts.map +1 -0
- package/dist/web/core/texture.d.ts +69 -0
- package/dist/web/core/texture.d.ts.map +1 -0
- package/dist/web/demo-node.d.ts +2 -0
- package/dist/web/demo-node.d.ts.map +1 -0
- package/dist/web/examples/batch-renderer-demo.d.ts +10 -0
- package/dist/web/examples/batch-renderer-demo.d.ts.map +1 -0
- package/dist/web/examples/projection-examples.d.ts +87 -0
- package/dist/web/examples/projection-examples.d.ts.map +1 -0
- package/dist/web/examples/resource-loader-demo.d.ts +14 -0
- package/dist/web/examples/resource-loader-demo.d.ts.map +1 -0
- package/dist/web/examples/shader-examples.d.ts +92 -0
- package/dist/web/examples/shader-examples.d.ts.map +1 -0
- package/dist/web/examples/sprite-batch-renderer-demo.d.ts +12 -0
- package/dist/web/examples/sprite-batch-renderer-demo.d.ts.map +1 -0
- package/dist/web/index.d.ts +7 -0
- package/dist/web/index.d.ts.map +1 -0
- package/dist/web/index.js +760 -474
- package/dist/web/index.umd.js +23 -23
- package/dist/web/platforms/browser/browser-context.d.ts +31 -0
- package/dist/web/platforms/browser/browser-context.d.ts.map +1 -0
- package/dist/web/platforms/browser/browser-resource-loader.d.ts +67 -0
- package/dist/web/platforms/browser/browser-resource-loader.d.ts.map +1 -0
- package/dist/web/platforms/node/node-context.d.ts +31 -0
- package/dist/web/platforms/node/node-context.d.ts.map +1 -0
- package/dist/web/platforms/node/node-resource-loader.d.ts +73 -0
- package/dist/web/platforms/node/node-resource-loader.d.ts.map +1 -0
- package/dist/web/platforms/node/sdl-window.d.ts +41 -0
- package/dist/web/platforms/node/sdl-window.d.ts.map +1 -0
- package/dist/web/projection.test.d.ts +5 -0
- package/dist/web/projection.test.d.ts.map +1 -0
- package/dist/web/public-api.d.ts +25 -0
- package/dist/web/public-api.d.ts.map +1 -0
- package/dist/web/rendering/batch-renderer.d.ts +273 -0
- package/dist/web/rendering/batch-renderer.d.ts.map +1 -0
- package/dist/web/rendering/camera.d.ts +153 -0
- package/dist/web/rendering/camera.d.ts.map +1 -0
- package/dist/web/rendering/projection.d.ts +108 -0
- package/dist/web/rendering/projection.d.ts.map +1 -0
- package/dist/web/rendering/rendering-context-factory.d.ts +24 -0
- package/dist/web/rendering/rendering-context-factory.d.ts.map +1 -0
- package/dist/web/rendering/rendering-context.d.ts +77 -0
- package/dist/web/rendering/rendering-context.d.ts.map +1 -0
- package/dist/web/rendering/vertex.d.ts +98 -0
- package/dist/web/rendering/vertex.d.ts.map +1 -0
- package/dist/web/scene/scene.d.ts +139 -0
- package/dist/web/scene/scene.d.ts.map +1 -0
- 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
|
+
"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",
|