mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
114 lines
1.9 KiB
Lua
114 lines
1.9 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
local consume = test.EventConsumer({
|
|
"shown from rendering",
|
|
"event think",
|
|
"event triggers hide",
|
|
"hidden",
|
|
"event triggers show",
|
|
"shown from event",
|
|
})
|
|
|
|
function test.Run(done)
|
|
local stage = nil
|
|
|
|
do
|
|
local BUILDER, PART = pac.PartTemplate("base_drawable")
|
|
|
|
PART.FriendlyName = "test"
|
|
PART.ClassName = "test"
|
|
PART.Icon = 'icon16/cut.png'
|
|
|
|
function PART:OnShow(from_rendering)
|
|
if from_rendering then
|
|
-- TODO: OnShow(true) triggers 2 times
|
|
if stage == nil then
|
|
-- 1
|
|
|
|
consume("shown from rendering")
|
|
stage = "first event frame"
|
|
end
|
|
else
|
|
if stage == "wait for trigger" then
|
|
|
|
-- 5
|
|
|
|
consume("shown from event")
|
|
self:GetRootPart():Remove()
|
|
end
|
|
end
|
|
end
|
|
|
|
function PART:OnHide()
|
|
if stage == "hide from event" then
|
|
|
|
-- 3
|
|
|
|
consume("hidden")
|
|
stage = "show trigger"
|
|
end
|
|
end
|
|
|
|
function PART:OnRemove()
|
|
done()
|
|
end
|
|
|
|
pac.RegisterPart(PART)
|
|
end
|
|
|
|
do
|
|
local event = pac.CreateEvent("test")
|
|
|
|
function event:Think(event, ent, ...)
|
|
|
|
if stage == "first event frame" then
|
|
|
|
-- 2
|
|
|
|
consume("event think")
|
|
stage = "hide trigger"
|
|
|
|
|
|
elseif stage == "hide trigger" then
|
|
|
|
|
|
-- 3
|
|
|
|
consume("event triggers hide")
|
|
stage = "hide from event"
|
|
|
|
return true -- hide
|
|
elseif stage == "show trigger" then
|
|
|
|
-- 4
|
|
|
|
consume("event triggers show")
|
|
stage = "wait for trigger"
|
|
|
|
|
|
return false -- show
|
|
end
|
|
end
|
|
|
|
pac.RegisterEvent(event)
|
|
end
|
|
|
|
local root = pac.CreatePart("group")
|
|
|
|
do
|
|
local event = root:CreatePart("event")
|
|
event:SetEvent("test")
|
|
event:SetAffectChildrenOnly(true)
|
|
|
|
local child = event:CreatePart("test")
|
|
end
|
|
end |