O Objeto Viewport representa a tela do usuário, a janela de exibição, onde o scene está sendo renderizado.
O Viewport de um scene pode ser obtido através da propriedade "viewport" do objeto Scene
O objeto SceneViewport herda de SceneBaseObject e possui também todas as suas características.
Além das características herdadas, o objeto SceneViewport também possui as seguintes características:
Propriedade |
Tipo |
Descrição |
scene |
(Somente Leitura) Contém o Objeto Scene que este Viewport renderiza. |
|
width |
Double |
(Somente Leitura) Contem a LARGURA em Métrica de Tela do viewport, isto é, da janela onde o scene está sendo renderizado. |
height |
Double |
(Somente Leitura) Contem a ALTURA em Métrica de Tela do viewport, isto é, da janela onde o scene está sendo renderizado. |
worldX |
Double |
Define, em Métrica de Mundo, em qual posição do eixo X do mundo o ponto (X: 0, Y: 0) da tela aponta. As propriedades "worldX" e "worldY" servem para fazer "scroll" no scene. Se quiser fazer um scroll para a direita, por exemplo, incrementa-se o valor de worldX. Se quiser fazer um scroll para cima, decrementa-se o valor de worldY; Este é um valor local e não é compartilhado com os outros usuários que estão visualizando o mesmo scene. |
worldY |
Double |
Define, em Métrica de Mundo, em qual posição do eixo Y do mundo o ponto (X: 0, Y: 0) da tela aponta. As propriedades "worldX" e "worldY" servem para fazer "scroll" no scene. Se quiser fazer um scroll para a direita, por exemplo, incrementa-se o valor de worldX. Se quiser fazer um scroll para cima, decrementa-se o valor de worldY; Este é um valor local e não é compartilhado com os outros usuários que estão visualizando o mesmo scene. |
scale |
Double |
Define a escala entre a Métrica do Mundo e a Métrica da Tela do Scene. Em outras palavras, esta propriedade controla o "zoom" do Scene. Exemplo: Um valor 32.0 significa que cada unidade métrica do mundo ocupam 32 unidades métricas de tela. Se quiser, por exemplo, efetuar um zoom+ no scene, incrementa-se "scale". Se quiser reduzir o zoom pela metade, divide-se por dois o valor de "scale". Este é um valor local e não é compartilhado com os outros usuários que estão visualizando o mesmo scene. |
cursor |
Enumerado:
|
Define qual cursor de mouse deve ser apresentado quando o mouse estiver em em cima do viewport do scene.
|
Método |
Descrição |
Converte uma posição definida em métricas de tela em uma posição definida em métricas de mundo. Em outras palavras, esta função responde a seguinte pergunta: O ponto (screenX, screenY) da tela do usuário representa qual ponto (worldX, worldY) do tabuleiro? Esta conversão leva em consideração o "scroll" e o "zoom" (propriedades worldX, worldY e scale) do Viewport. Parâmetros:
Retorno:
Exemplo de uso: local worldX, worldY = scene.viewport:screenToWorld(10, 50); |
|
viewport:screenToWorld(screenRect) |
Converte um retângulo definido em métricas de tela em um retângulo definido em métricas de mundo. Em outras palavras, esta função responde a seguinte pergunta: O retângulo "screenRect" da tela do usuário representa qual retângulo do tabuleiro? Esta conversão leva em consideração o "scroll" e o "zoom" (propriedades worldX, worldY e scale) do Viewport. Parâmetros:
Retorno:
|
Converte uma posição definida em métricas de mundo em uma posição definida em métricas de tela. Em outras palavras, esta função responde a seguinte pergunta: O ponto (worldX, worldY) do mundo do scene fica em qual posição (screenX, screenY) na tela do usuário? Esta conversão leva em consideração o "scroll" e o "zoom" (propriedades worldX, worldY e scale) do Viewport. Parâmetros:
Retorno:
Exemplo de uso: local screenX, screenY = scene.viewport:worldToScreen(3, 4.5); |
|
viewport:worldToScreen(worldRect) |
Converte um retângulo definido em métricas de mundo em um retângulo definido em métricas de tela. Em outras palavras, esta função responde a seguinte pergunta: O retângulo "worldRect" do mundo do scene ocupa qual retângulo da tela do usuário? Esta conversão leva em consideração o "scroll" e o "zoom" (propriedades worldX, worldY e scale) do Viewport. Parâmetros:
Retorno:
|
viewport:getScrollBounds() |
Retorna os limites de scroll para os valores worldX e worldY. Retorno: Esta função retorna 4 valores numéricos na seguinte ordem e definição:
Exemplo de uso: local minX, minY, maxX, maxY = viewport:getScrollBounds(); |
Atualiza ou cria uma categoria de ferramentas no Scene. Parâmetros:
|
|
viewport:addToolButton(categoryName, title, iconURL, order, options, callback [, deactivationCallback]) |
Adiciona um botão-ferramenta ao Scene. Parâmetros:
Retorno:
|
Remove um botão ferramenta que foi previamente adicionado pela função addToolButton. Parâmetros:
|
|
viewport:checkToolButton(toolID[, checked]) |
Marca ou desmarca um ToolButton. A marcação é uma mera indicação visual para o usuário entender que o Tool está ativo de alguma forma. Podem existir mais de 1 ToolButton marcados ao mesmo tempo. Parâmetros:
|
viewport:isToolButtonChecked(toolID) |
Retorna se um determinado ToolButto está marcado. A marcação é uma mera indicação visual para o usuário entender que o Tool está ativo de alguma forma. Podem existir mais de 1 ToolButton marcados ao mesmo tempo. Parâmetros:
Retorno:
|
viewport:selectDefaultToolButton() |
Seleciona a Ferramenta/Tool Button padrão. Pode existir apenas uma ferramenta selecionada ao mesmo tempo e representa a ferramenta que o usuário está trabalhando no momento. A ferramenta padrão normalmente é a de "selecionar/movimentar" itens do scene. |
viewport:selectToolButton(toolID) |
Seleciona a Ferramenta/Tool Button especificada pelo padrão. Pode existir apenas uma ferramenta selecionada ao mesmo tempo e representa a ferramenta que o usuário está trabalhando no momento. Parâmetros:
|
viewport:showForm(form[, options]) |
Exibe uma janela na interface do usuário na forma de um Popup flutuante acima do viewport do scene. Parâmetros:
Retorno: Observações:
|
viewport:closeForm(form) |
Fecha uma janela popup que foi previamente aberta pela da função viewport:showPopup. Parâmetros:
Retorno: |
viewport:needRepaint() |
Informa ao RRPG que o Scene precisa ser redesenhado. |
Todos os métodos listados abaixos são válidos APENAS dentro de eventos "onBeforeDraw"s e "OnAfterDraw"s
Método |
Descrição |
viewport:prepareFill(color) |
Prepara o viewport para renderizar o preenchimento de polígonos com uma cor sólida. Parâmetros:
Observações:
|
viewport:prepareDraw(color [, thickness, strokeCap, strokeJoin, strokeDash]) |
Prepara o viewport para renderizar o contorno de polígonos com uma cor sólida. Parâmetros:
Observações:
|
viewport:prepareFont(size [,fontName, bold, italic, underline]) |
Prepara o viewport para preencher textos com uma determinada fonte. Parâmetros:
|
viewport:fillRect(left, top, right, bottom[, opacity]) |
Desenha o preenchimento de um retângulo na tela do scene. Parâmetros:
Observações:
|
viewport:fillEllipse(left, top, right, bottom[, opacity]) |
Desenha o preenchimento de uma elipse/figura oval na tela do scene. Parâmetros:
Observações:
|
viewport:fillPolygon(polygon[, opacity]) |
Desenha o preenchimento de um polígono na tela do scene. Parâmetros:
Observações:
|
viewport:fillACell(i, j [, opacity]) |
Desenha o preenchimento de uma célula do grid do scene. Parâmetros:
Observações:
|
viewport:drawRect(left, top, right, bottom[, opacity]) |
Desenha o contorno de um retângulo na tela do scene. Parâmetros:
Observações:
|
viewport:drawEllipse(left, top, right, bottom[, opacity]) |
Desenha o contorno de uma elipse/figura oval na tela do scene. Parâmetros:
Observações:
|
viewport:drawLine(startX, startY, endX, endY [,opacity]) |
Desenha uma linha na tela do scene. Parâmetros:
|
viewport:textSize(txt) |
Calcula o tamanho do texto usando a fonte configurada no viewport. Parâmetros:
Retorno:
Observações:
|
viewport:fillText(x, y, txt [, opacity]) |
Desenha um texto no scene. Parâmetros:
Observações:
|
viewport:fillTextFit(x, y, right, bottom, txt[, horzTextAlign, vertTextAlign, , opacity]) |
Desenha um texto no scene de forma a fazer cabe-lo da melhor forma em um retângulo definido. Parâmetros:
Observações:
|
viewport:pushRenderState() |
Salva as configurações atuais de renderização para que possam ser restauradas mais tardes usando popRenderState. Observação: Para cada chamada de pushRenderState, deve haver uma chamada de popRenderState. |
viewport:popRenderState() |
Restaura as configurações de renderização previamente salvadas pelo método pushRenderState. Observação: Para cada chamada de pushRenderState, deve haver uma chamada de popRenderState. |
viewport:pushRotationTransform(angle, centerX, centerY) |
Empurra uma transformação de rotação no viewport. Parâmetros:
Observações:
|
viewport:pushWorldToScreenTransform(); |
Empurra uma transformação de coordenadas em métrica de mundo para métrica de tela no viewport. Após a chamada desta função, todos os métodos de desenho entenderão que as coordenadas passadas estão em métrica de mundo. Observações:
|
viewport:popTransform(); |
Remove do viewport a última transformação que havia sido empurrada. |
Nome do evento |
Descrição |
onChange |
Evento que é disparado quando o Viewport do scene mudar. As seguintes situações disparam este evento:
|
onMouseDown |
Este evento é invocado quando um botão do mouse é pressionado sobre o Viewport ou quando o dedo toca a tela (touchscreen). Parâmetros:
|
onMouseMove |
Este evento é invocado quando o mouse se movimenta pelo viewport ou quando o dedo (touchscreen) é arrastado pelo viewport. Parâmetros:
|
onMouseUp |
Este evento é invocado quando um botão do mouse é liberado sobre o Viewport ou quando o dedo solta da tela (touchscreen). Parâmetros:
|
onMouseDblClick |
Este evento é invocado quando o usuário realiza a ação duplo clique com o mouse sobre o Viewport. Parâmetros:
Observação: Este evento é disparado junto com onMouseDown e onMouseUp na seguinte ordem: Mouse Down -> Mouse Up -> Mouse Down -> Dbl Click -> Mouse Up |
onMouseWheel |
Este evento é invocado quando a "rodinha" do mouse é é rolada sobre o Viewport. Parâmetros:
Se seu evento controlou adequadamente este evento e não quer que nenhum outro plug-in tente manipular mais este evento, retorne explicitamente true usando "return true;" |
onFallbackMouseWheel |
Idêntico ao evento onMouseWheel, porém é chamado apenas quando nenhum código tratar o evento onMouseWheel. |
onGestureBeginZoom |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, começa a realizar um gesto de zoom. Parâmetros:
Observações: Neste momento, o usuário ainda não realizou zoom, apenas destacou sua intenção de o fazer. Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureZoom |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, realiza um gesto de zoom. Parâmetros:
Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureEndZoom |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, finaliza um gesto de zoom. Parâmetros:
Observações: Neste momento, o usuário já realizou todo zoom que queria fazer. Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureBeginRotation |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, começa a realizar um gesto de rotação. Parâmetros:
Observações: Neste momento, o usuário ainda não realizou rotação, apenas destacou sua intenção de o fazer. Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureRotation |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, realiza um gesto de rotação. Parâmetros:
Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureEndRotation |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, finaliza um gesto de rotação. Parâmetros:
Observações: Neste momento, o usuário já realizou toda rotação que queria fazer. Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureBeginPan |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, começa a realizar um gesto de deslize/scroll. Parâmetros:
Observações: Neste momento, o usuário ainda não realizou deslizamento, apenas destacou sua intenção de o fazer. Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGesturePan |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, realiza um gesto de deslize/scroll. Parâmetros:
Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureEndPan |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, finaliza um gesto de deslize/scroll. Parâmetros:
Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
onGestureLongTap |
Este evento é invocado quando o usuário, utilizando o TouchScreen e seus dedos, realiza um gesto de longTap (pressionar e segurar por algum tempo) Parâmetros:
Retorne explicitamente true para indicar ao Scene que você já lidou com este evento e nenhum outro script precisa se preocupar com ele. |
Este evento é invocado quando uma tecla (teclado) é pressionada no Scene. Parâmetros:
Observações:
|
|
Este evento é invocado quando uma tecla (teclado) é liberada. Parâmetros:
|
|
onBeforeDrawBkgLayer |
Evento de renderização. Quando estiver neste evento, utilize os métodos de renderização do viewport para realizar pinturas na tela do usuário. Não realize tarefas pesadas neste evento! Este evento é invocado antes do RRPG pintar a camada background do scene. |
onBeforeDrawGridLayer |
Evento de renderização. Quando estiver neste evento, utilize os métodos de renderização do viewport para realizar pinturas na tela do usuário. Não realize tarefas pesadas neste evento! Este evento é invocado depois do RRPG pintar a camada background e antes de pintar o grid do scene. |
onBeforeDrawObjsLayer |
Evento de renderização. Quando estiver neste evento, utilize os métodos de renderização do viewport para realizar pinturas na tela do usuário. Não realize tarefas pesadas neste evento! Este evento é invocado depois do RRPG pintar o grid e antes de pintar a camada objetos do scene. |
onBeforeDrawTokensLayer |
Evento de renderização. Quando estiver neste evento, utilize os métodos de renderização do viewport para realizar pinturas na tela do usuário. Não realize tarefas pesadas neste evento! Este evento é invocado depois do RRPG pintar a camada objetos e antes de pintar a camada tokens do scene. |
onAfterDrawLayers |
Evento de renderização. Quando estiver neste evento, utilize os métodos de renderização do viewport para realizar pinturas na tela do usuário. Não realize tarefas pesadas neste evento! Este evento é invocado depois do RRPG pintar a camada tokens. |
onStartDrop |
Evento que é chamado quando alguém arrasta uma informação (drag) em cima do scene e você deseja informar quais ações ou dados existem em um determinado ponto do tabuleiro. Parâmetros:
Por favor, consulte Arrastando-e-Soltando Informações / Drag and Drop para conhecer melhor sobre o processo drag and drop. |
require("scene.lua");
SceneLib.registerPlugin( function (scene, attachment) scene.viewport.onChange = function() local r = scene.viewport:screenToWorld({left=0, top=0, right=scene.viewport.width, bottom=scene.viewport.height});
local texto = "O Viewport mudou..\n" .. "Dimensões da tela: " .. scene.viewport.width .. " por " .. scene.viewport.height .. "\n" .. "Posicao do Scroll: " .. scene.viewport.worldX .. " por " .. scene.viewport.worldY .. "\n" .. "Região do Scene que é exibido neste viewport: " .. string.format("[(left %f, top %f)(right %f, bottom %f)]", r.left, r.top, r.right, r.bottom);
showMessage(texto); end; end); |
require("scene.lua");
SceneLib.registerPlugin( -- Manipular o evento onMouseUp do Viewport afim de detectar o click do mouse
scene.viewport.onMouseUp = function (event) -- Converter coordenada de tela do click para coordenada de mundo local wx, wy = scene.viewport:screenToWorld(event.x, event.y);
-- Converter coordenada de mundo para coordenada do grid local i, j = scene.grid:worldToCell(wx, wy);
-- Exibir uma Mensagem sobre a célula clicada showMessage("Click na célula [Linha " .. i .. ", Coluna " .. j .. "]"); end; end); |
require("scene.lua");
SceneLib.registerPlugin( function (scene, attachment)
-- Manipular o evento OnMouseDown do Viewport
scene.viewport.onMouseDown = function(event) -- Usuário clicou no Scene -- Transformar as coordenadas de tela em métrica de mundo local worldX, worldY = scene.viewport:screenToWorld(event.x, event.y);
-- Localizar o item que o usuário clicou local item = scene.items:itemAtPoint(worldX, worldY);
if item ~= nil then -- Encontrou um item na posição clicada. local NOME_MINHA_MARCA = "MarcaExemplo";
-- Localizar uma operação gráfica neste item com o nosso nome local opGrafica = item.canvas:findByName(NOME_MINHA_MARCA);
if opGrafica == nil then --[[ A operação gráfica da minha marca ainda não existe neste token/item. Vamos criar ]]
opGrafica = item.canvas:addBitmap(); opGrafica.name = NOME_MINHA_MARCA; -- Abaixo, URL da imagem da nossa marca. opGrafica.url = "https://wiki.teamfortress.com/w/images/d/dd/Bleed_drop.png?t=20110425044341"; opGrafica.x = 0.25; opGrafica.width = 0.3; opGrafica.y = -0.1; opGrafica.height = 0.3; opGrafica.z = 10; else -- Vamos apagar nossa operação gráfica previamente criada opGrafica:delete(); end; end; end;
end); |
|
Item com a marca |
Created with the Personal Edition of HelpNDoc: Simplify Your Help Documentation Process with a Help Authoring Tool