Jump to content
Everywhere

All Activity

This stream auto-updates

  1. Today
  2. Yue

    Astrocuco - Dev Log

    Firsts Steps for effect ragdoll.
  3. controller:SetPhysicsMode(PHYSICS_NONE) controller:SetPhysicsMode(0) -- yes run.
  4. Drawing two views was considered a bug at the time.
  5. Yue

    Astrocuco - Dev Log

  6. Maybe it might be worth considering drawing both eyes like you've done in Leadwerks 4 as you can better watch what's actually happen.
  7. Hi, can you tell me what AMD driver you have installed? There is a known problem with current AMD drivers that has been fixed in their current beta drivers. Until that is released, driver 24.7.1 is required.
  8. This project loads an MP4 video and displays it on a window, using the modern recommedended Windows media playback system. The included video does not have any sound, but sound does work. PlayVideo.zip
  9. Image shows a video playing on a window using Windows Media Foundation. This does not mean video will work in 3D, since that would require a completely separate system, but it can display a video on a window, on Windows. Example project is available here:
  10. I don't know. Making three cameras would be extremely wasteful.
  11. Yue

    Astrocuco - Dev Log

    Today is a day of pure extreme adventure.
  12. bug ver 0.99 steam beta if debug run , build white screen. amd ryzen 3 vega bug window. border button ide not visible. border top
  13. 1. Open up editor. 2. Create Box. 3. Select it. 4. File -> New, ignore changes 5. This should be the result.
  14. Do other games do this, or do they make a third camera in the center of the eyes and project that result?
  15. Yue

    AstroCuco

    Dev.
  16. Yue

    Astrocuco - Dev Log

    Helmet Put on his head Without the helmet Put on your head Key H action.
  17. This code does not work on any files I tried, but maybe it will be useful to someone. // Play an AVI using the MSvfw32.lib // in the case of Dev-C++ link with libmsvfw32.a via // Project>>Project Options>>Parameters>>Add Lib>>libmsvfw32.a // created via BCX generated C code then modified for Dev-C++ // (actually-Dev C++ is the IDE for the GNU GCC/G++ compiler) // a Dev-C++ tested Windows Application by vegaseat 21nov2004 #include "Leadwerks.h" #include <Windows.h> #include <cstdio> #include <windows.h> #include <vfw.h> #pragma comment (lib, "Vfw32.lib") #define ID_MCIFrame 0 #define ID_MENU1 9001 #define ID_MENU2 9002 #define ID_MENU3 9003 static HINSTANCE BCX_hInstance; static int BCX_ScaleX; static int BCX_ScaleY; static char BCX_ClassName[2048]; static HANDLE ghInst; static HWND Form1; static HWND MCIFrame; static HMENU MainMenu; static HMENU FileMenu; static OPENFILENAME OpenFileName; static char szFile[2048]; static char szFileTitle[2048]; #define Show(Window) RedrawWindow(Window,0,0,0);ShowWindow(Window,SW_SHOW); HWND BCX_Form(char*, int = 0, int = 0, int = 250, int = 150, int = 0, int = 0); void BCX_Set_Form_Color(HWND, COLORREF); void Center(HWND, HWND = 0, HWND = 0); char* BCX_TmpStr(size_t); char* str(double); char* curdir(void); void FormLoad(void); LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); int InitOpenFileName(void); int PopFileOpenDlg(HWND, char*, char*); BOOL AddMenu(HWND); // standard Windows Graphical User Interface main int WINAPI main(HINSTANCE hInst, HINSTANCE hPrev, LPSTR CmdLine, int CmdShow) { WNDCLASS Wc; MSG Msg; // ***************************** strcpy(BCX_ClassName, "MCI_demo1"); // ************************************ // Scale Dialog Units To Screen Units // ************************************ RECT rc = { 0,0,4,8 }; MapDialogRect(NULL, &rc); BCX_ScaleX = rc.right / 2; BCX_ScaleY = rc.bottom / 4; BCX_hInstance = hInst; // ****************************************************** Wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; Wc.lpfnWndProc = WndProc; Wc.cbClsExtra = 0; Wc.cbWndExtra = 0; Wc.hInstance = hInst; Wc.hIcon = LoadIconA(NULL, IDI_WINLOGO); Wc.hCursor = LoadCursor(NULL, IDC_ARROW); Wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); Wc.lpszMenuName = NULL; Wc.lpszClassName = BCX_ClassName; RegisterClass(&Wc); FormLoad(); // event message loop while (GetMessage(&Msg, NULL, 0, 0)) { HWND hActiveWindow = GetActiveWindow(); if (!IsWindow(hActiveWindow) || !IsDialogMessage(hActiveWindow, &Msg)) { TranslateMessage(&Msg); DispatchMessage(&Msg); } } return Msg.wParam; } // circular storage, hold the memory leaks to a minimum char* BCX_TmpStr(size_t Bites) { static int StrCnt; static char* StrFunc[2048]; StrCnt = (StrCnt + 1) & 2047; if (StrFunc[StrCnt]) free(StrFunc[StrCnt]); return StrFunc[StrCnt] = (char*)calloc(Bites + 128, sizeof(char)); } char* str(double d) { register char* strtmp = BCX_TmpStr(16); sprintf(strtmp, "% .15G", d); return strtmp; } char* curdir(void) { register char* strtmp = BCX_TmpStr(2048); GetCurrentDirectory(1024, strtmp); return strtmp; } // center the window form on the screen, optional, for looks void Center(HWND hwnd, HWND Xhwnd, HWND Yhwnd) { RECT rect, rectP; int x, y, width, height; int screenwidth, screenheight; if (Xhwnd == 0) { RECT DesktopArea; RECT rc; SystemParametersInfo(SPI_GETWORKAREA, 0, &DesktopArea, 0); GetWindowRect(hwnd, &rc); SetWindowPos(hwnd, HWND_TOP, ((DesktopArea.right - DesktopArea.left) - (rc.right - rc.left)) / 2 + DesktopArea.left, ((DesktopArea.bottom - DesktopArea.top) - (rc.bottom - rc.top)) / 2 + DesktopArea.top, 0, 0, SWP_NOSIZE); return; } GetWindowRect(hwnd, &rect); GetWindowRect(Xhwnd, &rectP); width = rect.right - rect.left; x = ((rectP.right - rectP.left) - width) / 2 + rectP.left; if (Yhwnd == NULL) { height = rect.bottom - rect.top; y = ((rectP.bottom - rectP.top) - height) / 2 + rectP.top; } else { GetWindowRect(Yhwnd, &rectP); height = rect.bottom - rect.top; y = ((rectP.bottom - rectP.top) - height) / 2 + rectP.top; } screenwidth = GetSystemMetrics(SM_CXSCREEN); screenheight = GetSystemMetrics(SM_CYSCREEN); if ((x < 0)) x = 0; if ((y < 0)) y = 0; if ((x + width > screenwidth)) x = screenwidth - width; if ((y + height > screenheight)) y = screenheight - height; MoveWindow(hwnd, x, y, width, height, FALSE); } // create the windows form HWND BCX_Form(char* Caption, int X, int Y, int W, int H, int Style, int Exstyle) { HWND A; // assigne default style if none given if (!Style) { Style = WS_MINIMIZEBOX | WS_SIZEBOX | WS_CAPTION | WS_MAXIMIZEBOX | WS_POPUP | WS_SYSMENU; } A = CreateWindowEx(Exstyle, BCX_ClassName, Caption, Style, X * BCX_ScaleX, Y * BCX_ScaleY, (4 + W) * BCX_ScaleX, (12 + H) * BCX_ScaleY, NULL, (HMENU)NULL, BCX_hInstance, NULL); SendMessage(A, (UINT)WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)MAKELPARAM(FALSE, 0)); return A; } // color, why not void BCX_Set_Form_Color(HWND hWnd, COLORREF Kolor) { HBRUSH hbr = CreateSolidBrush(Kolor); int GCL_HBRBACKGROUND = -10; DeleteObject((HBRUSH)SetClassLong(hWnd, GCL_HBRBACKGROUND, (DWORD)hbr)); InvalidateRect(hWnd, NULL, TRUE); } #include <string> // the details - corner coordinates,width,height,title void FormLoad(void) { Form1 = BCX_Form((char*)"MCI Demo", 0, 0, 197, 170); SetClassLong(Form1, GCL_STYLE, GetClassLong(Form1, GCL_STYLE) | CS_DBLCLKS); BCX_Set_Form_Color(Form1, RGB(0, 0, 0)); // Now create the MCIWnd MCIFrame = MCIWndCreate(Form1, (HINSTANCE)ghInst, WS_CHILD | WS_VISIBLE | MCIWNDF_NOOPEN | MCIWNDF_NOTIFYALL, ""); AddMenu(Form1); Center(Form1); Show(Form1); } // event message handler LRESULT CALLBACK WndProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { static char s[2048]; memset(&s, 0, sizeof(s)); static char mstr[2048]; memset(&mstr, 0, sizeof(mstr)); static char mstr1[2048]; memset(&mstr1, 0, sizeof(mstr1)); while (1) { if (Msg == WM_CREATE) { return 0; break; } if (Msg == WM_COMMAND) { if (LOWORD(wParam) == ID_MENU2) { MCIWndClose(MCIFrame); InitOpenFileName(); PopFileOpenDlg(Form1, szFile, szFileTitle); if (strlen(szFile) > 0) { MCIWndOpen(MCIFrame, szFile, 0); } return 0; } if (LOWORD(wParam) == ID_MENU3) { MCIWndClose(MCIFrame); ExitProcess(0); } break; } if (Msg == MCIWNDM_NOTIFYMODE) { while (1) { if ((long)lParam == MCI_MODE_NOT_READY) { SetWindowText(Form1, "Not Ready"); break; } if ((long)lParam == MCI_MODE_PAUSE) { SetWindowText(Form1, "Paused"); break; } if ((long)lParam == MCI_MODE_PLAY) { SetWindowText(Form1, "Playing"); break; } if ((long)lParam == MCI_MODE_STOP) { SetWindowText(Form1, "Stopped"); break; } if ((long)lParam == MCI_MODE_OPEN) { SetWindowText(Form1, "Opening"); break; } if ((long)lParam == MCI_MODE_RECORD) { SetWindowText(Form1, "Recording"); break; } if ((long)lParam == MCI_MODE_SEEK) { SetWindowText(Form1, "Seeking"); } break; } break; } if (Msg == MCIWNDM_NOTIFYMEDIA) { SetWindowText(Form1, (LPSTR)lParam); break; } if (Msg == MCIWNDM_NOTIFYPOS) { SetWindowText(Form1, str(MCIWndGetPosition(MCIFrame))); break; } if (Msg == MCIWNDM_NOTIFYERROR) { SetWindowText(Form1, "MCI ERROR"); break; } if (Msg == WM_PAINT) { // The VideoWindow is restricted to a ratio of 4:3 here break; } if (Msg == WM_SIZE) { static WORD Basedsp; memset(&Basedsp, 0, sizeof(Basedsp)); static WORD Cntr; memset(&Cntr, 0, sizeof(Cntr)); Basedsp = (HIWORD(lParam) - 20) / 3; Cntr = (LOWORD(lParam) - (Basedsp * 4)) / 2; MoveWindow(MCIFrame, Cntr, 0, (Basedsp * 4), HIWORD(lParam), TRUE); // Don't forget to close opened Files break; } if (Msg == WM_CLOSE) { MCIWndClose(MCIFrame); DestroyWindow(Form1); return 0; break; } if (Msg == WM_DESTROY) { MCIWndClose(MCIFrame); PostQuitMessage(0); return 0; } break; } // tidy up and exit program if (Msg == WM_DESTROY) { UnregisterClass(BCX_ClassName, BCX_hInstance); PostQuitMessage(0); } return DefWindowProc(hWnd, Msg, wParam, lParam); } // tons of options for the neat file dialog box int InitOpenFileName(void) { *szFile = 0; *szFileTitle = 0; OpenFileName.lStructSize = sizeof(OPENFILENAME); OpenFileName.hwndOwner = MCIFrame; OpenFileName.hInstance = (HINSTANCE)ghInst; OpenFileName.lpstrFilter = "Avi Files (*.AVI)\0*.avi\0All Files(*.*)\0*.*\0\0"; OpenFileName.lpstrCustomFilter = NULL; OpenFileName.nMaxCustFilter = 0; OpenFileName.nFilterIndex = 0; OpenFileName.lpstrFile = szFile; OpenFileName.nMaxFile = MAX_PATH; OpenFileName.lpstrFileTitle = szFileTitle; OpenFileName.nMaxFileTitle = MAX_PATH; OpenFileName.lpstrInitialDir = curdir(); OpenFileName.lpstrTitle = NULL; OpenFileName.nFileOffset = 0; OpenFileName.nFileExtension = 0; OpenFileName.lpstrDefExt = "*.avi"; OpenFileName.lCustData = 0L; OpenFileName.Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY; OpenFileName.lpfnHook = NULL; OpenFileName.lpTemplateName = NULL; return 0; } int PopFileOpenDlg(HWND Form1, char* szFile, char* szFileTitle) { OpenFileName.lpstrTitle = "Open File"; OpenFileName.hwndOwner = MCIFrame; OpenFileName.lpstrFile = szFile; OpenFileName.lpstrFileTitle = szFileTitle; OpenFileName.Flags = OFN_EXPLORER | OFN_CREATEPROMPT; return GetOpenFileNamePreview(&OpenFileName); } BOOL AddMenu(HWND hwndOwner) { MainMenu = CreateMenu(); FileMenu = CreateMenu(); InsertMenu(MainMenu, 0, MF_POPUP, (UINT)FileMenu, "&File"); AppendMenu(FileMenu, MF_STRING, ID_MENU2, "&Open"); AppendMenu(FileMenu, MF_STRING, ID_MENU3, "&Exit"); // activate the menu if (!SetMenu(hwndOwner, MainMenu)) { return FALSE; } return TRUE; }
  18. The preview, meaning the render that appears on the desktop window? It's only supposed to show a single eye because a stereo image looks confusing without a headset.
  19. Yue

    Astrocuco - Dev Log

  20. Yesterday
  21. Yue

    Astrocuco - Dev Log

  22. I am trying to put the case of my character having as reference the spindle of the nape of the neck, but it turns out that when he is falling into the void after a jump the case starts to float above his head, this using attach. Now, if I use SetParent, to attach it to the mesh, whose root bone is in the middle of the legs, when falling the helmet does not move from its position. In such a case I need to position it in the head, in the Neck bone, and I have found a partial solution. function this:UpdateHelmet() helmet:SetPosition(0,0.12,-0.03) helmet:SetRotation(-20,0,0) helmet:Attach(ela,boneNeck) end ... self:UpdateHelmet() -- Run Ok.
  23. In order to better budget the high cost of using tessellation, I would suggest in limiting tessellation view range to 'a user defined amount of distance' from in front of the camera.
      • 1
      • Upvote
  24. Self explanatory, happens with the stock VR Player component.
  25. Yue

    Astrocuco - Dev Log

  26. Yue

    Astrocuco - Dev Log

  27. Yue

    Astrocuco - Dev Log

  1. Load more activity
×
×
  • Create New...