====== VCI update on Virtual Cast 1.5.1a ======
----
===== Feature to synchronize the state of an item as variables =====
This version adds **vci.state**, a feature to synchronize item variables through network,
and functions that are necessary to use the feature: **updateAll**, **vci.assets.IsMine** and **ExportTransform(SubItem).IsMine**.
==== Use examle of updateAll and vci.state ====
function updateAll() -- This is run by all users regardless of ownership
if vci.state.Get("TOGGLE") then
vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 0, 0, 1))
else
vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 1, 1, 1))
end
end
function onUse() -- The grip button
local toggle = vci.state.Get("TOGGLE")
vci.state.Set("TOGGLE", not toggle)
end
=== Before update ===
An example that does almost the same.
TOGGLE="ITEM_UNIQUE_TOGGLE" -- This won't be unique when more than one of the same item are brought into the studio.
vci.studio.shared.Bind(TOGGLE, function(value) -- Bind function is hard to use
if value then
vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 0, 0, 1))
else
vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 1, 1, 1))
end
end)
function onUse() -- The grip button
local value = vci.studio.shared.Get(TOGGLE)
vci.studio.shared.Set(TOGGLE, not value)
end
==== vci.assets.IsMine ====
function updateAll() -- This is run by all users regardless of ownership
if vci.assets.IsMine then
-- The process
end
end
-- The same as above
function update() -- This occurs in the owner of the VCI (The user who spawned the VCI)
-- The process
end
==== ExportTransform(SubItem).IsMine ====
subitem = vci.assets.GetSubItem('item_name')
function updateAll() -- This is run by all users regardless of ownership
if subitem.IsMine then -- This needs to be executed only on the owner of the SubItem
subitem.SetPosition = Vector3.__new(1, 2, 3)
end
end