@nayan-ui/engine 0.0.0-stage → 1.0.0-beta.3

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 (189) hide show
  1. package/LICENSE +21 -0
  2. package/NayanEngine.podspec +28 -0
  3. package/README.md +210 -2
  4. package/lib/module/assets/AssetBytesCache.js +76 -0
  5. package/lib/module/assets/AssetCache.js +19 -0
  6. package/lib/module/assets/AssetLoader.js +52 -0
  7. package/lib/module/assets/CacheGeneration.js +7 -0
  8. package/lib/module/assets/IndexedDbCache.web.js +149 -0
  9. package/lib/module/assets/ProceduralCache.js +222 -0
  10. package/lib/module/assets/font.js +136 -0
  11. package/lib/module/assets/loft.js +142 -0
  12. package/lib/module/assets/model.js +74 -0
  13. package/lib/module/assets/modelling.js +254 -0
  14. package/lib/module/assets/shape.js +926 -0
  15. package/lib/module/assets/source.js +58 -0
  16. package/lib/module/assets/source.web.js +22 -0
  17. package/lib/module/assets/storage.js +4 -0
  18. package/lib/module/assets/storage.shared.js +36 -0
  19. package/lib/module/assets/storage.web.js +37 -0
  20. package/lib/module/assets/surface.js +47 -0
  21. package/lib/module/assets/texture.js +66 -0
  22. package/lib/module/drawing/DrawingCanvas.js +38 -0
  23. package/lib/module/drawing/DrawingCanvas.web.js +206 -0
  24. package/lib/module/drawing/DrawingDocument.js +256 -0
  25. package/lib/module/drawing/types.js +4 -0
  26. package/lib/module/globals.d.ts +12 -0
  27. package/lib/module/index.js +36 -0
  28. package/lib/module/input/Joystick.js +84 -0
  29. package/lib/module/input/Joystick.web.js +93 -0
  30. package/lib/module/input/keyboard.js +250 -0
  31. package/lib/module/media/audio-worklet.js +34 -0
  32. package/lib/module/media/audio.js +94 -0
  33. package/lib/module/media/haptics.js +82 -0
  34. package/lib/module/media/output.web.js +66 -0
  35. package/lib/module/native/BrowserEngine.js +551 -0
  36. package/lib/module/native/EngineBridge.js +4 -0
  37. package/lib/module/native/NativeNayanEngine.js +7 -0
  38. package/lib/module/native/NativeNayanEngine.web.js +62 -0
  39. package/lib/module/native/prepare.js +7 -0
  40. package/lib/module/native/prepare.web.js +17 -0
  41. package/lib/module/native/spec/NativeNayanEngine.js +17 -0
  42. package/lib/module/package.json +1 -0
  43. package/lib/module/render/GameView.js +249 -0
  44. package/lib/module/render/camera.js +34 -0
  45. package/lib/module/render/host.js +39 -0
  46. package/lib/module/render/host.web.js +104 -0
  47. package/lib/module/render/meshes.js +159 -0
  48. package/lib/module/render/quality.js +112 -0
  49. package/lib/module/render/responder.js +4 -0
  50. package/lib/module/render/responder.web.js +97 -0
  51. package/lib/module/render/touch.js +185 -0
  52. package/lib/module/types.js +30 -0
  53. package/lib/module/world/Scoreboard.js +143 -0
  54. package/lib/module/world/TransformBatch.js +126 -0
  55. package/lib/module/world/World.js +690 -0
  56. package/lib/module/world/desc.js +186 -0
  57. package/lib/module/world/effects.js +451 -0
  58. package/lib/module/world/quat.js +86 -0
  59. package/lib/module/world/types.js +4 -0
  60. package/lib/typescript/package.json +1 -0
  61. package/lib/typescript/src/assets/AssetBytesCache.d.ts +7 -0
  62. package/lib/typescript/src/assets/AssetCache.d.ts +9 -0
  63. package/lib/typescript/src/assets/AssetLoader.d.ts +11 -0
  64. package/lib/typescript/src/assets/CacheGeneration.d.ts +3 -0
  65. package/lib/typescript/src/assets/IndexedDbCache.web.d.ts +20 -0
  66. package/lib/typescript/src/assets/ProceduralCache.d.ts +33 -0
  67. package/lib/typescript/src/assets/font.d.ts +53 -0
  68. package/lib/typescript/src/assets/loft.d.ts +31 -0
  69. package/lib/typescript/src/assets/model.d.ts +48 -0
  70. package/lib/typescript/src/assets/modelling.d.ts +157 -0
  71. package/lib/typescript/src/assets/shape.d.ts +203 -0
  72. package/lib/typescript/src/assets/source.d.ts +10 -0
  73. package/lib/typescript/src/assets/source.web.d.ts +8 -0
  74. package/lib/typescript/src/assets/storage.d.ts +2 -0
  75. package/lib/typescript/src/assets/storage.shared.d.ts +7 -0
  76. package/lib/typescript/src/assets/storage.web.d.ts +7 -0
  77. package/lib/typescript/src/assets/surface.d.ts +17 -0
  78. package/lib/typescript/src/assets/texture.d.ts +30 -0
  79. package/lib/typescript/src/drawing/DrawingCanvas.d.ts +5 -0
  80. package/lib/typescript/src/drawing/DrawingCanvas.web.d.ts +4 -0
  81. package/lib/typescript/src/drawing/DrawingDocument.d.ts +210 -0
  82. package/lib/typescript/src/drawing/types.d.ts +12 -0
  83. package/lib/typescript/src/index.d.ts +42 -0
  84. package/lib/typescript/src/input/Joystick.d.ts +20 -0
  85. package/lib/typescript/src/input/Joystick.web.d.ts +13 -0
  86. package/lib/typescript/src/input/keyboard.d.ts +17 -0
  87. package/lib/typescript/src/media/audio.d.ts +46 -0
  88. package/lib/typescript/src/media/haptics.d.ts +22 -0
  89. package/lib/typescript/src/media/output.web.d.ts +4 -0
  90. package/lib/typescript/src/native/BrowserEngine.d.ts +8 -0
  91. package/lib/typescript/src/native/EngineBridge.d.ts +22 -0
  92. package/lib/typescript/src/native/NativeNayanEngine.d.ts +5 -0
  93. package/lib/typescript/src/native/NativeNayanEngine.web.d.ts +10 -0
  94. package/lib/typescript/src/native/prepare.d.ts +3 -0
  95. package/lib/typescript/src/native/prepare.web.d.ts +2 -0
  96. package/lib/typescript/src/native/spec/NativeNayanEngine.d.ts +182 -0
  97. package/lib/typescript/src/render/GameView.d.ts +95 -0
  98. package/lib/typescript/src/render/camera.d.ts +6 -0
  99. package/lib/typescript/src/render/host.d.ts +29 -0
  100. package/lib/typescript/src/render/host.web.d.ts +16 -0
  101. package/lib/typescript/src/render/meshes.d.ts +45 -0
  102. package/lib/typescript/src/render/quality.d.ts +46 -0
  103. package/lib/typescript/src/render/responder.d.ts +2 -0
  104. package/lib/typescript/src/render/responder.web.d.ts +40 -0
  105. package/lib/typescript/src/render/touch.d.ts +26 -0
  106. package/lib/typescript/src/types.d.ts +72 -0
  107. package/lib/typescript/src/world/Scoreboard.d.ts +65 -0
  108. package/lib/typescript/src/world/TransformBatch.d.ts +39 -0
  109. package/lib/typescript/src/world/World.d.ts +199 -0
  110. package/lib/typescript/src/world/desc.d.ts +17 -0
  111. package/lib/typescript/src/world/effects.d.ts +156 -0
  112. package/lib/typescript/src/world/quat.d.ts +31 -0
  113. package/lib/typescript/src/world/types.d.ts +233 -0
  114. package/lib/web/audio-worklet.js +29 -0
  115. package/lib/web/engine_core_bg.wasm +0 -0
  116. package/lib/web/index.js +7974 -0
  117. package/lib/web/types/src/assets/AssetBytesCache.d.ts +6 -0
  118. package/lib/web/types/src/assets/AssetCache.d.ts +8 -0
  119. package/lib/web/types/src/assets/AssetLoader.d.ts +10 -0
  120. package/lib/web/types/src/assets/CacheGeneration.d.ts +2 -0
  121. package/lib/web/types/src/assets/IndexedDbCache.d.ts +19 -0
  122. package/lib/web/types/src/assets/ProceduralCache.d.ts +32 -0
  123. package/lib/web/types/src/assets/font.d.ts +52 -0
  124. package/lib/web/types/src/assets/loft.d.ts +30 -0
  125. package/lib/web/types/src/assets/model.d.ts +47 -0
  126. package/lib/web/types/src/assets/modelling.d.ts +156 -0
  127. package/lib/web/types/src/assets/shape.d.ts +202 -0
  128. package/lib/web/types/src/assets/source.d.ts +7 -0
  129. package/lib/web/types/src/assets/storage.d.ts +6 -0
  130. package/lib/web/types/src/assets/storage.shared.d.ts +6 -0
  131. package/lib/web/types/src/assets/surface.d.ts +16 -0
  132. package/lib/web/types/src/assets/texture.d.ts +29 -0
  133. package/lib/web/types/src/drawing/DrawingCanvas.d.ts +3 -0
  134. package/lib/web/types/src/drawing/DrawingDocument.d.ts +209 -0
  135. package/lib/web/types/src/drawing/types.d.ts +11 -0
  136. package/lib/web/types/src/index.d.ts +41 -0
  137. package/lib/web/types/src/input/Joystick.d.ts +12 -0
  138. package/lib/web/types/src/input/keyboard.d.ts +16 -0
  139. package/lib/web/types/src/media/audio.d.ts +45 -0
  140. package/lib/web/types/src/media/haptics.d.ts +21 -0
  141. package/lib/web/types/src/media/output.d.ts +3 -0
  142. package/lib/web/types/src/native/BrowserEngine.d.ts +7 -0
  143. package/lib/web/types/src/native/EngineBridge.d.ts +21 -0
  144. package/lib/web/types/src/native/NativeNayanEngine.d.ts +9 -0
  145. package/lib/web/types/src/native/prepare.d.ts +1 -0
  146. package/lib/web/types/src/native/spec/NativeNayanEngine.d.ts +181 -0
  147. package/lib/web/types/src/render/GameView.d.ts +94 -0
  148. package/lib/web/types/src/render/camera.d.ts +5 -0
  149. package/lib/web/types/src/render/host.d.ts +15 -0
  150. package/lib/web/types/src/render/meshes.d.ts +44 -0
  151. package/lib/web/types/src/render/quality.d.ts +45 -0
  152. package/lib/web/types/src/render/responder.d.ts +39 -0
  153. package/lib/web/types/src/render/touch.d.ts +25 -0
  154. package/lib/web/types/src/types.d.ts +71 -0
  155. package/lib/web/types/src/world/Scoreboard.d.ts +64 -0
  156. package/lib/web/types/src/world/TransformBatch.d.ts +38 -0
  157. package/lib/web/types/src/world/World.d.ts +198 -0
  158. package/lib/web/types/src/world/desc.d.ts +16 -0
  159. package/lib/web/types/src/world/effects.d.ts +155 -0
  160. package/lib/web/types/src/world/quat.d.ts +30 -0
  161. package/lib/web/types/src/world/types.d.ts +232 -0
  162. package/native/android/CMakeLists.txt +34 -0
  163. package/native/android/NayanEngineSpec.h +15 -0
  164. package/native/android/build.gradle +26 -0
  165. package/native/android/codegen/CMakeLists.txt +3 -0
  166. package/native/android/proguard-rules.pro +2 -0
  167. package/native/android/src/main/java/com/nayanui/engine/EngineSurfaceView.java +234 -0
  168. package/native/android/src/main/java/com/nayanui/engine/EngineSurfaceViewManager.java +45 -0
  169. package/native/android/src/main/java/com/nayanui/engine/NayanEnginePackage.java +24 -0
  170. package/native/core/build/EngineCore.xcframework/Info.plist +43 -0
  171. package/native/core/build/EngineCore.xcframework/ios-arm64/libengine_core.a +0 -0
  172. package/native/core/build/EngineCore.xcframework/ios-arm64-simulator/libengine_core.a +0 -0
  173. package/native/core/build/android/arm64-v8a/libengine_core.a +0 -0
  174. package/native/core/build/android/armeabi-v7a/libengine_core.a +0 -0
  175. package/native/core/build/android/x86/libengine_core.a +0 -0
  176. package/native/core/build/android/x86_64/libengine_core.a +0 -0
  177. package/native/core/include/drawing-licenses.txt +58 -0
  178. package/native/core/include/engine_core.h +322 -0
  179. package/native/cpp/NayanEngineModule.cpp +827 -0
  180. package/native/cpp/NayanEngineModule.h +144 -0
  181. package/native/cpp/generated/NayanEngineSpecJSI.cpp +2 -0
  182. package/native/cpp/generated/NayanEngineSpecJSI.h +921 -0
  183. package/native/ios/NayanEngineProvider.h +5 -0
  184. package/native/ios/NayanEngineProvider.mm +21 -0
  185. package/native/ios/NayanEngineSurface.mm +223 -0
  186. package/native/scripts/check-package.mjs +39 -0
  187. package/package.json +162 -4
  188. package/react-native.config.js +18 -0
  189. package/src/native/spec/NativeNayanEngine.ts +226 -0
