private void AddButtonsToDisplayal(Exhibit e, GameObject displayal) { var genButtonPrefab = ObjectFactory.GetGenerationButtonPrefab(); // Get IDs and potential reference. List <string> ids = new List <string>(); if (e.Metadata.ContainsKey(GenerationMetadata.MemberIds.GetKey())) { var json = e.Metadata[GenerationMetadata.MemberIds.GetKey()]; var idDoublePairs = JsonConvert.DeserializeObject <List <IdDoublePair> >(json); idDoublePairs.ForEach(it => ids.Add(it.id)); } var idConfig = displayal.AddComponent <IdListPair>(); idConfig.associatedIds = ids; idConfig.originId = e.Metadata[GenerationMetadata.ObjectId.GetKey()]; List <GenerationMethod> types = GenerationMethodUtil.GetButtonTypes(ids.Count); var localScale = displayal.transform.localScale; var offset = -2.0f; var shift = (types.Count - 1) / 2.0f; var xFactor = 0.2f / localScale.x; var zFactor = 0.2f / localScale.z; var displayalHeight = displayal.GetComponent <BoxCollider>().size.z; var parentGameObj = new GameObject("Button Wrapper"); parentGameObj.transform.SetParent(displayal.transform.parent, false); parentGameObj.transform.localPosition = displayal.transform.localPosition; parentGameObj.transform.localRotation = displayal.transform.localRotation; parentGameObj.transform.localScale = displayal.transform.localScale; var wrapperObj = parentGameObj.AddComponent <ButtonWrapper>(); wrapperObj.displayal = displayal.GetComponent <Displayal>(); for (var i = 0; i < types.Count; i++) { var method = types[i]; var genButton = Instantiate(genButtonPrefab, parentGameObj.transform, false); genButton.name = "Generation Button (" + method.GetName() + ")"; genButton.transform.localRotation = Quaternion.Euler(90.0f, 0.0f, 180.0f); genButton.transform.localPosition = new Vector3(offset * (i - shift) * xFactor, 0.5f, 0.5f * displayalHeight + 0.75f * zFactor); genButton.transform.localScale = new Vector3( 0.75f * xFactor, 0.75f * zFactor, // Y/Z inverted due to different prefab orientation... 2.0f ); // Button. RoomReferences references = null; if (e.Metadata.ContainsKey(GenerationMetadata.References.GetKey())) { var refJson = e.Metadata[GenerationMetadata.References.GetKey()]; references = JsonConvert.DeserializeObject <RoomReferences>(refJson); } GenerationButton genButtonComponent = genButton.GetComponent <GenerationButton>(); genButtonComponent.type = method; if (references != null && references.References.ContainsKey(method.ToString())) { // If a room was already generated from this button, link it. genButtonComponent.targetRoomId = references.References[method.ToString()]; } TextMesh genButtonText = genButton.GetComponentInChildren <TextMesh>(); genButtonText.text = method.GetName(); } }
void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { if (threadCheckBox.Checked) { cppClass.threadPreparingRules(firstKey, secondKey); } else { cppClass.preparingRules(firstKey, secondKey); } if (messageForm.InvokeRequired) { messageForm.Invoke(new MethodInvoker( delegate() { messageForm.Close(); })); } bitmap = new Bitmap(imageLocation); percentage = 0; numberCount = bitmap.Height * 3; if (threadCheckBox.Checked) { int numberThreads = Convert.ToInt32(Math.Round(threadNumericUpDown.Value, 0)); int pieces = Convert.ToInt32(Math.Round(spinBox.Value, 0)); int currentThread = 0; Thread[] threads = new Thread[numberThreads]; int piecesI = 0, piecesJ = 0; getFromPieces(ref piecesI, ref piecesJ, pieces); numberCount *= piecesJ; int startX = 0, startY = 0; int endX = 0, endY = 0; for (int i = 0; i < piecesI; i++) { for (int j = 0; j < piecesJ; j++) { threads[currentThread] = new Thread(new ParameterizedThreadStart(this.threadScramblingPixels)); getXandY(ref startX, ref startY, ref endX, ref endY, i, j, piecesI, piecesJ); threads[currentThread].Start(new ThreadParameters(startX, endX, startY, endY)); if (currentThread == numberThreads - 1) { for (int k = 0; k < numberThreads; k++) { threads[k].Join(); } currentThread = 0; } else if (i == piecesI - 1 && j == piecesJ - 1) { for (int x = 0; x < currentThread + 1; x++) { threads[x].Join(); } } else { currentThread++; } } } for (int i = 0; i < bitmap.Height; i++) { for (int j = 0; j < bitmap.Width; j++) { AlgorithmWrapper.WrapperPixel pixel = cppClass.getPixel(i, j); Color color = Color.FromArgb(pixel.R, pixel.G, pixel.B); bitmap.SetPixel(j, i, color); } } } else { ScramblingPixels(0, bitmap.Height, 0, bitmap.Width); } if (trhreadTimer != null) { trhreadTimer.Dispose(); } timer.Stop(); if (saveButton.InvokeRequired) { saveButton.Invoke(new MethodInvoker( delegate(){ saveButton.Enabled = true; })); } if (saveKeysButton.InvokeRequired) { saveKeysButton.Invoke(new MethodInvoker( delegate() { saveKeysButton.Enabled = true; })); } if (loadButton.InvokeRequired) { loadButton.Invoke(new MethodInvoker( delegate() { loadButton.Enabled = true; })); } if (backButton.InvokeRequired) { backButton.Invoke(new MethodInvoker( delegate(){ backButton.Enabled = true; })); } if (EncryptButton.InvokeRequired) { EncryptButton.Invoke(new MethodInvoker( delegate() { EncryptButton.Enabled = false; })); } if (GenerationButton.InvokeRequired) { GenerationButton.Invoke(new MethodInvoker( delegate() { GenerationButton.Enabled = false; })); } Image1.Image = bitmap; MessageBox.Show("Picture was encrypted successfully!", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); }