You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
3.8 KiB
139 lines
3.8 KiB
--"SetCustomRace" removed in 10.1.5
|
|
|
|
local function CustomModelPosition(model, raceID, genderID)
|
|
model:MakeCurrentCameraCustom();
|
|
raceID = ReAssignRaceID(raceID, true);
|
|
|
|
local data;
|
|
if genderID == 2 then
|
|
data = TranslateValue_Male[raceID][2];
|
|
else
|
|
data = TranslateValue_Female[raceID][2];
|
|
end
|
|
|
|
model:SetPosition(0, data[2], data[3]);
|
|
model:SetPortraitZoom(data[1]);
|
|
model:MakeCurrentCameraCustom();
|
|
After(0, function()
|
|
model:ResetCameraPosition();
|
|
end)
|
|
end
|
|
|
|
function Narci_GenderButton_OnLoad(self)
|
|
self.tooltipDescription = Narci.L["Sex Change Tooltip"];
|
|
local _, genderID = GetUnitRaceIDAndSex("player");
|
|
SetGenderIcon(genderID);
|
|
end
|
|
|
|
local function RestoreModelAfterRaceChange(model)
|
|
if model.isPaused then
|
|
model:Freeze(model.animationID or 804);
|
|
else
|
|
model:PlayAnimation(model.animationID or 804);
|
|
end
|
|
|
|
After(0, function()
|
|
local visualID;
|
|
local AppliedVisuals = model.AppliedVisuals;
|
|
for i = 1, #AppliedVisuals do
|
|
visualID = AppliedVisuals[i];
|
|
if visualID then
|
|
model:ApplySpellVisualKit(visualID, false);
|
|
end
|
|
end
|
|
if model.isVirtual then
|
|
model:SetModelAlpha(0);
|
|
else
|
|
model:SetModelAlpha(1);
|
|
end
|
|
|
|
model.hasRaceChanged = true;
|
|
--Weapons Gone
|
|
--It seems that after race change, the model can no longer get dressed or undressed
|
|
--[[
|
|
local WeaponInfo = ActorPanel;
|
|
if WeaponInfo.MainHandSource then
|
|
model:TryOn(WeaponInfo.MainHandSource, "MAINHANDSLOT", WeaponInfo.MainHandEnchant);
|
|
end
|
|
if WeaponInfo.OffHandSource then
|
|
model:TryOn(WeaponInfo.OffHandSource, "SECONDARYHANDSLOT", WeaponInfo.OffHandEnchant);
|
|
end
|
|
--]]
|
|
end)
|
|
end
|
|
|
|
--[[
|
|
function Narci_GenderButton_OnClick(self)
|
|
local index = ACTIVE_MODEL_INDEX;
|
|
local model = ModelFrames[ACTIVE_MODEL_INDEX];
|
|
local genderID = PlayerInfo[index].gender or 2;
|
|
local raceID = PlayerInfo[index].raceID;
|
|
local _, _, dirX, dirY, dirZ, _, ambR, ambG, ambB, _, dirR, dirG, dirB = GetModelLight(model);
|
|
model:SetBarberShopAlternateForm();
|
|
if genderID == 2 then
|
|
model:SetCustomRace(raceID, 1);
|
|
genderID = 3;
|
|
elseif genderID == 3 then
|
|
model:SetCustomRace(raceID, 0);
|
|
genderID = 2;
|
|
end
|
|
PlayerInfo[index].gender = genderID;
|
|
SetGenderIcon(PlayerInfo[index].gender);
|
|
model:SetModelAlpha(0);
|
|
After(0, function()
|
|
CustomModelPosition(model, raceID, genderID);
|
|
After(0, function()
|
|
RestoreModelAfterRaceChange(model);
|
|
SetModelLight(model, true, false, dirX, dirY, dirZ, 1, ambR, ambG, ambB, 1, dirR, dirG, dirB);
|
|
end);
|
|
end);
|
|
end
|
|
|
|
|
|
local AutoCloseTimer2 = C_Timer.NewTimer(0, function() end);
|
|
|
|
local function AutoCloseRaceOption(time)
|
|
AutoCloseTimer2:Cancel();
|
|
AutoCloseTimer2 = C_Timer.NewTimer(time, function()
|
|
if NarciModelControl_ActorButton.isOn then
|
|
NarciModelControl_ActorButton:Click();
|
|
end
|
|
end)
|
|
end
|
|
|
|
function Narci_RaceOptionButton_OnEnter(self)
|
|
self.Highlight:Show();
|
|
AutoCloseTimer2:Cancel();
|
|
end
|
|
|
|
function Narci_RaceOptionButton_OnLeave(self)
|
|
self.Highlight:Hide();
|
|
AutoCloseRaceOption(2);
|
|
end
|
|
|
|
function Narci_RaceOptionButton_OnClick(self)
|
|
AutoCloseTimer2:Cancel();
|
|
local model = ModelFrames[ACTIVE_MODEL_INDEX];
|
|
local genderID = PlayerInfo[ACTIVE_MODEL_INDEX].gender;
|
|
local raceID = self:GetID() or 1;
|
|
PlayerInfo[ACTIVE_MODEL_INDEX].raceID = raceID;
|
|
local _, _, dirX, dirY, dirZ, _, ambR, ambG, ambB, _, dirR, dirG, dirB = GetModelLight(model);
|
|
model:SetBarberShopAlternateForm();
|
|
if genderID == 2 then
|
|
model:SetCustomRace(raceID, 0);
|
|
else
|
|
model:SetCustomRace(raceID, 1);
|
|
end
|
|
AutoCloseRaceOption(4);
|
|
|
|
model:SetModelAlpha(0);
|
|
After(0, function()
|
|
CustomModelPosition(model, raceID, genderID);
|
|
After(0, function()
|
|
RestoreModelAfterRaceChange(model);
|
|
SetModelLight(model, true, false, dirX, dirY, dirZ, 1, ambR, ambG, ambB, 1, dirR, dirG, dirB);
|
|
end);
|
|
end);
|
|
end
|
|
|
|
--]]
|