public override void CreateSlots() { for (int i = 0; i < inventory.GetSlots.Length; i++) { var slot = Instantiate(equipmentSlotPrefab, contentPanel); var text = Utilities.RecursiveFindChild(slot.transform, "SlotName"); GearSlot gearSlot = inventory.GetSlots[i].AllowedGearTypes.ElementAt(0); text.GetComponent <TextMeshProUGUI>().text = gearSlot.ToString(); } // After inventory buttons have been made, initialize each slot with the allowed gear for that slot InventorySlotButton[] buttons = GetComponentsInChildren <InventorySlotButton>(); for (int i = 0; i < buttons.Length; i++) { LinkButtonToInventorySlot(buttons[i], inventory.GetSlots[i]); // Add Drag and drop functionality to buttons by adding events to the game object var buttonGameObject = buttons[i].gameObject; Utilities.AddEvent(buttonGameObject, EventTriggerType.PointerEnter, delegate { OnEnter(buttonGameObject); }); Utilities.AddEvent(buttonGameObject, EventTriggerType.PointerExit, delegate { OnExit(buttonGameObject); }); Utilities.AddEvent(buttonGameObject, EventTriggerType.BeginDrag, delegate { OnDragStart(buttonGameObject); }); Utilities.AddEvent(buttonGameObject, EventTriggerType.EndDrag, delegate { OnDragEnd(buttonGameObject); }); Utilities.AddEvent(buttonGameObject, EventTriggerType.Drag, delegate { OnDrag(buttonGameObject); }); } }
private GameObject loadNIFForSlot(GearSlot slot, GameObject skeleton, GameObject meshHolder, string nifFile, string geo) { //Debug.Log("load nif[" + nifFile + "] for slot " + slot, this.gameObject); // First move all the meshes across to the skeleton GameObject meshes = new GameObject(slot.ToString()); //Debug.Log("create new gameobh:" + meshes.name); try { NIFFile file = NIFLoader.getNIF(nifFile); GameObject newNifRoot = NIFLoader.loadNIF(file, nifFile, true); meshes.transform.parent = meshHolder.transform; //Debug.Log("Move components from loaded nif to our new gameobj"); foreach (SkinnedMeshRenderer r in newNifRoot.GetComponentsInChildren <SkinnedMeshRenderer>(true)) { // Debug.Log("Move renderer " + r.gameObject.name); r.transform.parent = meshes.transform; } /** I'm not quite sure how bows are supposed to work yet. The quiver, bow and prop all appear to be a single mesh, so they must be moved around using bones or something.. * At the moment they don't even show propertly because the ROOT bone assigned while loading is not copied over and is destroyed causing the SKinnedMeshRender to behave poorly * More research required. */ // weapons are a bit different if (!WardrobeStuff.isWeapon(slot)) { // process the NiSkinningMeshModifier NIFLoader.linkBonesToMesh(file, skeleton); } else { //Debug.Log("Treating slot (" + slot + ") as weapon and attach it to AP_r_hand on skeleton"); Transform t = skeleton.transform.FindDeepChild("AP_r_hand"); meshes.transform.parent = t; meshes.transform.localPosition = new Vector3(0, 0, 0); } this.animationNif.clearBoneMap(); // disable the proxy geo enableDisableGeo(nifFile, skeleton, false); // special case to ensure boots are disabled as well if (nifFile.Contains("foot")) { enableDisableGeo("boots", skeleton, false); } GameObject.DestroyObject(newNifRoot); } catch (Exception ex) { Debug.Log("Exception trying to load nif[" + nifFile + "]" + ex); } return(meshes); }