68 lines
No EOL
2.1 KiB
Text
68 lines
No EOL
2.1 KiB
Text
--'******************************************************
|
|
--'* Áèíäåð îáúåêòà àðòåôàêò .
|
|
--'******************************************************
|
|
function printf()
|
|
end
|
|
|
|
function bind(obj)
|
|
obj:bind_object(artefact_binder(obj))
|
|
end
|
|
|
|
class "artefact_binder" (object_binder)
|
|
function artefact_binder:__init(obj) super(obj)
|
|
db.storage[self.object:id()] = { }
|
|
end
|
|
function artefact_binder:net_spawn(server_object)
|
|
if not object_binder.net_spawn(self, server_object) then
|
|
return false
|
|
end
|
|
db.add_obj(self.object)
|
|
local artefact = self.object:get_artefact()
|
|
local id = self.object:id()
|
|
if bind_anomaly_zone.artefact_ways_by_id[id] ~= nil then
|
|
local anomal_zone = bind_anomaly_zone.parent_zones_by_artefact_id[id]
|
|
local force_xz = anomal_zone.applying_force_xz
|
|
local force_y = anomal_zone.applying_force_y
|
|
artefact:FollowByPath(bind_anomaly_zone.artefact_ways_by_id[id],bind_anomaly_zone.artefact_points_by_id[id],vector():set(force_xz,force_y,force_xz))
|
|
-- artefact:FollowByPath(bind_anomaly_zone.artefact_ways_by_id[id],0,vector():set(force_xz,force_y,force_xz))
|
|
end
|
|
|
|
self.first_call = true
|
|
|
|
|
|
|
|
return true
|
|
end
|
|
function artefact_binder:update(delta)
|
|
object_binder.update(self, delta)
|
|
printf("pl:art [%s] pos %s", self.object:name(), vec_to_str(self.object:position()))
|
|
|
|
if self.first_call == true then
|
|
local ini = self.object:spawn_ini()
|
|
if not (ini and ini:section_exist("fixed_bone")) then
|
|
return
|
|
end
|
|
local bone_name = ini:r_string("fixed_bone", "name")
|
|
|
|
local ph_shell = self.object:get_physics_shell()
|
|
if not ph_shell then
|
|
--printf("no ph shell")
|
|
return
|
|
end
|
|
|
|
local ph_element = ph_shell:get_element_by_bone_name(bone_name)
|
|
|
|
if ph_element:is_fixed() then
|
|
--printf("OBJECT FIXED")
|
|
else
|
|
--printf("FIXING OBJECT")
|
|
ph_element:fix()
|
|
end
|
|
self.first_call = false
|
|
end
|
|
|
|
end
|
|
function artefact_binder:net_destroy(server_object)
|
|
db.del_obj(self.object)
|
|
object_binder.net_destroy(self)
|
|
end |