130 lines
3.7 KiB
Plaintext
130 lines
3.7 KiB
Plaintext
Astrolabe_LineCell = class("Astrolabe_LineCell", BaseCell);
|
|
|
|
Astrolabe_LineCell.Line_Path = ResourcePathHelper.UICell("Astrolabe_line");
|
|
Astrolabe_LineCell.Line_Mask_Path = ResourcePathHelper.UICell("Astrolabe_line_mask");
|
|
|
|
local tempV3_1, tempV3_2 = LuaVector3(), LuaVector3();
|
|
local tempRot = LuaQuaternion();
|
|
function Astrolabe_LineCell:ctor()
|
|
self.gameObject = Game.AssetManager_UI:CreateAstrolabeAsset(self.Line_Path);
|
|
self.transform = self.gameObject.transform;
|
|
self.transform.localScale = LuaGeometry.Const_V3_one;
|
|
self.gameObject:SetActive(false);
|
|
|
|
self.line = self.gameObject:GetComponent(UISprite);
|
|
end
|
|
|
|
function Astrolabe_LineCell:ReSetPos(p1_x,p1_y,p1_z, p2_x,p2_y,p2_z)
|
|
tempV3_1:Set( p1_x,p1_y,p1_z );
|
|
tempV3_2:Set( p2_x,p2_y,p2_z );
|
|
|
|
self.transform.localPosition = tempV3_1;
|
|
self.line.width = LuaVector3.Distance(tempV3_1, tempV3_2);
|
|
|
|
local x,y,z = tempV3_1[1], tempV3_1[2], tempV3_1[3];
|
|
tempV3_1:Set(tempV3_2[1] - x, tempV3_2[2] - y, tempV3_2[3] - z);
|
|
|
|
tempV3_2:Set(1,0,0);
|
|
local angle = LuaVector3.Angle(tempV3_2, tempV3_1);
|
|
angle = tempV3_1.y > 0 and angle or -angle;
|
|
tempV3_1:Set(0, 0, angle);
|
|
tempRot.eulerAngles = tempV3_1;
|
|
self.transform.localRotation = tempRot;
|
|
end
|
|
|
|
function Astrolabe_LineCell:SetData(point1, point2, priStateMap)
|
|
if(point1 and point2)then
|
|
self.point1 = point1;
|
|
self.point2 = point2;
|
|
|
|
local p1_state = priStateMap and priStateMap[point1.guid];
|
|
local p2_state = priStateMap and priStateMap[point2.guid];
|
|
if(p1_state == nil)then
|
|
p1_state = point1:GetState();
|
|
end
|
|
if(p2_state == nil)then
|
|
p2_state = point2:GetState();
|
|
end
|
|
if(p1_state == Astrolabe_PointData_State.On and p2_state == Astrolabe_PointData_State.On)then
|
|
self.line.spriteName = "xingpan_line_light";
|
|
self.line.height = 22;
|
|
else
|
|
self.line.spriteName = "xingpan_line_dack";
|
|
self.line.height = 12;
|
|
end
|
|
end
|
|
end
|
|
|
|
function Astrolabe_LineCell:SetSprite(name)
|
|
self.line.sprinteName = name;
|
|
end
|
|
|
|
function Astrolabe_LineCell:SetSize(w,h)
|
|
if(w)then
|
|
self.line.width = w;
|
|
end
|
|
if(h)then
|
|
self.line.height = h;
|
|
end
|
|
end
|
|
|
|
local LineMask_SpriteName = {
|
|
[1] = "xingpan_line_chongzhi",
|
|
[2] = "xingpan_line_jihuo2",
|
|
[3] = "xingpan_line_jihuo1",
|
|
}
|
|
function Astrolabe_LineCell:SetMaskType(type)
|
|
if(type and LineMask_SpriteName[type])then
|
|
if(self.mask == nil)then
|
|
local mask = Game.AssetManager_UI:CreateAstrolabeAsset(self.Line_Mask_Path, self.gameObject.transform);
|
|
mask.transform.localPosition = LuaGeometry.Const_V3_zero;
|
|
mask.transform.localRotation = LuaGeometry.Const_Qua_identity;
|
|
mask.transform.localScale = LuaGeometry.Const_V3_one;
|
|
|
|
self.mask = mask:GetComponent(UISprite);
|
|
self.mask.width = self.line.width;
|
|
end
|
|
self.mask.spriteName = LineMask_SpriteName[type];
|
|
else
|
|
self:RemoveMask();
|
|
end
|
|
end
|
|
|
|
function Astrolabe_LineCell:RemoveMask()
|
|
if(not Slua.IsNull(self.mask) )then
|
|
Game.GOLuaPoolManager:AddToAstrolabePool(self.Line_Mask_Path, self.mask.gameObject);
|
|
end
|
|
self.mask = nil;
|
|
end
|
|
|
|
function Astrolabe_LineCell:OnAdd(parent)
|
|
self.transform:SetParent(parent.transform, false);
|
|
self.transform.localScale = LuaGeometry.Const_V3_one;
|
|
|
|
self.gameObject:SetActive(true);
|
|
end
|
|
|
|
function Astrolabe_LineCell:OnRemove()
|
|
self.point1 = nil;
|
|
self.point2 = nil;
|
|
self.gameObject:SetActive(false);
|
|
|
|
if(not Slua.IsNull(self.mask) )then
|
|
Game.GOLuaPoolManager:AddToAstrolabePool(self.Line_Mask_Path, self.mask.gameObject);
|
|
end
|
|
self.mask = nil;
|
|
|
|
AstrolabeCellPool.Instance:AddToTempPool(self.gameObject);
|
|
end
|
|
|
|
function Astrolabe_LineCell:OnDestroy()
|
|
if(not Slua.IsNull(self.gameObject))then
|
|
self.point1 = nil;
|
|
self.point2 = nil;
|
|
|
|
self:RemoveMask();
|
|
|
|
self.gameObject:SetActive(false);
|
|
Game.GOLuaPoolManager:AddToAstrolabePool(self.Line_Path , self.gameObject);
|
|
end
|
|
end |