setModelCollision
Dá a um modelo de objeto uma colisão construída a partir de uma tabela de formas — sem arquivo .col envolvido — e devolve a original com nil.
Sintaxe
Seção intitulada “Sintaxe”bool setModelCollision ( number/string modelo, table/nil colisao )Parâmetros
Seção intitulada “Parâmetros”| Nome | Tipo | Descrição |
|---|---|---|
modelo | number/string | Modelo a alterar. Só modelos de objeto aceitam uma colisão nova. |
colisao | table | A colisão nova como uma tabela de formas, ou nil para devolver a colisão original. |
A tabela guarda as mesmas formas que um arquivo .col pode ter. Cada lista é opcional, mas pelo menos uma forma precisa estar presente: esferas, caixas ou linhas, ou vertices e triangles juntos.
| Campo | Conteúdo |
|---|---|
spheres | Até 256 tabelas: position (3 números), radius (maior que 0), material, day, night, brightness. |
boxes | Até 512 tabelas: min e max (3 números cada, max não abaixo de min em nenhum eixo), material, day, night, brightness. |
lines | Até 255 tabelas: start e stop (3 números cada), startSize, stopSize (ambos 0 ou mais). |
vertices | Até 16384 tabelas de 3 números. Cada coordenada precisa ficar a até 255 da origem, em qualquer direção. |
triangles | Até 16384 tabelas: os três índices de vértice nos campos 1, 2 e 3 (contando a partir de 0, dentro de vertices), mais material, day, night. |
shadow | A malha de sombra, com as mesmas formas vertices (até 10000) e triangles (até 5000) — as duas listas juntas, ou nenhuma. |
material é um ID de superfície, de 0 a 178. day e night são o brilho da superfície na iluminação de dia e de noite, de 0 a 15. Um campo deixado de fora cai para o padrão: material 0, day 12, night 1, brightness 0. Um radius ausente conta como 0, então ele ainda precisa ser informado.
Retorno
Seção intitulada “Retorno”true se o modelo passou a usar a colisão nova. false, com o motivo escrito no console de debug, quando o modelo não é um modelo de objeto, colisao não é nem tabela nem nil, ou alguma forma está malformada: um tipo errado ou um número não finito em algum campo, um valor fora das faixas acima, uma lista acima do limite, um índice de vértice inválido ou um triângulo apontando para fora de vertices, ou uma tabela sem forma alguma. Nada aqui interrompe o script que chamou: como a maioria das funções de engine, esta só avisa e devolve false.
nil devolve a colisão original: uma colisão que esta função definiu antes é descartada, e caso contrário o comportamento é o de engineRestoreCOL, devolvendo false quando nada tinha substituído a colisão do modelo. Chamar a função de novo descarta a colisão construída anterior, e quando o resource para toda colisão definida por ele também é descartada, devolvendo os modelos aos originais.
Exemplo
Seção intitulada “Exemplo”-- uma caixa sólida do tamanho de um engradado para um modelo própriosetModelCollision(idMeuModelo, { boxes = { { min = { -1, -1, 0 }, max = { 1, 1, 2 }, material = 1 } }})
-- e de volta ao originalsetModelCollision(idMeuModelo, nil)Veja também
Seção intitulada “Veja também”engineLoadCOL— Carrega um arquivo de colisão.engineReplaceCOL— Troca a colisão de um modelo.engineRestoreCOL— Devolve a colisão original de um modelo.getModelCollision— Lê a colisão de volta, como o mesmo tipo de tabela.