@jack120/test 0.2.0 → 0.2.2

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 (58) hide show
  1. package/dist/index.d.ts +1140 -0
  2. package/dist/index.js +1 -2415
  3. package/package.json +7 -2
  4. package/{library/adamas-types.d.ts → types/index.d.ts} +2 -5
  5. package/.gitmodules +0 -3
  6. package/.prettierrc +0 -6
  7. package/.vscode/c_cpp_properties.json +0 -14
  8. package/.vscode/launch.json +0 -24
  9. package/.vscode/settings.json +0 -8
  10. package/CMakeLists.txt +0 -52
  11. package/adamas-config.json +0 -5
  12. package/external/CMakeLists.txt +0 -1
  13. package/external/Unity-NodeJS-RPC/CMakeLists.txt +0 -13
  14. package/external/Unity-NodeJS-RPC/README.md +0 -1
  15. package/external/Unity-NodeJS-RPC/RpcClient.cpp +0 -265
  16. package/external/Unity-NodeJS-RPC/include/RpcClient.h +0 -118
  17. package/external/Unity-NodeJS-RPC/main.cpp +0 -76
  18. package/external/Unity-NodeJS-RPC/nlohmann/json.hpp +0 -25526
  19. package/external/Unity-NodeJS-RPC/server/Program.cs +0 -52
  20. package/external/Unity-NodeJS-RPC/server/json.cs +0 -66
  21. package/external/Unity-NodeJS-RPC/server/rpc.cs +0 -369
  22. package/external/Unity-NodeJS-RPC/server/sample1.csproj +0 -10
  23. package/external/Unity-NodeJS-RPC/server/sample1.sln +0 -24
  24. package/external/Unity-NodeJS-RPC/server/unity/RpcUnity.cs.txt +0 -60
  25. package/index.ts +0 -36
  26. package/library/debug.ts +0 -7
  27. package/library/device.ts +0 -279
  28. package/library/entity.ts +0 -35
  29. package/library/index.ts +0 -19
  30. package/library/interaction/interaction.ts +0 -281
  31. package/library/native-bindings-osx.node +0 -0
  32. package/library/native-bindings-win.node +0 -0
  33. package/library/networking/state-sync.ts +0 -62
  34. package/library/physics/collider.ts +0 -252
  35. package/library/physics/rigidbody.ts +0 -119
  36. package/library/render/camera.ts +0 -172
  37. package/library/render/light.ts +0 -169
  38. package/library/render/material.ts +0 -258
  39. package/library/render/mesh.ts +0 -208
  40. package/library/render/primitives.ts +0 -76
  41. package/library/render/renderable.ts +0 -137
  42. package/library/render/renderer.ts +0 -124
  43. package/library/render/scene.ts +0 -89
  44. package/library/render/texture.ts +0 -247
  45. package/library/render/transform.ts +0 -259
  46. package/library/rpc.ts +0 -81
  47. package/library/utilities/base64.ts +0 -63
  48. package/loader-template.ts +0 -419
  49. package/native.cc +0 -111
  50. package/project.adamas.json +0 -457
  51. package/rusk.glb +0 -0
  52. package/samples/device-sample.ts +0 -30
  53. package/samples/interaction-sample.ts +0 -134
  54. package/samples/physics-sample.ts +0 -39
  55. package/samples/rendering-sample.ts +0 -88
  56. package/samples/spawn-cube.ts +0 -422
  57. package/samples/state-sync-sample.ts +0 -25
  58. package/tsconfig.json +0 -20
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@jack120/test",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Adamas Typescript interface",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
7
7
  "compile": "npx cmake-js compile",
8
8
  "start": "npx ts-node index.ts",
9
9
  "format": "npx prettier . --write",
10
- "esbuild": "npx esbuild library/index.ts --bundle --format=esm --outfile=dist/index.js --platform=node --external:\"*.node\" --packages=external",
10
+ "esbuild": "npx esbuild library/index.ts --bundle --minify --format=esm --outfile=dist/index.js --platform=node --external:\"*.node\" --packages=external",
11
11
  "dts": "npx dts-bundle-generator -o dist/index.d.ts library/index.ts"
