Help with my flower (JOKE)

(this is an actual functional script for a flower) So I was scripting a flower and then I optimized it and ended up with this:

local RunService = game:GetService("RunService")
local ws = workspace
local parent = script.Parent
local Heartbeat = RunService.Heartbeat

local sin = math.sin
local pi = math.pi
local CFrame_new = CFrame.new
local CFrame_fromEulerAnglesYXZ = CFrame.fromEulerAnglesYXZ
local CFrame_Angles = CFrame.Angles
local Vector3_new = Vector3.new

local entries = {}


local p1 = parent.Petals1:GetChildren()
for i = 1, #p1 do
	local v = p1[i]
	if v:IsA("Model") then
		local pa = v.Petal11
		local x, y, z = pa.CFrame:ToOrientation()
		local s = v.Petal11.Size
		local s2 = v.Petal112.Size
		local s3 = v.Petal113.Size
		entries[#entries+1] = {
			1, i, 1, v.Petal11.CFrame, x, y, z, (i-1)/(pi*2),
			{ v.Petal11, v.Petal112, v.Petal113, v.Petal114, v.Petal1121, v.Petal1122, v.Petal1131, v.Petal1132 },
			{ -s.Z*0.5, -s2.Z*0.5, -s3.Z*0.5, -v.Petal114.Size.Z*0.5, s2.X*0.5, -s2.X*0.5, s3.X*0.5, -s3.X*0.5, v.Petal1121.Size.X*0.5, -v.Petal1122.Size.X*0.5, v.Petal1131.Size.X*0.5, -v.Petal1132.Size.X*0.5 }
		}
	end
end

local p2 = parent.Petals2:GetChildren()
for i = 1, #p2 do
	local pt = p2[i]
	if pt:IsA("Model") then
		local pa = pt.pa
		local x, y, z = pa.CFrame:ToOrientation()
		local s = pa.Size
		local sB = pt.pb.Size
		local sC = pt.pc.Size
		local sD = pt.pd.Size
		local sE = pt.pe.Size
		entries[#entries+1] = {
			2, i, 1, pa.CFrame, x, y, z, (i-1)/(3*pi),
			{ pa, pt.pb, pt.pc, pt.pd, pt.pe, pt.pf, pt.pb1, pt.pb2, pt.pc1, pt.pc2, pt.pc11, pt.pc22, pt.pd1, pt.pd2, pt.pe1, pt.pe2 },
			{ -s.Z*0.5, -sB.Z*0.5, -sC.Z*0.5, -sD.Z*0.5, -sE.Z*0.5, -pt.pf.Size.Z*0.5, -sB.X*0.5, sB.X*0.5, -sC.X*0.5, sC.X*0.5, -pt.pc1.Size.X*0.5, pt.pc2.Size.X*0.5, -sD.X*0.5, sD.X*0.5, -sE.X*0.5, sE.X*0.5, -pt.pb1.Size.X*0.5, pt.pb2.Size.X*0.5, -pt.pc11.Size.X*0.5, pt.pc22.Size.X*0.5, -pt.pd1.Size.X*0.5, pt.pd2.Size.X*0.5, -pt.pe1.Size.X*0.5, pt.pe2.Size.X*0.5 }
		}
	end
end

local p3 = parent.Petals3:GetChildren()
for i = 1, #p3 do
	local pt = p3[i]
	if pt:IsA("Model") then
		local pa = pt.pa
		local s = pa.Size
		local x, y, z = pa.CFrame:ToOrientation()
		local sB = pt.pb.Size
		local sC = pt.pc.Size
		entries[#entries+1] = {
			3, i, 1, pa.CFrame * CFrame_new(0,0,s.Z/2), x, y, z, (i-1)/(3*pi),
			{ pa, pt.pb, pt.pc, pt.pd, pt.pb1, pt.pb2, pt.pc1, pt.pc2 },
			{ -s.Z*0.5, -sB.Z*0.5, -sC.Z*0.5, -pt.pd.Size.Z*0.5, -sB.X*0.5, sB.X*0.5, -sC.X*0.5, sC.X*0.5, -pt.pb1.Size.X*0.5, pt.pb2.Size.X*0.5, -pt.pc1.Size.X*0.5, pt.pc2.Size.X*0.5 }
		}
	end
end

local parts, cframes = {}, {}

