HRESULT JITManager::ConnectRpcServer(__in HANDLE jitProcessHandle, __in_opt void* serverSecurityDescriptor, __in UUID connectionUuid) { Assert(IsOOPJITEnabled()); HRESULT hr; RPC_BINDING_HANDLE localBindingHandle; if (IsConnected() && (connectionUuid != m_jitConnectionId)) { return E_FAIL; } hr = CreateBinding(jitProcessHandle, serverSecurityDescriptor, &connectionUuid, &localBindingHandle); HANDLE targetHandle; BOOL succeeded = DuplicateHandle( GetCurrentProcess(), GetCurrentProcess(), jitProcessHandle, &targetHandle, NULL, FALSE, DUPLICATE_SAME_ACCESS); if (!succeeded) { return HRESULT_FROM_WIN32(GetLastError()); } m_targetHandle = targetHandle; m_rpcBindingHandle = localBindingHandle; m_jitConnectionId = connectionUuid; return hr; }
void cSoundStreamRenderer::Render(vRenderable *object) { if(!IsValid()) return; if(!object || !object->IsValid()) return; if(object->GetRenderableType() != ERenderableType::SoundStream) return; if(!object->GetRenderingProperties()) return; int binding = FindStreamBinding(*object); if(binding < 0) binding = CreateBinding(*object); if(binding >= 0) m_DataBindings[binding].m_Marked = true; };
void RegisterNativeBindings(VMState &state) { void(*logger)(VMValue) = [](VMValue value) -> void { LoggerManager::GetLog(VM_LOG).AddLine(LogLevel::INFO, "Debug print: " + value.ToString()); }; int(*rand_ptr)(int, int) = [](int low, int high) -> int { auto val = (rand() % (high - low)) + low; return val; }; auto randBinding = CreateBinding(rand_ptr); state.AddNativeBinding("log", CreateBinding(logger)); state.AddNativeBinding("RegisterMessageHandler", CreateBinding(&Entity::RegisterScriptMessageHandler)); state.AddNativeBinding("SendSpawnEntityMessage", CreateBinding(&ScriptMessageInterface::SendSpawnMessage)); state.AddNativeBinding("SendBlinkMessage", CreateBinding(&ScriptMessageInterface::SendBlinkingMessage)); state.AddNativeBinding("SendAddHealthMessage", CreateBinding(&ScriptMessageInterface::SendAddHealthMessage)); state.AddNativeBinding("SendTakeDamageMessage", CreateBinding(&ScriptMessageInterface::SendTakeDamageMessage)); state.AddNativeBinding("SendTerminateEntityMessage", CreateBinding(&ScriptMessageInterface::SendTerminateEntityMessage)); state.AddNativeBinding("SendPlaySoundEffectMessage", CreateBinding(&ScriptMessageInterface::SendPlaySoundEffectMessage)); state.AddNativeBinding("SendVisibilityMessage", CreateBinding(&ScriptMessageInterface::SendVisibilityMessage)); state.AddNativeBinding("SendImportantCharacterDeathMessage", CreateBinding(&ScriptMessageInterface::SendImportantCharacterDeathMessage)); state.AddNativeBinding("SendEndLevelMessage", CreateBinding(&ScriptMessageInterface::SendEndLevelMessage)); state.AddNativeBinding("SendMessageUpwards", CreateBinding(&Entity::SendMessageUpwards)); state.AddNativeBinding("GetEntityFaction", CreateBinding(&ScriptMessageInterface::GetFaction)); state.AddNativeBinding("CollisionMessageGetEntities", CreateBinding(&ScriptMessageInterface::CollisionMessageGetFactions)); state.AddNativeBinding("BlinkMessageGetDuration", CreateBinding(&ScriptMessageInterface::BlinkMessageGetDuration)); state.AddNativeBinding("GetHitType", CreateBinding(&ScriptMessageInterface::GetHitType)); state.AddNativeBinding("Rand", randBinding); }