@objectifthunes/three-book 0.1.0

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 (56) hide show
  1. package/dist/AutoTurn.d.ts +162 -0
  2. package/dist/AutoTurn.d.ts.map +1 -0
  3. package/dist/Book.d.ts +154 -0
  4. package/dist/Book.d.ts.map +1 -0
  5. package/dist/BookBinding.d.ts +26 -0
  6. package/dist/BookBinding.d.ts.map +1 -0
  7. package/dist/BookContent.d.ts +44 -0
  8. package/dist/BookContent.d.ts.map +1 -0
  9. package/dist/BookDirection.d.ts +10 -0
  10. package/dist/BookDirection.d.ts.map +1 -0
  11. package/dist/Cylinder.d.ts +40 -0
  12. package/dist/Cylinder.d.ts.map +1 -0
  13. package/dist/PageContent.d.ts +44 -0
  14. package/dist/PageContent.d.ts.map +1 -0
  15. package/dist/Paper.d.ts +191 -0
  16. package/dist/Paper.d.ts.map +1 -0
  17. package/dist/PaperMaterialData.d.ts +29 -0
  18. package/dist/PaperMaterialData.d.ts.map +1 -0
  19. package/dist/PaperMeshData.d.ts +43 -0
  20. package/dist/PaperMeshData.d.ts.map +1 -0
  21. package/dist/PaperMeshUtility.d.ts +72 -0
  22. package/dist/PaperMeshUtility.d.ts.map +1 -0
  23. package/dist/PaperNode.d.ts +31 -0
  24. package/dist/PaperNode.d.ts.map +1 -0
  25. package/dist/PaperPattern.d.ts +30 -0
  26. package/dist/PaperPattern.d.ts.map +1 -0
  27. package/dist/PaperSetup.d.ts +52 -0
  28. package/dist/PaperSetup.d.ts.map +1 -0
  29. package/dist/PaperStructs.d.ts +43 -0
  30. package/dist/PaperStructs.d.ts.map +1 -0
  31. package/dist/PaperUVMargin.d.ts +40 -0
  32. package/dist/PaperUVMargin.d.ts.map +1 -0
  33. package/dist/Renderer.d.ts +82 -0
  34. package/dist/Renderer.d.ts.map +1 -0
  35. package/dist/StapleBinding.d.ts +132 -0
  36. package/dist/StapleBinding.d.ts.map +1 -0
  37. package/dist/index.d.ts +22 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +2692 -0
  40. package/dist/utils/BezierUtility.d.ts +8 -0
  41. package/dist/utils/BezierUtility.d.ts.map +1 -0
  42. package/dist/utils/EllipseUtility.d.ts +8 -0
  43. package/dist/utils/EllipseUtility.d.ts.map +1 -0
  44. package/dist/utils/LoopUtility.d.ts +14 -0
  45. package/dist/utils/LoopUtility.d.ts.map +1 -0
  46. package/dist/utils/MatrixUtility.d.ts +13 -0
  47. package/dist/utils/MatrixUtility.d.ts.map +1 -0
  48. package/dist/utils/TextureUtility.d.ts +17 -0
  49. package/dist/utils/TextureUtility.d.ts.map +1 -0
  50. package/dist/utils/TriangleUtility.d.ts +11 -0
  51. package/dist/utils/TriangleUtility.d.ts.map +1 -0
  52. package/dist/utils/VectorUtility.d.ts +29 -0
  53. package/dist/utils/VectorUtility.d.ts.map +1 -0
  54. package/dist/utils/index.d.ts +8 -0
  55. package/dist/utils/index.d.ts.map +1 -0
  56. package/package.json +30 -0
