public SimAvatar(SimAvatar old) : base(old.BaseSkeleton) { m_Handgroup = old.m_Handgroup; m_Body = old.m_Body; m_Head = old.m_Head; ReloadSkeleton(); ReloadHead(); ReloadBody(); ReloadHandgroup(); }
public static void ApplyHeadSeek(SimAvatar avatar, Quaternion quat, float weight) { var head = avatar.Skeleton.GetBone("HEAD"); if (weight == 1) { head.Rotation = quat; } else { head.Rotation = Quaternion.Slerp(head.Rotation, quat, weight); } }
public UIPieMenu(List<VMPieMenuInteraction> pie, VMEntity obj, VMEntity caller, UILotControl parent) { if (FSOEnvironment.UIZoomFactor>1.33f) ScaleX = ScaleY = FSOEnvironment.UIZoomFactor*0.75f; TrueScale = ScaleX *FSOEnvironment.DPIScaleFactor; m_PieButtons = new List<UIButton>(); this.m_Obj = obj; this.m_Caller = caller; this.m_Parent = parent; this.ButtonStyle = new TextStyle { Font = GameFacade.MainFont, Size = 12, Color = new Color(0xA5, 0xC3, 0xD6), SelectedColor = new Color(0x00, 0xFF, 0xFF), CursorColor = new Color(255, 255, 255) }; m_Bg = new UIImage(TextureGenerator.GetPieBG(GameFacade.GraphicsDevice)); m_Bg.SetSize(0, 0); //is scaled up later this.AddAt(0, m_Bg); m_PieTree = new UIPieMenuItem() { Category = true }; for (int i = 0; i < pie.Count; i++) { string[] depth = (pie[i].Name == null)?new string[] { "???" } :pie[i].Name.Split('/'); var category = m_PieTree; //set category to root for (int j = 0; j < depth.Length-1; j++) //iterate through categories { if (category.Children.ContainsKey(depth[j])) { category = category.Children[depth[j]]; } else { var newCat = new UIPieMenuItem() { Category = true, Name = depth[j], Parent = category }; category.Children.Add(depth[j], newCat); category = newCat; } } //we are in the category, put the interaction in here; var item = new UIPieMenuItem() { Category = false, Name = depth[depth.Length - 1], ID = pie[i].ID, Param0 = pie[i].Param0 }; if (!category.Children.ContainsKey(item.Name)) category.Children.Add(item.Name, item); } m_CurrentItem = m_PieTree; m_PieButtons = new List<UIButton>(); RenderMenu(); VMAvatar Avatar = (VMAvatar)caller; m_Head = new SimAvatar(Avatar.Avatar); //talk about confusing... m_Head.StripAllButHead(); initSimHead(); }
public void SetAvatarType(STR data) { if (data == null) { AvatarType = VMAvatarType.Adult; } else { var type = data.GetString(0); if (type == "adult") AvatarType = VMAvatarType.Adult; else if (type == "child") AvatarType = VMAvatarType.Child; else if (type == "cat") AvatarType = VMAvatarType.Cat; else if (type == "dog") AvatarType = VMAvatarType.Dog; } switch (AvatarType) { case VMAvatarType.Adult: Avatar = new SimAvatar(FSO.Content.Content.Get().AvatarSkeletons.Get("adult.skel")); Avatar.Head = FSO.Content.Content.Get().AvatarOutfits.Get("mah010_baldbeard01.oft"); //default to bob newbie, why not Avatar.Body = FSO.Content.Content.Get().AvatarOutfits.Get("mab002_slob.oft"); Avatar.Handgroup = Avatar.Body; break; case VMAvatarType.Cat: var skel = FSO.Content.Content.Get().AvatarSkeletons.Get("cat.skel"); Avatar = new SimAvatar(skel); Avatar.Body = FSO.Content.Content.Get().AvatarOutfits.Get("uaa002cat_calico.oft"); break; case VMAvatarType.Dog: Avatar = new SimAvatar(FSO.Content.Content.Get().AvatarSkeletons.Get("dog.skel")); Avatar.Body = FSO.Content.Content.Get().AvatarOutfits.Get("uaa012dog_scottish.oft"); //;) break; } }