public void SetDisplayCharacter(Character.Character character) { if (character == null) { throw new ArgumentNullException(nameof(character)); } _CharacterNameText.Text = character.Name; _CharacterNameText.Show(); _Character.SetVisual(character.Template.Model.BaseDef.Visual); //We have custom visuals from the server because it is a human character. if (character is HumanCharacter humanCharacter) { HumanCharacterVisuals visuals = humanCharacter.CharacterVisuals; _Character.SetAdditionalVisuals(visuals.BodyMesh.ToString(), (int)visuals.BodyTex, visuals.HeadMesh.ToString(), (int)visuals.HeadTex); _Character.SetFatness(visuals.Fatness); _Character.SetScale(new Types.Vec3f(visuals.BodyWidth, 1.0f, visuals.BodyWidth)); } else { //Its a non human character, take the visuals from the template. _Character.SetAdditionalVisuals(character.Template.BodyMesh, character.Template.BodyTex, character.Template.HeadMesh, character.Template.HeadTex); _Character.SetFatness(1); _Character.SetScale(new Types.Vec3f(1.0f, 1.0f, 1.0f)); } _DisplayCharacterIsHidden = false; }
private void OnCursorChanged(GUCMainMenu sender) { if (cursor >= 0 && cursor < _Characters.Length) { Character.Character character = _Characters[cursor]; _CharacterNameText.Text = character.Name; _CharacterNameText.Show(); _CharacterDisplay.SetVisual(character.Template.Model.BaseDef.Visual); //We have custom visuals from the server because it is a human character. if (character is HumanCharacter humanCharacter) { HumanCharacterVisuals visuals = humanCharacter.CharacterVisuals; _CharacterDisplay.SetAdditionalVisuals(visuals.BodyMesh.ToString(), (int)visuals.BodyTex, visuals.HeadMesh.ToString(), (int)visuals.HeadTex); _CharacterDisplay.SetFatness(visuals.Fatness); _CharacterDisplay.SetScale(new Types.Vec3f(visuals.BodyWidth, 1.0f, visuals.BodyWidth)); } else { //Its a non human character, take the visuals from the template. _CharacterDisplay.SetAdditionalVisuals(character.Template.BodyMesh, character.Template.BodyTex, character.Template.HeadMesh, character.Template.HeadTex); _CharacterDisplay.SetFatness(1); _CharacterDisplay.SetScale(new Types.Vec3f(1.0f, 1.0f, 1.0f)); } } }
public Character.Character ReadCharacter(PacketReader stream) { try { int characterId = stream.ReadInt(); string characterName = stream.ReadString(); int templateId = stream.ReadInt(); bool isHumanCharacter = stream.ReadBit(); if (!_NpcDefList.TryGetByName(templateId, out NPCDef def)) { throw new ArgumentException($"Character with name '{characterName}' has a invalid templateId(NPCDef)!"); } if (isHumanCharacter) { HumanCharacterVisuals additionalVisuals = new HumanCharacterVisuals { BodyMesh = (HumBodyMeshs)stream.ReadByte(), BodyTex = (HumBodyTexs)stream.ReadByte(), HeadMesh = (HumHeadMeshs)stream.ReadByte(), HeadTex = (HumHeadTexs)stream.ReadByte(), Voice = (HumVoices)stream.ReadByte(), BodyWidth = stream.ReadFloat(), Fatness = stream.ReadFloat(), }; return(new HumanCharacter(characterId, characterName, additionalVisuals, def)); } return(new NonHumanCharacter(characterId, characterName, def)); } catch (Exception e) { throw new ScriptMessageHandlingException("Something went wrong while reading character visuals information from a server script message!", e); } }