@@ -0,0 +1,191 @@
1
+ /**
2
+ * Faithful port of the Unity C# Paper class (Book.cs lines ~2919-3803).
3
+ *
4
+ * This is the core page-turning class. It handles:
5
+ * - Page turning physics
6
+ * - Handle clamping via dual ellipse constraints
7
+ * - Cylinder binary search (UpdateCylinder — 100 iterations)
8
+ * - Falling physics (auto-turning with double SmoothStep, manual with SmoothDamp)
9
+ * - Mesh LOD switching (Highpoly / Lowpoly / LowpolyHole)
10
+ * - Material/uniform updates
11
+ * - Base vertex updates with Cylinder.RollPoint()
12
+ * - Raycast hit detection
13
+ * - Auto-turning (StartAutoTurning, UpdateAutoTurning)
14
+ * - StartTurning, StopTurning, UpdateTurning
15
+ */
16
+ import * as THREE from 'three';
17
+ import { Cylinder } from './Cylinder';
18
+ import { PaperMeshData } from './PaperMeshData';
19
+ import { PaperSetup } from './PaperSetup';
20
+ import { PaperMaterialData } from './PaperMaterialData';
21
+ import { PaperMeshDataPool } from './Renderer';
22
+ import { BookDirection } from './BookDirection';
23
+ /** Mirrors C# IPageContent */
24
+ export interface IPageContent {
25
+ texture: THREE.Texture | null;
26
+ textureST: THREE.Vector4;
27
+ isPointOverUI(textureCoord: THREE.Vector2): boolean;
28
+ init(bookContent: unknown): void;
29
+ setActive(active: boolean): void;
30
+ }
31
+ /** Mirrors C# BookRaycastHit struct */
32
+ export interface BookRaycastHit {
33
+ point: THREE.Vector3;
34
+ textureCoordinate: THREE.Vector2;
35
+ pageContent: IPageContent | null;
36
+ paperIndex: number;
37
+ pageIndex: number;
38
+ }
39
+ /** Mirrors C# AutoTurnMode enum */
40
+ export declare enum AutoTurnMode {
41
+ Surface = 0,
42
+ Edge = 1
43
+ }
44
+ /**
45
+ * Minimal interface the Paper class expects from the Book owner.
46
+ * Keeps the file self-contained without importing the full Book class.
47
+ */
48
+ export interface IBookOwner {
49
+ bound: IBookBound;
50
+ castShadows: boolean;
51
+ reduceShadows: boolean;
52
+ direction: BookDirection;
53
+ }
54
+ /** Minimal interface for BookBound as used by Paper */
55
+ export interface IBookBound {
56
+ resetPaperPosition(paper: Paper): void;
57
+ updatePaperPosition(paper: Paper): void;
58
+ }
59
+ /**
60
+ * Minimal wrapper mirroring the C# Renderer helper class used by Paper.
61
+ * In Three.js this maps to THREE.Mesh + THREE.Object3D.
62
+ */
63
+ export interface IPaperRenderer {
64
+ readonly transform: THREE.Object3D;
65
+ mesh: THREE.BufferGeometry | null;
66
+ castShadows: boolean;
67
+ setMaterials(materials: THREE.Material[]): void;
68
+ setPropertyBlock(props: Record<string, unknown>, materialIndex: number): void;
69
+ readonly bounds: THREE.Box3;
70
+ }
71
+ export declare class Paper {
72
+ private m_Index;
73
+ private m_Transform;
74
+ private m_FrontContent;
75
+ private m_BackContent;
76
+ private m_UseBackContentForSides;
77
+ private m_Book;
78
+ private m_Prev;
79
+ private m_Next;
80
+ private m_NoHole;
81
+ private m_MaterialData;
82
+ private m_Renderer;
83
+ private m_Size;
84
+ private m_Thickness;
85
+ private m_Stiffness;
86
+ private m_Margin;
87
+ private m_IsCover;
88
+ private m_UVMargin;
89
+ private m_MeshData;
90
+ private m_LowpolyMeshData;
91
+ private m_LowpolyHoleMeshData;
92
+ private m_HighpolyMeshDataPool;
93
+ private m_MeshDataType;
94
+ private m_Cylinder;
95
+ private m_IsRolling;
96
+ private m_IsAutoTurning;
97
+ private m_WorldPlane;
98
+ private m_StartHandle;
99
+ private m_CurrentHandle;
100
+ private m_EndHandle;
101
+ private m_PrevHandle;
102
+ private m_HandleOffset;
103
+ private m_HandleVelocity;
104
+ private m_HandleVelocities;
105
+ private m_SubMeshCount;
106
+ private m_MinTurningRadius;
107
+ private m_TurningRadius;
108
+ private m_FallDuration;
109
+ private m_FallTime;
110
+ private m_XTime;
111
+ private m_ZTime;
112
+ private m_IsTurning;
113
+ private m_IsFalling;
114
+ private m_IsFallingLeft;
115
+ private m_isMeshChanged;
116
+ sizeXOffset: number;
117
+ get isMeshChanged(): boolean;
118
+ set isMeshChanged(value: boolean);
119
+ get isCover(): boolean;
120
+ get index(): number;
121
+ get transform(): THREE.Object3D;
122
+ get renderer(): IPaperRenderer;
123
+ get meshData(): PaperMeshData;
124
+ get size(): THREE.Vector2;
125
+ set size(value: THREE.Vector2);
126
+ get thickness(): number;
127
+ get margin(): number;
128
+ get zTime(): number;
129
+ get direction(): THREE.Vector3;
130
+ get isTurning(): boolean;
131
+ get isFalling(): boolean;
132
+ get isFlipped(): boolean;
133
+ get isOnRightStack(): boolean;
134
+ get frontContent(): IPageContent;
135
+ get backContent(): IPageContent;
136
+ get currentContent(): IPageContent;
137
+ private get needHole();
138
+ set prev(value: Paper | null);
139
+ set next(value: Paper | null);
140
+ set noHole(value: boolean);
141
+ private get isIdle();
142
+ get isInMiddelOfStack(): boolean;
143
+ constructor(isCover: boolean, index: number, book: IBookOwner, renderer: IPaperRenderer);
144
+ setTime(time: number): void;
145
+ setMeshData(lowpolyMeshData: PaperMeshData, lowpolyHoleMeshData: PaperMeshData | null, highpolyMeshDataPool: PaperMeshDataPool): void;
146
+ restState(rightStack: boolean): void;
147
+ restMesh(): void;
148
+ setMaterialData(data: PaperMaterialData): void;
149
+ setPaperSetup(settings: PaperSetup): void;
150
+ setContentData(frontContent: IPageContent, backContent: IPageContent, useBackContentForSides?: boolean): void;
151
+ setMinTurningRadius(min: number): void;
152
+ updateTurningRadius(bend?: number): void;
153
+ startTurning(ray: THREE.Ray): boolean;
154
+ stopTurning(): void;
155
+ /**
156
+ * Called each frame while the user is dragging.
157
+ * `dt` replaces Time.deltaTime.
158
+ */
159
+ updateTurning(ray: THREE.Ray, dt?: number): void;
160
+ /**
161
+ * Called each frame while the page is falling back into place.
162
+ * `dt` replaces Time.deltaTime.
163
+ */
164
+ updateFalling(dt?: number): void;
165
+ getTextureCoordinate(ray: THREE.Ray): THREE.Vector2;
166
+ raycast(ray: THREE.Ray): {
167
+ hit: boolean;
168
+ hitInfo: BookRaycastHit;
169
+ };
170
+ private hit2UV;
171
+ /**
172
+ * Internal raycast against the paper plane in local space.
173
+ * Returns the local-space hit point, or null if no hit / out of bounds.
174
+ */
175
+ raycastLocal(ray: THREE.Ray, noBoundsCheck?: boolean): THREE.Vector3 | null;
176
+ private trySwitchMeshData;
177
+ private switchMeshData;
178
+ updateMaterials(): void;
179
+ updateBaseVertices(): void;
180
+ updateMesh(): void;
181
+ getDirection(z: number): THREE.Vector3;
182
+ updateTime(): void;
183
+ private findTime;
184
+ private clampHandle;
185
+ private updateCylinder;
186
+ private rollPoint;
187
+ drawWireframe(_color: unknown): void;
188
+ startAutoTurning(mode: AutoTurnMode, twist: number, bend: number, duration: number): void;
189
+ get cylinder(): Cylinder;
190
+ }
191
+ //# sourceMappingURL=Paper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Paper.d.ts","sourceRoot":"","sources":["../src/Paper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Ported from Book.cs lines ~2880-2918 — PaperMaterialData.
3
+ *
4
+ * In Unity, this wraps MaterialPropertyBlock for per-instance material
5
+ * overrides. In Three.js, we use per-paper material clones with
6
+ * uniform overrides (map, color, textureST).
7
+ */
8
+ import * as THREE from 'three';
9
+ import type { PaperSetup } from './PaperSetup';
10
+ export declare class PaperMaterialData {
11
+ private m_Materials1;
12
+ private m_Materials3;
13
+ private m_Color;
14
+ private m_Texture;
15
+ private m_TextureST;
16
+ get materials1(): THREE.Material[];
17
+ get materials3(): THREE.Material[];
18
+ get color(): THREE.Color;
19
+ get texture(): THREE.Texture | null;
20
+ get textureST(): THREE.Vector4;
21
+ constructor(paperSetup: PaperSetup);
22
+ /**
23
+ * Mirrors Unity's MaterialPropertyBlock: stores color, texture, and textureST.
24
+ * Paper.ts reads this after calling updatePropertyBlock.
25
+ */
26
+ get propertyBlock(): Record<string, unknown>;
27
+ updatePropertyBlock(texture: THREE.Texture | null, textureST: THREE.Vector4): void;
28
+ }
29
+ //# sourceMappingURL=PaperMaterialData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperMaterialData.d.ts","sourceRoot":"","sources":["../src/PaperMaterialData.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,YAAY,CAAmB;IACvC,OAAO,CAAC,OAAO,CAAc;IAG7B,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,WAAW,CAAgD;IAEnE,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAEjC;IAED,IAAI,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAEjC;IAED,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAEvB;IAED,IAAI,OAAO,IAAI,KAAK,CAAC,OAAO,GAAG,IAAI,CAElC;IAED,IAAI,SAAS,IAAI,KAAK,CAAC,OAAO,CAE7B;gBAEW,UAAU,EAAE,UAAU;IAWlC;;;OAGG;IACH,IAAI,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAM3C;IAED,mBAAmB,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,OAAO,GAAG,IAAI;CAInF"}
@@ -0,0 +1,43 @@
1
+ import * as THREE from 'three';
2
+ import { PaperPattern } from './PaperPattern';
3
+ export declare class PaperMeshData {
4
+ private m_Geometry;
5
+ private m_Pattern;
6
+ private m_BaseVertices;
7
+ private m_Vertices;
8
+ private m_Normals;
9
+ get geometry(): THREE.BufferGeometry;
10
+ get pattern(): PaperPattern;
11
+ get baseVertices(): THREE.Vector3[];
12
+ constructor(geometry: THREE.BufferGeometry, pattern: PaperPattern);
13
+ /**
14
+ * Recalculates base vertex positions from the pattern's X/Z arrays
15
+ * and offset.
16
+ *
17
+ * Ported from lines ~2167-2183.
18
+ */
19
+ updateBaseVertices(): void;
20
+ /**
21
+ * Recomputes all vertex positions and normals.
22
+ *
23
+ * Algorithm:
24
+ * 1. Clear normals for all base vertices.
25
+ * 2. Interpolate seam positions in X and Z.
26
+ * 3. Accumulate face normals per quad onto each vertex.
27
+ * 4. Normalise by dividing by weight and re-normalising.
28
+ * 5. Interpolate seam normals (with slerp).
29
+ * 6. Offset front/back by +/- halfThickness along normal.
30
+ * 7. Update border vertex positions and normals.
31
+ * 8. Push data into BufferGeometry attributes.
32
+ *
33
+ * Ported from lines ~2185-2255.
34
+ */
35
+ updateMesh(): void;
36
+ /**
37
+ * Returns wireframe quad data for debug visualisation.
38
+ *
39
+ * Ported from lines ~2257-2262.
40
+ */
41
+ drawWireframe(matrix: THREE.Matrix4): Array<[THREE.Vector3, THREE.Vector3, THREE.Vector3, THREE.Vector3]>;
42
+ }
43
+ //# sourceMappingURL=PaperMeshData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperMeshData.d.ts","sourceRoot":"","sources":["../src/PaperMeshData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAqB9C,qBAAa,aAAa;IACxB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,SAAS,CAAkB;IAEnC,IAAW,QAAQ,IAAI,KAAK,CAAC,cAAc,CAE1C;IAED,IAAW,OAAO,IAAI,YAAY,CAEjC;IAED,IAAW,YAAY,IAAI,KAAK,CAAC,OAAO,EAAE,CAEzC;gBAEW,QAAQ,EAAE,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,YAAY;IA8EjE;;;;;OAKG;IACI,kBAAkB,IAAI,IAAI;IAiBjC;;;;;;;;;;;;;;OAcG;IACI,UAAU,IAAI,IAAI;IA+FzB;;;;OAIG;IACI,aAAa,CAClB,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;CAKvE"}
@@ -0,0 +1,72 @@
1
+ import * as THREE from 'three';
2
+ import { PaperSeam, PaperBorder } from './PaperStructs';
3
+ import { PaperNode } from './PaperNode';
4
+ import { PaperUVMargin } from './PaperUVMargin';
5
+ import { BookDirection } from './BookDirection';
6
+ /**
7
+ * Converts a list of seam-flagged PaperNodes into PaperSeam objects.
8
+ *
9
+ * Ported from `PaperMeshUtility.SeamNodesToSeams` (lines ~2513-2523).
10
+ */
11
+ export declare function seamNodesToSeams(seamNodes: PaperNode[], seams: PaperSeam[]): void;
12
+ /**
13
+ * Interpolates seam vertices along the X axis.
14
+ *
15
+ * When `useSlerp` is false, uses `THREE.Vector3.lerp`.
16
+ * When `useSlerp` is true, uses `THREE.Vector3.slerp` (for normals).
17
+ *
18
+ * Ported from `PaperMeshUtility.UpdateXSeams` (lines ~2525-2542).
19
+ *
20
+ * `vertices` is a flat `number[]` of packed Vector3-like objects at indices
21
+ * matching the C# `Vector3[]` layout. However, in the calling code
22
+ * (PaperMeshData) we work with THREE.Vector3 arrays, so we accept
23
+ * `THREE.Vector3[]` and mutate in place.
24
+ */
25
+ export declare function updateXSeams(seams: PaperSeam[], vertices: THREE.Vector3[], nX: number, nZ: number, useSlerp: boolean): void;
26
+ /**
27
+ * Interpolates seam vertices along the Z axis.
28
+ *
29
+ * Ported from `PaperMeshUtility.UpdateZSeams` (lines ~2544-2560).
30
+ */
31
+ export declare function updateZSeams(seams: PaperSeam[], vertices: THREE.Vector3[], nX: number, _nZ: number, useSlerp: boolean): void;
32
+ /**
33
+ * Adds border triangles and texcoords for each PaperBorder.
34
+ *
35
+ * Ported from `PaperMeshUtility.AddBorders` (lines ~2563-2645).
36
+ */
37
+ export declare function addBorders(borders: PaperBorder[], triangles: number[], texcoords: THREE.Vector2[], nX: number, nZ: number): void;
38
+ /**
39
+ * Updates border vertex positions and normals each frame.
40
+ *
41
+ * Ported from `PaperMeshUtility.UpdateBorders` (lines ~2647-2705).
42
+ */
43
+ export declare function updateBorders(borders: PaperBorder[], vertices: THREE.Vector3[], normals: THREE.Vector3[], nX: number, nZ: number): void;
44
+ /**
45
+ * Debug draws border edges in world space. In Three.js, callers can use
46
+ * THREE.LineSegments or a helper to visualise these.
47
+ *
48
+ * Returns pairs of [start, end] line segment positions in world space.
49
+ *
50
+ * Ported from `PaperMeshUtility.DebugDrawBorders` (lines ~2707-2747).
51
+ */
52
+ export declare function debugDrawBorders(borders: PaperBorder[], vertices: THREE.Vector3[], nX: number, _nZ: number, matrix: THREE.Matrix4): Array<[THREE.Vector3, THREE.Vector3]>;
53
+ /**
54
+ * Adds a front face and its matching back face (offset by `offset`).
55
+ *
56
+ * Ported from `PaperMeshUtility.AddFrontAndBackFaces` (lines ~2770-2778).
57
+ */
58
+ export declare function addFrontAndBackFaces(frontTriangles: number[], backTriangles: number[], a: number, b: number, c: number, d: number, offset: number): void;
59
+ /**
60
+ * Generates front and (duplicated) back UV texcoords.
61
+ *
62
+ * Ported from `PaperMeshUtility.AddFrontAndBackTexcoords` (lines ~2780-2815).
63
+ */
64
+ export declare function addFrontAndBackTexcoords(texcoords: THREE.Vector2[], xList: number[], zList: number[], size: THREE.Vector2, uvMargin: PaperUVMargin, direction: BookDirection): void;
65
+ /**
66
+ * Returns wireframe quad data for debug visualisation.
67
+ * In Unity this used Handles; in Three.js, callers can use THREE.LineSegments.
68
+ *
69
+ * Ported from `PaperMeshUtility.DrawWireframe` (lines ~2838-2877).
70
+ */
71
+ export declare function drawWireframe(vertices: THREE.Vector3[], nX: number, nZ: number, matrix: THREE.Matrix4): Array<[THREE.Vector3, THREE.Vector3, THREE.Vector3, THREE.Vector3]>;
72
+ //# sourceMappingURL=PaperMeshUtility.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperMeshUtility.d.ts","sourceRoot":"","sources":["../src/PaperMeshUtility.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAuBhD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EAAE,EACtB,KAAK,EAAE,SAAS,EAAE,GACjB,IAAI,CAQN;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,OAAO,GAChB,IAAI,CAoBN;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,SAAS,EAAE,EAClB,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,EACzB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,OAAO,GAChB,IAAI,CAiBN;AAoDD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,EACnB,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,EAC1B,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,IAAI,CAgEN;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,EACzB,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,EACxB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,GACT,IAAI,CAqDN;AAMD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,EACzB,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAkCvC;AAoDD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,cAAc,EAAE,MAAM,EAAE,EACxB,aAAa,EAAE,MAAM,EAAE,EACvB,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,GACb,IAAI,CAON;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,EAC1B,KAAK,EAAE,MAAM,EAAE,EACf,KAAK,EAAE,MAAM,EAAE,EACf,IAAI,EAAE,KAAK,CAAC,OAAO,EACnB,QAAQ,EAAE,aAAa,EACvB,SAAS,EAAE,aAAa,GACvB,IAAI,CAgCN;AAyCD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,EACzB,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAuBrE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Ported from Book.cs — PaperNode class (lines ~2292-2430).
3
+ *
4
+ * Doubly-linked-list node used during paper mesh tessellation.
5
+ * Each node stores a 1-D position `value` along an axis, plus flags
6
+ * that mark whether it sits on a hole or a seam.
7
+ */
8
+ export declare class PaperNode {
9
+ prev: PaperNode | null;
10
+ next: PaperNode | null;
11
+ value: number;
12
+ index: number;
13
+ hole: boolean;
14
+ seam: boolean;
15
+ constructor(value: number, hole?: boolean, seam?: boolean);
16
+ get prevNoneSeam(): PaperNode;
17
+ get nextNoneSeam(): PaperNode;
18
+ get prevNoneHole(): PaperNode;
19
+ get nextNoneHole(): PaperNode;
20
+ createNext(value: number, hole?: boolean, seam?: boolean): PaperNode;
21
+ createNextFromDouble(value: number, hole?: boolean, seam?: boolean): PaperNode;
22
+ insert(node: PaperNode): boolean;
23
+ updateIndex(index: number): void;
24
+ getValues(): number[];
25
+ getValues(values: number[]): void;
26
+ private _getValuesRecursive;
27
+ getHoles(): boolean[];
28
+ getHoles(holes: boolean[]): void;
29
+ private _getHolesRecursive;
30
+ }
31
+ //# sourceMappingURL=PaperNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperNode.d.ts","sourceRoot":"","sources":["../src/PaperNode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,qBAAa,SAAS;IACb,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC9B,IAAI,EAAE,SAAS,GAAG,IAAI,CAAQ;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAK;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;gBAET,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,OAAe,EAAE,IAAI,GAAE,OAAe;IAQvE,IAAI,YAAY,IAAI,SAAS,CAG5B;IAED,IAAI,YAAY,IAAI,SAAS,CAG5B;IAED,IAAI,YAAY,IAAI,SAAS,CAG5B;IAED,IAAI,YAAY,IAAI,SAAS,CAG5B;IAIM,UAAU,CACf,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,OAAe,EACrB,IAAI,GAAE,OAAe,GACpB,SAAS;IASL,oBAAoB,CACzB,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,OAAe,EACrB,IAAI,GAAE,OAAe,GACpB,SAAS;IASL,MAAM,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IA6BhC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQhC,SAAS,IAAI,MAAM,EAAE;IACrB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;IAUxC,OAAO,CAAC,mBAAmB;IAQpB,QAAQ,IAAI,OAAO,EAAE;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI;IAUvC,OAAO,CAAC,kBAAkB;CAK3B"}
@@ -0,0 +1,30 @@
1
+ import * as THREE from 'three';
2
+ import { PaperSeam } from './PaperStructs';
3
+ import { PaperBorder } from './PaperStructs';
4
+ /**
5
+ * Ported from Book.cs — PaperPattern class (lines ~2265-2290).
6
+ *
7
+ * Holds the tessellation layout of a single paper sheet: vertex arrays,
8
+ * seam information, triangle indices, UV coordinates and border definitions.
9
+ */
10
+ export declare class PaperPattern {
11
+ baseXArray: number[];
12
+ baseZArray: number[];
13
+ baseXOffset: number;
14
+ baseVertexCount: number;
15
+ xSeams: PaperSeam[];
16
+ zSeams: PaperSeam[];
17
+ xNoneSeamIndexes: number[];
18
+ borders: PaperBorder[];
19
+ texcoords: THREE.Vector2[];
20
+ weights: number[];
21
+ triangles: number[];
22
+ frontTriangles: number[];
23
+ backTriangles: number[];
24
+ borderTriangles: number[];
25
+ vertexCount: number;
26
+ subMeshCount: number;
27
+ size: THREE.Vector2;
28
+ thickness: number;
29
+ }
30
+ //# sourceMappingURL=PaperPattern.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperPattern.d.ts","sourceRoot":"","sources":["../src/PaperPattern.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;;;GAKG;AACH,qBAAa,YAAY;IAChB,UAAU,EAAE,MAAM,EAAE,CAAM;IAC1B,UAAU,EAAE,MAAM,EAAE,CAAM;IAC1B,WAAW,EAAE,MAAM,CAAK;IACxB,eAAe,EAAE,MAAM,CAAK;IAE5B,MAAM,EAAE,SAAS,EAAE,CAAM;IACzB,MAAM,EAAE,SAAS,EAAE,CAAM;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAM;IAEhC,OAAO,EAAE,WAAW,EAAE,CAAM;IAE5B,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE,CAAM;IAChC,OAAO,EAAE,MAAM,EAAE,CAAM;IACvB,SAAS,EAAE,MAAM,EAAE,CAAM;IACzB,cAAc,EAAE,MAAM,EAAE,CAAM;IAC9B,aAAa,EAAE,MAAM,EAAE,CAAM;IAC7B,eAAe,EAAE,MAAM,EAAE,CAAM;IAC/B,WAAW,EAAE,MAAM,CAAK;IACxB,YAAY,EAAE,MAAM,CAAK;IAEzB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAuB;IAC1C,SAAS,EAAE,MAAM,CAAK;CAC9B"}
@@ -0,0 +1,52 @@
1
+ import * as THREE from 'three';
2
+ import { BookDirection } from './BookDirection';
3
+ import { PaperUVMargin } from './PaperUVMargin';
4
+ /**
5
+ * Ported from Book.cs — PaperSetup class (lines ~1617-1712).
6
+ *
7
+ * Holds the serialised configuration for a single paper sheet: material,
8
+ * colour, dimensions, stiffness, quality and UV margin.
9
+ */
10
+ export declare class PaperSetup {
11
+ private static readonly kMinSize;
12
+ private static readonly kMinThickness;
13
+ private static readonly kMinQuality;
14
+ private static readonly kMaxQuality;
15
+ private m_Material;
16
+ private m_Color;
17
+ private m_Width;
18
+ private m_Height;
19
+ private m_Thickness;
20
+ private m_Stiffness;
21
+ private m_Quality;
22
+ private m_UVMargin;
23
+ margin: number;
24
+ bookDirection: BookDirection;
25
+ constructor(opts?: {
26
+ color?: THREE.Color;
27
+ width?: number;
28
+ height?: number;
29
+ thickness?: number;
30
+ stiffness?: number;
31
+ quality?: number;
32
+ material?: THREE.Material | null;
33
+ });
34
+ get material(): THREE.Material | null;
35
+ set material(value: THREE.Material | null);
36
+ get color(): THREE.Color;
37
+ set color(value: THREE.Color);
38
+ get width(): number;
39
+ set width(value: number);
40
+ get height(): number;
41
+ set height(value: number);
42
+ get thickness(): number;
43
+ set thickness(value: number);
44
+ get stiffness(): number;
45
+ set stiffness(value: number);
46
+ get quality(): number;
47
+ set quality(value: number);
48
+ get uvMargin(): PaperUVMargin;
49
+ set uvMargin(value: PaperUVMargin);
50
+ get size(): THREE.Vector2;
51
+ }
52
+ //# sourceMappingURL=PaperSetup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperSetup.d.ts","sourceRoot":"","sources":["../src/PaperSetup.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAa;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAkB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAa;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAa;IAGhD,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,WAAW,CAAa;IAEhC,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,UAAU,CAAsC;IAGjD,MAAM,EAAE,MAAM,CAAK;IACnB,aAAa,EAAE,aAAa,CAA6B;gBAEpD,IAAI,CAAC,EAAE;QACjB,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;QACpB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;KAClC;IAYD,IAAI,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,IAAI,CAEpC;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,GAAG,IAAI,EAExC;IAED,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,CAEvB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAE3B;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,EAEvB;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAE1B;IAED,IAAI,SAAS,IAAI,MAAM,CAEtB;IACD,IAAI,SAAS,CAAC,KAAK,EAAE,MAAM,EAE1B;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,EAKxB;IAED,IAAI,QAAQ,IAAI,aAAa,CAE5B;IACD,IAAI,QAAQ,CAAC,KAAK,EAAE,aAAa,EAEhC;IAED,IAAI,IAAI,IAAI,KAAK,CAAC,OAAO,CAExB;CACF"}
@@ -0,0 +1,43 @@
1
+ import { PaperPattern } from './PaperPattern';
2
+ import { PaperUVMargin } from './PaperUVMargin';
3
+ import { PaperNode } from './PaperNode';
4
+ /**
5
+ * Describes a seam (extra split) in the paper mesh along one axis.
6
+ * C# struct — emulated with clone().
7
+ */
8
+ export declare class PaperSeam {
9
+ active: boolean;
10
+ prevIndex: number;
11
+ index: number;
12
+ nextIndex: number;
13
+ time: number;
14
+ constructor(prevIndex: number, index: number, nextIndex: number, time: number);
15
+ clone(): PaperSeam;
16
+ }
17
+ /**
18
+ * Rectangle defined by two corner indices (startX/Z, endX/Z) plus flip/left flags.
19
+ * C# struct — emulated with clone().
20
+ */
21
+ export declare class PaperBorder {
22
+ startX: number;
23
+ startZ: number;
24
+ endX: number;
25
+ endZ: number;
26
+ flip: boolean;
27
+ left: boolean;
28
+ constructor(startX: number, startZ: number, endX: number, endZ: number, flip: boolean, left?: boolean);
29
+ clone(): PaperBorder;
30
+ }
31
+ /**
32
+ * Creates four seam nodes (left, right, down, up) from a UV margin and
33
+ * inserts them into the existing X / Z linked-lists.
34
+ */
35
+ export declare class PaperNodeMargin {
36
+ leftNode: PaperNode;
37
+ rightNode: PaperNode;
38
+ downNode: PaperNode;
39
+ upNode: PaperNode;
40
+ constructor(pattern: PaperPattern, margin: PaperUVMargin, hole: boolean);
41
+ insert(xRootNode: PaperNode, zRootNode: PaperNode, xSeamNodes: PaperNode[], zSeamNodes: PaperNode[]): void;
42
+ }
43
+ //# sourceMappingURL=PaperStructs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperStructs.d.ts","sourceRoot":"","sources":["../src/PaperStructs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAMxC;;;GAGG;AACH,qBAAa,SAAS;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;gBAGlB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM;IASP,KAAK,IAAI,SAAS;CAK1B;AAMD;;;GAGG;AACH,qBAAa,WAAW;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;gBAGnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,OAAc;IAUf,KAAK,IAAI,WAAW;CAU5B;AAMD;;;GAGG;AACH,qBAAa,eAAe;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,EAAE,SAAS,CAAC;gBAEb,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO;IAQhE,MAAM,CACX,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,SAAS,EAAE,EACvB,UAAU,EAAE,SAAS,EAAE,GACtB,IAAI;CAiBR"}
@@ -0,0 +1,40 @@
1
+ import * as THREE from 'three';
2
+ import { BookDirection } from './BookDirection';
3
+ /**
4
+ * Ported from Book.cs — PaperUVMargin struct (lines ~1714-1796).
5
+ *
6
+ * Defines the blank space around content on each of the four sides.
7
+ * C# struct — emulated with clone().
8
+ */
9
+ export declare class PaperUVMargin {
10
+ /** @internal */ private static readonly kMin;
11
+ /** @internal */ private static readonly kMax;
12
+ private m_Left;
13
+ private m_Right;
14
+ private m_Down;
15
+ private m_Up;
16
+ get left(): number;
17
+ set left(value: number);
18
+ get right(): number;
19
+ set right(value: number);
20
+ get down(): number;
21
+ set down(value: number);
22
+ get up(): number;
23
+ set up(value: number);
24
+ private clamp;
25
+ /**
26
+ * Returns a new PaperUVMargin with margins remapped according to the
27
+ * book direction.
28
+ */
29
+ transform(direction: BookDirection): PaperUVMargin;
30
+ /**
31
+ * Remap a UV coordinate so that (0,0) and (1,1) correspond to the
32
+ * content area inside the margins.
33
+ *
34
+ * Unity's `Mathf.InverseLerp(a, b, v)` = `(v - a) / (b - a)` clamped to [0,1].
35
+ */
36
+ fixUV(uv: THREE.Vector2): THREE.Vector2;
37
+ private static inverseLerp;
38
+ clone(): PaperUVMargin;
39
+ }
40
+ //# sourceMappingURL=PaperUVMargin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaperUVMargin.d.ts","sourceRoot":"","sources":["../src/PaperUVMargin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD;;;;;GAKG;AACH,qBAAa,aAAa;IACxB,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAa;IAC1D,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAgB;IAG7D,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,OAAO,CAAa;IAC5B,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,IAAI,CAAa;IAIzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAEtB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IACD,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,EAErB;IAED,IAAI,EAAE,IAAI,MAAM,CAEf;IACD,IAAI,EAAE,CAAC,KAAK,EAAE,MAAM,EAEnB;IAID,OAAO,CAAC,KAAK;IAMb;;;OAGG;IACI,SAAS,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa;IAkCzD;;;;;OAKG;IACI,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO;IAM9C,OAAO,CAAC,MAAM,CAAC,WAAW;IAQnB,KAAK,IAAI,aAAa;CAQ9B"}