public bool IsSizeChangeable(EntityType type) { GameObject prefab = prefabDB.GetPrefab(type); Changeable changeable = prefab.GetComponent <Changeable>(); return(changeable != null && changeable.Resizable); }
public bool Equals(Changeable other) { if (other == null) { return(false); } return(GetType() == other.GetType() && Prop == other.Prop); }
public void Change(EvalContext context, EntityType entity) { Entity target = context.Target; Changeable changeable = target.GetComponent <Changeable>(); if (changeable == null) { Debug.LogError($"Cannot change entity {target} to Entity {entity}"); return; } Destroy(target.gameObject); GameObject prefab = prefabDB.GetPrefab(entity); target = Instantiate(prefab, target.transform.position, prefab.transform.rotation).GetComponent <Entity>(); context.Target = target; // Assign new target (because object has changed) Rigidbody rb = target.GetComponent <Rigidbody>(); if (rb != null) { rb.useGravity = false; } //RuneStock.Inst.DeductRune(new RuneType(entity)); StartCoroutine( StartGradualAction(timer => { target.transform.localScale = Vector3.Lerp( new Vector3(0, 0, 0), new Vector3(1, 1, 1), timer); }, () => { target.transform.localScale = new Vector3(1, 1, 1); if (rb != null) { rb.useGravity = true; } }, 1.0f) ); }
public void Checkpoint_not_equal_after_value_has_changed() { // ARRANGE var left = new Changeable <string> { Data = "a" }; var checkpoint = left.Flatten().ToArray(); left.Data = "b"; // ACT var result = left.DeepCompare(checkpoint); // ASSERT Assert.False(result.AreEqual); Assert.Equal(left.PropertyPath(l => l.Data).ToString(), result.Different.Values.Single()); }
public void Checkpoint_not_equal_after_array_item_was_added() { // ARRANGE var left = new Changeable <string[]> { Data = new[] { "a" } }; var checkpoint = left.Flatten().ToArray(); left.Data = new[] { "a", "b" }; // ACT var result = left.DeepCompare(checkpoint); // ASSERT Assert.False(result.AreEqual); Assert.Equal(left.PropertyPath(l => l.Data[1]).ToString(), result.Missing.Right.Single()); }
private void Awake() { changeable = GetComponent <Changeable>(); rb = GetComponent <Rigidbody>(); cd = GetComponent <ContactDetector>(); }
void Update() { RaycastHit hit; Changeabletext.text = ""; if (Physics.Raycast(cam.transform.position, cam.transform.forward, out hit, range)) { if (hit.transform.tag == "Door") { Animator door = hit.transform.GetComponent <Animator>(); if (progress != OpenTreshold) { progress += 1f; LoadingSlider.gameObject.SetActive(true); LoadingSlider.value = progress; } else { progress = 0; LoadingSlider.gameObject.SetActive(false); door.SetBool("IsOpen", true); } //if (door.GetBool("IsOpen")) //{ // Changeabletext.text = doortextClose; // if (Input.GetKeyUp(KeyCode.E)) // { // door.SetBool("IsOpen", false); // } //} //else //{ // Changeabletext.text = doortextOpen; // if (Input.GetKeyUp(KeyCode.E)) // { // door.SetBool("IsOpen", true); // } //} } } if (hit.transform != null) { if (hit.transform.tag == "Changeable") { Changeable target = hit.transform.GetComponent <Changeable>(); if (Changeable.level >= target.neededlvl) { Changeabletext.text = target.changetext; } else { Changeabletext.text = "You must have at least " + target.neededlvl + " points to change this"; } if (Input.GetKeyUp(KeyCode.E)) { audiosource.PlayOneShot(woosh); target.Change(); Changeabletext.text = ""; } } if (hit.transform.tag == "Handle") { if (Input.GetKeyUp(KeyCode.E)) { Animator handle; if (hit.transform.childCount == 0) { handle = hit.transform.GetComponentInParent <Animator>(); } else { handle = hit.transform.GetComponentInChildren <Animator>(); } handle.SetBool("IsDown", true); } Changeabletext.text = Handletext; } if (hit.transform.tag == "KeycardReader") { Animator keycardanim = hit.transform.GetComponent <Animator>(); if (TargetManager.HasKeycard) { Changeabletext.text = "Press E to use your Keycard"; if (Input.GetKeyUp(KeyCode.E)) { keycardanim.SetBool("IsOpen", true); } } else { Changeabletext.text = "You have to find a keycard"; } } } }
public void Change(EvalContext context, ChangeType type) { Entity target = context.Target; Changeable changeable = target.GetComponent <Changeable>(); BoxCollider collider = target.GetComponent <BoxCollider>(); if (changeable == null) { //Debug.LogError($"Cannot change entity {target} to ChangeType {type}"); return; } if (!changeable.Resizable) { Debug.LogError("Can't change its size"); return; } //Rigidbody rb = target.GetComponent<Rigidbody>(); Moveable moveable = target.GetComponent <Moveable>(); ContactDetector cd = target.GetComponent <ContactDetector>(); Vector3 finalSize = Vector3.one; switch (type) { case ChangeType.Big: if (!changeable.big) { cd.CheckSurroundingObstacles(); if (changeable.IsConfined()) { return; } moveable.Ungravitate(); finalSize = target.transform.localScale * 3; changeable.changing = true; changeable.big = true; changeable.SwellSound(); } else { return; } break; case ChangeType.Small: if (changeable.big) { moveable.Ungravitate(); finalSize = target.transform.localScale / 3; changeable.changing = true; changeable.big = false; changeable.ShrinkSound(); } else { return; } break; default: Debug.LogError($"Unsupported ChangeType {type}"); return; } //RuneStock.Inst.DeductRune(new RuneType(type)); Vector3 originalPosition = target.transform.position; Vector3 finalPosition = (type == ChangeType.Big) ? changeable.BePushed(originalPosition) : originalPosition; StartCoroutine( StartGradualAction(timer => { target.transform.position = Vector3.Lerp( originalPosition, finalPosition, timer ); target.transform.localScale = Vector3.Lerp( target.transform.localScale, finalSize, timer); //Debug.Log($"({Mathf.Round(10 * (-5 - target.transform.position.x)/timer)/10}, { (target.transform.position.y + 2) / timer} kinematic:{target.GetComponent<Rigidbody>().isKinematic} { moveable.YTendency })"); }, () => { target.transform.localScale = finalSize; changeable.changing = false; changeable.AdjustPosition(); collider.size = type == ChangeType.Big ? new Vector3(0.97f, 0.97f, 0.97f) : new Vector3(0.9f, 0.9f, 0.9f); }, 1.0f ) ); }
protected Assignment(Changeable changeable) { this.changeable = changeable; }
public void Cleanup() { GameObject.DestroyImmediate(this.changeable, true); this.changeable = null; }
private void ShowChangeableValue(Changeable c, TextBox txtNew, TextBox txtCurr) { txtNew.Text = c.NewValue; txtCurr.Text = c.CurrentValue; }