private void Update() { if (Input.GetMouseButtonDown(0)) { RaycastHit hit; Ray ray = new Ray(camera.transform.position, camera.transform.forward * interactionDistance); if (Physics.Raycast(ray, out hit)) { Transform objectHit = hit.transform; if (hit.collider.tag == "portal") { Portal p = hit.collider.gameObject.GetComponent <Portal>(); Texture2D img = new Texture2D(p.GetImage().width, p.GetImage().height, TextureFormat.ARGB32, false); Graphics.CopyTexture(p.GetImage(), img); int portalID = p.GetPortalID(); TWEANNGenotype geno = new TWEANNGenotype(ag.GetArtwork(portalID).GetGenotype().Copy()); SavedArtwork newArtwork = new SavedArtwork { Image = Sprite.Create(img, new Rect(0, 0, img.width, img.height), new Vector2(0.5f, 0.5f)) as Sprite, Geno = geno }; AddItem(newArtwork); FindNextEmptySlot(); } if (hit.collider.tag == "sculpture") { Sculpture s = hit.collider.gameObject.GetComponent <Sculpture>(); sculptureGeno = s.GetComponent <Sculpture>().GetGenotype(); ag.SelectSculpture(s); //s.GetComponent<Sculpture>().SetSelected(!s.GetComponent<Sculpture>().GetSelected()); } } } if (Input.GetMouseButtonDown(1)) { RaycastHit hit; Ray ray = new Ray(camera.transform.position, camera.transform.forward * interactionDistance); if (Physics.Raycast(ray, out hit)) { Transform objectHit = hit.transform; if (hit.collider.tag == "portal") { Portal p = hit.collider.gameObject.GetComponent <Portal>(); int portalID = p.GetPortalID(); Artwork art = ag.GetArtwork(portalID); if (GetActiveSlotItem() != null) { ag.RemoveRoom(portalID); art.SetGenotype(GetActiveSlotItem().Geno); // FIXME Null ref possible here - add checks art.Refresh(); art.ApplyImageProcess(); items[ActiveSlot] = null; hud.UpdateInventoryThumbnail(ActiveSlot, null); } else { // do nothing for now } } if (hit.collider.tag == "sculpture") { Sculpture s = hit.collider.gameObject.GetComponent <Sculpture>(); sculptureGeno = s.GetComponent <Sculpture>().GetGenotype(); ag.ResetSculpture(s); //s.GetComponent<Sculpture>().SetSelected(!s.GetComponent<Sculpture>().GetSelected()); } } } if (Input.GetKeyDown(KeyCode.Keypad4)) { CycleActiveSlot(-1); } if (Input.GetKeyDown(KeyCode.Keypad6)) { CycleActiveSlot(1); } float wheel = Input.GetAxis("Mouse ScrollWheel"); if (wheel < 0f) { //scroll down CycleActiveSlot(-1); } else if (wheel > 0f) { //scroll up CycleActiveSlot(1); } }