/// <summary> /// Détruis le GameObject correspondant à une entrée et retire leur association du dictionnaire. /// </summary> /// <param name="entryStruct"></param> private void RemoveEntry(Circuit.EntryStruct entryStruct) { EntryObject entryObject = entryObjects[entryStruct]; entryObjects.Remove(entryStruct); entryObject.FadeOutAndDestroy(); }
/// <summary> /// Renvoie la position que doit occuper l'objet représentant l'entry correspondante. /// </summary> /// <param name="entryStruct"></param> /// <returns></returns> private Vector3 ComputeEntryPosition(Circuit.EntryStruct entryStruct) { EntryObject entryObject = entryObjects[entryStruct]; int col = entryStruct.col; return(new Vector3(-((_circuit.NbCol - 1) * localColWidth / 2) + localColWidth * col, 0, 3)); }
/** * ###################################################################################################### * ############################################### ENTRY ################################################ * ###################################################################################################### */ /// <summary> /// Crée le GameObject correspondant à une entrée (qubit). /// </summary> /// <param name="entryStruct"></param> private EntryObject CreateEntryObject(Circuit.EntryStruct entryStruct) { EntryObject entryObject = ObjectFactory.ENTRY(_gridGame.transform); entryObject.entryStruct = entryStruct; return(entryObject); }
/// <summary> /// Clacule et fait transiter une entry vers sa nouvelle position. /// </summary> /// <param name="entryStruct"></param> private void TransitionEntry(Circuit.EntryStruct entryStruct) { EntryObject entryObject = entryObjects[entryStruct]; GameObject entryGameObject = entryObject.root; Vector3 newPosition = ComputeEntryPosition(entryStruct); AnimationManager.Move(entryGameObject, newPosition, animationTime); }
/// <summary> /// Calcule et positionne une entry à sa nouvelle position. /// </summary> /// <param name="entryStruct"></param> private void PositionEntry(Circuit.EntryStruct entryStruct) { EntryObject entryObject = entryObjects[entryStruct]; GameObject entryGameObject = entryObject.root; Vector3 newPosition = ComputeEntryPosition(entryStruct); entryGameObject.transform.localPosition = newPosition; }
/** * ###################################################################################################### * ###################################################################################################### * ###################################################################################################### * ####################################### INTERACTIONS WITH COLS ####################################### * ###################################################################################################### * ###################################################################################################### * ###################################################################################################### */ /// <summary> /// Echange en 0 ou 1 la valeur d'une entrée (qubit). /// </summary> public void SwapEntryValue(Circuit.EntryStruct entryStruct) { Qubit qubit = entryStruct.qubit; int col = entryStruct.col; if (qubit.Equals(Qubit.Zero)) { _circuit.SetEntry(col, Qubit.One); } else { _circuit.SetEntry(col, Qubit.Zero); } }
/// <summary> /// Actualise le material de l'objet correspondant à une entrée (qubit). /// </summary> /// <param name="entry"></param> private void SetEntryMaterial(Circuit.EntryStruct entryStruct) { Qubit qubit = entryStruct.qubit; EntryObject entryObject = entryObjects[entryStruct]; GameObject entryGameObject = entryObject.entry; SpriteRenderer renderer = entryGameObject.GetComponent <SpriteRenderer>(); if (qubit.Equals(Qubit.One)) { renderer.sprite = Sprite.Create(ObjectFactory.materialQubitOne, new Rect(0.0f, 0.0f, ObjectFactory.materialQubitOne.width, ObjectFactory.materialQubitOne.height), new Vector2(0.5f, 0.5f)); } else { renderer.sprite = Sprite.Create(ObjectFactory.materialQubitZero, new Rect(0.0f, 0.0f, ObjectFactory.materialQubitZero.width, ObjectFactory.materialQubitZero.height), new Vector2(0.5f, 0.5f)); //ObjectFactory.materialQubitZero; } }
/// <summary> /// Actualise le material de l'objet correspondant à une entrée (qubit). /// </summary> /// <param name="entry"></param> private void SetEntryMaterial(Circuit.EntryStruct entryStruct) { Qubit qubit = entryStruct.qubit; EntryObject entryObject = entryObjects[entryStruct]; GameObject entryGameObject = entryObject.entry; Renderer renderer = entryGameObject.GetComponent <Renderer>(); if (qubit.Equals(Qubit.One)) { renderer.material = ObjectFactory.materialQubitOne; } else { renderer.material = ObjectFactory.materialQubitZero; } }
/** * ###################################################################################################### * ###################################################################################################### * ###################################################################################################### * ############################################### GETTERS ############################################## * ###################################################################################################### * ###################################################################################################### * ###################################################################################################### */ /// <summary> /// Recupère le "EntryObject" de la colonne "col" /// </summary> /// <returns> Le "GateObject"</returns> /// <param name="indexCol">Indice de la colonne </param> /// <param name="indexRow">Indice de la ligne </param> public EntryObject GetEntryObject(int col) { Circuit.EntryStruct entryStruct = _circuit.GetEntry(col); return(entryObjects[entryStruct]); }
/// <summary> /// Crée le GameObject correspondant à une entrée (qubit) et l'ajoute au dictionnaire associant les entrées et leur object. /// </summary> /// <param name="entryStruct"></param> private void AddEntry(Circuit.EntryStruct entryStruct) { EntryObject entryObject = CreateEntryObject(entryStruct); entryObjects.Add(entryStruct, entryObject); }