12
12
  },
13
13
  "repository": {
@@ -18,6 +18,11 @@
18
18
  "bugs": {
19
19
  "url": "https://github.com/adamas-vr/prefab-interface/issues"
20
20
  },
21
+ "types": "./types/index.d.ts",
22
+ "files": [
23
+ "dist",
24
+ "types"
25
+ ],
21
26
  "homepage": "https://github.com/adamas-vr/prefab-interface#readme",
22
27
  "dependencies": {
23
28
  "gl-matrix": "^3.4.4"
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  declare module "*.mat" {
4
2
  type UUID = `${string}-${string}-${string}-${string}-${string}`;
5
3
  const value: {
@@ -45,14 +43,13 @@ declare module "*.mat" {
45
43
  }
46
44
 
47
45
  declare module "*.tex" {
48
- import { TextureFilterMode, TextureWrapMode } from "@adamas/render/texture";
49
46
  const value: {
50
47
  assetType: "Texture";
51
48
 
52
49
  base64Image: string;
53
50
  mineType: string;
54
- filterMode: TextureFilterMode;
55
- wrapMode: TextureWrapMode;
51
+ filterMode: number;
52
+ wrapMode: number;
56
53
  };
57
54
  export default value;
58
55
  }
package/.gitmodules DELETED
@@ -1,3 +0,0 @@
1
- [submodule "external/Unity-NodeJS-RPC"]
2
- path = external/Unity-NodeJS-RPC
3
- url = git@github.com:adamas-vr/Unity-NodeJS-RPC.git
package/.prettierrc DELETED
@@ -1,6 +0,0 @@
1
- {
2
- "useTabs": true,
3
- "semi": true,
4
- "singleQuote": false,
5
- "trailingComma": "all"
6
- }
@@ -1,14 +0,0 @@
1
- {
2
- "configurations": [
3
- {
4
- "name": "MacOS",
5
- "includePath": [
6
- "${workspaceFolder}/**",
7
- "${workspaceFolder}/node_modules/node-addon-api",
8
- "~/.cmake-js/node-arm64/v22.14.0/include/node"
9
- ],
10
- "defines": ["NAPI_VERSION=8"]
11
- }
12
- ],
13
- "version": 4
14
- }
@@ -1,24 +0,0 @@
1
- {
2
- // Use IntelliSense to learn about possible attributes.
3
- // Hover to view descriptions of existing attributes.
4
- // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
- "version": "0.2.0",
6
- "configurations": [
7
- {
8
- "type": "cppdbg",
9
- "request": "launch",
10
- "name": "Debug",
11
- "program": "/usr/local/bin/node",
12
- "args": [
13
- "-r",
14
- "tsconfig-paths/register",
15
- "-r",
16
- "ts-node/register",
17
- "--force-node-api-uncaught-exceptions-policy=true",
18
- "index.ts"
19
- ],
20
- "cwd": "${workspaceFolder}",
21
- "MIMode": "lldb"
22
- }
23
- ]
24
- }
@@ -1,8 +0,0 @@
1
- {
2
- "editor.defaultFormatter": "esbenp.prettier-vscode",
3
- "prettier.configPath": ".prettierrc",
4
- "editor.formatOnSave": true,
5
- "editor.insertSpaces": false, // Use tabs instead of spaces
6
- "editor.tabSize": 4, // Set tab size to 4
7
- "editor.detectIndentation": false
8
- }
package/CMakeLists.txt DELETED
@@ -1,52 +0,0 @@
1
- cmake_minimum_required(VERSION 3.9)
2
- cmake_policy(SET CMP0042 NEW)
3
- set (CMAKE_CXX_STANDARD 20)
4
-
5
- project (native-bindings)
6
- include_directories(${CMAKE_JS_INC})
7
- file(GLOB SOURCE_FILES "native.cc")
8
- add_library(${PROJECT_NAME} SHARED ${SOURCE_FILES} ${CMAKE_JS_SRC})
9
- set_target_properties(${PROJECT_NAME} PROPERTIES PREFIX "" SUFFIX ".node")
10
- target_link_libraries(${PROJECT_NAME} ${CMAKE_JS_LIB})
11
-
12
- # Include Node-API wrappers
13
- execute_process(COMMAND node -p "require('node-addon-api').include"
14
- WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
15
- OUTPUT_VARIABLE NODE_ADDON_API_DIR
16
- )
17
- string(REGEX REPLACE "[\r\n\"]" "" NODE_ADDON_API_DIR ${NODE_ADDON_API_DIR})
18
-
19
- target_include_directories(${PROJECT_NAME} PRIVATE ${NODE_ADDON_API_DIR})
20
-
21
- message("-- CMAKE_JS_INC: ${CMAKE_JS_INC}")
22
- message("-- NODE_ADDON_API_DIR: ${NODE_ADDON_API_DIR}")
23
-
24
- # define NAPI_VERSION
25
- add_definitions(-DNAPI_VERSION=8)
26
-
27
- # Set output directory for post-build copy
28
- set(OUTPUT_DIR "${CMAKE_SOURCE_DIR}/library")
29
-
30
- # Ensure the output directory exists
31
- file(MAKE_DIRECTORY ${OUTPUT_DIR})
32
-
33
- if(WIN32)
34
- set(PLATFORM_SUFFIX "-win")
35
- elseif(APPLE)
36
- set(PLATFORM_SUFFIX "-osx")
37
- endif()
38
-
39
- # Define a new name with suffix
40
- set(PROJECT_NAME_WITH_SUFFIX "${PROJECT_NAME}${PLATFORM_SUFFIX}")
41
-
42
- # Copy the built .node file to the output directory after build
43
- add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
44
- COMMAND ${CMAKE_COMMAND} -E copy
45
- $<TARGET_FILE:${PROJECT_NAME}>
46
- ${OUTPUT_DIR}/${PROJECT_NAME_WITH_SUFFIX}.node
47
- COMMENT "Copying ${PROJECT_NAME}.node to ${OUTPUT_DIR}"
48
- )
49
-
50
- add_subdirectory(external)
51
- target_link_libraries(${PROJECT_NAME} rpcClient)
52
-
@@ -1,5 +0,0 @@
1
- {
2
- "name": "Project name",
3
- "public": true,
4
- "description": "The description of the prefab."
5
- }
@@ -1 +0,0 @@
1
- add_subdirectory(Unity-NodeJS-RPC)
@@ -1,13 +0,0 @@
1
- set(CMAKE_CXX_STANDARD 20)
2
- set(CMAKE_CXX_STANDARD_REQUIRED ON)
3
-
4
-
5
- option(BUILD_RPC_CLIENT_TEST "Option of building RPC client test" OFF)
6
-
7
- add_library(rpcClient RpcClient.cpp)
8
- target_include_directories(rpcClient PUBLIC include .)
9
-
10
- if (BUILD_RPC_CLIENT_TEST)
11
- add_executable(rpcMain main.cpp)
12
- target_link_libraries(rpcMain rpcClient)
13
- endif()
@@ -1 +0,0 @@
1
- ## Works on Windows only
@@ -1,265 +0,0 @@
1
- #include "RpcClient.h"
2
-
3
- #ifdef _WIN32
4
- #include <algorithm>
5
- #else
6
- #include <netinet/in.h>
7
- #include <sys/socket.h>
8
- #include <unistd.h>
9
- #endif
10
-
11
- #include <iostream>
12
-
13
- #define SOCKET_CHECK(status) if (status < 0) \
14
- { \
15
- perror("Failed: " #status "\n"); \
16
- exit(EXIT_FAILURE); \
17
- }
18
-
19
- #define STATUS_CHECK(status, msg) if (status) \
20
- { \
21
- perror("ERROR: " #msg "\n"); \
22
- exit(EXIT_FAILURE); \
23
- }
24
-
25
- RpcClient::RpcClient(int port, bool isNode): isNode(isNode)
26
- {
27
- #ifdef _WIN32
28
- WSADATA wsaData;
29
- int iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
30
- if (iResult != 0) {
31
- throw std::runtime_error("WSAStartup failed.\n");
32
- }
33
- clientSocket = socket(AF_INET, SOCK_STREAM, 0);
34
- if (clientSocket == INVALID_SOCKET) {
35
- WSACleanup();
36
- throw std::runtime_error("Error at socket creation.\n");
37
- }
38
-
39
- sockaddr_in serverAddr;
40
- serverAddr.sin_family = AF_INET;
41
- serverAddr.sin_port = htons(port);
42
- serverAddr.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
43
-
44
- if (connect(clientSocket, (SOCKADDR*)&serverAddr, sizeof(serverAddr)) == SOCKET_ERROR) {
45
- throw std::runtime_error("Socket connection failed.\n");
46
- }
47
- #else
48
- sockaddr_in address = {};
49
- address.sin_family = AF_INET;
50
- address.sin_port = htons(port);
51
- address.sin_addr.s_addr = INADDR_ANY;
52
-
53
- SOCKET_CHECK((clientSocket = socket(AF_INET, SOCK_STREAM, 0)) < 0);
54
- SOCKET_CHECK((connect(clientSocket, (struct sockaddr*)&address, sizeof(address))) < 0);
55
- #endif
56
-
57
- size_t sizeRecv = recv(clientSocket, (char*)&responseHeader, sizeof(ResponseHeader), 0);
58
- STATUS_CHECK(
59
- sizeRecv != sizeof(ResponseHeader) || responseHeader.bufferSize != 0,
60
- "DEBUG: Error receiving client ID."
61
- );
62
-
63
- rpcReturnValueReady.store(false);
64
- running.store(true);
65
- clientId = responseHeader.clientId;
66
- printf("Client ID: %d\n", clientId);
67
-
68
- receiver = std::thread([&, isNode]()
69
- {
70
- while (running)
71
- {
72
- while (rpcReturnValueReady == true)
73
- continue;
74
-
75
- size_t sizeRecv = recv(clientSocket, (char*)&responseHeader, sizeof(ResponseHeader), MSG_WAITALL);
76
- STATUS_CHECK(sizeRecv != sizeof(ResponseHeader) && running, "DEBUG: failed to recv callback header");
77
-
78
- if (!running)
79
- return;
80
-
81
- if (responseHeader.bufferSize != 0)
82
- {
83
- responseArgsJson.resize(responseHeader.bufferSize);
84
-
85
- int bytesReceived = 0;
86
- while (bytesReceived < responseHeader.bufferSize)
87
- {
88
- int chunkSize = std::min<int>(1024, responseHeader.bufferSize - bytesReceived);
89
- char* dataPtr = responseArgsJson.data() + bytesReceived;
90
- int chunkBytesReceived = recv(clientSocket, dataPtr, chunkSize, 0);
91
-
92
- STATUS_CHECK(chunkBytesReceived == -1, "Error receiving message data");
93
- bytesReceived += chunkBytesReceived;
94
- }
95
- }
96
-
97
- if (responseHeader.msgType == ResponseHeader::MsgType::MSG_CALLBACK)
98
- {
99
- if (isNode)
100
- std::thread(callbackHandler, responseHeader.u.callbackId, responseArgsJson).detach();
101
- else
102
- std::thread(ProcessCallback, callbackRegistry, responseHeader, responseArgsJson).detach();
103
- }
104
- else if (responseHeader.msgType == ResponseHeader::MsgType::MSG_RETURN)
105
- {
106
- rpcReturnValueReady = true;
107
- }
108
- else
109
- {
110
- std::runtime_error("[RPC Client] ERROR: Corrupted response header.");
111
- }
112
- }
113
- });
114
- }
115
-
116
- RpcClient::~RpcClient()
117
- {
118
- running.store(false);
119
- #ifdef _WIN32
120
- closesocket(clientSocket);
121
- WSACleanup();
122
- #else
123
- close(clientSocket);
124
- #endif
125
- receiver.join();
126
- }
127
-
128
- nlohmann::json RpcClient::Call(
129
- const std::string& functionName,
130
- const std::vector<std::pair<std::string, nlohmann::json>>& dataArgs,
131
- const std::vector<std::pair<std::string, Callback>>& callbackArgs)
132
- {
133
- std::vector<std::string> keys;
134
- std::vector<std::string> values;
135
-
136
- for (const auto& [k, v] : dataArgs) {
137
- keys.push_back(k);
138
- values.push_back(v.dump()); // Convert json to string
139
- }
140
-
141
- for (const auto& [k, cb] : callbackArgs) {
142
- int id = RegisterCallback(cb);
143
- keys.push_back(k);
144
- values.push_back(std::to_string(id));
145
- }
146
-
147
- nlohmann::json args;
148
- args["keys"] = keys;
149
- args["values"] = values;
150
-
151
- RpcRequest rpcRequest;
152
- rpcRequest.header.clientId = clientId;
153
- strncpy(
154
- rpcRequest.header.functionName,
155
- functionName.c_str(),
156
- sizeof(rpcRequest.header.functionName) - 1
157
- );
158
- rpcRequest.jsonArgs = args.dump();
159
- rpcRequest.header.bufferSize = rpcRequest.jsonArgs.size();
160
-
161
- return ProcessRPC(rpcRequest);
162
- }
163
-
164
- std::string RpcClient::Call(const std::string& functionName, const std::string& jsonArgs)
165
- {
166
- RpcRequest rpcRequest;
167
- rpcRequest.header.clientId = clientId;
168
- strncpy(
169
- rpcRequest.header.functionName,
170
- functionName.c_str(),
171
- sizeof(rpcRequest.header.functionName) - 1
172
- );
173
- rpcRequest.jsonArgs = jsonArgs;
174
- rpcRequest.header.bufferSize = rpcRequest.jsonArgs.size();
175
-
176
- return ProcessRPC(rpcRequest);
177
- }
178
-
179
- void RpcClient::RegisterCallbackHandler(std::function<void(int, const std::string&)> fn)
180
- {
181
- callbackHandler = fn;
182
- }
183
-
184
- int RpcClient::RegisterCallback(Callback cb)
185
- {
186
- int id = Call("_RPC::AllocateCallback", {{"clientId", clientId}});
187
- callbackRegistry[id] = std::move(cb);
188
- return id;
189
- }
190
-
191
- void RpcClient::ProcessCallback(
192
- const std::unordered_map<int, Callback>& cbRegistry,
193
- const ResponseHeader& respHeader,
194
- const std::string& respArgsJson)
195
- {
196
- auto it = cbRegistry.find(respHeader.u.callbackId);
197
-
198
- nlohmann::json wrapped = nlohmann::json::parse(respArgsJson, nullptr, false);
199
- if (it != cbRegistry.end() && !wrapped.is_discarded() &&
200
- wrapped.contains("keys") && wrapped.contains("values"))
201
- {
202
- nlohmann::json flat;
203
-
204
- const auto& keys = wrapped["keys"];
205
- const auto& values = wrapped["values"];
206
- for (size_t i = 0; i < keys.size() && i < values.size(); ++i) {
207
- std::string key = keys[i];
208
- std::string valStr = values[i];
209
-
210
- // Try to parse value string as JSON
211
- nlohmann::json parsedVal = nlohmann::json::parse(valStr, nullptr, false);
212
- if (!parsedVal.is_discarded()) {
213
- flat[key] = parsedVal;
214
- } else {
215
- flat[key] = valStr;
216
- }
217
- }
218
-
219
- it->second(flat); // Invoke callback with reconstructed flat object
220
- }
221
- }
222
-
223
- nlohmann::json RpcClient::ProcessRPC(const RpcRequest& req)
224
- {
225
- {
226
- std::lock_guard<std::mutex> RpcLock(callMutex);
227
-
228
- size_t sizeSent = send(clientSocket, (char*)&req, sizeof(req.header), 0);
229
- STATUS_CHECK(sizeSent != sizeof(req.header), "DEBUG: failed to send header");
230
-
231
- if (req.header.bufferSize != 0)
232
- {
233
- int index = 0;
234
- while (index < req.header.bufferSize)
235
- {
236
- int chunk_size = std::min<int>(1024, req.header.bufferSize - index);
237
- const char* data_ptr = req.jsonArgs.c_str() + index;
238
- int bytes_sent = send(clientSocket, data_ptr, chunk_size, 0);
239
-
240
- STATUS_CHECK(bytes_sent == -1, "DEBUG: failed to send everything");
241
- index += bytes_sent;
242
- }
243
- }
244
- }
245
-
246
- while (rpcReturnValueReady == false)
247
- continue;
248
-
249
- printf("RPC: %s |-> %s\n", req.header.functionName, responseArgsJson.c_str());
250
-
251
- if (isNode)
252
- {
253
- std::string str = responseArgsJson;
254
- rpcReturnValueReady = false;
255
- return str;
256
- }
257
- auto str = nlohmann::json::parse(responseArgsJson)["result"].get<std::string>();
258
- auto retval = nlohmann::json::parse(str, nullptr, false);
259
- rpcReturnValueReady = false;
260
-
261
- if (retval.is_discarded()) {
262
- return str;
263
- }
264
- return retval;
265
- }
@@ -1,118 +0,0 @@
1
- #pragma once
2
-
3
- #ifdef _WIN32
4
- #define NOMINMAX
5
- #include <WinSock2.h>
6
- #pragma comment(lib, "Ws2_32.lib") // Optional backup
7
- #define SOCKET_TYPE SOCKET
8
- #else
9
- #define SOCKET_TYPE int
10
- #endif
11
-
12
- #include <string>
13
- #include <functional>
14
- #include <unordered_map>
15
- #include <thread>
16
- #include <mutex>
17
-
18
- #include <nlohmann/json.hpp>
19
-
20
-
21
- struct RpcRequest
22
- {
23
- struct {
24
- int clientId;
25
- char functionName[64];
26
- int bufferSize;
27
- } header;
28
-
29
- std::string jsonArgs;
30
- };
31
-
32
- struct ResponseHeader
33
- {
34
- enum class MsgType {
35
- MSG_CALLBACK = 0,
36
- MSG_RETURN = 1
37
- };
38
-
39
- int clientId;
40
- MsgType msgType;
41
- union {
42
- int callbackId;
43
- int statusCode;
44
- } u;
45
-
46
- int bufferSize;
47
- };
48
-
49
- class RpcClient
50
- {
51
- public:
52
- static RpcClient& Get(int port = 6969, bool isNode = false)
53
- {
54
- static RpcClient rpcClient{GetPort(port), isNode};
55
- return rpcClient;
56
- }
57
-
58
- using Callback = std::function<void(const nlohmann::json&)>;
59
-
60
- // Make a call with arguments and optional callbacks
61
- nlohmann::json Call(
62
- const std::string& functionName,
63
- const std::vector<std::pair<std::string, nlohmann::json>>& dataArgs = {},
64
- const std::vector<std::pair<std::string, Callback>>& callbackArgs = {}
65
- );
66
-
67
- std::string Call(const std::string& functionName, const std::string& jsonArgs);
68
-
69
- void RegisterCallbackHandler(std::function<void(int, const std::string&)> fn);
70
-
71
- int GetClientId() { return clientId; }
72
-
73
- private:
74
- RpcClient(int port, bool isNode);
75
- ~RpcClient();
76
-
77
- RpcClient(const RpcClient&) = delete;
78
- const RpcClient& operator=(const RpcClient&) = delete;
79
-
80
- nlohmann::json ProcessRPC(const RpcRequest& req);
81
- int RegisterCallback(Callback cb);
82
-
83
- static void ProcessCallback(
84
- const std::unordered_map<int, Callback>& cbRegistry,
85
- const ResponseHeader& respHeader,
86
- const std::string& respArgsJson
87
- );
88
-
89
- static int GetPort(int port)
90
- {
91
- const char* envPort = std::getenv("SERVER_PORT");
92
- if (envPort != nullptr)
93
- {
94
- try {
95
- return std::stoi(envPort);
96
- } catch (...) {
97
- // Invalid value in SERVER_PORT, fallback to default
98
- }
99
- }
100
- return port;
101
- }
102
-
103
- private:
104
- SOCKET_TYPE clientSocket;
105
- int clientId;
106
- bool isNode;
107
-
108
- ResponseHeader responseHeader;
109
- std::string responseArgsJson;
110
-
111
- std::atomic_bool rpcReturnValueReady;
112
- std::mutex callMutex;
113
- std::thread receiver;
114
- std::atomic_bool running;
115
-
116
- std::function<void(int, const std::string&)> callbackHandler;
117
- std::unordered_map<int, Callback> callbackRegistry;
118
- };
@@ -1,76 +0,0 @@
1
-
2
- #include "RpcClient.h"
3
- #include <iostream>
4
-
5
- #ifdef _WIN32
6
- #include <windows.h>
7
- #else
8
- #include <unistd.h>
9
- #endif
10
-
11
- int main() {
12
- RpcClient rpcClient{};
13
-
14
- nlohmann::json result;
15
-
16
- result = rpcClient.Call("sub", {
17
- {"a", 2},
18
- {"b", 3}
19
- });
20
- std::cout << "[C++] sub Response: " << result << std::endl;
21
-
22
- result = rpcClient.Call("mul", {
23
- {"a", 2},
24
- {"b", 23.2}
25
- });
26
- std::cout << "[C++] mul Response: " << result << std::endl;
27
-
28
- result = rpcClient.Call("echo", {
29
- {"text", "echo back"}
30
- });
31
- std::cout << "[C++] echo Response: " << result << std::endl;
32
-
33
- result = rpcClient.Call("do_work",
34
- {
35
- {"input", "Hello from C++"},
36
- {"delay", 3000} // simulate work on Unity side
37
- },
38
- {
39
- {"onComplete", [](const nlohmann::json& result) {
40
- std::cout << "[Callback] Received result from Unity: " << result.dump() << std::endl;
41
- }}
42
- });
43
- std::cout << "[C++] do_work Response: " << result << std::endl;
44
-
45
- int handle = rpcClient.Call("timer",
46
- {
47
- {"text", rpcClient.GetClientId()},
48
- {"interval", 1000} // simulate work on Unity side
49
- },
50
- {
51
- {"callback", [&](const nlohmann::json& result) {
52
- rpcClient.Call("AddToCounter", {{"value", 1}});
53
- std::cout << "[Callback] Received result from Unity: " << result.dump() << std::endl;
54
- }}
55
- });
56
- std::cout << "[C++] Timer response: " << handle << std::endl;
57
-
58
- #ifdef _WIN32
59
- Sleep(5000);
60
- #else
61
- sleep(5);
62
- #endif
63
-
64
- printf("Handle ID: %d\n", handle);
65
- rpcClient.Call("dispose_timer", {{"timerHandle", handle}});
66
-
67
- return 0;
68
-
69
- /**
70
- * 1. RPC callback
71
- * 2. Debug Window API
72
- * 3. Basic Platform API support
73
- * 4. Master process + child Process Spawn / deallocation
74
- * 5. Multi-client communication using Semaphore
75
- */
76
- }