-
-
Save GlueBalloon/a956c11cd936513b1257bb71e3650373 to your computer and use it in GitHub Desktop.
Codea 2D Mesh Creator by Jmv38
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# ChoiceItem | |
ChoiceItem = class(XFC.MenuItem) | |
XFC.itemClass["choice"] = ChoiceItem | |
function ChoiceItem:init(data) | |
-- this item is a button to make choices | |
-- special fields of data: | |
-- data.choices = table of choice elements: {txt="comment",value=v,iconLetter=nil} | |
-- (iconLetter is optionnal) | |
-- data.currentValue : optionnal | |
-- data.tag : a str describing the variable | |
-- data.choiceCallback(v) | |
-- default icon (unless other required) | |
if data.iconLetter == nil then data.iconLetter = '?' end | |
-- shortcuts | |
local basicItem = XFC.itemClass["basic"] | |
local infoItem = XFC.itemClass["info"] | |
-- top item | |
self:setup(data) | |
-- information | |
local item = {} | |
item.parent = self | |
item.txt = data.txt | |
self.info = infoItem(item) | |
-- choices | |
self.choiceItems = {} | |
if self.choices == nil then | |
print("error : choices field missing!") | |
else | |
for _,choice in pairs(self.choices) do | |
local item = {} | |
item.parent = self | |
item.txt = choice.txt | |
item.value = choice.value | |
item.callback = function(s) | |
self.choiceCallback(choice.value) | |
self.currentValue = choice.value | |
self:update() | |
end | |
self.choiceItems[choice.value] = basicItem(item) | |
end | |
end | |
self:update() | |
end | |
function ChoiceItem:update() | |
self.disabled = false | |
if self.choices == nil then self.disabled = true end | |
if self.disabled then | |
self.callback = function() end | |
else | |
self.txt = self.tag .." : " .. tostring(self.currentValue) | |
self.info.txt = self.tag .." : " .. tostring(self.currentValue) | |
for _,choice in pairs(self.choices) do | |
local value = choice.value | |
local item = self.choiceItems[value] | |
if self.currentValue == value | |
then item.iconLetter = '◉' | |
else item.iconLetter = '○' | |
end | |
item:createIcon() | |
end | |
self.callback = XFC.MenuItem.callback | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Decoder | |
Coder = class() | |
--This function encodes an image in two strings | |
--the first string makes a list of unique color settings (r,g,b,a), encoded as an 8 char hex string | |
--the second string runs through the image, through rows then columns, and every time the color changes, | |
--it records the color setting and number of cells that had that color | |
--NB it doesn't store the color setting as an 8 char hex string, imstead it stores the position of | |
--this color in the first string. This saves a lot of storage where colors are used over and over again | |
local | |
Codes="!#&~*+,)/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ-_`abcdefghijklmnopqrstuvwxyz" | |
-- 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 | |
-- 1 2 3 4 5 6 7 8 | |
function Coder:Encode(img) | |
local rows=img.height | |
local cols=img.width | |
local colors={} --hash table of unique colors, gives us their sequence in the unique list | |
local strCol="" --unique list of color settings, each one is 8 chars hex, for r,g,b,a | |
local str="" -- each item consists of a color setting (or rather, the position in strCol), and the number of | |
--cells to be colored | |
--for example, if the image starts with 56 cells with r=1,g=2,b=5,a=6, we will add the hex value of this, | |
--which is 001002005006, to strCol, and set colors[001002005006]=1, (1 because this is the first color) | |
--to str, we add the hex values of the string position, ie 1, and the number of cells, ie 56, so we will | |
--add 001038 to str | |
local colorCount=0 | |
local prevColor=-1 --to tell us when the color changes | |
local count=0 --number of cells with current color | |
local r,g,b,a,x | |
local tbl={} | |
local tblCol={} | |
--loop through image | |
for i=1,cols do | |
for j=1,rows do | |
r,g,b,a=img:get(i,j) | |
x=r..","..g..","..b..","..a | |
if x==prevColor then | |
count=count+1 | |
else --color has changed, store details of last color | |
if count>0 then --this will only be zero for the very first cell | |
y=colors[prevColor] --this looks up the position of the color, in the color list | |
if y==nil then --add the color to the list if not there | |
colorCount = colorCount + 1 | |
y=colorCount | |
colors[prevColor]=colorCount | |
--if colorCount>1 then | |
--table.insert(tblCol,","..prevColor) | |
--else | |
table.insert(tblCol,prevColor) | |
--end | |
end | |
table.insert(tbl,y..","..count) | |
end | |
prevColor=x | |
count=1 | |
end | |
if errMessage~=nil then break end | |
end | |
if errMessage~=nil then break end | |
end | |
--we've finished, but we may have some left over chars that need to be stored | |
if count>0 then | |
y=colors[prevColor] | |
if y==nil then | |
colorCount = colorCount + 1 | |
colors[prevColor]=colorCount | |
y=colorCount | |
end | |
table.insert(tblCol,y) | |
table.insert(tbl,count) | |
end | |
str=table.concat(tbl,",") | |
strCol=table.concat(tblCol,",") | |
--create code for user | |
if errMessage~=nil then | |
print(errMessage) | |
return errMessage,errMessage | |
else | |
str1=Coder:Compress(strCol) | |
str2=Coder:Compress(str) | |
local final = Coder:PrintCode(cols,rows,str1,str2) | |
return final | |
end | |
end | |
function Coder:Compress(d) | |
local a={} | |
local m=0 | |
local y,z | |
local x=string.gsub(d,"8","82") | |
x=string.gsub(x,"7","81") | |
x=string.gsub(x,"9","83") | |
x=string.gsub(x,",","7") | |
for i=1,#x,2 do | |
y=string.sub(x,i,i)*9 | |
if i<#x then y=y+string.sub(x,i+1,i+1) else y=y+7 end | |
y=y+1 | |
z=string.sub(Codes,y,y) | |
table.insert(a,z) | |
end | |
--return table.concat(a) | |
return self:concatN(table.concat(a),70) | |
end | |
local function splitString(s,n) | |
local out = {} | |
out[1] = "" | |
if #s <= n | |
then out[1] = s | |
else | |
for k = 1,math.ceil( #s/n ) do | |
out[k] = string.sub(s,(k-1)*n+1,k*n) | |
end | |
end | |
return out | |
end | |
function Coder:concatN(a,n) | |
local t = splitString(a,n) | |
local s = table.concat(t,'\n') | |
return s | |
end | |
function Coder:PrintCode(c,r,s1,s2) | |
local str = | |
"--image code\nimg=Decoder:Decode("..c..","..r | |
..',\n[[\n'..s1.. '\n]]\n,\n[[\n'..s2.. '\n]]\n)' | |
saveProjectTab("ImageCode",str) | |
return str | |
end | |
Decoder=class() | |
local | |
Codes="!#&~*+,)/0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ-_`abcdefghijklmnopqrstuvwxyz" | |
-- 1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678 | |
-- 1 2 3 4 5 6 7 8 | |
function Decoder:Decode(cols,rows,cc,dd) | |
local img=image(cols,rows) | |
local n=0 | |
local m=4 | |
local arrCols={} | |
cc = string.gsub(cc,"\n","") | |
dd = string.gsub(dd,"\n","") | |
strCol=Decoder:Decompress(cc) | |
strDat=Decoder:Decompress(dd) | |
--unpack color descriptions | |
for q in string.gmatch(strCol,"[^,]+") do | |
m = m + 1 | |
if m==5 then | |
m=1 | |
n = n + 1 | |
arrCols[n]={} | |
end | |
arrCols[n][m]=q | |
end | |
--if m~=4 then print("faulty column codes, m=",m) end | |
--unpack RLE content | |
local col=1 | |
local row=0 | |
local ind=1 | |
n=0 | |
for q in string.gmatch(strDat, "[^,]+") do | |
if ind==1 then | |
colIndex=tonumber(q) | |
else | |
colCount=tonumber(q) | |
n = n + 1 | |
for u=1,colCount do | |
row = row + 1 | |
if row>rows then col=col+1 row=1 end | |
img:set(col,row, | |
color(arrCols[colIndex][1],arrCols[colIndex][2],arrCols[colIndex][3],arrCols[colIndex][4])) | |
end | |
end | |
ind=3-ind | |
end | |
return img | |
end | |
function Decoder:Decompress(a) | |
local s={} | |
local d1,d2,y,x | |
for i=1,#a do | |
y=string.find(Codes,string.sub(a,i,i))-1 | |
d2=y%9 | |
d1=(y-d2)/9 | |
d2=d2 | |
table.insert(s,d1) | |
table.insert(s,d2) | |
end | |
if s[#s]==7 then table.remove(s,#s) end | |
str=table.concat(s) | |
x=string.gsub(str,"7",",") | |
x=string.gsub(x,"81","7") | |
x=string.gsub(x,"83","9") | |
x=string.gsub(x,"82","8") | |
return x | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# DotMesh | |
DotMesh = class() | |
-- mesh to display the touchable dots of the triangles | |
function DotMesh:init(parent,triangles) | |
self.parent = parent | |
self.triangles = triangles | |
self.texture = self:spot() | |
self:mode( self.parent:mode() ) | |
end | |
function DotMesh:reset(triangles) | |
if triangles then self.triangles = triangles end | |
local triangles = self.triangles | |
local mode = self:mode() | |
if mode == "move" then self:resetPoints(triangles,"summits") | |
elseif mode == "move3" then self:resetPoints(triangles,"center") | |
elseif mode == "moveT" then self:resetPoints(triangles,"center") | |
elseif mode == "moveB" then self:resetPoints(triangles,"center") | |
elseif mode == "split2" then self:resetPoints(triangles,"faces") | |
elseif mode == "split3" then self:resetPoints(triangles,"center") | |
elseif mode == "split4" then self:resetPoints(triangles,"center") | |
elseif mode == "add" then self:resetPoints(triangles,"none") | |
elseif mode == "delete" then self:resetPoints(triangles,"center") | |
elseif mode == "color3" then self:resetPoints(triangles,"center") | |
elseif mode == "pickColor" then self:resetPoints(triangles,"center") | |
elseif mode == "view" then self:resetPoints(triangles,"none") | |
elseif mode == "new" then self:resetPoints(triangles,"none") | |
elseif mode == "newSquare" then self:resetPoints(triangles,"none") | |
else | |
self:resetPoints(triangles,"none") | |
end | |
end | |
function DotMesh:resetPoints(triangles,points) | |
local mode = self:mode() | |
local rect2tri = {} | |
local tri2rect = {} | |
self.rect2tri = rect2tri | |
self.tri2rect = tri2rect | |
local ms = mesh() | |
ms.texture = self.texture | |
self.ms = ms | |
if points == "none" then return end | |
local w,h = self.w,self.h | |
for _,t in pairs(triangles) do | |
if t.touchable then | |
local i = nil | |
local list = t[points] | |
if type(list) == "table" then | |
for _,v in ipairs(list) do | |
k = ms:addRect(v.x,v.y,w,h) | |
if i == nil then i = k end | |
end | |
else | |
local v = list | |
i = ms:addRect(v.x,v.y,w,h) | |
end | |
rect2tri[i] = t | |
tri2rect[t] = i | |
end | |
end | |
collectgarbage() | |
end | |
function DotMesh:triangleMove(t) | |
local i = self.tri2rect[t] | |
local ms = self.ms | |
local w,h = self.w,self.h | |
for k,v in ipairs(t.summits) do | |
ms:setRect(i+k-1, v.x, v.y, w, h) | |
end | |
end | |
function DotMesh:triangleMove3(t) | |
local i = self.tri2rect[t] | |
local ms = self.ms | |
local w,h = self.w,self.h | |
local v = t.center | |
ms:setRect(i, v.x, v.y, w, h) | |
end | |
function DotMesh:mode(str) | |
-- set mode to str; if no arg, simply return current mode | |
if str then | |
self.modeValue = str | |
self:reset() | |
end | |
return self.modeValue | |
end | |
function DotMesh:draw() | |
self.ms:draw() | |
end | |
-- image of the spot | |
function DotMesh:spot() | |
self.radius = 8 | |
local w,h = self.radius*2, self.radius*2 | |
self.w,self.h = w,h | |
local img = image(w,h) | |
setContext(img) | |
resetStyle() | |
background(0,0,0,0) | |
ellipseMode(RADIUS) | |
fill(0, 0, 0, 255) | |
ellipse(self.radius,self.radius,self.radius) | |
fill(255, 0, 0, 255) | |
ellipse(self.radius,self.radius,self.radius-2) | |
setContext() | |
return img | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Drawing | |
Drawing = class() | |
-- manages the triangles, the triMesh and the dotMesh | |
function Drawing:init() | |
-- global positionning | |
self.DisplayModeShift = 0 | |
self.x0, self.y0 = WIDTH/2, HEIGHT/2 | |
-- mode settings | |
self.modeValue = "move" | |
-- current color | |
self:color( color(255, 0, 0, 255) ) | |
-- the triangles | |
self.triangles = Triangles(self) | |
-- a shift to see the edges of the triangles | |
self.shiftMax = 3 | |
self.shift = self.shiftMax | |
self:resetTriangles() | |
-- undo | |
self.undo = Undo(self) | |
-- memory management | |
self.mem = SlotManager(self) | |
-- user menu | |
self.menu = Menu(self) | |
end | |
function Drawing:reset() | |
self.triangles = Triangles(self) | |
self:resetTriangles() | |
end | |
--[[ | |
function Drawing:load( meshTab ) | |
loadstring( readProjectTab( meshTab ) )() | |
self.triangles = Triangles(self,ms0) | |
self:resetTriangles() | |
end | |
--]] | |
-- save load | |
function Drawing:loadSlot( slot ) | |
self.triangles = Triangles(self, self.mem:getMesh(slot)) | |
self:resetTriangles() | |
end | |
function Drawing:save( slot ) | |
self.triMesh:save(slot) | |
end | |
-- undo | |
function Drawing:push() | |
self.undo:push(self.triMesh) | |
end | |
function Drawing:pop() | |
local ms = self.undo:pop() | |
if ms == nil then return end | |
self.triangles = Triangles(self, ms ) | |
self:resetTriangles() | |
end | |
function Drawing:resetTriangles() | |
-- the triangle mesh | |
self.triMesh = TriMesh(self, self.triangles:getList(), self.shift) | |
-- the displayed dots | |
self.dotMesh = DotMesh(self, self.triangles:getList()) | |
end | |
function Drawing:triangleMove(t) | |
self.triMesh:triangleMove(t) | |
self.dotMesh:triangleMove(t) | |
end | |
function Drawing:triangleMove3(t) | |
self.triMesh:triangleMove(t) | |
self.dotMesh:triangleMove3(t) | |
end | |
function Drawing:addBelow(v) | |
self.triangles:addBelow(v) | |
end | |
function Drawing:color(c) | |
if c ~= nil then | |
self.colorValue = c | |
_current_color = c | |
if self.menu then self.menu:changeColorButton( c ) end | |
end | |
return self.colorValue | |
end | |
function Drawing:triangleColor(t) | |
self.triMesh:triangleColor(t) | |
end | |
function Drawing:mode(str) | |
-- set mode to str; if no arg, simply return current mode | |
if str then | |
self.modeValue = str | |
self.dotMesh:mode(str) | |
self.triangles:mode(str) | |
self:resetTriangles() | |
end | |
return self.modeValue | |
end | |
function Drawing:setFullscreen(v) | |
local deltaX = - 275 | |
if v == true then | |
if displayMode() == FULLSCREEN | |
then -- do nothing | |
else | |
displayMode(FULLSCREEN) | |
self.DisplayModeShift = 0 | |
end | |
end | |
if v == false then | |
if displayMode() == STANDARD | |
then -- do nothing | |
else | |
displayMode(STANDARD) | |
self.DisplayModeShift = deltaX | |
end | |
end | |
end | |
function Drawing:draw() | |
local mode = self:mode() | |
if mode == "slots" then | |
self.mem:draw() | |
else | |
translate( self.DisplayModeShift , 0) | |
if self.preDraw then self:preDraw() end | |
if self.shiftMode then | |
translate(self.x0 + self.shiftX, self.y0 + self.shiftY) | |
else | |
translate(self.x0, self.y0) | |
end | |
if self.rotateMode then rotate(self.angle) end | |
if self.scaleMode then scale(self.scaleFactor) end | |
self.triMesh:draw() | |
self.dotMesh:draw() | |
self.triangles:draw() | |
if self.postDraw then self:postDraw() end | |
end | |
resetMatrix() | |
translate( self.DisplayModeShift , 0) | |
self.menu:draw() | |
end | |
function Drawing:touchedToShift(touch) | |
if touch.state == BEGAN then | |
self.shiftMode = true | |
self.shiftX = 0 | |
self.shiftY = 0 | |
self.touchX0 = touch.x | |
self.touchY0 = touch.y | |
elseif touch.state == MOVING then | |
self.shiftX = touch.x - self.touchX0 | |
self.shiftY = touch.y - self.touchY0 | |
else | |
self.shiftMode = false | |
self.shiftX = touch.x - self.touchX0 | |
self.shiftY = touch.y - self.touchY0 | |
self.triangles:shift(self.shiftX, self.shiftY) | |
end | |
end | |
function Drawing:touchedToRotate(touch) | |
if touch.state == BEGAN then | |
self.rotateMode = true | |
self.touchY0 = touch.y | |
self.angle = (touch.y - self.touchY0)/5 | |
elseif touch.state == MOVING then | |
self.angle = (touch.y - self.touchY0)/5 | |
else | |
self.rotateMode = false | |
self.angle = (touch.y - self.touchY0)/5 | |
self.triangles:rotate(self.angle) | |
end | |
end | |
function Drawing:touchedToScale(touch) | |
if touch.state == BEGAN then | |
self.scaleMode = true | |
self.touchY0 = touch.y | |
self.scaleFactor = (touch.y - self.touchY0)/1000 + 1 | |
elseif touch.state == MOVING then | |
self.scaleFactor = (touch.y - self.touchY0)/1000 + 1 | |
else | |
self.scaleMode = false | |
self.triangles:scale(self.scaleFactor) | |
end | |
end | |
function Drawing:touched(touch) | |
-- new touch data corrected for translation | |
local rtouch = {} | |
rtouch.state = touch.state | |
rtouch.deltaX = touch.deltaX | |
rtouch.deltaY = touch.deltaY | |
rtouch.x = touch.x - self.DisplayModeShift | |
rtouch.y = touch.y | |
if self.menu:touched(rtouch) then return end | |
if self:mode() == "shift" then | |
self:touchedToShift(rtouch) | |
elseif self:mode() == "rotate" then | |
self:touchedToRotate(rtouch) | |
elseif self:mode() == "scale" then | |
self:touchedToScale(rtouch) | |
elseif self:mode() == "slots" then | |
self.mem:touched(rtouch) | |
else | |
-- new touch data corrected for mesh translation | |
rtouch.x = rtouch.x - self.x0 | |
rtouch.y = rtouch.y - self.y0 | |
self.triangles:touched(rtouch) | |
end | |
end | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Icon | |
icons = {} | |
icons['move'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
75kkjkukmjkskojk-@tjkI@0jk7@I77@R77@I78I@I7@@R7@@I7<kmjktkmjk)@77skmjq | |
7@771kkjq7@77@@77skkjqI@I78@@I7skljk)@I7-@I7ukmjqI@I7I@0jkkojkkj)77@0j | |
lkkjkkkjlkk)7I@@7@@@7I@0jjkj)7@@g7@@0jlkljqI@R7ukljnkljk)@I7skljjtkljq | |
I@@7skjjkkjjq7@@71kjjq7@R7skjjk)@R7A@@R7<kljkkmjkkljjukljjkmjjkljk7@0j | |
kI@tjk-@g7A7@R7AI@@5 | |
]] | |
) | |
icons['rotate'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
7A:kjjl)@I7A@@-7?kq77=kqI7tkjjq7@R7@@1jokljnkojjkljjkljjkljokljnkkjkkk | |
jnkljj)@I7-@@7@@@7-@I70kljnkojnkljj)@I7g@R7g@I70kljj-@R71kljjR@I72kmjj | |
@@R73kmjj)@R75kmjq7@-76kj-78I@1jkI@tjs@ | |
]] | |
) | |
icons['zoom'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
7Ekl)7@@Bjkkl)7@@I7skljjR@I7@@I7skljjR@I7@@I7skljjR@I7@@I7skljjR@I7@@I | |
7skljjR@I7@@I7skljjR@I7@@I7skljjR@I7@@I7skljjR@I7@@I7skljjR@I7@@3jjR@I | |
7@@3jjR@I7@@3jjR@I7@@I7=kljkkljj7@g7skljkkljj7@g7skljkkljj7@R7ukljkklj | |
j7@-7tkljkkljj7@@77@I7skljkkljj7@@7@@I7@@@7@@I7@@I76kljjkkjkkljkkljjsk | |
njkkljkkljjtkmjkkljkkljjg@g7@@I7@@I76kojkkljkkl)7@@Bjkkl)E | |
]] | |
) | |
icons['undo'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
7tg@77Bkljktknjkg@sjkR@ujk@@1jk)@3jqI@sjkkj-7tkq77@@5jq@@sjkkj-7tkq77g | |
@sjj@@sjokq772kq77g@sjj@@sjokq772kq77g@sjj@@sjokq772kq77g@sjj@@9jj@@9j | |
j@@9jj@@9jjI@8@75kjg787@4k# | |
]] | |
) | |
icons['colors'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-)>-)>-))>->->-))>-7 | |
]] | |
, | |
[[ | |
71kq@7;kj@78@@RItkmjj-@@I4kkjj@@II6kljqI@II8@@I7tkmljtkkjq7@@R@@@I8@@@ | |
7-@@RR@@I8@@@7R@7Rg@@I8@@77I@@Rskkljskkjkkkmq@@@I6kkjkkjmj)@@I6kkjjkjm | |
j7@@I5kkjjkjmj@@@I4kkjjkjmjI@@Iskq@77@7R3kjsjjkjmjI@unokkjjkjmjI@I-2kk | |
jjkjmj@@@-4kkjjkkmj7@@-3kkjkkkmj)@@-4kkjlkjmj)@@-4kjjmkkmq@@I-3kkjnkkm | |
q7@@-3kkjq7@@R-@I-2kkjq@@IRI@I-2kljqI@IR@@@-2kljj@@--1kkjj-@R-tkmjjtkj | |
@7;kq@3 | |
]] | |
) | |
icons['fill'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7hI@g7=kklnkqI75kklj-@@73kjljskkjj@@7I8@@@71kjljukkjj)@7I0kq7II@770kjl | |
q7@I7R@RI@@770kjlokkjnkkjkkmjj)@7IR@I7-@R7@@I71knjokkjkkkjkkljk)@@7R@@ | |
7@@I78@@@7g@@7@@I76kljq7@@7@@I74kkjj)@@7I@@72kkjj@@@7@@I70kkjjR@@7@@I7 | |
tkkjjg@@77@I7skkjjtkmjq7@I78@@I7ukljjg@I71kljjR@I73kljjI@@75kljj7@@787 | |
@I7ukkjjukljq7@@7:kljnkkjkI@R7@@@7>kojktkljI | |
]] | |
) | |
icons['picker'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
76g@-7A@@-7AI@R7<kjjnkmjk@@@7-@R7:kljnkmjk)@R7-@R79kmjnkmjokmjj)@R7-@R | |
7I@sjj)@R7-@R77@tjj7@R7-@g7@@R72kmjnkmjmkljjI@R7-@@7-@I74kmjlkkjnkmjj- | |
@R77@@7-@R787@g7R@g787@R7R@@77@-787@I7I@@7I@-75kljlkljmkmjjR@I7I@I7g@R | |
73kljkkmjq7@I73kj)7g@I73kj77g@@74knjkkmjmkljj-@I7R@-77@R7<kq@7>knl | |
]] | |
) | |
icons['M1'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7fkktjmkktjmkkljjk7@I7-@@I@78I@I7g@@II787@I7skkjjlljj-@I7tkkjklljjI@I7 | |
ukkjllljj7@I70kkjmlljqI@I71kkjnlljq7@I72kkjolljnkljjI@@7slljlkljjR@@7t | |
lljjkljj-@@7ullkkjjg@@70lljjskkjqI@@II76kkjq@@I77II75kkjq7@I7III74kkjo | |
kljnlljjI@@7-@I7slljj@@@7R@I7ulljj7@@7I@I71lljj)@@7@@I73lljqI@@77@I75l | |
ljq@@-787II7skmjjtlljq7@I70lj@7skjlkR7sljISI | |
]] | |
) | |
icons['M3'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)-)>->--)>-7 | |
]] | |
, | |
[[ | |
7utkmjktkq@7=kjI78I@@7-@0jj-@@70kj)70kkjj-@ujokkjk)@-7-@@7:kmjnkkjjllj | |
j-@R7skkjjlq@7tkmjqI@@77I2jkkmjj7@@77I@7gIujj@@@77I@7ukjlj)7skkjjlkjq7 | |
@R7IIujmkkjjlkjnkmjj7IR7I@@77I@7R@R74lkjlkkjjlkjkkmjjRIR7I@@77I@@I74ln | |
jnkkjjlkkjjjRI-7skllkjj@I-70kllkjqII-73kjjjkjlkjq@IR78@I@7-I-79lkjklnj | |
kIIsjk-IR7A@I7u) | |
]] | |
) | |
icons['S2'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7fkljkuknjkskklkkljk-@@II@R7<kkjjlkjjknjk7@@77II7@@-78I@@7@I@7R@R78@@@ | |
7@II7-@-75kkjllljokmjjR@@7III7tkmjj@@@7RII7tknjj)@@7-I@70knjq@@@7-II71 | |
knjokkjolkjjI@R7-@@7gII73knjlkkjq7II73kmjlkkjq@I@71kojlkkjq@II7tkojnkk | |
jqII@7-@sjq7@@7ulljkkojj)@@70llknjj@@@70llkljjR@@7tkllkjjskkjoknjjukkj | |
mknjk7@@77@g7<kq77>kmjktkko) | |
]] | |
) | |
icons['S3'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7fkljkuknjkskklkkljk-@@II@R7<kkjjlkjjknjk7@@77II7@@-78I@@7@I@7R@R78@@@ | |
7@II7-@-75kkjllljokmjjR@@7III7tkmjj@@@7RII7tknjj)@@7-I@70knjq@@@7-II71 | |
knjokkjolj)7-@R7-@@7-I8I@I7I@@7-II7tlqI@@7I@@7RII74klljkkjlkkjmlljj@@g | |
7-@@7RI@70kq77skkjllljq@@g70kkjklljq7@g72kkjklkjokojjR@@77II7R@-787@@7 | |
7I@7I@-78I@@II77@-7:kklkknjkI@@I7@R7>kmjktkko) | |
]] | |
) | |
icons['S4'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7fkljkuknjkskq77>kkjkknjkI@@7R@-7:kkjoknjjukkjq@@R78@@@70lkkljj-@@70ll | |
kljjR@@7tlnjjkmjj@@@7gIR77I@7@@-70kkjmlmjllkjmknjq@@@7@IR7-I@7g@-7g@@I | |
R7slkjq@@R7-@7II7ulkjqI@-7I@7II7ulkjj)@R7I@@IR7slkjq@@g7I@@7@II7gI@7g@ | |
g7-@@7RII7RI@7I@sjq7@@7-II7II@77@g70kkjq7II77I@@-72kkjq@I-@I74kkjq@@g7 | |
6kkjoknjjukkjmknjk7@@7@@-7<kq77>kmjktkko) | |
]] | |
) | |
icons['T'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
7uukkjl)@R7A@@g7?kkjjknjkR@@7R@I7<kkjnkmjk7@@7skmjjukkjqI@R787@@70kmjj | |
g@@72kmjjR@@74kmjj@@@76kljj7@@78@@I7ukkjjukmjq7@@7:kmjnkkjk7@-7R@@78I@ | |
sjmkkjjskojq7@@74kojj)@@72kojj@@@70knjj-@@7tkojjg@@7-@g78I@@7I@g7:kq@7 | |
=knjkskmjktkjo) | |
]] | |
) | |
icons['S'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-7))>-7 | |
]] | |
, | |
[[ | |
7fkktjmkktjmkktjmknjk)@I7R@g78I@I7R@I77@I78@@I7R@I7@@I787@I7R@I7I@I76k | |
ljmkljmkljj-@I7R@I7-@I74kljmkljokljjI@I7R@I7skljj@@I7R@I7tkljj7@I7R@I7 | |
ukljj)@I7R@I70kljqI@I7R@I71kljq@@I7R@I72kljq7@I7R@I73kljokljmkljjR@I7- | |
@I7R@I75kljmkljmkljjg@I7I@I7R@I787@I7@@I7R@I78@@I77@I7R@I78I@g7R@I79kn | |
jmkktjmkktjmkktog | |
]] | |
) | |
icons['A'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->7))>-7 | |
]] | |
, | |
[[ | |
7fkktjmkktjmkkjk@@II77R@@7:kllkjmkkjk)@I77I@7R@@78I@I77I@7-@@78@@I7@I@ | |
7-@@787@I7@I@7g@@76kljllkjokkjj-@I7II@7skkjjR@I7III7skkjjI@I7RI@7tkkjj | |
@@I7RI@7ukkjj7@I7-I@7ukkjj)@I7-I@70kkjqI@I7gI@70kkjq@@I7slkjj)@@7skljq | |
7I@71kkjokljq7II71kkjnkljq@I@72kkjmkljq@I@73kkjlkljqII@73kkjkkljqII@74 | |
kkjjkljj)I@74knjj)I@75kmjolq775kklj-75kjlqItR | |
]] | |
) | |
icons['above'] = Decoder:Decode(32,32, | |
[[ | |
>->->->->-))>-)))>-7 | |
]] | |
, | |
[[ | |
7Bkjjotlkjl)I-7A7ItjkRI@77Itjk7I@7RItjjtlkjq7IsjjgI@70lq773lkjlkkjq@Is | |
jj)I@7I@R7tlq77tlkjlknjj)Isjnlkjlkojj@I-7RI@7I@tjq@Ig7-I@7I@ujmlq77slk | |
jlkj)77Ig70lkjlkj@I@73lkjlkjI74lkjlkjR73lkjlkjg71lnkjsjj)I-@8@7ulljkkk | |
)7sljjmkk771kk78G | |
]] | |
) | |
icons['below'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7uukkjl)@-7A7@tjkR@@77@tjk7@@7R@tjjtkkjq7@sjjg@@70kq773kkjmljjq@@sjj)@ | |
@7RI777I77tkq77tkkjmljjlljjqI@sjnkkjqII771knjmkkjlljjq7I@7g@g7-@@7II77 | |
2kq77skkjjI@sjj)@@7II77skojjI@@7II77R@gI-71kkjokolqI7ukkjlkq7I2jq@@ulj | |
sjoknlk@7-@I7@I:jokjjmljtjjRI4jjtlj77:lq77>lljktlkqA7 | |
]] | |
) | |
icons['save'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7Ekl)7@@Bjkkl)7@@Bjkkk@I7@sjkkkjj@@slkkq77@@@72kollkq77@@@72knlmkq77@@ | |
@72kmlmkq@7@@@72kllmkqI7@@@72kkljR7@@@72kjlj-7@@@72ljg7@@@71ljsjkkkjj) | |
I8@7@@@77@uljtjkkkjjkj)I877@@@77@0jjljg7@@@77@0jjkjlj-7@@@72kkljR7@@@7 | |
2kllmkqI7@@@72kmlmkq@7@@8IIR@sjkkk)II@sjkkk7I@@sjlkk7I7@sjmkktjnkksjok | |
kg7skk-E | |
]] | |
) | |
icons['floppy'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
7Ekl)7@@Bjkkl)7@@Bjkkl)7@@@72kjg7@@@72kjg7@@@72kjg7@@@72kjg7@@@72kjg7@ | |
@@72kjg7@@@72kjg7@@@72kjg7@@@72kjg7@@@72kjg7@@@77@0jjkjg7@@@77@0jjkjg7 | |
@@@77@0jjkjg7@@@77@0jjkjg7@@@72kjg7@@@72kjg7@@@72kjg7@@Bjkkl)7@@Bjlkku | |
jmkktjnkksjokkg7skk-E | |
]] | |
) | |
icons['load'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7Ekl)7@@Bjkkl)7@@Bjkkk7I7@tjkkkjj@@slkkq77@@@72kq7II@g7@@@72kq7IR@-7@@ | |
@72kq@IR@R7@@@72kqIIR@I7@@@70ljg@@7@@@70ljskjjkkkjj)I8@7@@@70ljujjkkjj | |
)I8I77@@77@uljtjkkkjjkqII87@77@@@77@uljg@@7@@@77@0jjkqIIR@I7@@@72kq@IR | |
@R7@@@72kq7IR@-7@@@72kq7II@g7@@:lkkq77@@:ljkq@7@@Bjlkkujmkktjnkksjokkg | |
7skk-E | |
]] | |
) | |
icons['mesh'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-88788788@>->-))>-7 | |
]] | |
, | |
[[ | |
7_@@I7<kqI7I@775kjI7I@@70kqIIg@@7I@I7g@tlj)@@7I@R77@5lq@@@7@@@I7@-RR@R | |
R@@RIg@@7@@@I@@7Rg@@I@@@RI@RI-@@77@@I@@@R-@@II@7Rg@III@@77@@II@@RR@7IR | |
@@Rskllkkjjjkklmkkmkkklnkkmq@@R77@@IR@@R@@7IskkmqI@@77@@I-@RIsklmokmjj | |
kklnkmlq@@IRR@-77@@Ig@IIukkmkklmkkkjjkklnkllj)@-RR@@77@@IR@8@R-@@77@@I | |
I@gR0kmmmkkjjkklkkklkkjmjkkmq@@IR-@I77@@I7@@II@7R@@@Rskmmmkkjkkmlmkjml | |
klmnkkljkkmlkkjkkllnkjmmkkmnkklkkkmkkkjkkklokjmnklmlkkllkkmjkkjkkklokj | |
mokkmlkjlnkmjlkllmkjmq7@@R7@@Ig@I7R@III@7Rsknlq7@@7g@@I@@7Rukllq7@77tk | |
mmqI@1jj)@@R0kkjjukj@O | |
]] | |
) | |
icons['load'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7Ekl)7@@Bjkkl)7@@Bjkkk7I@@sjkkkjj@@sllkojkkkjj@@slmknjkkkjj@@slnkmjkkk | |
jqII6kljkkkjqII2jjlmkkjkkkjqII2jklmkjjkkkjqIII72lmjkkkjqIII73lmjjkkjqI | |
II74lljjkkjqIII75lkjjkkjjkq@II75lkjjkkjjkq@II74lljjkkjjkq@II73lmjjkkjj | |
kq@II72lmjkkkjqII2jklmkjjkkkjqII2jjlmkkjkkkjqII6kljkkk7I-@R7@@:lmknjkk | |
k7II@g7I@9lkkq77R@A@7-@A77g@?jq7@>lI | |
]] | |
) | |
icons['save'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>->-))>-7 | |
]] | |
, | |
[[ | |
7Ekl)7@@Bjkkl)7@@BjkkjulkkqI7@@@72kmllkqI7@@@72kllmkqI7@@@72kklnkqI7@@ | |
@72kjlokqI7@@@72lmjjlj@77@@71lmjklj@77@@70lmjllj@77@@7ulmjjRI@77@@7tlm | |
jj-I@77@@7slmjjgI@77@@77@gIR76lkjjkkjjkq7IR75lkjjkkjjkq@IR74lkjjkkjjkq | |
IIR7II2jjkkjj7IR7@I2jjkkjj@IR77I2jjkkjj@@7Ig@ujkkjgI-@ujkkjslmkqI7@@8@ | |
II@ujlkjtlkkqI7R@A@7-@A77g@?jq7@>lI | |
]] | |
) | |
icons['reset'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-9)8J@97>-7 | |
]] | |
, | |
[[ | |
7;kmjktkojjukqII@@@74kjRI@@@71kq@Iskklkkmjkkj7I1kklkkmjkkq@I4kklmkkjkk | |
klk)@@IR@I77@@IukjIIR@I77@=lnkkjjkj7I1kklnkoljukklnknlk)@@I-@-I9kklokm | |
lk)@@Ig@?lokkgIg@RI9kklokmlk)@@Ig@RI9kklnkoljukklnkjRI1kklnkkslnkkjjkk | |
lqI@3lmkljjkklk)@@IR@I77@uljI@@IR@@7@@1lj7@@I@@R70kq@Ig@@I@@R73kjII@@@ | |
78I@ulkkkjkg@g7?kmo | |
]] | |
) | |
icons['delete'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-9)8J@97>-7 | |
]] | |
, | |
[[ | |
7;kmjktkojjukqII@@@74kjRI@@@71kq@Iskklkkmjkkj7I1kklkkmjkkq@I4kklmkkjkk | |
klk)@@IR@I77@@IukjIIR@I77@=lnkkjjkj7I1kklnkoljukklnknlk)@@I-@-I9kklokm | |
lk)@@Ig@?lokkgIg@RI9kklokmlk)@@Ig@RI9kklnkoljukklnkjRI1kklnkkslnkkjjkk | |
lqI@3lmkljjkklk)@@IR@I77@uljI@@IR@@7@@1lj7@@I@@R70kq@Ig@@I@@R73kjII@@@ | |
78I@ulkkkjkg@g7?kmo | |
]] | |
) | |
icons['lines'] = Decoder:Decode(32,32, | |
[[ | |
>->->->-)))>-7 | |
]] | |
, | |
[[ | |
77@@7Bkkjjkjjktkkjjkljkg@@77@R7>kkjkkljkkkjl)@R7A@@R78I@@7ukkjkkkjj-@@ | |
73kmjjI@@73kmjl)@@7@@770kkjjukljq@@@78I@R7skkjk)@I7@@77Ckljkukmjjkkjkt | |
kjjjkkjl)@@7<kljktkmjk-@77@@@7g@@787@R7ukkjjg@R7>kkjkkjjj@@@71knjjR@@7 | |
1kljjg@@7skljjkjjk-@-7A7@R7<kmjktkmjkg@7B | |
]] | |
) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# InfoItem | |
InfoItem = class(XFC.MenuItem) | |
XFC.itemClass["info"] = InfoItem | |
function InfoItem:init(data) | |
-- this item is a button to show / hide all item txt | |
-- default icon (unless other required) | |
if data.iconLetter == nil then data.iconLetter = 'ℹ' end | |
if data.tfont == nil then data.tfont = "AppleColorEmoji" end | |
data.fsize = 32 | |
self:setup(data) | |
if self.txt == "" then self.txt = self.parent.txt end | |
self.callback = self.toggleAllInfos | |
end | |
function InfoItem:toggleAllInfos() | |
if self.displayTxt then self:hideAllTxt() else self:showAllTxt() end | |
if self.childrenVisible then self:hideChildren() else self:showChildren() end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Main | |
--Project: 2d mesh drawer | |
--Version: Alpha 2.0 | |
--Comments: blabla | |
-- 2d mesh drawer | |
displayMode(FULLSCREEN) | |
-- Use this function to perform your initial setup | |
function setup() | |
drawing = Drawing() | |
if FPS then fps = FPS() end | |
end | |
-- This function gets called once every frame | |
function draw() | |
background(41, 41, 41, 255) | |
drawing:draw() | |
if fps then resetMatrix() fps:draw() end | |
end | |
function touched(touch) | |
-- if show then ms:touched(touch) end | |
drawing:touched(touch) | |
end | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh1 | |
ms1 = mesh() | |
ms1.vertices = { | |
vec3(-219.571686, 104.566360, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-218.737442, 179.694946, 0.000000), | |
vec3(189.411102, 148.075897, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(151.351685, 69.740204, 0.000000), | |
vec3(-209.565704, -53.979797, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-211.506454, -126.866577, 0.000000), | |
vec3(189.411102, 148.075897, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(145.082336, 259.125244, 0.000000), | |
vec3(128.632812, -138.636505, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(174.067062, -69.819870, 0.000000), | |
vec3(-144.361420, 223.765411, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-53.058029, 168.018738, 0.000000), | |
vec3(53.790123, 282.314301, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-22.603785, 211.152710, 0.000000), | |
vec3(-144.361420, 223.765411, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-218.737442, 179.694946, 0.000000), | |
vec3(53.790123, 282.314301, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(145.082336, 259.125244, 0.000000), | |
vec3(-219.571686, 104.566360, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-183.916550, 28.713135, 0.000000), | |
vec3(-110.686813, -167.099045, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-41.955685, -142.319366, 0.000000), | |
vec3(10.966793, -234.629791, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(46.610764, -277.925354, 0.000000), | |
vec3(186.087067, -11.027695, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(133.181335, 32.446251, 0.000000), | |
vec3(186.087067, -11.027695, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(174.067062, -69.819870, 0.000000), | |
vec3(128.632812, -138.636505, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(47.842583, -108.256622, 0.000000), | |
vec3(-110.686813, -167.099045, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-211.506454, -126.866577, 0.000000), | |
vec3(-209.565704, -53.979797, 0.000000), | |
vec3(-21.249115, 22.687412, 0.000000), | |
vec3(-166.706787, 1.075752, 0.000000), | |
} | |
ms1.colors = { | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(45, 143, 28, 255), | |
color(45, 143, 28, 255), | |
color(45, 143, 28, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(38, 255, 0, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
color(42, 210, 13, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh2 | |
ms2 = mesh() | |
ms2.vertices = { | |
vec3(246.000000, -248.000000, 0.000000), | |
vec3(-341.333344, -256.000000, 0.000000), | |
vec3(-341.333344, 256.000000, 0.000000), | |
vec3(246.000000, -248.000000, 0.000000), | |
vec3(251.000000, 257.000000, 0.000000), | |
vec3(-341.333344, 256.000000, 0.000000), | |
vec3(-219.000000, 206.000000, 0.000000), | |
vec3(-40.000000, 56.000000, 0.000000), | |
vec3(156.000000, 206.000000, 0.000000), | |
vec3(-280.000000, -159.000000, 0.000000), | |
vec3(-111.000000, -13.000000, 0.000000), | |
vec3(-289.000000, 151.000000, 0.000000), | |
vec3(23.000000, 14.000000, 0.000000), | |
vec3(198.000000, -143.000000, 0.000000), | |
vec3(191.000000, 178.000000, 0.000000), | |
vec3(-241.000000, -208.000000, 0.000000), | |
vec3(154.000000, -206.000000, 0.000000), | |
vec3(-38.000000, -56.000000, 0.000000), | |
} | |
ms2.colors = { | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh3 | |
ms3 = mesh() | |
ms3.vertices = { | |
vec3(-102.441963, -116.527771, 0.000000), | |
vec3(-150.834610, 142.056366, 0.000000), | |
vec3(43.103443, 178.350845, 0.000000), | |
vec3(-73.033836, -164.944305, 0.000000), | |
vec3(120.904221, -128.649796, 0.000000), | |
vec3(40.127319, -54.553272, 0.000000), | |
vec3(134.981216, -100.581345, 0.000000), | |
vec3(86.588562, 158.002747, 0.000000), | |
vec3(54.204308, -26.484818, 0.000000), | |
vec3(62.015175, 153.403961, 0.000000), | |
vec3(-83.530228, -141.474640, 0.000000), | |
vec3(29.630924, -31.083603, 0.000000), | |
} | |
ms3.colors = { | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
color(150, 84, 84, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# mesh4 | |
ms4 = mesh() | |
ms4.vertices = { | |
vec3(341.333344, -256.000000, 0.000000), | |
vec3(-341.333344, -256.000000, 0.000000), | |
vec3(-341.333344, 256.000000, 0.000000), | |
vec3(341.333344, -256.000000, 0.000000), | |
vec3(341.333344, 256.000000, 0.000000), | |
vec3(-341.333344, 256.000000, 0.000000), | |
} | |
ms4.colors = { | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh5 | |
ms5 = mesh() | |
ms5.vertices = { | |
vec3(-126.000000, -42.000000, 0.000000), | |
vec3(-100.000000, 293.000000, 0.000000), | |
vec3(-77.000000, 339.000000, 0.000000), | |
vec3(-126.000000, -42.000000, 0.000000), | |
vec3(-82.000000, -54.000000, 0.000000), | |
vec3(-77.000000, 339.000000, 0.000000), | |
vec3(-33.000000, -241.000000, 0.000000), | |
vec3(-315.000000, -134.000000, 0.000000), | |
vec3(-14.000000, -110.000000, 0.000000), | |
vec3(-14.000000, -110.000000, 0.000000), | |
vec3(377.000000, -52.000000, 0.000000), | |
vec3(-358.000000, -30.000000, 0.000000), | |
vec3(360.000000, -160.000000, 0.000000), | |
vec3(-33.000000, -241.000000, 0.000000), | |
vec3(-14.000000, -110.000000, 0.000000), | |
vec3(-198.000000, -215.000000, 0.000000), | |
vec3(-315.000000, -134.000000, 0.000000), | |
vec3(-33.000000, -241.000000, 0.000000), | |
vec3(-358.000000, -30.000000, 0.000000), | |
vec3(-14.000000, -110.000000, 0.000000), | |
vec3(-315.000000, -134.000000, 0.000000), | |
vec3(-14.000000, -110.000000, 0.000000), | |
vec3(377.000000, -52.000000, 0.000000), | |
vec3(360.000000, -160.000000, 0.000000), | |
vec3(-38.000000, 228.000000, 0.000000), | |
vec3(303.000000, -31.000000, 0.000000), | |
vec3(-75.000000, 337.000000, 0.000000), | |
vec3(-46.000000, 53.000000, 0.000000), | |
vec3(303.000000, -31.000000, 0.000000), | |
vec3(-79.000000, -4.000000, 0.000000), | |
vec3(-38.000000, 228.000000, 0.000000), | |
vec3(303.000000, -31.000000, 0.000000), | |
vec3(-34.000000, 149.000000, 0.000000), | |
vec3(-46.000000, 53.000000, 0.000000), | |
vec3(303.000000, -31.000000, 0.000000), | |
vec3(-34.000000, 149.000000, 0.000000), | |
vec3(-366.000000, 7.000000, 0.000000), | |
vec3(-238.000000, 16.000000, 0.000000), | |
vec3(-113.000000, 288.000000, 0.000000), | |
} | |
ms5.colors = { | |
color(97, 72, 31, 255), | |
color(97, 72, 31, 255), | |
color(97, 72, 31, 255), | |
color(97, 72, 31, 255), | |
color(97, 72, 31, 255), | |
color(97, 72, 31, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
color(255, 255, 255, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh6 | |
ms6 = mesh() | |
ms6.vertices = { | |
vec3(341.333344, -256.000000, 0.000000), | |
vec3(-341.333344, -256.000000, 0.000000), | |
vec3(-341.333344, 256.000000, 0.000000), | |
vec3(341.333344, -256.000000, 0.000000), | |
vec3(341.333344, 256.000000, 0.000000), | |
vec3(-341.333344, 256.000000, 0.000000), | |
vec3(-41.000000, 11.000000, 0.000000), | |
vec3(91.000000, -228.000000, 0.000000), | |
vec3(-79.000000, 220.000000, 0.000000), | |
vec3(48.000000, 13.000000, 0.000000), | |
vec3(87.000000, 220.000000, 0.000000), | |
vec3(-79.000000, 220.000000, 0.000000), | |
vec3(10.000000, -36.000000, 0.000000), | |
vec3(-253.000000, -82.000000, 0.000000), | |
vec3(-255.000000, 82.000000, 0.000000), | |
vec3(7.000000, 47.000000, 0.000000), | |
vec3(264.000000, -83.000000, 0.000000), | |
vec3(-255.000000, 82.000000, 0.000000), | |
vec3(7.000000, 47.000000, 0.000000), | |
vec3(264.000000, -83.000000, 0.000000), | |
vec3(260.000000, 84.000000, 0.000000), | |
vec3(10.000000, -36.000000, 0.000000), | |
vec3(264.000000, -83.000000, 0.000000), | |
vec3(-255.000000, 82.000000, 0.000000), | |
vec3(-41.000000, 11.000000, 0.000000), | |
vec3(91.000000, -228.000000, 0.000000), | |
vec3(-69.000000, -226.000000, 0.000000), | |
vec3(48.000000, 13.000000, 0.000000), | |
vec3(91.000000, -228.000000, 0.000000), | |
vec3(-79.000000, 220.000000, 0.000000), | |
} | |
ms6.colors = { | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(200, 200, 200, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
color(255, 0, 0, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh7 | |
ms7 = mesh() | |
ms7.vertices = { | |
vec3(-38.481995, -156.420944, 0.000000), | |
vec3(-81.621475, -34.791557, 0.000000), | |
vec3(59.209717, -152.452118, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(26.855103, 95.599991, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(193.893143, -92.759102, 0.000000), | |
vec3(142.964584, -87.965828, 0.000000), | |
vec3(188.029022, -144.063843, 0.000000), | |
vec3(254.535706, 171.094086, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(284.493744, 82.418472, 0.000000), | |
vec3(-73.803696, 27.295807, 0.000000), | |
vec3(26.855103, 95.599991, 0.000000), | |
vec3(-25.870895, 213.035248, 0.000000), | |
vec3(110.000000, -271.000000, 0.000000), | |
vec3(59.209717, -152.452118, 0.000000), | |
vec3(138.298782, -138.072235, 0.000000), | |
vec3(-92.976791, -236.334320, 0.000000), | |
vec3(-155.346710, -28.574684, 0.000000), | |
vec3(52.000000, -247.000000, 0.000000), | |
vec3(-143.306244, 101.591568, 0.000000), | |
vec3(-7.896149, -41.008362, 0.000000), | |
vec3(-155.346710, -28.574684, 0.000000), | |
vec3(81.977791, 232.208313, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(170.653397, 222.621826, 0.000000), | |
vec3(262.923981, 21.304199, 0.000000), | |
vec3(279.700439, -33.818474, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(-143.306244, 101.591568, 0.000000), | |
vec3(-73.803696, 27.295807, 0.000000), | |
vec3(-25.870895, 213.035248, 0.000000), | |
vec3(-7.896149, -41.008362, 0.000000), | |
vec3(26.855103, 95.599991, 0.000000), | |
vec3(-73.803696, 27.295807, 0.000000), | |
vec3(81.977791, 232.208313, 0.000000), | |
vec3(-25.870895, 213.035248, 0.000000), | |
vec3(26.855103, 95.599991, 0.000000), | |
vec3(214.264572, -35.239784, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(81.977791, 232.208313, 0.000000), | |
vec3(26.855103, 95.599991, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(-7.896149, -41.008362, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(26.855103, 95.599991, 0.000000), | |
vec3(-25.870895, 213.035248, 0.000000), | |
vec3(-143.306244, 101.591568, 0.000000), | |
vec3(-57.027252, 411.956116, 0.000000), | |
vec3(170.653397, 222.621826, 0.000000), | |
vec3(81.977791, 232.208313, 0.000000), | |
vec3(149.083649, 377.204956, 0.000000), | |
vec3(245.000000, -184.000000, 0.000000), | |
vec3(257.000000, -260.000000, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(-7.896149, -41.008362, 0.000000), | |
vec3(137.100464, -139.270569, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(197.000000, -279.000000, 0.000000), | |
vec3(122.000000, -212.000000, 0.000000), | |
vec3(191.862946, -238.358765, 0.000000), | |
vec3(52.000000, -247.000000, 0.000000), | |
vec3(59.209717, -152.452118, 0.000000), | |
vec3(110.000000, -271.000000, 0.000000), | |
vec3(-7.896149, -41.008362, 0.000000), | |
vec3(138.298782, -138.072235, 0.000000), | |
vec3(59.209717, -152.452118, 0.000000), | |
vec3(254.535706, 171.094086, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(170.653397, 222.621826, 0.000000), | |
vec3(261.384003, 21.304199, 0.000000), | |
vec3(282.953796, 82.418472, 0.000000), | |
vec3(202.666367, 27.295807, 0.000000), | |
vec3(52.000000, -247.000000, 0.000000), | |
vec3(-38.481995, -156.420944, 0.000000), | |
vec3(59.209717, -152.452118, 0.000000), | |
vec3(-155.346710, -28.574684, 0.000000), | |
vec3(-81.621475, -34.791557, 0.000000), | |
vec3(-38.481995, -156.420944, 0.000000), | |
vec3(-7.896149, -41.008362, 0.000000), | |
vec3(59.209717, -152.452118, 0.000000), | |
vec3(-81.621475, -34.791557, 0.000000), | |
vec3(92.069626, 32.548218, 0.000000), | |
vec3(181.284668, 28.171631, 0.000000), | |
vec3(86.683060, 68.234238, 0.000000), | |
vec3(211.957840, 28.171677, 0.000000), | |
vec3(260.399902, 35.241516, 0.000000), | |
vec3(274.068787, 71.290009, 0.000000), | |
vec3(188.029022, -144.063843, 0.000000), | |
vec3(228.000000, -124.000000, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(191.862946, -238.358765, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(170.330765, -161.158051, 0.000000), | |
vec3(193.893143, -92.759102, 0.000000), | |
vec3(210.244064, -82.381813, 0.000000), | |
vec3(185.662140, -54.886658, 0.000000), | |
vec3(210.244064, -82.381813, 0.000000), | |
vec3(279.700439, -33.818474, 0.000000), | |
vec3(222.495575, -73.112228, 0.000000), | |
vec3(228.000000, -124.000000, 0.000000), | |
vec3(193.893143, -92.759102, 0.000000), | |
vec3(188.029022, -144.063843, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(142.964584, -87.965828, 0.000000), | |
vec3(193.893143, -92.759102, 0.000000), | |
vec3(137.100464, -139.270569, 0.000000), | |
vec3(188.029022, -144.063843, 0.000000), | |
vec3(142.964584, -87.965828, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(193.893143, -92.759102, 0.000000), | |
vec3(185.662140, -54.886658, 0.000000), | |
vec3(228.000000, -124.000000, 0.000000), | |
vec3(210.244064, -82.381813, 0.000000), | |
vec3(193.893143, -92.759102, 0.000000), | |
vec3(222.495575, -73.112228, 0.000000), | |
vec3(185.662140, -54.886658, 0.000000), | |
vec3(210.244064, -82.381813, 0.000000), | |
vec3(210.244064, -82.381813, 0.000000), | |
vec3(279.700439, -33.818474, 0.000000), | |
vec3(228.000000, -124.000000, 0.000000), | |
vec3(188.029022, -144.063843, 0.000000), | |
vec3(137.100464, -139.270569, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(257.000000, -260.000000, 0.000000), | |
vec3(197.000000, -279.000000, 0.000000), | |
vec3(191.862946, -238.358765, 0.000000), | |
vec3(110.000000, -271.000000, 0.000000), | |
vec3(122.000000, -212.000000, 0.000000), | |
vec3(197.000000, -279.000000, 0.000000), | |
vec3(138.298782, -138.072235, 0.000000), | |
vec3(191.862946, -238.358765, 0.000000), | |
vec3(122.000000, -212.000000, 0.000000), | |
vec3(137.100464, -139.270569, 0.000000), | |
vec3(191.862946, -238.358765, 0.000000), | |
vec3(170.330765, -161.158051, 0.000000), | |
vec3(257.000000, -260.000000, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(191.862946, -238.358765, 0.000000), | |
vec3(202.209137, -190.798279, 0.000000), | |
vec3(170.330765, -161.158051, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(245.000000, -184.000000, 0.000000), | |
vec3(228.000000, -124.000000, 0.000000), | |
vec3(189.000000, -189.000000, 0.000000), | |
vec3(214.264572, -35.239784, 0.000000), | |
vec3(204.206314, 27.295807, 0.000000), | |
vec3(279.700439, -33.818474, 0.000000), | |
vec3(214.264572, -35.239784, 0.000000), | |
vec3(279.700439, -33.818474, 0.000000), | |
vec3(222.495575, -73.112228, 0.000000), | |
vec3(214.264572, -35.239784, 0.000000), | |
vec3(148.828705, -36.661072, 0.000000), | |
vec3(222.495575, -73.112228, 0.000000), | |
vec3(183.985321, -90.784607, 0.000000), | |
vec3(271.000000, -100.000000, 0.000000), | |
vec3(207.357361, 48.302780, 0.000000), | |
} | |
ms7.colors = { | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh8 | |
ms8 = mesh() | |
ms8.vertices = { | |
vec3(-105.369003, -193.742996, 0.000000), | |
vec3(-181.279938, -100.716736, 0.000000), | |
vec3(-28.795603, -228.113205, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(-32.024002, 29.630581, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(117.032372, -163.480835, 0.000000), | |
vec3(61.889671, -158.290955, 0.000000), | |
vec3(110.682983, -219.030838, 0.000000), | |
vec3(182.692825, 122.205139, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(215.129776, 26.191973, 0.000000), | |
vec3(-172.815323, -33.491898, 0.000000), | |
vec3(-32.024002, 29.630581, 0.000000), | |
vec3(-120.916267, 167.616699, 0.000000), | |
vec3(37.695450, -322.072327, 0.000000), | |
vec3(-28.795603, -228.113205, 0.000000), | |
vec3(56.837776, -212.543457, 0.000000), | |
vec3(-179.014008, -200.541000, 0.000000), | |
vec3(-105.369003, -193.742996, 0.000000), | |
vec3(-87.241005, -353.496002, 0.000000), | |
vec3(-248.068878, 46.951542, 0.000000), | |
vec3(-101.454140, -107.447960, 0.000000), | |
vec3(-243.595001, -91.773003, 0.000000), | |
vec3(-4.143560, 188.376328, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(91.869637, 177.996567, 0.000000), | |
vec3(191.775238, -39.979279, 0.000000), | |
vec3(209.939835, -99.663124, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(-248.068878, 46.951542, 0.000000), | |
vec3(-172.815323, -33.491898, 0.000000), | |
vec3(-120.916267, 167.616699, 0.000000), | |
vec3(-101.454140, -107.447960, 0.000000), | |
vec3(-32.024002, 29.630581, 0.000000), | |
vec3(-172.815323, -33.491898, 0.000000), | |
vec3(-4.143560, 188.376328, 0.000000), | |
vec3(-120.916267, 167.616699, 0.000000), | |
vec3(-32.024002, 29.630581, 0.000000), | |
vec3(139.089417, -101.202057, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(-4.143560, 188.376328, 0.000000), | |
vec3(-32.024002, 29.630581, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(-101.454140, -107.447960, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(-32.024002, 29.630581, 0.000000), | |
vec3(-120.916267, 167.616699, 0.000000), | |
vec3(-248.068878, 46.951542, 0.000000), | |
vec3(-154.650650, 382.997528, 0.000000), | |
vec3(91.869637, 177.996567, 0.000000), | |
vec3(-4.143560, 188.376328, 0.000000), | |
vec3(68.515053, 345.370758, 0.000000), | |
vec3(172.368103, -262.271576, 0.000000), | |
vec3(155.697189, -314.698181, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(-101.454140, -107.447960, 0.000000), | |
vec3(55.540321, -213.840988, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(101.804382, -353.742950, 0.000000), | |
vec3(37.695450, -322.072327, 0.000000), | |
vec3(88.434647, -296.142975, 0.000000), | |
vec3(-21.710264, -304.565765, 0.000000), | |
vec3(-28.795603, -228.113205, 0.000000), | |
vec3(37.695450, -322.072327, 0.000000), | |
vec3(-101.454140, -107.447960, 0.000000), | |
vec3(56.837776, -212.543457, 0.000000), | |
vec3(-28.795603, -228.113205, 0.000000), | |
vec3(182.692825, 122.205139, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(91.869637, 177.996567, 0.000000), | |
vec3(190.107788, -39.979279, 0.000000), | |
vec3(213.462402, 26.191973, 0.000000), | |
vec3(126.531540, -33.491898, 0.000000), | |
vec3(-21.710264, -304.565765, 0.000000), | |
vec3(-105.369003, -193.742996, 0.000000), | |
vec3(-28.795603, -228.113205, 0.000000), | |
vec3(-243.595001, -91.773003, 0.000000), | |
vec3(-181.279938, -100.716736, 0.000000), | |
vec3(-105.369003, -193.742996, 0.000000), | |
vec3(-101.454140, -107.447960, 0.000000), | |
vec3(-28.795603, -228.113205, 0.000000), | |
vec3(-181.279938, -100.716736, 0.000000), | |
vec3(6.783340, -27.804867, 0.000000), | |
vec3(103.380569, -32.543594, 0.000000), | |
vec3(0.951050, 10.834019, 0.000000), | |
vec3(137.461487, -31.673880, 0.000000), | |
vec3(186.020935, -35.637486, 0.000000), | |
vec3(204.711868, 15.012306, 0.000000), | |
vec3(110.682983, -219.030838, 0.000000), | |
vec3(153.961411, -197.306824, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(88.434647, -296.142975, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(92.300316, -240.477432, 0.000000), | |
vec3(117.032372, -163.480835, 0.000000), | |
vec3(134.736237, -152.244888, 0.000000), | |
vec3(108.120293, -122.474602, 0.000000), | |
vec3(134.736237, -152.244888, 0.000000), | |
vec3(209.939835, -99.663124, 0.000000), | |
vec3(148.001511, -142.208267, 0.000000), | |
vec3(153.961411, -197.306824, 0.000000), | |
vec3(117.032372, -163.480835, 0.000000), | |
vec3(110.682983, -219.030838, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(61.889671, -158.290955, 0.000000), | |
vec3(117.032372, -163.480835, 0.000000), | |
vec3(55.540321, -213.840988, 0.000000), | |
vec3(110.682983, -219.030838, 0.000000), | |
vec3(61.889671, -158.290955, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(117.032372, -163.480835, 0.000000), | |
vec3(108.120293, -122.474602, 0.000000), | |
vec3(153.961411, -197.306824, 0.000000), | |
vec3(134.736237, -152.244888, 0.000000), | |
vec3(117.032372, -163.480835, 0.000000), | |
vec3(148.001511, -142.208267, 0.000000), | |
vec3(108.120293, -122.474602, 0.000000), | |
vec3(134.736237, -152.244888, 0.000000), | |
vec3(134.736237, -152.244888, 0.000000), | |
vec3(209.939835, -99.663124, 0.000000), | |
vec3(153.961411, -197.306824, 0.000000), | |
vec3(110.682983, -219.030838, 0.000000), | |
vec3(55.540321, -213.840988, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(155.697189, -314.698181, 0.000000), | |
vec3(101.804382, -353.742950, 0.000000), | |
vec3(88.434647, -296.142975, 0.000000), | |
vec3(-21.710264, -304.565765, 0.000000), | |
vec3(37.695450, -322.072327, 0.000000), | |
vec3(101.804382, -353.742950, 0.000000), | |
vec3(56.837776, -212.543457, 0.000000), | |
vec3(88.434647, -296.142975, 0.000000), | |
vec3(37.695450, -322.072327, 0.000000), | |
vec3(55.540321, -213.840988, 0.000000), | |
vec3(88.434647, -296.142975, 0.000000), | |
vec3(92.300316, -240.477432, 0.000000), | |
vec3(155.697189, -314.698181, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(88.434647, -296.142975, 0.000000), | |
vec3(110.082352, -271.402710, 0.000000), | |
vec3(92.300316, -240.477432, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(172.368103, -262.271576, 0.000000), | |
vec3(153.961411, -197.306824, 0.000000), | |
vec3(115.494301, -261.352020, 0.000000), | |
vec3(139.089417, -101.202057, 0.000000), | |
vec3(128.198914, -33.491898, 0.000000), | |
vec3(209.939835, -99.663124, 0.000000), | |
vec3(139.089417, -101.202057, 0.000000), | |
vec3(209.939835, -99.663124, 0.000000), | |
vec3(148.001511, -142.208267, 0.000000), | |
vec3(139.089417, -101.202057, 0.000000), | |
vec3(68.239021, -102.740929, 0.000000), | |
vec3(148.001511, -142.208267, 0.000000), | |
vec3(106.304710, -161.342972, 0.000000), | |
vec3(200.519531, -171.320923, 0.000000), | |
vec3(131.610687, -10.746678, 0.000000), | |
vec3(153.083267, -222.778809, 0.000000), | |
vec3(32.675129, -262.095764, 0.000000), | |
vec3(27.926273, -235.256836, 0.000000), | |
vec3(-210.397903, 82.402145, 0.000000), | |
vec3(-156.311249, 96.511719, 0.000000), | |
vec3(-155.135391, 250.541260, 0.000000), | |
vec3(-182.413010, -338.766998, 0.000000), | |
vec3(-179.014008, -200.541000, 0.000000), | |
vec3(-87.241005, -353.496002, 0.000000), | |
vec3(-243.595001, -91.773003, 0.000000), | |
vec3(-105.369003, -193.742996, 0.000000), | |
vec3(-179.014008, -200.541000, 0.000000), | |
vec3(-21.710264, -304.565765, 0.000000), | |
vec3(-87.241005, -353.496002, 0.000000), | |
vec3(-105.369003, -193.742996, 0.000000), | |
} | |
ms8.colors = { | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Mesh9 | |
ms9 = mesh() | |
ms9.vertices = { | |
vec3(-128.773865, -180.060287, 0.000000), | |
vec3(-201.039932, -91.500671, 0.000000), | |
vec3(-55.877106, -212.780167, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(82.948929, -151.251129, 0.000000), | |
vec3(30.453899, -146.310455, 0.000000), | |
vec3(76.904404, -204.133896, 0.000000), | |
vec3(145.456696, 120.717636, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(176.336212, 29.314533, 0.000000), | |
vec3(-192.981781, -27.503618, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(-143.574646, 163.948776, 0.000000), | |
vec3(7.421368, -302.227844, 0.000000), | |
vec3(-55.877106, -212.780167, 0.000000), | |
vec3(25.644575, -197.958038, 0.000000), | |
vec3(-198.882797, -186.531876, 0.000000), | |
vec3(-128.773865, -180.060287, 0.000000), | |
vec3(-111.516235, -332.142792, 0.000000), | |
vec3(-264.622009, 49.077347, 0.000000), | |
vec3(-125.046936, -97.908691, 0.000000), | |
vec3(-260.362823, -82.986359, 0.000000), | |
vec3(66.000000, 104.000000, 0.000000), | |
vec3(-35.000000, 201.000000, 0.000000), | |
vec3(58.994385, 173.830261, 0.000000), | |
vec3(154.102997, -33.679504, 0.000000), | |
vec3(177.089935, -108.516060, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(-264.622009, 49.077347, 0.000000), | |
vec3(-192.981781, -27.503618, 0.000000), | |
vec3(-143.574646, 163.948776, 0.000000), | |
vec3(-125.046936, -97.908691, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(-192.981781, -27.503618, 0.000000), | |
vec3(-35.000000, 201.000000, 0.000000), | |
vec3(-143.574646, 163.948776, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(103.946930, -91.962677, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(66.000000, 104.000000, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(-125.046936, -97.908691, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(-143.574646, 163.948776, 0.000000), | |
vec3(-264.622009, 49.077347, 0.000000), | |
vec3(-175.689240, 368.988129, 0.000000), | |
vec3(58.994385, 173.830261, 0.000000), | |
vec3(-35.000000, 201.000000, 0.000000), | |
vec3(36.761169, 333.167908, 0.000000), | |
vec3(135.627716, -245.298462, 0.000000), | |
vec3(119.757271, -295.207764, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(-125.046936, -97.908691, 0.000000), | |
vec3(24.409416, -199.193268, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(68.452118, -332.377838, 0.000000), | |
vec3(7.421368, -302.227844, 0.000000), | |
vec3(55.724323, -277.543549, 0.000000), | |
vec3(-49.131973, -285.561829, 0.000000), | |
vec3(-55.877106, -212.780167, 0.000000), | |
vec3(7.421368, -302.227844, 0.000000), | |
vec3(-125.046936, -97.908691, 0.000000), | |
vec3(25.644575, -197.958038, 0.000000), | |
vec3(-55.877106, -212.780167, 0.000000), | |
vec3(145.456696, 120.717636, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(58.994385, 173.830261, 0.000000), | |
vec3(152.922455, -35.306801, 0.000000), | |
vec3(175.155685, 27.687244, 0.000000), | |
vec3(91.775040, -28.362831, 0.000000), | |
vec3(-49.131973, -285.561829, 0.000000), | |
vec3(-128.773865, -180.060287, 0.000000), | |
vec3(-55.877106, -212.780167, 0.000000), | |
vec3(-260.362823, -82.986359, 0.000000), | |
vec3(-201.039932, -91.500671, 0.000000), | |
vec3(-128.773865, -180.060287, 0.000000), | |
vec3(-125.046936, -97.908691, 0.000000), | |
vec3(-55.877106, -212.780167, 0.000000), | |
vec3(-201.039932, -91.500671, 0.000000), | |
vec3(-22.006500, -22.089653, 0.000000), | |
vec3(69.952614, -26.600840, 0.000000), | |
vec3(-27.558754, 14.693989, 0.000000), | |
vec3(94.215981, -31.210594, 0.000000), | |
vec3(153.146820, -21.611530, 0.000000), | |
vec3(162.910583, 13.782120, 0.000000), | |
vec3(76.904404, -204.133896, 0.000000), | |
vec3(118.104820, -183.452942, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(55.724323, -277.543549, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(59.404381, -224.550766, 0.000000), | |
vec3(82.948929, -151.251129, 0.000000), | |
vec3(99.802757, -140.554672, 0.000000), | |
vec3(74.464767, -112.213821, 0.000000), | |
vec3(101.773361, -116.907295, 0.000000), | |
vec3(177.089935, -108.516060, 0.000000), | |
vec3(94.324142, -143.987106, 0.000000), | |
vec3(118.104820, -183.452942, 0.000000), | |
vec3(82.948929, -151.251129, 0.000000), | |
vec3(76.904404, -204.133896, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(30.453899, -146.310455, 0.000000), | |
vec3(82.948929, -151.251129, 0.000000), | |
vec3(24.409416, -199.193268, 0.000000), | |
vec3(76.904404, -204.133896, 0.000000), | |
vec3(30.453899, -146.310455, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(82.948929, -151.251129, 0.000000), | |
vec3(74.464767, -112.213821, 0.000000), | |
vec3(118.104820, -183.452942, 0.000000), | |
vec3(99.802757, -140.554672, 0.000000), | |
vec3(82.948929, -151.251129, 0.000000), | |
vec3(112.431076, -130.999969, 0.000000), | |
vec3(74.464767, -112.213821, 0.000000), | |
vec3(99.802757, -140.554672, 0.000000), | |
vec3(99.802757, -140.554672, 0.000000), | |
vec3(177.089935, -108.516060, 0.000000), | |
vec3(118.104820, -183.452942, 0.000000), | |
vec3(76.904404, -204.133896, 0.000000), | |
vec3(24.409416, -199.193268, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(119.757271, -295.207764, 0.000000), | |
vec3(68.452118, -332.377838, 0.000000), | |
vec3(55.724323, -277.543549, 0.000000), | |
vec3(-49.131973, -285.561829, 0.000000), | |
vec3(7.421368, -302.227844, 0.000000), | |
vec3(68.452118, -332.377838, 0.000000), | |
vec3(25.644575, -197.958038, 0.000000), | |
vec3(55.724323, -277.543549, 0.000000), | |
vec3(7.421368, -302.227844, 0.000000), | |
vec3(24.409416, -199.193268, 0.000000), | |
vec3(55.724323, -277.543549, 0.000000), | |
vec3(59.404381, -224.550766, 0.000000), | |
vec3(119.757271, -295.207764, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(55.724323, -277.543549, 0.000000), | |
vec3(76.332611, -253.991165, 0.000000), | |
vec3(59.404381, -224.550766, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(135.627716, -245.298462, 0.000000), | |
vec3(118.104820, -183.452942, 0.000000), | |
vec3(81.484711, -244.423035, 0.000000), | |
vec3(109.333389, -93.578621, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(177.089935, -108.516060, 0.000000), | |
vec3(105.102921, -86.576225, 0.000000), | |
vec3(177.089935, -108.516060, 0.000000), | |
vec3(113.587105, -125.613503, 0.000000), | |
vec3(103.946930, -91.962677, 0.000000), | |
vec3(36.498390, -93.427658, 0.000000), | |
vec3(112.431076, -130.999969, 0.000000), | |
vec3(73.813644, -140.597595, 0.000000), | |
vec3(150.000000, -169.000000, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(117.268837, -207.701965, 0.000000), | |
vec3(2.642082, -245.131104, 0.000000), | |
vec3(-1.878746, -219.580841, 0.000000), | |
vec3(-228.759796, 82.825768, 0.000000), | |
vec3(-177.270157, 96.257889, 0.000000), | |
vec3(-176.150681, 242.891647, 0.000000), | |
vec3(-202.118591, -318.120911, 0.000000), | |
vec3(-198.882797, -186.531876, 0.000000), | |
vec3(-111.516235, -332.142792, 0.000000), | |
vec3(-260.362823, -82.986359, 0.000000), | |
vec3(-128.773865, -180.060287, 0.000000), | |
vec3(-198.882797, -186.531876, 0.000000), | |
vec3(-49.131973, -285.561829, 0.000000), | |
vec3(-111.516235, -332.142792, 0.000000), | |
vec3(-128.773865, -180.060287, 0.000000), | |
vec3(150.000000, -169.000000, 0.000000), | |
vec3(141.978577, -125.415215, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(-57.000000, -130.000000, 0.000000), | |
vec3(-27.000000, -168.000000, 0.000000), | |
vec3(24.000000, -149.000000, 0.000000), | |
vec3(66.000000, 104.000000, 0.000000), | |
vec3(91.368225, -26.735537, 0.000000), | |
vec3(58.994385, 173.830261, 0.000000), | |
vec3(66.000000, 104.000000, 0.000000), | |
vec3(-58.950485, 32.588032, 0.000000), | |
vec3(-35.000000, 201.000000, 0.000000), | |
} | |
ms9.colors = { | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(223, 207, 170, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(0, 0, 0, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(141, 132, 111, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(34, 30, 66, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
color(39, 31, 100, 255), | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# SlotManager | |
SlotManager = class() | |
-- class to manage memory slots | |
function SlotManager:init(parent) | |
self.parent = parent | |
self:prepare() | |
end | |
function SlotManager:prepare() | |
local positions = {} | |
local meshes = {} | |
local names = {} | |
local stepX, stepY = WIDTH/4, HEIGHT/4 | |
self.stepY = stepY | |
for c =1,3 do | |
for r =1,3 do | |
local k = c + (r-1)*3 | |
local dx, dy = c*stepX, HEIGHT - r*stepY | |
positions[k] = vec2(dx,dy) | |
names[k] = "ms"..tostring(k) | |
meshes[k] = _G[ names[k] ] | |
end | |
end | |
self.positions = positions | |
self.meshes = meshes | |
self.names = names | |
end | |
function SlotManager:getMesh(slot) | |
return self.meshes[slot] | |
end | |
function SlotManager:draw() | |
self:drawMeshes() | |
self:drawNames() | |
end | |
function SlotManager:drawMeshes() | |
for k = 1,9 do | |
local p = self.positions[k] | |
local ms = self.meshes[k] | |
resetMatrix() | |
translate(p.x,p.y) | |
scale(1/4) | |
ms:draw() | |
end | |
end | |
function SlotManager:drawNames() | |
pushStyle() | |
textMode(CENTER) | |
fill(255, 255, 255, 255) | |
for k = 1,9 do | |
local p = self.positions[k] | |
local str = self.names[k] | |
resetMatrix() | |
translate(p.x, p.y -self.stepY/2) | |
text(str) | |
end | |
popStyle() | |
end | |
function SlotManager:action(str) | |
if str then | |
self.actionValue = str | |
self.selectedSlot = nil | |
elseif str == false then | |
self.actionValue = nil | |
self.selectedSlot = nil | |
end | |
return self.actionValue | |
end | |
function SlotManager:touched(touch) | |
if touch.state == BEGAN then | |
local abs = math.abs | |
local t = vec2(touch.x,touch.y) | |
local dx,dy = WIDTH/10, HEIGHT/10 | |
for k = 1,9 do | |
local p = self.positions[k] - t | |
if abs(p.x)<dx and abs(p.y)<dy then | |
self.selectedSlot = k | |
end | |
end | |
if self.selectedSlot then | |
if self.actionValue == "load" then | |
self.parent:loadSlot(self.selectedSlot) | |
self.parent:mode("none") | |
self.menuDeselect() | |
self:action(false) | |
elseif self.actionValue == "save" then | |
self.parent:save(self.selectedSlot) | |
local k = self.selectedSlot | |
self.meshes[k] = _G["ms"..tostring(k)] | |
self.parent:mode("slots") | |
self.menuDeselect() | |
self:action(false) | |
end | |
end | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Triangle | |
Triangle = class() | |
-- one triangle | |
function Triangle:init(parent,x1,y1,x2,y2,x3,y3) | |
self.parent = parent | |
-- points of the triangle | |
self.summits = {} | |
self.faces = {} | |
self.center = nil | |
self:setPosition(x1,y1,x2,y2,x3,y3) | |
-- colors of the summits | |
local c = color(200) -- default value | |
self:setColors(c,c,c) | |
-- touch management | |
self.isTouched = false | |
self.touchedPoint = nil | |
self.touchable = true | |
end | |
local abs = math.abs | |
function Triangle:setPosition(x1,y1,x2,y2,x3,y3) | |
self.summits[1] = vec2(x1,y1) | |
self.summits[2] = vec2(x2,y2) | |
self.summits[3] = vec2(x3,y3) | |
self.faces[1] = vec2( (x1+x2)/2, (y1+y2)/2 ) | |
self.faces[2] = vec2( (x3+x2)/2, (y3+y2)/2 ) | |
self.faces[3] = vec2( (x1+x3)/2, (y1+y3)/2 ) | |
self.center = vec2( (x1+x2+x3)/3, (y1+y2+y3)/3 ) | |
end | |
function Triangle:setColors(c1,c2,c3) | |
self.colors = {} | |
self.colors[1] = c1 | |
self.colors[2] = c2 | |
self.colors[3] = c3 | |
end | |
function Triangle:shrinkSummits(shift) | |
-- compute the scaling, to have about required shift | |
local avg = 0 | |
local center = self.center | |
for i,v in pairs(self.summits) do avg = avg + (v - center):len() end | |
avg = avg / 3 | |
local s = 1 - shift/avg | |
-- apply scaling | |
local newSummits = {} | |
local dv = center - center*s | |
for i,v in pairs(self.summits) do | |
newSummits[i] = v * s + dv | |
end | |
return newSummits | |
end | |
-- ############ ACTIONS ############# | |
function Triangle:changeColors(c1,c2,c3) | |
self:setColors(c1,c2,c3) | |
self.parent:triangleColor(self) | |
end | |
function Triangle:delete() | |
self.parent:delete(self) | |
self.parent:resetTriangles() | |
end | |
function Triangle:split2() | |
-- f1 = s12, f2 = s23, f3 = s31 | |
local p1,p2,p3,q1,q2,q3 | |
local s = self.summits | |
local f = self.faces | |
local c1,c2,c3 = unpack(self.colors) | |
if self.touchedPoint == 1 then | |
p1,p2,p3 = f[1],s[1],s[3] | |
q1,q2,q3 = f[1],s[2],s[3] | |
elseif self.touchedPoint == 2 then | |
p1,p2,p3 = f[2],s[1],s[2] | |
q1,q2,q3 = f[2],s[1],s[3] | |
elseif self.touchedPoint == 3 then | |
p1,p2,p3 = f[3],s[2],s[3] | |
q1,q2,q3 = f[3],s[2],s[1] | |
end | |
self:setPosition(p1.x,p1.y,p2.x,p2.y,p3.x,p3.y) | |
self.parent:add(q1.x,q1.y,q2.x,q2.y,q3.x,q3.y,c1,c2,c3) | |
self.parent:resetTriangles() | |
end | |
function Triangle:split3() | |
local p1,p2,p3,q1,q2,q3 | |
local s = self.summits | |
local f = self.faces | |
local c = self.center | |
local c1,c2,c3 = unpack(self.colors) | |
p1,p2,p3 = unpack(s) | |
self:setPosition(p1.x, p1.y, p2.x, p2.y, c.x, c.y) | |
self.parent:add(p2.x, p2.y, p3.x, p3.y, c.x, c.y, c1,c2,c3) | |
self.parent:add(p3.x, p3.y, p1.x, p1.y, c.x, c.y, c1,c2,c3) | |
self.parent:resetTriangles() | |
end | |
function Triangle:split4() | |
local p1,p2,p3,q1,q2,q3 | |
local s = self.summits | |
local f = self.faces | |
local c = self.center | |
local c1,c2,c3 = unpack(self.colors) | |
p1,p2,p3 = unpack(s) | |
q1,q2,q3 = unpack(f) | |
self:setPosition(q1.x, q1.y, q2.x, q2.y, q3.x, q3.y) | |
self.parent:add(p1.x, p1.y, q1.x, q1.y, q3.x, q3.y, c1,c2,c3) | |
self.parent:add(p2.x, p2.y, q2.x, q2.y, q1.x, q1.y, c1,c2,c3) | |
self.parent:add(p3.x, p3.y, q3.x, q3.y, q2.x, q2.y, c1,c2,c3) | |
self.parent:resetTriangles() | |
end | |
function Triangle:move(touch) | |
local s = self.summits | |
s[ self.touchedPoint ] = vec2(touch.x,touch.y) | |
local p1,p2,p3 = s[1],s[2],s[3] | |
self:setPosition(p1.x,p1.y,p2.x,p2.y,p3.x,p3.y) | |
self.parent:triangleMove(self) | |
end | |
function Triangle:move3(touch) | |
local s = self.summits | |
local dx,dy = touch.deltaX, touch.deltaY | |
local p1,p2,p3 = s[1],s[2],s[3] | |
self:setPosition(p1.x+dx ,p1.y+dy ,p2.x+dx ,p2.y+dy ,p3.x+dx ,p3.y+dy ) | |
self.parent:triangleMove3(self) | |
end | |
local function rot(p,angle) | |
local v = vec2(p.x, p.y):rotate(angle) | |
return v | |
end | |
function Triangle:rotate(angle) | |
local a = math.rad(angle) | |
local p1,p2,p3 = unpack( self.summits ) | |
p1,p2,p3 = rot(p1,a), rot(p2,a), rot(p3,a) | |
self:setPosition(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y) | |
self.parent:resetTriangles() | |
end | |
function Triangle:moveToTop(touch) | |
self.parent:moveToTop(self) | |
end | |
function Triangle:moveToBottom(touch) | |
self.parent:moveToBottom(self) | |
end | |
function Triangle:add1triangle(touch) | |
-- find the 2 closest summits | |
local p1,p2,p3 = unpack( self.summits ) | |
local c1,c2,c3 = unpack(self.colors) | |
local p = vec2(touch.x, touch.y) | |
local ref = self.center - p | |
local d1 = (p1-p):dot(ref) | |
local d2 = (p2-p):dot(ref) | |
local d3 = (p3-p):dot(ref) | |
if (d1<d3) and (d2<d3) then | |
self.parent:add(p1.x, p1.y, p2.x, p2.y, p.x, p.y, c1,c2,c3) | |
elseif (d2<d1) and (d3<d1) then | |
self.parent:add(p3.x, p3.y, p2.x, p2.y, p.x, p.y, c1,c2,c3) | |
else | |
self.parent:add(p3.x, p3.y, p1.x, p1.y, p.x, p.y, c1,c2,c3) | |
end | |
self.parent:resetTriangles() | |
end | |
-- ############ TESTS ############# | |
-- return true if point p is touched | |
function Triangle:hit(p,touch) | |
local mode = self.parent:mode() | |
local dist | |
if mode == "move" then dist = 20 | |
elseif mode == "split2" then dist = 20 | |
else dist = 20 | |
end | |
return abs(p.x-touch.x)<dist and abs(p.y-touch.y)<dist | |
end | |
-- returns true if touch is inside triangle | |
function Triangle:inside(touch) | |
local t = vec2(touch.x, touch.y) | |
local v1,v2,v3 = unpack(self.summits) | |
local s1 = (v2-v1):cross(t-v1) | |
local s2 = (v3-v2):cross(t-v2) | |
local s3 = (v1-v3):cross(t-v3) | |
local out = (s1>0 and s2>0 and s3>0) or (s1<0 and s2<0 and s3<0) | |
return out | |
end | |
function Triangle:isSummitTouched(touch) | |
local isTouched = false | |
for i,v in pairs( self.summits ) do | |
if self:hit(v,touch) then | |
-- register touch on which point | |
isTouched = true | |
self.touchedPoint = i | |
end | |
end | |
return isTouched | |
end | |
function Triangle:isFaceTouched(touch) | |
local isTouched = false | |
for i,v in pairs( self.faces ) do | |
if self:hit(v,touch) and self:inside(touch) then | |
-- register touch on which point | |
isTouched = true | |
self.touchedPoint = i | |
end | |
end | |
return isTouched | |
end | |
function Triangle:isCenterTouched(touch) | |
local isTouched = false | |
isTouched = self:hit(self.center, touch) | |
return isTouched | |
end | |
-- ############ TOUCH ############# | |
function Triangle:touchedToMoveT(touch) | |
if touch.state == BEGAN and self:isCenterTouched(touch) and self.parent:ready() then | |
self:moveToTop() | |
self.parent:ready(false) | |
end | |
end | |
function Triangle:touchedToMoveB(touch) | |
if touch.state == BEGAN and self:isCenterTouched(touch) and self.parent:ready() then | |
self:moveToBottom() | |
self.parent:ready(false) | |
end | |
end | |
function Triangle:touchedToMove3(touch) | |
if touch.state == BEGAN then | |
self.isTouched = self:isCenterTouched(touch) | |
elseif touch.state == MOVING then | |
if self.isTouched then self:move3(touch) end | |
else -- ENDED or CANCELLED | |
if self.isTouched then self.isTouched = false end | |
end | |
end | |
function Triangle:touchedToMoveSummit(touch) | |
if touch.state == BEGAN then | |
self.isTouched = self:isSummitTouched(touch) | |
elseif touch.state == MOVING then | |
if self.isTouched then self:move(touch) end | |
else -- ENDED or CANCELLED | |
if self.isTouched then self.isTouched = false end | |
end | |
end | |
function Triangle:touchedToSplit2(touch) | |
if touch.state == BEGAN then | |
if self:isFaceTouched(touch) and self.parent:ready() then | |
self:split2() | |
self.parent:ready(false) | |
end | |
elseif touch.state == MOVING then | |
else -- ENDED or CANCELLED | |
end | |
end | |
function Triangle:touchedToSplit3(touch) | |
if touch.state == BEGAN then | |
if self:isCenterTouched(touch) and self.parent:ready() then | |
self:split3() | |
self.parent:ready(false) | |
end | |
elseif touch.state == MOVING then | |
else -- ENDED or CANCELLED | |
end | |
end | |
function Triangle:touchedToSplit4(touch) | |
if touch.state == BEGAN then | |
if self:isCenterTouched(touch) and self.parent:ready() then | |
self:split4() | |
self.parent:ready(false) | |
end | |
elseif touch.state == MOVING then | |
else -- ENDED or CANCELLED | |
end | |
end | |
function Triangle:touchedToDelete(touch) | |
if touch.state == BEGAN then | |
if self:isCenterTouched(touch) and self.parent:ready() then | |
self:delete() | |
self.parent:ready(false) | |
end | |
end | |
end | |
function Triangle:touchedToColor3(touch) | |
if touch.state == BEGAN or touch.state == MOVING then | |
if self:isCenterTouched(touch) then | |
local c = self.parent:color() | |
self:changeColors(c,c,c) | |
end | |
end | |
end | |
function Triangle:touchedToPick(touch) | |
if touch.state == BEGAN then | |
if self:isCenterTouched(touch) then | |
local c = self.colors[1] | |
self.parent:color(c) | |
end | |
end | |
end | |
function Triangle:touchedToAdd(touch) | |
local min = math.min | |
if touch.state == BEGAN and self.parent:ready() and not self:inside(touch) then | |
-- compute min distance | |
local p1,p2,p3 = unpack( self.summits ) | |
local p = vec2(touch.x, touch.y) | |
local d1 = (p1-p):len() | |
local d2 = (p2-p):len() | |
local d3 = (p3-p):len() | |
local d = min(d1+d2, d2+d3, d3+d1) | |
self.parent:shortestDistance(self, d) | |
end | |
end | |
function Triangle:touched(touch) | |
if self.touchable then | |
local mode = self.parent:mode() | |
if mode == "move" then self:touchedToMoveSummit(touch) | |
elseif mode == "move3" then self:touchedToMove3(touch) | |
elseif mode == "moveT" then self:touchedToMoveT(touch) | |
elseif mode == "moveB" then self:touchedToMoveB(touch) | |
elseif mode == "split2" then self:touchedToSplit2(touch) | |
elseif mode == "split3" then self:touchedToSplit3(touch) | |
elseif mode == "split4" then self:touchedToSplit4(touch) | |
elseif mode == "add" then self:touchedToAdd(touch) | |
elseif mode == "delete" then self:touchedToDelete(touch) | |
elseif mode == "color3" then self:touchedToColor3(touch) | |
elseif mode == "pickColor" then self:touchedToPick(touch) | |
end | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Triangles | |
Triangles = class() | |
-- all the triangles | |
function Triangles:init(parent,ms) | |
self.parent = parent | |
self:mode( self.parent:mode() ) | |
self.list = {} | |
if ms == nil then | |
self:initSquare() | |
else | |
self:initFromMesh(ms) | |
end | |
self:ready(true) | |
end | |
function Triangles:initSquare() | |
local w,h = WIDTH/3, HEIGHT/3 | |
self:add(w,-h,-w,-h,-w,h) | |
self:add(w,-h,w,h,-w,h) | |
end | |
function Triangles:initFromMesh(ms) | |
local n = #ms.vertices | |
local p1,p2,p3, c1,c2,c3, k | |
for i = 1,n/3 do | |
k = (i-1)*3 | |
p1 = ms:vertex(k+1) | |
p2 = ms:vertex(k+2) | |
p3 = ms:vertex(k+3) | |
c1 = ms:color(k+1) | |
c2 = ms:color(k+2) | |
c3 = ms:color(k+3) | |
self:add(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, c1,c2,c3) | |
end | |
end | |
function Triangles:add(x1,y1,x2,y2,x3,y3, c1,c2,c3) | |
local t = Triangle(self,x1,y1,x2,y2,x3,y3) | |
if c1 and c2 and c3 then | |
t:setColors(c1,c2,c3) | |
end | |
if self.addBelowBoolean then | |
table.insert(self.list,1,t) | |
else | |
table.insert(self.list,t) | |
end | |
end | |
function Triangles:addBelow(value) | |
if self.addBelowBoolean == nil then self.addBelowBoolean = false end | |
if value == true then self.addBelowBoolean = true | |
elseif value == false then self.addBelowBoolean = false | |
end | |
return self.addBelowBoolean | |
end | |
function Triangles:delete(t) | |
for i,v in pairs(self.list) do | |
if v == t then table.remove(self.list,i) end | |
end | |
end | |
function Triangles:moveToTop(t) | |
self:delete(t) | |
table.insert(self.list,t) | |
self.parent:resetTriangles() | |
end | |
function Triangles:moveToBottom(t) | |
self:delete(t) | |
table.insert(self.list,1,t) | |
self.parent:resetTriangles() | |
end | |
function Triangles:color(t) | |
return self.parent:color(t) | |
end | |
function Triangles:triangleMove(t) | |
self.parent:triangleMove(t) | |
end | |
function Triangles:triangleMove3(t) | |
self.parent:triangleMove3(t) | |
end | |
function Triangles:triangleColor(t) | |
self.parent:triangleColor(t) | |
end | |
function Triangles:resetTriangles() | |
self.parent:resetTriangles() | |
end | |
function Triangles:shortestDistance(t,d) | |
if self.minDist == nil or d < self.minDist then | |
self.minDist = d | |
self.closestTriangle = t | |
end | |
end | |
function Triangles:mode(str) | |
-- set mode to str; if no arg, simply return current mode | |
if str then self.modeValue = str end | |
return self.modeValue | |
end | |
function Triangles:ready(b) | |
-- set mode to str; if no arg, simply return current state | |
if b == true then self.readyValue = b | |
elseif b == false then self.readyValue = b | |
tween.delay(0.5, function() self:ready(true) end) | |
end | |
return self.readyValue | |
end | |
function Triangles:getList() | |
return self.list | |
end | |
function Triangles:shift(dx,dy) | |
local dv = vec2(dx,dy) | |
for _,t in pairs(self.list) do | |
local p1,p2,p3 = unpack( t.summits ) | |
p1,p2,p3 = p1+dv, p2+dv, p3+dv | |
t:setPosition(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y) | |
end | |
self.parent:resetTriangles() | |
end | |
local function rot(p,angle) | |
local v = vec2(p.x, p.y):rotate(angle) | |
return v | |
end | |
function Triangles:rotate(angle) | |
local a = math.rad(angle) | |
for _,t in pairs(self.list) do | |
local p1,p2,p3 = unpack( t.summits ) | |
p1,p2,p3 = rot(p1,a), rot(p2,a), rot(p3,a) | |
t:setPosition(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y) | |
end | |
self.parent:resetTriangles() | |
end | |
function Triangles:scale(s) | |
for _,t in pairs(self.list) do | |
local p1,p2,p3 = unpack( t.summits ) | |
p1,p2,p3 = p1*s, p2*s, p3*s | |
t:setPosition(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y) | |
end | |
self.parent:resetTriangles() | |
end | |
function Triangles:draw() | |
end | |
function Triangles:touched(touch) | |
for _,t in pairs(self.list) do | |
t:touched(touch) | |
end | |
if self:mode() == "add" and touch.state == BEGAN and self:ready() then | |
self.closestTriangle:add1triangle(touch) | |
self.minDist = nil | |
self:ready(false) | |
elseif self:mode() == "new" and touch.state == BEGAN and self:ready() then | |
local x,y = touch.x,touch.y | |
local c = self.parent.colorValue | |
self:add(x-100, y-50, x+100, y-50, x, y+100,c,c,c) | |
self.parent:resetTriangles() | |
self:ready(false) | |
elseif self:mode() == "newSquare" and touch.state == BEGAN and self:ready() then | |
local x,y = touch.x,touch.y | |
local c = self.parent.colorValue | |
self:add(x-50, y-50, x+50, y-50, x-50, y+50,c,c,c) | |
self:add(x+50, y+50, x+50, y-50, x-50, y+50,c,c,c) | |
self.parent:resetTriangles() | |
self:ready(false) | |
end | |
self.currentTouch = touch | |
end | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--#TriMesh | |
TriMesh = class() | |
-- mesh to display all triangles | |
function TriMesh:init(parent,triangles,shift) | |
self.parent = parent | |
self.shift = shift or 0 | |
self:reset(triangles) | |
end | |
function TriMesh:reset(triangles) | |
local shift = self.shift | |
if self.parent:mode() == "view" then shift = 0 end | |
self.triangles = triangles or self.triangles | |
triangles = triangles or self.triangles | |
local vert2tri = {} | |
local tri2vert = {} | |
local vertices = {} | |
local colors = {} | |
for _,t in pairs(triangles) do | |
local i = #vertices | |
local summits = t:shrinkSummits(shift) | |
for _,v in ipairs(summits) do | |
table.insert(vertices, v) | |
end | |
for _,c in ipairs(t.colors) do | |
table.insert(colors, c) | |
end | |
vert2tri[i] = t | |
tri2vert[t] = i | |
end | |
self.vert2tri = vert2tri | |
self.tri2vert = tri2vert | |
ms = mesh() | |
ms.vertices = vertices | |
ms.colors = colors | |
self.ms = ms | |
collectgarbage() | |
end | |
function TriMesh:triangleMove(t) | |
local i = self.tri2vert[t] | |
local ms = self.ms | |
local summits = t:shrinkSummits(self.shift) | |
for k,v in ipairs(summits) do | |
ms:vertex(i+k,v) | |
end | |
end | |
function TriMesh:triangleColor(t) | |
local i = self.tri2vert[t] | |
local ms = self.ms | |
local newColor = self.parent:color() | |
for k,c in pairs(t.colors) do | |
ms:color(i+k,c) | |
end | |
end | |
function TriMesh:round2string() | |
end | |
function TriMesh:tostring(slot) | |
local oldShift = self.shift | |
self.shift = 0 | |
self:reset() | |
self.shift = oldShift | |
local ms = self.ms | |
local vertices = {} | |
local msTxt = "ms" .. tostring(slot) | |
table.insert( vertices, msTxt .. ".vertices = {") | |
local colors = {} | |
table.insert( colors, msTxt .. ".colors = {") | |
for i=1,#self.ms.vertices do | |
table.insert( vertices, "vec3" .. tostring( ms:vertex(i) ).."," ) | |
table.insert( colors, "color" .. tostring( ms:color(i) ).."," ) | |
end | |
table.insert( vertices, " }") | |
table.insert( colors, " }") | |
local str = {} | |
table.insert( str, msTxt .. " = mesh()" ) | |
table.insert( str, table.concat(vertices,"\r") ) | |
table.insert( str, table.concat(colors,"\r") ) | |
return table.concat(str,"\r") | |
end | |
function TriMesh:save(slot) | |
local str = self:tostring(slot) | |
loadstring(str)() | |
saveProjectTab("Mesh"..tostring(slot),str) | |
--print("mesh saved!") | |
end | |
function TriMesh:draw() | |
self.ms:draw() | |
end | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--# Undo | |
Undo = class() | |
function Undo:init(parent) | |
self.parent = parent | |
self.last = nil | |
end | |
function Undo:push(triMesh) | |
self.last = triMesh:tostring(0) | |
end | |
function Undo:pop() | |
if self.last == nil then return end | |
loadstring(self.last)() | |
self.last = nil | |
return ms0 | |
end | |
function Undo:touched(touch) | |
-- Codea does not automatically call this method | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment