I agree that the user plugin path very well could be included in package.path as default.
check out the API function GetPath to simplify your script.
- these few lines seems to do the job for me:
I agree that the user plugin path very well could be included in package.path as default.
check out the API function GetPath to simplify your script.
- these few lines seems to do the job for me:
this is intentional and normal for temporary functions (like Flash) which executes opposite actions on key-press (Flash On) versus key-release (Flash Off)
a more in-depth terminology for "off when overridden", would be "off when permanently overridden"
1) I merely assume that it has changed, as I expect that if this function when initially created, had the currently observed functionality, then it would have been created with a different name and description.
2) use a fixed name
local pv = PluginVars('StorageContainerForMyGreatPlugin')
(assuming you want copies/duplicates/imports of the plugin to use the same/existing container)
2.a) use the string representation of the plugin's handle as name:
local componentHandle = select(4, ...)
---
local uniqueName = HandleToStr(componentHandle:Parent())
2.b)
To my understanding, the main/initial purpose for this function is to preserve settings of the internal/UI plugins (Menu keyword), as the Menus have a fixed name, and the preferences and vars are not only userprofile, but also screenconfig specific:
Echo(pv:AddrNative())
the actual functionality has changed for this function
maybe this "bugfix" can be helpful
local pluginName = select(1, ...)
local PluginPreferences = PluginVars
local function PluginVars(name)
return PluginPreferences(name)[1]
end
local function main()
local pv = PluginVars(pluginName)
Echo(pv:GetClass())
local pp = PluginPreferences(pluginName)
Echo(pp:GetClass())
SetVar(pv, "someName", "some string value")
end
return main
Display More
Hi Lukas,
to my knowledge:
as you mention, HookObjectChange will trigger by changes to objects and its properties.
Playback does not make any "change" to the object.
Here's another approach, without using constant polling:
local myplugin = select(4,...):Parent()
local function addfeedback(seq)
local on, off = seq['CueZero'][1], seq['OffCue'][1]
if #on.command + #off.command == 0 then
on.command = string.format('Lua "notify(%i,true)"',HandleToInt(seq))
off.command = string.format('Lua "notify(%i,false)"',HandleToInt(seq))
Echo('feedback added to '..seq:ToAddr())
end
end
function mycallback(arg)
local sequences = ObjectList('Sequence Thru')
for _,seq in ipairs(sequences) do
addfeedback(seq)
end
end
function notify(seq, status)
if status then
Echo(IntToHandle(seq):ToAddr()..' was switched on')
else
Echo(IntToHandle(seq):ToAddr()..' was switched off')
end
end
return function()
HookObjectChange(mycallback, DataPool().Sequences, myplugin)
end
Display More
seems that the mapping of appearance images on stage walls requires a source image with 1:1 ratio.
try resizing or cropping your png image in an external editor before import, so that it has the same pixelwidth as pixelheight.
not a perfect circle, but for a center-out effect, try the matricks settings:
XWings = 2
YWings = 2
PhaseToX = -90
PhaseToY = -90
maybe this approach could work for you:
Sequence "*Blinder*" Cue "OffCue" CueFade .5
a gma3 plugin is handled as a Lua coroutine.
you need to include the generic Lua function coroutine.yield(seconds), e.g. coroutine.yield(0.1) the places in your code where you want to allow other plugins (and the UI) to resume their code.
as a workaround you could use the playback function "Off", to clear the programmer:
Off Programmer
[Off][MA]&[Cue][Please]
works for me..
e.g.
Lua "ShowData().Appearances[1].ImageR=127"
Lua "Echo(ShowData().Appearances[1].ImageR)"
Preview On
...
...
...
Preview Off
"Is it possible to set LinkPhaser to AtFilter using the command line or a macro?"
please look at the commandline history window after operating the LinkPhaser button, e.g:
Set UserProfile 1 Property "EncoderLinkPhaser" "AtFilter"
in the later versions, a starting MAtricks keyword is used to reference MAtricks pool objects.
to set the matricks of your current selection try:
Lua "Cmd([[Set Selection MAtricks 'XWidth' '%.f' 'Y' '0']], SelectionCount()/2)"
sorry, typing error - it should be ScreenContent, not ScreenConfig.
- I have now edited the original post
possible but not trivial...
Set ScreenContent x.y."LayoutViewSettings" Property "Layout" "a.Layouts.b"
x = screen number
y = window number
(window number depends on the creation order of each window and may change if you add or delete windows)
a = datapool name/number
b = layout name/number
e.g.
Set ScreenContent 1.5."LayoutViewSettings" Property "Layout" "Default.Layouts.4"
I would use different functions for each group of buttons:
tblOptions[x].Clicked = "Group1Click"
--
AnotherTblOptions[x].Clicked = "Group2Click"
--
signalTable.Group1Click = function(caller)
Echo("ButtonGrp 1 Button " .. caller:Index())
end
--
signalTable.Group2Click = function(caller)
Echo("ButtonGrp 2 Button " .. caller:Index())
be aware that the commandine syntax e.g.
Width 10
will apply to the single currently Selected Attribute (bright yellow font in Fixture Sheet column secondary headline),
while the Phaser Editor Window checkboxes doesn't select attributes, but rather filters attributes, by operating the AtFilter.
Only if "Link Phaser" is set to AtFilter, will the syntax above propagate the width value from the selected attribute to other attributes (that are not disabled by these filter checkboxes)
----
My edit dialog shows 0 - 3200%, don't know why yours show only value 0