/// <summary> /// Adds a body mesh for this Sim. /// </summary> /// <param name="ID">The ID of the body mesh to add.</param> public void AddBodyMesh(ulong ID) { m_BodyMesh = new Mesh(); m_BodyMesh.Read(ContentManager.GetResourceFromLongID(ID)); m_BodyMesh.TransformVertices(SimSkeleton.RootBone); //m_BodyMesh.BlendVertices2(); m_BodyMesh.ProcessMesh(SimSkeleton, false); }
/// <summary> /// User clicked on an item in the list containing available heads. /// </summary> private void LstBodies_SelectedIndexChanged(object sender, EventArgs e) { if (m_Skeleton == null) m_Skeleton = new Skeleton(this.Device, ContentManager.GetResourceFromLongID(0x100000005), mWorldMat); string SelectedStr = (string)LstBodies.SelectedItem; string Type = SelectedStr.Split(":".ToCharArray())[0]; SelectedStr = SelectedStr.Split(":".ToCharArray())[1].Replace(" ", ""); foreach (KeyValuePair<ulong, string> Pair in ContentManager.Resources) { //Check if the selected hexstring equals a ulong ID in ContentManager. if (Pair.Key == Convert.ToUInt64(SelectedStr, 16)) { PurchasableObject PO = new PurchasableObject(ContentManager.GetResourceFromLongID(Pair.Key)); m_CurrentOutfit = new Outfit(ContentManager.GetResourceFromLongID(PO.OutfitID)); m_CurrentAppearance = new Appearance( ContentManager.GetResourceFromLongID(m_CurrentOutfit.LightAppearanceID)); LstAppearances.Items.Clear(); LstAppearances.Items.Add(m_CurrentOutfit.LightAppearanceID); LstAppearances.Items.Add(m_CurrentOutfit.MediumAppearanceID); LstAppearances.Items.Add(m_CurrentOutfit.DarkAppearanceID); List<Binding> Bindings = new List<Binding>(); foreach (ulong BindingID in m_CurrentAppearance.BindingIDs) Bindings.Add(new Binding(ContentManager.GetResourceFromLongID(BindingID))); m_BodyTex = Texture2D.FromFile(this.Device, new MemoryStream( ContentManager.GetResourceFromLongID(Bindings[0].TextureAssetID))); //The file selected was most likely a body-mesh, so apply the adult skeleton to it. if (Pair.Value.Contains("bodies")) { m_CurrentBodyMesh = new Mesh(ContentManager.GetResourceFromLongID(Bindings[0].MeshAssetID), true); m_CurrentBodyMesh.TransformVertices2(ref m_Skeleton, m_Skeleton.Bones[0], ref mWorldMat); m_CurrentBodyMesh.BlendVertices2(); m_CurrentBodyMesh.ProcessMesh(m_Skeleton); } } } m_LoadBodyComplete = true; }
/// <summary> /// User clicked on an item in the list containing available heads. /// </summary> private void LstHeads_SelectedIndexChanged(object sender, EventArgs e) { if (m_Skeleton == null) m_Skeleton = new Skeleton(this.Device, ContentManager.GetResourceFromLongID(0x100000005), ref mWorldMat); string SelectedStr = (string)LstHeads.SelectedItem; string Type = SelectedStr.Split(":".ToCharArray())[0]; SelectedStr = SelectedStr.Split(":".ToCharArray())[1].Replace(" ", ""); foreach(KeyValuePair<ulong, string> Pair in ContentManager.Resources) { //HAndGroup files are used to group together different hand meshes and textures. if (Pair.Key == Convert.ToUInt64(SelectedStr, 16) && Type == "Hand") { Hag HandGroup = new Hag(ContentManager.GetResourceFromLongID(Pair.Key)); m_CurrentAppearance = new Appearance(ContentManager.GetResourceFromLongID( HandGroup.Appearances[0])); LstAppearances.Items.Clear(); foreach (ulong AppearanceID in HandGroup.Appearances) LstAppearances.Items.Add(AppearanceID); List<Binding> Bindings = new List<Binding>(); foreach (ulong BindingID in m_CurrentAppearance.BindingIDs) Bindings.Add(new Binding(ContentManager.GetResourceFromLongID(BindingID))); m_HandTex = Texture2D.FromFile(this.Device, new MemoryStream( ContentManager.GetResourceFromLongID(Bindings[0].TextureAssetID))); m_CurrentHandMesh = new Mesh(ContentManager.GetResourceFromLongID(Bindings[0].MeshAssetID), false); m_CurrentHandMesh.ProcessMesh(m_Skeleton); } else { //Check if the selected hexstring equals a ulong ID in ContentManager. if (Pair.Key == Convert.ToUInt64(SelectedStr, 16)) { PurchasableObject PO = new PurchasableObject(ContentManager.GetResourceFromLongID(Pair.Key)); m_CurrentOutfit = new Outfit(ContentManager.GetResourceFromLongID(PO.OutfitID)); m_CurrentAppearance = new Appearance( ContentManager.GetResourceFromLongID(m_CurrentOutfit.LightAppearanceID)); LstAppearances.Items.Clear(); LstAppearances.Items.Add(m_CurrentOutfit.LightAppearanceID); LstAppearances.Items.Add(m_CurrentOutfit.MediumAppearanceID); LstAppearances.Items.Add(m_CurrentOutfit.DarkAppearanceID); List<Binding> Bindings = new List<Binding>(); foreach (ulong BindingID in m_CurrentAppearance.BindingIDs) Bindings.Add(new Binding(ContentManager.GetResourceFromLongID(BindingID))); m_HeadTex = Texture2D.FromFile(this.Device, new MemoryStream( ContentManager.GetResourceFromLongID(Bindings[0].TextureAssetID))); m_CurrentHeadMesh = new Mesh(ContentManager.GetResourceFromLongID(Bindings[0].MeshAssetID), false); m_CurrentHeadMesh.ProcessMesh(m_Skeleton); } } } m_LoadHeadComplete = true; }
/// <summary> /// User clicked on an item in the list containing available appearances. /// </summary> private void LstAppearances_SelectedIndexChanged(object sender, EventArgs e) { if (m_Skeleton == null) m_Skeleton = new Skeleton(this.Device, ContentManager.GetResourceFromLongID(0x100000005), ref mWorldMat); m_CurrentAppearance = new Appearance(ContentManager.GetResourceFromLongID( (ulong)LstAppearances.SelectedItem)); List<Binding> Bindings = new List<Binding>(); foreach (ulong BindingID in m_CurrentAppearance.BindingIDs) Bindings.Add(new Binding(ContentManager.GetResourceFromLongID(BindingID))); m_BodyTex = Texture2D.FromFile(this.Device, new MemoryStream( ContentManager.GetResourceFromLongID(Bindings[0].TextureAssetID))); string SelectedHeadStr = (string)LstHeads.SelectedItem; string SelectedBodyStr = (string)LstBodies.SelectedItem; m_CurrentBodyMesh = new Mesh(ContentManager.GetResourceFromLongID(Bindings[0].MeshAssetID), true); m_CurrentBodyMesh.TransformVertices2(ref m_Skeleton, m_Skeleton.Bones[0], ref mWorldMat); m_CurrentBodyMesh.BlendVertices2(); m_CurrentBodyMesh.ProcessMesh(m_Skeleton); m_CurrentHeadMesh = new Mesh(ContentManager.GetResourceFromLongID(Bindings[0].MeshAssetID), false); m_CurrentHeadMesh.ProcessMesh(m_Skeleton); }
/// <summary> /// Adds a head mesh for this Sim. /// </summary> /// <param name="ID">The ID of the head mesh to add.</param> public void AddHeadMesh(ulong ID) { m_HeadMesh = new Mesh(); m_HeadMesh.Read(ContentManager.GetResourceFromLongID(ID)); m_HeadMesh.ProcessMesh(SimSkeleton, true); }
/// <summary> /// Adds a right hand mesh for this Sim. /// </summary> /// <param name="ID">The ID of the right hand mesh to add.</param> public void AddRHandMesh(ulong ID) { m_RightHand = new Mesh(); m_RightHand.Read(ContentManager.GetResourceFromLongID(ID)); m_RightHand.ProcessMesh(SimSkeleton, false); }