Heartbeat:Connect(function(dt)
	local pcount = 0

	for i = 1, #entries do
		local e = entries[i]
		local t, x, y, z = e[8], e[5], e[6], e[7]
		local p, s = e[9], e[10]

		if e[1] == 1 then
			local aCF = e[4] * CFrame_fromEulerAnglesYXZ(sin(t)/6,0,0) * CFrame_new(0,0,s[1])
			local bCF = CFrame_new((aCF * CFrame_new(0,0,s[1])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/6+x,y,z) * CFrame_new(0,0,s[2])
			local cCF = CFrame_new((bCF * CFrame_new(0,0,s[2])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/3+x+0.3,y,z) * CFrame_new(0,0,s[3])
			local dCF = CFrame_new((cCF * CFrame_new(0,0,s[3])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-3)/4+x+0.6,y,z) * CFrame_new(0,0,s[4])

			local a1CF = CFrame_new((bCF * CFrame_new(s[5],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t)/6+x,y,z+sin(t+1)/4) * CFrame_Angles(0,0,-0.5) * CFrame_new(s[9],0,0)
			local a2CF = CFrame_new((bCF * CFrame_new(s[6],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t)/6+x,y,z+sin(t+1)/-4) * CFrame_Angles(0,0,0.5) * CFrame_new(s[10],0,0)

			local b1CF = CFrame_new((cCF * CFrame_new(s[7],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/6+x,y,z+sin(t+1.2)/4) * CFrame_Angles(-0.3,0,-0.6) * CFrame_new(s[11]-0.5,0,0)
			local b2CF = CFrame_new((cCF * CFrame_new(s[8],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/6+x,y,z+sin(t+1.2)/-4) * CFrame_Angles(-0.3,0,0.6) * CFrame_new(s[12]+0.5,0,0)

			pcount += 1; parts[pcount] = p[1]; cframes[pcount] = aCF
			pcount += 1; parts[pcount] = p[2]; cframes[pcount] = bCF
			pcount += 1; parts[pcount] = p[3]; cframes[pcount] = cCF
			pcount += 1; parts[pcount] = p[4]; cframes[pcount] = dCF
			pcount += 1; parts[pcount] = p[5]; cframes[pcount] = a1CF
			pcount += 1; parts[pcount] = p[6]; cframes[pcount] = a2CF
			pcount += 1; parts[pcount] = p[7]; cframes[pcount] = b1CF
			pcount += 1; parts[pcount] = p[8]; cframes[pcount] = b2CF

		elseif e[1] == 2 then
			local aCF = e[4] * CFrame_fromEulerAnglesYXZ(sin(t)/8,0,0) * CFrame_new(0,0,s[1])
			local bCF = CFrame_new((aCF * CFrame_new(0,0,s[1])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/7+x,y,z) * CFrame_new(0,0,s[2])
			local cCF = CFrame_new((bCF * CFrame_new(0,0,s[2])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1.5)/4+x,y,z) * CFrame_new(0,0,s[3])
			local dCF = CFrame_new((cCF * CFrame_new(0,0,s[3])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/3+x,y,z) * CFrame_new(0,0,s[4])
			local eCF = CFrame_new((dCF * CFrame_new(0,0,s[4])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2.5)/3+x,y,z) * CFrame_new(0,0,s[5])
			local fCF = CFrame_new((eCF * CFrame_new(0,0,s[5])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-3)/2+x,y,z) * CFrame_new(0,0,s[6])

			local b1CF = CFrame_new((bCF * CFrame_new(s[7],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/7+x,y,sin(t)/-4+z+0.2) * CFrame_new(s[17],0,0)
			local b2CF = CFrame_new((bCF * CFrame_new(s[8],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/7+x,y,sin(t)/4+z-0.2) * CFrame_new(s[18],0,0)

			local c1CF = CFrame_new((cCF * CFrame_new(s[9],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1.5)/4+x,y,sin(t-0.5)/-3+z+0.5) * CFrame_new(s[11],0,0)
			local c2CF = CFrame_new((cCF * CFrame_new(s[10],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1.5)/4+x,y,sin(t-0.5)/3+z-0.5) * CFrame_new(s[12],0,0)

			local c11CF = CFrame_new((c1CF * CFrame_new(s[11],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/4+x,y,sin(t+0.5)/-2+z+0.7) * CFrame_new(s[19],0,0)
			local c22CF = CFrame_new((c2CF * CFrame_new(s[12],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/4+x,y,sin(t+0.5)/2+z-0.7) * CFrame_new(s[20],0,0)

			local d1CF = CFrame_new((dCF * CFrame_new(s[13],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/4+x,y,sin(t-1)/-2+z+0.4) * CFrame_new(s[21],0,0)
			local d2CF = CFrame_new((dCF * CFrame_new(s[14],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/4+x,y,sin(t-1)/2+z-0.4) * CFrame_new(s[22],0,0)

			local e1CF = CFrame_new((eCF * CFrame_new(s[15],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2.5)/4+x+0.1,y,sin(t-1)/-3+z+0.3) * CFrame_new(s[23],0,0)
			local e2CF = CFrame_new((eCF * CFrame_new(s[16],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2.5)/4+x+0.1,y,sin(t-1)/3+z-0.3) * CFrame_new(s[24],0,0)

			pcount += 1; parts[pcount] = p[1]; cframes[pcount] = aCF; pcount += 1; parts[pcount] = p[2]; cframes[pcount] = bCF; pcount += 1; parts[pcount] = p[3]; cframes[pcount] = cCF
			pcount += 1; parts[pcount] = p[4]; cframes[pcount] = dCF; pcount += 1; parts[pcount] = p[5]; cframes[pcount] = eCF; pcount += 1; parts[pcount] = p[6]; cframes[pcount] = fCF
			pcount += 1; parts[pcount] = p[7]; cframes[pcount] = b1CF; pcount += 1; parts[pcount] = p[8]; cframes[pcount] = b2CF; pcount += 1; parts[pcount] = p[9]; cframes[pcount] = c1CF
			pcount += 1; parts[pcount] = p[10]; cframes[pcount] = c2CF; pcount += 1; parts[pcount] = p[11]; cframes[pcount] = c11CF; pcount += 1; parts[pcount] = p[12]; cframes[pcount] = c22CF
			pcount += 1; parts[pcount] = p[13]; cframes[pcount] = d1CF; pcount += 1; parts[pcount] = p[14]; cframes[pcount] = d2CF; pcount += 1; parts[pcount] = p[15]; cframes[pcount] = e1CF
			pcount += 1; parts[pcount] = p[16]; cframes[pcount] = e2CF

		else
			local aCF = e[4] * CFrame_fromEulerAnglesYXZ(sin(t)/8,0,0) * CFrame_new(0,0,s[1])
			local bCF = CFrame_new((aCF * CFrame_new(0,0,s[1])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1)/7+x,y,z) * CFrame_new(0,0,s[2])
			local cCF = CFrame_new((bCF * CFrame_new(0,0,s[2])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-2)/5+x,y,z) * CFrame_new(0,0,s[3])
			local dCF = CFrame_new((cCF * CFrame_new(0,0,s[3])).Position) * CFrame_fromEulerAnglesYXZ(sin(t-3)/4+x+0.3,y,z) * CFrame_new(0,0,s[4])

			local b1CF = CFrame_new((bCF * CFrame_new(s[5],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-0.5)/7+x,y,sin(t)/4+z-0.2) * CFrame_new(s[9],0,0)
			local b2CF = CFrame_new((bCF * CFrame_new(s[6],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-0.5)/7+x,y,sin(t)/-4+z+0.2) * CFrame_new(s[10],0,0)

			local c1CF = CFrame_new((cCF * CFrame_new(s[7],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1.5)/5+x,y,sin(t-0.5)/3+z-0.3) * CFrame_new(s[11],0,0)
			local c2CF = CFrame_new((cCF * CFrame_new(s[8],0,0)).Position) * CFrame_fromEulerAnglesYXZ(sin(t-1.5)/5+x,y,sin(t-0.5)/-3+z+0.3) * CFrame_new(s[12],0,0)

			pcount += 1; parts[pcount] = p[1]; cframes[pcount] = aCF; pcount += 1; parts[pcount] = p[2]; cframes[pcount] = bCF; pcount += 1; parts[pcount] = p[3]; cframes[pcount] = cCF
			pcount += 1; parts[pcount] = p[4]; cframes[pcount] = dCF; pcount += 1; parts[pcount] = p[5]; cframes[pcount] = b1CF; pcount += 1; parts[pcount] = p[6]; cframes[pcount] = b2CF
			pcount += 1; parts[pcount] = p[7]; cframes[pcount] = c1CF; pcount += 1; parts[pcount] = p[8]; cframes[pcount] = c2CF
		end

		e[8] = t + dt * e[3]
	end

	if pcount > 0 then
		ws:BulkMoveTo(parts, cframes)
	end
end)

If you guys are curious, here’s the video of the script (and flower) in action:

11 Likes