@@ -0,0 +1,144 @@
1
+ #pragma once
2
+
3
+ #include <NayanEngineSpecJSI.h>
4
+
5
+ #include <memory>
6
+ #include <unordered_map>
7
+ #include <unordered_set>
8
+
9
+ struct World;
10
+
11
+ namespace facebook::react {
12
+
13
+ class NayanEngineModule : public NativeNayanEngineCxxSpec<NayanEngineModule> {
14
+ public:
15
+ explicit NayanEngineModule(std::shared_ptr<CallInvoker> jsInvoker);
16
+ ~NayanEngineModule();
17
+
18
+ double createWorld(jsi::Runtime &rt, double capacity);
19
+ void destroyWorld(jsi::Runtime &rt, double world);
20
+ double spawnDesc(jsi::Runtime &rt, double world, jsi::Object desc);
21
+ bool setDesc(jsi::Runtime &rt, double world, double entity, jsi::Object desc);
22
+ double setTransforms(jsi::Runtime &rt, double world, jsi::Object data, double count);
23
+ bool despawn(jsi::Runtime &rt, double world, double entity);
24
+ void impulse(jsi::Runtime &rt, double world, double entity, double x, double y, double z);
25
+ void setGravity(jsi::Runtime &rt, double world, double x, double y, double z);
26
+ void setBounds(jsi::Runtime &rt, double world, double minX, double minZ, double maxX, double maxZ);
27
+ void setListener(jsi::Runtime &rt, double world, double entity);
28
+ double raycast(jsi::Runtime &rt, double world, double ox, double oy, double oz, double dx, double dy, double dz, double maxDistance, double mask);
29
+ double pick(jsi::Runtime &rt, double world, double ox, double oy, double oz, double dx, double dy, double dz);
30
+ double pickScreen(jsi::Runtime &rt, double world, double x, double y);
31
+ void setView(jsi::Runtime &rt, double world, jsi::Object viewProj, double width, double height);
32
+ bool screenRay(jsi::Runtime &rt, double world, double x, double y);
33
+ bool screenToWorld(jsi::Runtime &rt, double world, double x, double y, double ppx, double ppy, double ppz, double pnx, double pny, double pnz);
34
+ bool toScreen(jsi::Runtime &rt, double world, double x, double y, double z);
35
+ bool readPosition(jsi::Runtime &rt, double world, double entity, bool rendered);
36
+ bool readVelocity(jsi::Runtime &rt, double world, double entity);
37
+ double animate(jsi::Runtime &rt, double world, jsi::Object animation);
38
+ bool stopAnimation(jsi::Runtime &rt, double world, double entity);
39
+ double burst(jsi::Runtime &rt, double world, jsi::Object burst);
40
+ void update(jsi::Runtime &rt, double world, double dt);
41
+ double after(jsi::Runtime &rt, double world, double seconds);
42
+ double cancelTimers(jsi::Runtime &rt, double world);
43
+ double scoreboard(jsi::Runtime &rt, double world, double op, double a, double b);
44
+ jsi::Object getScoreboard(jsi::Runtime &rt, double world);
45
+ double count(jsi::Runtime &rt, double world);
46
+ jsi::Object getMatrices(jsi::Runtime &rt, double world);
47
+ jsi::Object getColors(jsi::Runtime &rt, double world);
48
+ jsi::Object getRegions(jsi::Runtime &rt, double world);
49
+ jsi::Object getRanges(jsi::Runtime &rt, double world);
50
+ jsi::Object getDone(jsi::Runtime &rt, double world);
51
+ double doneLength(jsi::Runtime &rt, double world);
52
+ jsi::Object getEvents(jsi::Runtime &rt, double world);
53
+ double eventLength(jsi::Runtime &rt, double world);
54
+ jsi::Object getScratch(jsi::Runtime &rt, double world);
55
+ jsi::String modelRig(jsi::Runtime &rt, double mesh);
56
+ bool playClip(jsi::Runtime &rt, double world, double entity, jsi::String clip, bool loop, double speed, double fade, double time);
57
+ bool stopClip(jsi::Runtime &rt, double world, double entity, bool reset);
58
+ bool skinPoints(jsi::Runtime &rt, double world, double entity, jsi::Object vertices, jsi::Object output, double after);
59
+ jsi::Object cacheRead(jsi::Runtime &rt, jsi::String key);
60
+ bool cacheWrite(jsi::Runtime &rt, jsi::String key, jsi::Object data);
61
+ bool cacheRemove(jsi::Runtime &rt, jsi::String key);
62
+ bool cacheClear(jsi::Runtime &rt);
63
+ double shapePrepare(jsi::Runtime &rt, jsi::Object vertices, jsi::Object indices, jsi::String options);
64
+ double solidPrepare(jsi::Runtime &rt, jsi::String recipe, jsi::String options);
65
+ double modelLoad(jsi::Runtime &rt, jsi::Object data, bool center, double fit);
66
+ jsi::Object modelVertices(jsi::Runtime &rt, double mesh);
67
+ jsi::Object modelIndices(jsi::Runtime &rt, double mesh);
68
+ jsi::Array modelSize(jsi::Runtime &rt, double mesh);
69
+ double modelTexture(jsi::Runtime &rt, double mesh);
70
+ double meshAlias(jsi::Runtime &rt, double base);
71
+ double meshCreate(jsi::Runtime &rt, jsi::Object vertices, jsi::Object indices);
72
+ jsi::Object pathExtrude(jsi::Runtime &rt, jsi::Object points, jsi::Array counts, double depth, bool evenOdd);
73
+ void geometrySmoothNormals(jsi::Runtime &rt, jsi::Object vertices, jsi::Object indices);
74
+ jsi::Object geometrySolid(jsi::Runtime &rt, jsi::String recipe);
75
+ jsi::Object geometryOptimize(jsi::Runtime &rt, jsi::Object vertices, jsi::Object indices, double ratio, double error, bool lockBorders);
76
+ void geometryFaceOutward(jsi::Runtime &rt, jsi::Object vertices, jsi::Object indices);
77
+ void geometryPlace(
78
+ jsi::Runtime &rt,
79
+ jsi::Object vertices,
80
+ jsi::Object indices,
81
+ jsi::Array placement,
82
+ double first,
83
+ jsi::Object outVertices,
84
+ double vertexOffset,
85
+ jsi::Object outIndices,
86
+ double indexOffset);
87
+ double textureLoad(jsi::Runtime &rt, jsi::Object data);
88
+ jsi::Object texturePixels(jsi::Runtime &rt, double texture);
89
+ jsi::Array textureSize(jsi::Runtime &rt, double texture);
90
+ double fontLoad(jsi::Runtime &rt, jsi::Object data, double depth, jsi::String chars, double weight);
91
+ jsi::Array fontGlyphs(jsi::Runtime &rt, double font);
92
+ jsi::String loadError(jsi::Runtime &rt);
93
+ void generateBuiltinMeshes(jsi::Runtime &rt);
94
+ void renderWarmUp(jsi::Runtime &rt);
95
+ jsi::Object renderMeshVertices(jsi::Runtime &rt, double mesh);
96
+ jsi::Object renderMeshIndices(jsi::Runtime &rt, double mesh);
97
+ void renderMesh(jsi::Runtime &rt, double mesh, jsi::Object vertices, jsi::Object indices, double texture, double shine);
98
+ double renderFrame(
99
+ jsi::Runtime &rt,
100
+ double surface,
101
+ jsi::Object frame,
102
+ jsi::Object matrices,
103
+ jsi::Object colors,
104
+ jsi::Object regions,
105
+ jsi::Object ranges,
106
+ double count,
107
+ jsi::Object viewProj,
108
+ double world);
109
+ void renderOverlay(
110
+ jsi::Runtime &rt,
111
+ double surface,
112
+ jsi::Object matrices,
113
+ jsi::Object colors,
114
+ jsi::Object regions,
115
+ jsi::Object ranges,
116
+ double count,
117
+ double width,
118
+ double height);
119
+ jsi::String renderError(jsi::Runtime &rt);
120
+ jsi::String renderBackend(jsi::Runtime &rt);
121
+ double drawingCreate(jsi::Runtime &rt, double width, double height, double ratio);
122
+ jsi::String drawingCommand(jsi::Runtime &rt, double document, jsi::String command);
123
+ void drawingDestroy(jsi::Runtime &rt, double document);
124
+ double audioLoad(jsi::Runtime &rt, jsi::Object data);
125
+ double audioPlay(jsi::Runtime &rt, double sound, double volume, double pan, double pitch, bool loop);
126
+ void audioStop(jsi::Runtime &rt, double voice);
127
+ void audioSetVolume(jsi::Runtime &rt, double volume);
128
+ void audioSetMuted(jsi::Runtime &rt, bool muted);
129
+ bool audioIsRunning(jsi::Runtime &rt);
130
+ bool hapticsSupported(jsi::Runtime &rt);
131
+ void hapticsPlay(jsi::Runtime &rt, jsi::Array taps, bool throttle);
132
+
133
+ private:
134
+ std::shared_ptr<::World> owner(double id) const;
135
+ ::World *find(double id) const;
136
+ // `owner` is kept alive while JS holds the buffer (null for process-lifetime memory).
137
+ jsi::Object external(jsi::Runtime &rt, std::shared_ptr<void> owner, const void *data, size_t bytes) const;
138
+
139
+ std::unordered_map<int, std::shared_ptr<::World>> worlds_;
140
+ int next_ = 1;
141
+ std::unordered_set<int> drawings_;
142
+ };
143
+
144
+ } // namespace facebook::react
@@ -0,0 +1,2 @@
1
+ // Compiles the generated, header-only spec once so the Android codegen target has a source file.
2
+ #include "NayanEngineSpecJSI.h"