5#include "vraythrow.hpp"
14#include "_vraysdk_utils.hpp"
18 class VRayServerNative;
20 class VRayLiveLinkServerNative;
21 class VRayLiveLinkServer;
32 enum ExportSceneFlags {
33 ExportSceneFlags_Full = 0,
34 ExportSceneFlags_Changes = 1 << 0,
35 ExportSceneFlags_Deleted = 1 << 1,
39 enum SceneUpdateActionCode {
43 AC_PARAMVALUE_CHANGED,
44 AC_RECOMPILE_GEOMETRY,
54 AC_BEGIN_CHANGE = 100,
55 AC_PREAPPLY_CHANGE = 101,
75 enum AssetCacheLimit {
79 } cachedAssetsLimitType;
119 std::swap(flags, options.flags);
120 std::swap(cachedAssetsLimitType, options.cachedAssetsLimitType);
122 std::swap(dr2Flags, options.dr2Flags);
139 LiveLinkServerOptions() :
portNumber(0), flags() {
141 LiveLinkServerOptions(
const LiveLinkServerOptions& options) =
default;
142 LiveLinkServerOptions(LiveLinkServerOptions&& options) =
default;
143 LiveLinkServerOptions& operator=(
const LiveLinkServerOptions& options) =
default;
144 LiveLinkServerOptions& operator=(LiveLinkServerOptions&& options) =
default;
146 void swap(LiveLinkServerOptions& options) {
148 std::swap(flags, options.flags);
157 const char* remoteScenePath;
158 const char* pluginLibraryPath;
159 const char* includePaths;
161 ServerOptions::AssetCacheLimit cachedAssetsLimitType;
162 float cachedAssetsLimitValue;
164 const char* dr2HttpProxy;
165 int dr2WorkerThreadsPerServer;
166 int dr2ConnectTimeout;
167 int dr2UpstreamChannels;
176 cachedAssetsLimitType = opts.cachedAssetsLimitType;
178 dr2Flags = opts.dr2Flags;
199#include "_vraysrv_import.hpp"
202 inline std::string LicenseError::toString()
const {
203 char* str = Internal::VRay_getLicenseErrorTextStringFromErrorCode(errs);
204 std::string res = str;
205 Internal::C_memory_free(str);
209 inline std::ostream& operator <<(std::ostream& stream,
const LicenseError& err) {
210 char* str = Internal::VRay_getLicenseErrorTextStringFromErrorCode(err.errs);
211 stream << (str ? str :
"");
212 Internal::C_memory_free(str);
222 const char* getData()
const {
223 return reinterpret_cast<const char*
>(
this);
226 return reinterpret_cast<char*
>(
this);
228 void operator delete(
void* p) {
229 Internal::C_memory_free(p);
233#if !defined(VRAY_RUNTIME_LOAD_PRIMARY) && !defined(VRAY_RUNTIME_LOAD_SECONDARY)
242 Internal::VRay_LicenseManager_releaseLicense();
246#elif defined(VRAY_RUNTIME_LOAD_PRIMARY)
249# pragma warning(push)
250# pragma warning(disable: 4706)
258 initialize(libraryFileName);
262 if (Internal::VRay_LicenseManager_releaseLicense)
263 Internal::VRay_LicenseManager_releaseLicense();
267 operator bool()
const {
274 Internal::HModule hLib;
275 std::string errString;
278 void makeError(
const std::string &errMsg) {
284 void initialize(
const char* libraryFileName) {
285 if (!libraryFileName) {
286 if ((hLib = LoadUtils::tryPreloadSDKLibraryFromEnvVar(VRAY_XSTRING(APPSDK_ENV_VAR_BIN_FOLDER),
false))) {
290 if ((hLib = LoadUtils::tryPreloadSDKLibraryFromEnvVar(VRAY_XSTRING(VRAY_SDK_ENV_VAR),
true))) {
295 hLib = LoadUtils::loadLibrary(libraryFileName);
299 void importFunctions() {
301# define PROC_IMPORT_FAIL(message) return makeError(LoadUtils::getLoaderError(message))
303# define PROC_IMPORT_FAIL(message) throw InitErr( (errString = LoadUtils::getLoaderError(message)) )
307 PROC_IMPORT_FAIL(
"Cannot load V-Ray SDK Library file.");
309# define VRAY_INTERNAL_GENERATE_IMPORT_CODE
310# include "_vraysrv_import.hpp"
311# undef VRAY_INTERNAL_GENERATE_IMPORT_CODE
321 Internal::FreeLibrary(hLib);
323 Internal::dlclose(hLib);
335 VRayServerNative* serverNative;
338 static VRayServer* getVRayServer(
void* serverNative) {
339 return static_cast<VRayServer*
>(Internal::VRay_VRayServer_getUserData(
static_cast<VRayServerNative*
>(serverNative), 0));
343 serverNative = Internal::VRay_VRayServer_create(options, &licErr.errs);
344 if (serverNative) Internal::VRay_VRayServer_setUserData(serverNative, 0,
this);
353 static void serverStartCallback(
const Internal::CallbackParamsBase* params) {
354 VRayServer* server = getVRayServer(params->self);
355 auto fn = (void(*)(
VRayServer&, double,
void*))params->userObject;
356 fn(*server, params->instant, params->userData);
359 template<
class T,
void (T::*TMethod)(VRayServer&,
double instant,
void* userData)>
360 static void serverStartCallbackT(
const Internal::CallbackParamsBase* params) {
361 VRayServer* server = getVRayServer(params->self);
362 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->instant, params->userData);
365 static void hostConnectedCallback(
const Internal::ConnectParams* params) {
366 VRayServer* server = getVRayServer(params->self);
367 auto fn = (void(*)(
VRayServer&,
const char*, double,
void*))params->userObject;
368 fn(*server, params->hostname, params->instant, params->userData);
371 template<
class T,
void (T::*TMethod)(VRayServer&, const
char* hostName,
double instant,
void* userData)>
372 static void hostConnectedCallbackT(
const Internal::ConnectParams* params) {
373 VRayServer* server = getVRayServer(params->self);
374 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->hostname, params->instant, params->userData);
377 static void logMessageCallback(
const Internal::LogMessageParams* params) {
378 VRayServer* server = getVRayServer(params->self);
379 auto fn = (void(*)(
VRayServer&,
const char*, MessageLevel, double,
void*))params->userObject;
380 fn(*server, params->message,
static_cast<MessageLevel
>(params->level), params->instant, params->userData);
383 template<
class T,
void (T::*TMethod)(VRayServer& renderer, const
char* msg, MessageLevel level,
double instant,
void* userData)>
384 static void logMessageCallbackT(
const Internal::LogMessageParams* params) {
385 VRayServer* server = getVRayServer(params->self);
386 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->message,
static_cast<MessageLevel
>(params->level), params->instant, params->userData);
389 static void progressCallback(
const Internal::ProgressParams* params) {
390 VRayServer* server = getVRayServer(params->self);
391 auto fn = (void(*)(
VRayServer&,
const char*, int, int, double,
void*))params->userObject;
392 fn(*server, params->message, params->progress, params->total, params->instant, params->userData);
395 template<
class T,
void (T::*TMethod)(VRayServer&, const
char* msg,
int elementNumber,
int elementsCount,
double,
void* userData)>
396 static void progressCallbackT(
const Internal::ProgressParams* params) {
397 VRayServer* server = getVRayServer(params->self);
398 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->message, params->progress, params->total, params->instant, params->userData);
401 static void sceneUpdateCallback(
const Internal::SceneUpdateParams* params) {
402 VRayServer* server = getVRayServer(params->self);
403 auto fn = (void(*)(
VRayServer&, int, uint64_t, uint64_t,
const char*, double,
void*))params->userObject;
404 fn(*server, params->action, params->changeIndex, params->pluginId, params->name, params->instant, params->userData);
407 template<
class T,
void (T::*TMethod)(VRayServer&,
int, u
int64_t, u
int64_t, const
char* name,
double instant,
void* userData)>
408 static void sceneUpdateCallbackT(
const Internal::SceneUpdateParams* params) {
409 VRayServer* server = getVRayServer(params->self);
410 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->action, params->changeIndex, params->pluginId, params->name, params->instant, params->userData);
415 createInstance(NULL);
420 createInstance(&optionsInternal);
425 Internal::VRay_VRayServer_release(serverNative);
431 operator bool ()
const {
432 return !!serverNative;
435 LicenseError getLicenseError()
const {
439 void setOnServerStart(
void (*callback)(VRayServer&,
double instant,
void*),
const void* userData = NULL) {
440 Internal::CallbackData<Internal::OnServerStart> callbackData = { serverStartCallback, serverNative, (
void*)callback, userData };
441 Internal::VRay_VRayServer_setServerStartCallback(serverNative, callback ? &callbackData :
nullptr);
444 template<
class T,
void (T::*TMethod)(VRayServer&,
double,
void*)>
445 void setOnServerStart(T&
object,
const void* userData = NULL) {
446 Internal::CallbackData<Internal::OnServerStart> callbackData = { &serverStartCallbackT<T, TMethod>, serverNative, &object, userData };
447 Internal::VRay_VRayServer_setServerStartCallback(serverNative, &callbackData);
450 void setOnServerClose(
void (*callback)(VRayServer&,
double instant,
void*),
const void* userData = NULL) {
451 Internal::CallbackData<Internal::OnServerClose> callbackData = { serverStartCallback, serverNative, (
void*)callback, userData };
452 Internal::VRay_VRayServer_setServerCloseCallback(serverNative, callback ? &callbackData :
nullptr);
455 template<
class T,
void (T::*TMethod)(VRayServer&,
double,
void*)>
456 void setOnServerClose(T&
object,
const void* userData = NULL) {
457 Internal::CallbackData<Internal::OnServerClose> callbackData = { &serverStartCallbackT<T, TMethod>, serverNative, &object, userData };
458 Internal::VRay_VRayServer_setServerCloseCallback(serverNative, &callbackData);
461 void setOnConnect(
void (*callback)(VRayServer&,
const char* msg,
double instant,
void*),
const void* userData = NULL) {
462 Internal::CallbackData<Internal::OnConnect> callbackData = { hostConnectedCallback, serverNative, (
void*)callback, userData };
463 Internal::VRay_VRayServer_setConnectCallback(serverNative, callback ? &callbackData :
nullptr);
466 template<
class T,
void (T::*TMethod)(VRayServer&, const
char* msg,
double,
void*)>
467 void setOnDisconnect(T&
object,
const void* userData = NULL) {
468 Internal::CallbackData<Internal::OnConnect> callbackData = { &hostConnectedCallbackT<T, TMethod>, serverNative, &object, userData };
469 Internal::VRay_VRayServer_setDisconnectCallback(serverNative, &callbackData);
472 void setOnDisconnect(
void (*callback)(VRayServer&,
const char* msg,
double instant,
void*),
const void* userData = NULL) {
473 Internal::CallbackData<Internal::OnConnect> callbackData = { hostConnectedCallback, serverNative, (
void*)callback, userData };
474 Internal::VRay_VRayServer_setDisconnectCallback(serverNative, callback ? &callbackData :
nullptr);
477 template<
class T,
void (T::*TMethod)(VRayServer&, const
char* msg,
double,
void*)>
478 void setOnConnect(T&
object,
const void* userData = NULL) {
479 Internal::CallbackData<Internal::OnConnect> callbackData = { &hostConnectedCallbackT<T, TMethod>, serverNative, &object, userData };
480 Internal::VRay_VRayServer_setConnectCallback(serverNative, &callbackData);
483 void setOnLogMessage(
void (*callback)(VRayServer&,
const char* msg, MessageLevel level,
double instant,
void*), MessageLevel minLevel = MessageInfo,
const void* userData = NULL) {
484 Internal::CallbackData<Internal::OnLogMessage> callbackData = { logMessageCallback, serverNative, (
void*)callback, userData };
485 Internal::VRay_VRayServer_setDumpMessageCallback(serverNative, callback ? &callbackData :
nullptr, (
int)minLevel);
488 template<
class T,
void (T::*TMethod)(VRayServer&, const
char* msg, MessageLevel level,
double,
void*)>
489 void setOnLogMessage(T&
object, MessageLevel minLevel = MessageInfo,
const void* userData = NULL) {
490 Internal::CallbackData<Internal::OnLogMessage> callbackData = { &logMessageCallbackT<T, TMethod>, serverNative, &object, userData };
491 Internal::VRay_VRayServer_setDumpMessageCallback(serverNative, &callbackData, (
int)minLevel);
494 void setOnProgress(
void (*callback)(VRayServer&,
const char* msg,
int elementNumber,
int elementsCount,
double instant,
void*),
const void* userData = NULL) {
495 Internal::CallbackData<Internal::OnProgress> callbackData = { progressCallback, serverNative, (
void*)callback, userData };
496 Internal::VRay_VRayServer_setProgressCallback(serverNative, callback ? &callbackData :
nullptr);
499 template<
class T,
void (T::*TMethod)(VRayServer&, const
char* msg,
int elementNumber,
int elementsCount,
double instant,
void* userData)>
500 void setOnProgress(T&
object,
const void* userData = NULL) {
501 Internal::CallbackData<Internal::OnProgress> callbackData = { &progressCallbackT<T, TMethod>, serverNative, &object, userData };
502 Internal::VRay_VRayServer_setProgressCallback(serverNative, &callbackData);
513 void setOnSceneUpdate(
void (*callback)(
VRayServer& vray,
int action, uint64_t changeIndex, uint64_t pluginId,
const char* name,
double instant,
void*),
const void* userData = NULL) {
514 Internal::CallbackData<Internal::OnSceneUpdate> callbackData = { sceneUpdateCallback, serverNative, (
void*)callback, userData };
515 Internal::VRay_VRayServer_setSceneUpdateCallback(serverNative, callback ? &callbackData :
nullptr);
519 template<
class T,
void (T::*TMethod)(VRayServer&,
int, u
int64_t, u
int64_t, const
char* name,
double instant,
void* userData)>
521 Internal::CallbackData<Internal::OnSceneUpdate> callbackData = { &sceneUpdateCallbackT<T, TMethod>, serverNative, &object, userData };
522 Internal::VRay_VRayServer_setSceneUpdateCallback(serverNative, &callbackData);
527 return Internal::VRay_VRayServer_run(serverNative);
532 return Internal::VRay_VRayServer_start(serverNative);
537 Internal::VRay_VRayServer_stop(serverNative);
546 char* data = Internal::VRay_VRayServer_exportSceneBuffer(serverNative, len, flags);
548 if (data && len > 0) {
549 buf.assign(data, len);
550 Internal::C_memory_free(data);
560 return reinterpret_cast<ExternalString*
>(Internal::VRay_VRayServer_exportSceneBuffer(serverNative, length, flags));
563 int addHosts(
const char* hosts) {
564 if (Internal::VRay_isDR2())
565 return Internal::VRay_VRayServer_addHosts(serverNative, hosts);
574 int removeHosts(
const char* hosts) {
575 if (Internal::VRay_isDR2())
576 return Internal::VRay_VRayServer_removeHosts(serverNative, hosts);
579 throw NotSupportedErr();
585 int resetHosts(
const char* hosts) {
586 if (Internal::VRay_isDR2())
587 return Internal::VRay_VRayServer_resetHosts(serverNative, hosts);
590 throw NotSupportedErr();
596 char* getAllHosts(
int* size)
const {
597 if (Internal::VRay_isDR2())
598 return Internal::VRay_VRayServer_getAllHosts(serverNative, size);
601 throw NotSupportedErr();
607 char* getActiveHosts(
int* size)
const {
608 if (Internal::VRay_isDR2())
609 return Internal::VRay_VRayServer_getActiveHosts(serverNative, size);
612 throw NotSupportedErr();
618 char* getInactiveHosts(
int* size)
const {
619 if (Internal::VRay_isDR2())
620 return Internal::VRay_VRayServer_getInactiveHosts(serverNative, size);
623 throw NotSupportedErr();
634 VRayLiveLinkServerNative* serverNative;
638 if (Internal::VRay_isDR2())
639 return static_cast<VRayLiveLinkServer*
>(Internal::VRay_VRayLiveLinkServer_getUserData(
static_cast<VRayLiveLinkServerNative*
>(serverNative), 0));
645 if (Internal::VRay_isDR2()) {
646 serverNative = Internal::VRay_VRayLiveLinkServer_create(options, &licErr.errs);
647 if (serverNative) Internal::VRay_VRayLiveLinkServer_setUserData(serverNative, 0,
this);
657 static void serverStartCallback(
const Internal::CallbackParamsBase* params) {
660 fn(*server, params->instant, params->userData);
663 template<
class T,
void (T::* TMethod)(VRayServer&,
double instant,
void* userData)>
664 static void serverStartCallbackT(
const Internal::CallbackParamsBase* params) {
666 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->instant, params->userData);
669 static void hostConnectedCallback(
const Internal::ConnectParams* params) {
671 auto fn = (void(*)(
VRayLiveLinkServer&,
const char*, double,
void*))params->userObject;
672 fn(*server, params->hostname, params->instant, params->userData);
675 template<
class T,
void (T::* TMethod)(VRayServer&, const
char* hostName,
double instant,
void* userData)>
676 static void hostConnectedCallbackT(
const Internal::ConnectParams* params) {
678 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->hostname, params->instant, params->userData);
681 static void logMessageCallback(
const Internal::LogMessageParams* params) {
683 auto fn = (void(*)(
VRayLiveLinkServer&,
const char*, MessageLevel, double,
void*))params->userObject;
684 fn(*server, params->message,
static_cast<MessageLevel
>(params->level), params->instant, params->userData);
687 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer& renderer, const
char* msg, MessageLevel level,
double instant,
void* userData)>
688 static void logMessageCallbackT(
const Internal::LogMessageParams* params) {
690 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->message,
static_cast<MessageLevel
>(params->level), params->instant, params->userData);
693 static void progressCallback(
const Internal::ProgressParams* params) {
695 auto fn = (void(*)(
VRayLiveLinkServer&,
const char*, int, int, double,
void*))params->userObject;
696 fn(*server, params->message, params->progress, params->total, params->instant, params->userData);
699 template<
class T,
void (T::* TMethod)(VRayServer&, const
char* msg,
int elementNumber,
int elementsCount,
double,
void* userData)>
700 static void progressCallbackT(
const Internal::ProgressParams* params) {
702 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->message, params->progress, params->total, params->instant, params->userData);
705 static void sceneUpdateCallback(
const Internal::SceneUpdateParams* params) {
707 auto fn = (void(*)(
VRayLiveLinkServer&, int, uint64_t, uint64_t,
const char*, double,
void*))params->userObject;
708 fn(*server, params->action, params->changeIndex, params->pluginId, params->name, params->instant, params->userData);
711 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&,
int, u
int64_t, u
int64_t, const
char* name,
double instant,
void* userData)>
712 static void sceneUpdateCallbackT(
const Internal::SceneUpdateParams* params) {
714 (
static_cast<T*
>(params->userObject)->*TMethod)(*server, params->action, params->changeIndex, params->pluginId, params->name, params->instant, params->userData);
719 createInstance(NULL);
724 createInstance(&optionsInternal);
729 Internal::VRay_VRayLiveLinkServer_release(serverNative);
735 operator bool()
const {
736 return !!serverNative;
739 LicenseError getLicenseError()
const {
743 void setOnServerStart(
void (*callback)(VRayLiveLinkServer&,
double instant,
void*),
const void* userData = NULL) {
744 Internal::CallbackData<Internal::OnServerStart> callbackData = { serverStartCallback, serverNative, (
void*)callback, userData };
745 Internal::VRay_VRayLiveLinkServer_setServerStartCallback(serverNative, callback ? &callbackData :
nullptr);
748 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&,
double,
void*)>
749 void setOnServerStart(T&
object,
const void* userData = NULL) {
750 Internal::CallbackData<Internal::OnServerStart> callbackData = { &serverStartCallbackT<T, TMethod>, serverNative, &object, userData };
751 Internal::VRay_VRayLiveLinkServer_setServerStartCallback(serverNative, &callbackData);
754 void setOnServerClose(
void (*callback)(VRayLiveLinkServer&,
double instant,
void*),
const void* userData = NULL) {
755 Internal::CallbackData<Internal::OnServerClose> callbackData = { serverStartCallback, serverNative, (
void*)callback, userData };
756 Internal::VRay_VRayLiveLinkServer_setServerCloseCallback(serverNative, callback ? &callbackData :
nullptr);
759 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&,
double,
void*)>
760 void setOnServerClose(T&
object,
const void* userData = NULL) {
761 Internal::CallbackData<Internal::OnServerClose> callbackData = { &serverStartCallbackT<T, TMethod>, serverNative, &object, userData };
762 Internal::VRay_VRayLiveLinkServer_setServerCloseCallback(serverNative, &callbackData);
765 void setOnConnect(
void (*callback)(VRayLiveLinkServer&,
const char* msg,
double instant,
void*),
const void* userData = NULL) {
766 Internal::CallbackData<Internal::OnConnect> callbackData = { hostConnectedCallback, serverNative, (
void*)callback, userData };
767 Internal::VRay_VRayLiveLinkServer_setConnectCallback(serverNative, callback ? &callbackData :
nullptr);
770 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&, const
char* msg,
double,
void*)>
771 void setOnDisconnect(T&
object,
const void* userData = NULL) {
772 Internal::CallbackData<Internal::OnConnect> callbackData = { &hostConnectedCallbackT<T, TMethod>, serverNative, &object, userData };
773 Internal::VRay_VRayLiveLinkServer_setDisconnectCallback(serverNative, &callbackData);
776 void setOnDisconnect(
void (*callback)(VRayLiveLinkServer&,
const char* msg,
double instant,
void*),
const void* userData = NULL) {
777 Internal::CallbackData<Internal::OnConnect> callbackData = { hostConnectedCallback, serverNative, (
void*)callback, userData };
778 Internal::VRay_VRayLiveLinkServer_setDisconnectCallback(serverNative, callback ? &callbackData :
nullptr);
781 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&, const
char* msg,
double,
void*)>
782 void setOnConnect(T&
object,
const void* userData = NULL) {
783 Internal::CallbackData<Internal::OnConnect> callbackData = { &hostConnectedCallbackT<T, TMethod>, serverNative, &object, userData };
784 Internal::VRay_VRayLiveLinkServer_setConnectCallback(serverNative, &callbackData);
787 void setOnLogMessage(
void (*callback)(VRayLiveLinkServer&,
const char* msg, MessageLevel level,
double instant,
void*), MessageLevel minLevel = MessageInfo,
const void* userData = NULL) {
788 Internal::CallbackData<Internal::OnLogMessage> callbackData = { logMessageCallback, serverNative, (
void*)callback, userData };
789 Internal::VRay_VRayLiveLinkServer_setDumpMessageCallback(serverNative, callback ? &callbackData :
nullptr, (
int)minLevel);
792 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&, const
char* msg, MessageLevel level,
double,
void*)>
793 void setOnLogMessage(T&
object, MessageLevel minLevel = MessageInfo,
const void* userData = NULL) {
794 Internal::CallbackData<Internal::OnLogMessage> callbackData = { &logMessageCallbackT<T, TMethod>, serverNative, &object, userData };
795 Internal::VRay_VRayLiveLinkServer_setDumpMessageCallback(serverNative, &callbackData, (
int)minLevel);
798 void setOnProgress(
void (*callback)(VRayLiveLinkServer&,
const char* msg,
int elementNumber,
int elementsCount,
double instant,
void*),
const void* userData = NULL) {
799 Internal::CallbackData<Internal::OnProgress> callbackData = { progressCallback, serverNative, (
void*)callback, userData };
800 Internal::VRay_VRayLiveLinkServer_setProgressCallback(serverNative, callback ? &callbackData :
nullptr);
803 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&, const
char* msg,
int elementNumber,
int elementsCount,
double instant,
void* userData)>
804 void setOnProgress(T&
object,
const void* userData = NULL) {
805 Internal::CallbackData<Internal::OnProgress> callbackData = { &progressCallbackT<T, TMethod>, serverNative, &object, userData };
806 Internal::VRay_VRayLiveLinkServer_setProgressCallback(serverNative, &callbackData);
817 void setOnSceneUpdate(
void (*callback)(
VRayLiveLinkServer& vray,
int action, uint64_t changeIndex, uint64_t pluginId,
const char* name,
double instant,
void*),
const void* userData = NULL) {
818 Internal::CallbackData<Internal::OnSceneUpdate> callbackData = { sceneUpdateCallback, serverNative, (
void*)callback, userData };
819 Internal::VRay_VRayLiveLinkServer_setSceneUpdateCallback(serverNative, callback ? &callbackData :
nullptr);
823 template<
class T,
void (T::* TMethod)(VRayLiveLinkServer&,
int, u
int64_t, u
int64_t, const
char* name,
double instant,
void* userData)>
825 Internal::CallbackData<Internal::OnSceneUpdate> callbackData = { &sceneUpdateCallbackT<T, TMethod>, serverNative, &object, userData };
826 Internal::VRay_VRayLiveLinkServer_setSceneUpdateCallback(serverNative, &callbackData);
831 return Internal::VRay_VRayLiveLinkServer_run(serverNative);
836 return Internal::VRay_VRayLiveLinkServer_start(serverNative);
841 Internal::VRay_VRayLiveLinkServer_stop(serverNative);
850 char* data = Internal::VRay_VRayLiveLinkServer_exportSceneBuffer(serverNative, len, flags);
852 if (data && len > 0) {
853 buf.assign(data, len);
854 Internal::C_memory_free(data);
864 return reinterpret_cast<ExternalString*
>(Internal::VRay_VRayLiveLinkServer_exportSceneBuffer(serverNative, length, flags));
Definition: vraysrv.hpp:630
int start()
Starts V-Ray LiveLink Server in a separate thread. Non-blocking call.
Definition: vraysrv.hpp:835
ExternalString * exportSceneBufferFast(size_t &length, int flags) const
Definition: vraysrv.hpp:863
int run()
Starts V-Ray LiveLink Server. Blocking call.
Definition: vraysrv.hpp:830
void setOnSceneUpdate(void(*callback)(VRayLiveLinkServer &vray, int action, uint64_t changeIndex, uint64_t pluginId, const char *name, double instant, void *), const void *userData=NULL)
Definition: vraysrv.hpp:817
void setOnSceneUpdate(T &object, const void *userData=NULL)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: vraysrv.hpp:824
void stop()
Terminates the server started by 'start' in a separate thread.
Definition: vraysrv.hpp:840
std::string exportSceneBuffer(int flags) const
Definition: vraysrv.hpp:848
Definition: vraysrv.hpp:331
std::string exportSceneBuffer(int flags) const
Definition: vraysrv.hpp:544
ExternalString * exportSceneBufferFast(size_t &length, int flags) const
Definition: vraysrv.hpp:559
void setOnSceneUpdate(void(*callback)(VRayServer &vray, int action, uint64_t changeIndex, uint64_t pluginId, const char *name, double instant, void *), const void *userData=NULL)
Definition: vraysrv.hpp:513
int run()
Starts V-Ray Server. Blocking call.
Definition: vraysrv.hpp:526
int start()
Starts V-Ray Server in a separate thread. Non-blocking call.
Definition: vraysrv.hpp:531
void setOnSceneUpdate(T &object, const void *userData=NULL)
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition: vraysrv.hpp:520
void stop()
Terminates the server started by 'start' in a separate thread.
Definition: vraysrv.hpp:536
Definition: vraysrv.hpp:235
@ Internal
No UI should be created in its "Properties" UI.
Definition: vraysdk.hpp:349
Definition: vraysrv.hpp:216
This is thrown when a renderer instance can't be created. This is usually due to a license issue.
Definition: vraythrow.hpp:32
Definition: vraysrv.hpp:186
Definition: vraysrv.hpp:154
Definition: vraysrv.hpp:130
bool noRenderLicensePreCheck
Do not check if RenderNode license is available when creating the server (it's always checked when re...
Definition: vraysrv.hpp:135
int portNumber
Which port to accept connections on (leave at 0 for default - 20207 (DR1) or 20209 (DR2))
Definition: vraysrv.hpp:131
This is thrown when unsupported function is called, e.g. DR1 function in DR2 build.
Definition: vraythrow.hpp:86
Definition: vraysrv.hpp:59
bool dr2ListenOnIpv4
Whether to listen on IPv4 local sockets.
Definition: vraysrv.hpp:90
std::string pluginLibraryPath
Alternative path to folder containing V-Ray plugins.
Definition: vraysrv.hpp:63
bool dr2DisableUdp
Whether UDP discovery should be disabled.
Definition: vraysrv.hpp:89
float cachedAssetsLimitValue
Value for the cache limit (hours or GB).
Definition: vraysrv.hpp:80
bool keepSceneInMemory
Do not write a temporary vrscene-file, keep the scene data in memory only, default: false.
Definition: vraysrv.hpp:70
bool dr2ListenOnIpv6
Whether to listen on IPv6 local sockets.
Definition: vraysrv.hpp:91
bool dr2SecureConnection
Whether SSL/TSL should be enabled for connections from/to this dispatcher/server.
Definition: vraysrv.hpp:88
int dr2WorkerThreadsPerServer
Number of worker threads per each server instance we start.
Definition: vraysrv.hpp:96
int dr2ConnectTimeout
Initial connection timeout in seconds.
Definition: vraysrv.hpp:97
bool overwriteLocalCacheSettings
True to override any local cache settings on the render servers with the value from the client machin...
Definition: vraysrv.hpp:71
bool changeCurrentDirectory
Change the current folder to remoteScenePath, default: false.
Definition: vraysrv.hpp:69
bool dr2RunLocalRenderServer
(Dispatcher only) Whether the dispatcher should run a local render server
Definition: vraysrv.hpp:87
bool dr2AsDispatcher
Whether the instance will act as a Dedicated Dispatcher.
Definition: vraysrv.hpp:86
bool dr2PipelinedUpstream
Whether to use pipelining. Note pipelining will be disabled internally (even if requested),...
Definition: vraysrv.hpp:92
int portNumber
Which port to accept connections on (leave at 0 for default - 20207 (DR1) or 20209 (DR2))
Definition: vraysrv.hpp:60
bool runAsLiveLink
True to use the underlying renderer as a dr/live-link interface. Default: false.
Definition: vraysrv.hpp:72
std::string remoteScenePath
The folder in which the received vrscene-file will be written, default is the temp folder.
Definition: vraysrv.hpp:62
std::string includePaths
Semicolon separated list of file system paths to the folders containing scene include files.
Definition: vraysrv.hpp:64
bool noRenderLicensePreCheck
Do not check if RenderNode license is available when creating the server (it's always checked when re...
Definition: vraysrv.hpp:68
int numThreads
Number of threads to use for rendering (leave at 0 for all available).
Definition: vraysrv.hpp:61
int dr2UpstreamChannels
Number of upstream connections, which the client side will use, when pipelining is not enabled.
Definition: vraysrv.hpp:98
std::string dr2HttpProxy
server:port connection parameter for http connections via proxy
Definition: vraysrv.hpp:95