Szerző Téma: Hogyan lehetne megoldani? (Mozgó rectangle)  (Megtekintve 1318 alkalommal)

Hogyan lehetne megoldani? (Mozgó rectangle)
« Dátum: 2016. December 19. - 18:49:52 »
0 Show voters


   

 
Sziasztok! A napokban bukkantam egy igényes külföldi szerverre, és megtetszett, de nem értem hogyan lehetséges ezt MTA-ban megvalósítani? Vagy milyen irányba kellene elindulni, esetleg valaki próbálkozott már hasonlóval? 
 
A válaszokat előre köszönöm!
« Utoljára szerkesztve: 2016. December 19. - 18:50:24 írta Dragonflash11 »

Hogyan lehetne megoldani? (Mozgó rectangle)
« Válasz #1 Dátum: 2016. December 19. - 19:37:09 »
+1 Show voters

Ezek oszt színek öcsém. -^
« Utoljára szerkesztve: 2016. December 19. - 19:38:06 írta impreZZa »

Hogyan lehetne megoldani? (Mozgó rectangle)
« Válasz #2 Dátum: 2016. December 19. - 20:31:44 »
0 Show voters
Idézetet írta: impreZZa date=1482172629


   
   
      Ezek oszt színek öcsém. -^
   


Sajnos ebből csak azt tudtam meg, hogy shaderekkel menne, de ha jól látom te se teljesen oldottad meg, azért köszönöm. :)
 
További ötleteket, válaszokat még várok. 

Hogyan lehetne megoldani? (Mozgó rectangle)
« Válasz #3 Dátum: 2016. December 19. - 22:50:24 »
+1 Show voters
Shader
 

texture iTexture;
technique drawTexture {
pass P0 {
   Texture[0] = iTexture;
}
}

 
Kliens oldal
 

local screenWidth, screenHeight = guiGetScreenSize()
local shader3D = dxCreateShader(\"files/shaders/default.fx\")
bindKey(\"m\", \"down\", function()
showCursor(not isCursorShowing())
end)
addEventHandler(\"onClientRender\", root, function()
if isCursorShowing() then
   local cursorX, cursorY = getCursorPosition()
   cursorX, cursorY = cursorX*screenWidth, cursorY*screenHeight
   local rectRotX = -(cursorX-screenWidth/2)/80
   local rectRotY = (cursorY-screenHeight/2)/50
   local drawSurface = dxCreateRenderTarget(screenWidth, screenHeight, true)
   dxSetShaderValue(shader3D, \"iTexture\", drawSurface)
   dxSetRenderTarget(drawSurface, true)
   dxDrawRectangle(screenWidth/2-320, screenHeight/2-200, 640, 376, tocolor(21, 25, 27, 255))
   dxDrawRectangle(screenWidth/2-320, screenHeight/2-200+376, 640, 24, tocolor(0, 0, 0, 255))
   dxDrawRectangle(screenWidth/2-320+10, screenHeight/2-200+10, 309, 50, (isCursorInPosition(screenWidth/2-320+10, screenHeight/2-200+10, 309, 50) and tocolor(122, 163, 62) or tocolor(130, 130, 130)))
   dxDrawRectangle(screenWidth/2-320+10+311, screenHeight/2-200+10, 309, 50, (isCursorInPosition(screenWidth/2-320+10+311, screenHeight/2-200+10, 309, 50) and tocolor(62, 163, 153) or tocolor(130, 130, 130)))
   dxSetRenderTarget()
   dxSetShaderTransform(shader3D, rectRotX, rectRotY)
   dxDrawImage(0, 0, screenWidth, screenHeight, shader3D)
   destroyElement(drawSurface)
end
end)
function isCursorInPosition(boxX, boxY, boxW, boxH)
if isCursorShowing() then
   local absoluteX, absoluteY = getCursorPosition()
   absoluteX, absoluteY = absoluteX*screenWidth, absoluteY*screenHeight
   return (absoluteX >= boxX and absoluteX <= boxX+boxW) and (absoluteY >= boxY and absoluteY <= boxY+boxH)
else
   return false
end
end

 
Nyilván meg lehet oldani jobban/szebben/pontosabban, de ebből ki tudsz indulni. (elvileg..)

Nem elérhető Live

  • 507
    • Profil megtekintése
Hogyan lehetne megoldani? (Mozgó rectangle)
« Válasz #4 Dátum: 2016. December 20. - 11:03:15 »
+1 Show voters

Hogyan lehetne megoldani? (Mozgó rectangle)
« Válasz #5 Dátum: 2016. December 20. - 15:27:08 »
0 Show voters
Nagyon szépen köszönöm mindkettőtöknek a segítséget!! :) 

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal