void get_camera_vectors(Vec3 *look_dir, Vec3 *up, Vec3 *right, const Quat &orient) { NG_ASSERT(look_dir != nullptr); NG_ASSERT(up != nullptr); NG_ASSERT(right != nullptr); const Mat4 m = to_mat4(inverse(orient)); *right = { m[0], m[4], m[8]}; *up = { m[1], m[5], m[9]}; *look_dir = {-m[2], -m[6], -m[10]}; }
/* void onStartURIOpen (in nsIURI aURI, out boolean aAbortOpen); */ NS_IMETHODIMP CWebBrowserContainer::OnStartURIOpen(nsIURI *pURI, PRBool *aAbortOpen) { USES_CONVERSION; NG_TRACE(_T("CWebBrowserContainer::OnStartURIOpen(...)\n")); mCurrentURI = pURI; NG_ASSERT(mCurrentURI); nsCAutoString aURI; mCurrentURI->GetSpec(aURI); // Setup the post data CComVariant vPostDataRef; CComVariant vPostData; vPostDataRef.vt = VT_BYREF | VT_VARIANT; vPostDataRef.pvarVal = &vPostData; // TODO get the post data passed in via the original call to Navigate() // Fire a BeforeNavigate event BSTR bstrURI = SysAllocString(A2OLE(aURI.get())); BSTR bstrTargetFrameName = NULL; BSTR bstrHeaders = NULL; VARIANT_BOOL bCancel = VARIANT_FALSE; long lFlags = 0; mEvents1->Fire_BeforeNavigate(bstrURI, lFlags, bstrTargetFrameName, &vPostDataRef, bstrHeaders, &bCancel); // Fire a BeforeNavigate2 event CComVariant vURI(bstrURI); CComVariant vFlags(lFlags); CComVariant vTargetFrameName(bstrTargetFrameName); CComVariant vHeaders(bstrHeaders); mEvents2->Fire_BeforeNavigate2(mOwner, &vURI, &vFlags, &vTargetFrameName, &vPostDataRef, &vHeaders, &bCancel); // Cleanup SysFreeString(bstrURI); SysFreeString(bstrTargetFrameName); SysFreeString(bstrHeaders); if (bCancel != VARIANT_FALSE) { *aAbortOpen = PR_TRUE; return NS_ERROR_ABORT; } else { mOwner->mBusyFlag = TRUE; } //NOTE: The IE control fires a DownloadBegin after the first BeforeNavigate. // It then fires a DownloadComplete after the engine has made its // initial connection to the server. It then fires a second // DownloadBegin/DownloadComplete pair around the loading of // everything on the page. These events get fired out of // CWebBrowserContainer::StartDocumentLoad() and // CWebBrowserContainer::EndDocumentLoad(). // We don't appear to distinguish between the initial connection to // the server and the actual transfer of data. Firing these events // here simulates, appeasing applications that are expecting that // initial pair. mEvents1->Fire_DownloadBegin(); mEvents2->Fire_DownloadBegin(); mEvents1->Fire_DownloadComplete(); mEvents2->Fire_DownloadComplete(); return NS_OK; }
void GLDrawUI::Common::useProgram() { NG_ASSERT(m_program); m_program->use(); }