32 lines
1.4 KiB
Lua
32 lines
1.4 KiB
Lua
function zone_expression(zone_entity, expression_preset, expression_string)
|
|
local distance = 1
|
|
local scene = GetScene()
|
|
local zone_transform = scene.Component_GetTransform(zone_entity)
|
|
if zone_transform ~= nil then
|
|
local zone_pos = zone_transform.GetPosition()
|
|
local zone_active = false
|
|
|
|
for i,entity in ipairs(scene.Entity_GetExpressionArray()) do
|
|
local transform = scene.Component_GetTransform(entity)
|
|
local expression = scene.Component_GetExpression(entity)
|
|
if expression ~= nil and transform ~= nil then
|
|
local expression_pos = transform.GetPosition()
|
|
if vector.Subtract(expression_pos, zone_pos).Length() < distance then
|
|
expression.SetPresetWeight(expression_preset, 1)
|
|
zone_active = true
|
|
else
|
|
expression.SetPresetWeight(expression_preset, 0)
|
|
end
|
|
end
|
|
end
|
|
|
|
local str = "If character gets close to this, it will be " .. expression_string .. "\n"
|
|
if zone_active then
|
|
str = str .. "...and a character is currently " .. expression_string .. "!"
|
|
else
|
|
str = str .. "...but no one is " .. expression_string .. " currently."
|
|
end
|
|
DrawDebugText(str, vector.Add(zone_pos, Vector(0,1,0)), Vector(1,1,1,1), 0.1, DEBUG_TEXT_DEPTH_TEST | DEBUG_TEXT_CAMERA_FACING)
|
|
end
|
|
end
|