154 lines
5.8 KiB
Lua
154 lines
5.8 KiB
Lua
|
|
------------------------------------------------
|
|
--作者: gzg
|
|
--日期: 2020-02-20
|
|
--文件: FSkinModelWrap.lua
|
|
--模块: FSkinModelWrap
|
|
--描述: 示例类
|
|
--注意: 在类中的定义字段,不能赋值为nil,需要赋值为一个值.
|
|
------------------------------------------------
|
|
--引用
|
|
local LuaFSkinModel = CS.Thousandto.Plugins.LuaType.LuaFSkinModel;
|
|
local FSkinPartCode = require("Logic.FGameObject.FSkinPartCode")
|
|
local FSkinPartWrap = require("Logic.FGameObject.FSkinPartWrap")
|
|
|
|
--在类中的定义字段,不能赋值为nil,需要赋值为一个值.默认可以为0
|
|
local FSkinModelWrap = {
|
|
--CS父类对象
|
|
_SuperObj_ = 0,
|
|
--这里如果定义成员,这里必须
|
|
}
|
|
|
|
--#region --类继承的固定模板
|
|
|
|
--构造函数
|
|
function FSkinModelWrap:New(...)
|
|
local _m = Utils.DeepCopy(self)
|
|
_m._SuperObj_ = LuaFSkinModel.Create(...);
|
|
_m:_InitBindOverride_();
|
|
_m:_InitContent_();
|
|
Utils.BuildInheritRel(_m);
|
|
return _m
|
|
end
|
|
|
|
function FSkinModelWrap:GetCSObj()
|
|
return self._SuperObj_;
|
|
end
|
|
|
|
--绑定Override的方法
|
|
function FSkinModelWrap:_InitBindOverride_()
|
|
--重载函数的重定义
|
|
self._SuperObj_.OnSetPartHierarchyDelegate = Utils.Handler(self.OnSetPartHierarchy, self, nil, true);
|
|
self._SuperObj_.OnCreatePartInfoDelegate = Utils.Handler(self.OnCreatePartInfo, self, nil, true);
|
|
self._SuperObj_.OnDestoryAfterDelegate = Utils.Handler(self.OnDestoryAfter, self, nil, true);
|
|
--...
|
|
end
|
|
|
|
--初始化
|
|
function FSkinModelWrap:_InitContent_()
|
|
--todo
|
|
end
|
|
|
|
--卸载
|
|
function FSkinModelWrap:Free()
|
|
self._SuperObj_.OnSetPartHierarchyDelegate = nil;
|
|
self._SuperObj_.OnCreatePartInfoDelegate = nil;
|
|
self._SuperObj_.OnDestoryAfterDelegate = nil;
|
|
LuaFSkinModel.Destroy(self._SuperObj_);
|
|
Utils.Destory(self);
|
|
end
|
|
|
|
--#endregion
|
|
|
|
--#region-- Overrider 继承父类函数
|
|
-- <summary>
|
|
-- C#对象删除
|
|
-- </summary>
|
|
-- <param name="skin">FSkinBase</param>
|
|
-- <param name="part">FSkinPartBase</param>
|
|
function FSkinModelWrap:OnDestoryAfter()
|
|
self._SuperObj_.OnSetPartHierarchyDelegate = nil;
|
|
self._SuperObj_.OnCreatePartInfoDelegate = nil;
|
|
self._SuperObj_.OnDestoryAfterDelegate = nil;
|
|
Utils.Destory(self);
|
|
end
|
|
|
|
-- <summary>
|
|
-- --设置部位的层次
|
|
-- </summary>
|
|
-- <param name="skin">FSkinBase</param>
|
|
-- <param name="part">FSkinPartBase</param>
|
|
function FSkinModelWrap:OnSetPartHierarchy(skin, part)
|
|
if part.Code == FSkinPartCode.Body then
|
|
--主体,如果有坐骑,那么就挂到坐骑的上面,如果没有坐骑,就放到根节点下
|
|
if (not self:CreateRelation(skin, FSkinPartCode.Mount, FSkinPartCode.Body)) then
|
|
--如果没有坐骑,选择特效挂在主体身上
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.SelectedVfx);
|
|
--封印的展示特效
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.SealVfx);
|
|
end
|
|
--武器
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.GodWeaponBody);
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.GodWeaponHead);
|
|
--翅膀
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.Wing);
|
|
--强化特效
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.StrengthenVfx);
|
|
--头顶提示
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.HeadPromptVfx);
|
|
--转职特效
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.TransVfx);
|
|
--仙甲阵道
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.XianjiaZhen);
|
|
--仙甲光环
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.XianjiaHuan);
|
|
elseif part.Code == FSkinPartCode.Mount
|
|
then
|
|
--设置坐骑的父节点,并把身体的对象挂在坐骑上
|
|
skin.AddChild(part.FGameObject, part.ModelInfo.SlotName);
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.Body);
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.SelectedVfx);
|
|
--封印的展示特效
|
|
self:CreateRelation(skin, part.Code, FSkinPartCode.SealVfx);
|
|
elseif part.Code == FSkinPartCode.GodWeaponHead
|
|
or part.Code == FSkinPartCode.GodWeaponBody
|
|
or part.Code == FSkinPartCode.Wing
|
|
then
|
|
--装备武器,如果有身体,就挂到身体上,如果没有就挂到根节点上
|
|
self:CreateRelation(skin, FSkinPartCode.Body, part.Code);
|
|
|
|
elseif part.Code == FSkinPartCode.StrengthenVfx
|
|
or part.Code == FSkinPartCode.HeadPromptVfx
|
|
or part.Code == FSkinPartCode.TransVfx
|
|
or part.Code == FSkinPartCode.XianjiaZhen
|
|
or part.Code == FSkinPartCode.XianjiaHuan
|
|
then
|
|
--头顶特效,强化特效,如果有身体,就挂到身体上,如果没有就挂到根节点上
|
|
self:CreateRelation(skin, FSkinPartCode.Body, part.Code);
|
|
elseif part.Code == FSkinPartCode.SelectedVfx
|
|
or part.Code == FSkinPartCode.SealVfx
|
|
then
|
|
--主体,如果有坐骑,那么就挂到坐骑的上面,如果没有坐骑,就放到根节点下
|
|
if ( not self:CreateRelation(skin, FSkinPartCode.Mount, part.Code, false)) then
|
|
self:CreateRelation(skin, FSkinPartCode.Body, part.Code);
|
|
end
|
|
elseif part.Code == FSkinPartCode.GodWeaponVfx
|
|
then
|
|
--主体,如果有坐骑,那么就挂到坐骑的上面,如果没有坐骑,就放到根节点下
|
|
self:CreateRelation(skin, FSkinPartCode.GodWeaponHead, part.Code);
|
|
end
|
|
end
|
|
|
|
-- <summary>
|
|
-- 创建PartInfo
|
|
-- </summary>
|
|
-- <param name="code">int</param>
|
|
-- <param name="callBack">MyAction<FSkinPartBase></param>
|
|
-- <returns></returns>
|
|
function FSkinModelWrap:OnCreatePartInfo(code, callBack)
|
|
return FSkinPartWrap:New(self:GetCSObj(),code,callBack,false):GetCSObj();
|
|
end
|
|
|
|
--#endregion
|
|
|
|
return FSkinModelWrap |