private void LaundryGarmentReleased(LaundryGarment laundryGarment) { if (ironingBoard.garmentOnBoard == null && boardTriggerCollider.bounds.Contains(laundryGarment.transform.position)) { PlaceGarmentOnBoard(laundryGarment); } }
private void OnTriggerExit2D(Collider2D collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("LaundryGarment")) { LaundryGarment laundryGarment = collision.gameObject.GetComponentInParent <LaundryGarment>(); if (laundryGarment != null && laundryGarment.gameObject.activeSelf) { if (laundryGarment.IsHeld) { laundryGarment.OnFoldingSurface = false; } else { Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); //Does the laundryGarment's new collider touch the trigger? if (laundryGarment.colliders[laundryGarment.garment.currentFoldingStep].bounds.Intersects(GetComponent <Collider2D>().bounds)) { rb.gravityScale = 0.0f; } else { rb.gravityScale = 1.0f; } } } } }
private void OnTriggerStay2D(Collider2D collision) { LaundryGarment laundryGarment = collision.GetComponentInParent <LaundryGarment>(); if (laundryGarment != null && IsHeld(laundryGarment) && (heldLaundryGarment == null || laundryGarment.GetInstanceID() != heldLaundryGarment.GetInstanceID())) { heldLaundryGarment = laundryGarment; lastPosition = laundryGarment.transform.position; } else if (laundryGarment != null && !IsHeld(laundryGarment) && (heldLaundryGarment != null && laundryGarment.GetInstanceID() == heldLaundryGarment.GetInstanceID())) { heldLaundryGarment = null; } else if (laundryGarment != null && IsHeld(laundryGarment) && (heldLaundryGarment != null && laundryGarment.GetInstanceID() == heldLaundryGarment.GetInstanceID())) { ParticleSystem.EmissionModule emission = bubbles.emission; emission.enabled = washTub.Scrub(laundryGarment.garment, Vector2.Distance(laundryGarment.transform.position, lastPosition)); ParticleSystem.MainModule main = bubbles.main; if (!laundryGarment.garment.Clean) { main.startColor = Color.Lerp(maxDirtyColor, minDirtyColor, laundryGarment.garment.Cleanliness); } else { main.startColor = cleanColor; } bubbles.transform.position = laundryGarment.transform.position; laundryGarment.UpdateAppearance(); lastPosition = laundryGarment.transform.position; } }
private IEnumerator DelayedAddToBasket(LaundryGarment laundryGarment) { //Wait for a frame, in case an overlapping BasketView captures the garment first yield return(new WaitForSeconds(0)); //If the garment was captured by a BasketView, ignore it; otherwise, add it to the basket if (laundryGarment != null && laundryGarment.gameObject.activeSelf) { if (!(placedInBasketView && laundryGarment.GetInstanceID() == placedInBasketViewID)) { if (basketCollider.bounds.Contains(laundryGarment.transform.position)) { if (basket.AddGarment(laundryGarment.garment)) { AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); animator.SetTrigger("BasketInput"); } else { BasketIsFull(); } } } } //Reset 'placed in basket view' variables placedInBasketView = false; placedInBasketViewID = 0; }
private void GrabGarmentFromContainer(Garment garment) { LaundryGarment laundryGarment = garment.CreateLaundryGarment(cursor.transform.position, cursor.transform.rotation, activeWorkStation.laundryTaskArea.transform); target = laundryGarment; Grab(); }
//Returns true is the laundryGarment is currently being held by the cursor. private bool IsHeld(LaundryGarment laundryGarment) { if (LaundryTaskController.instance.grabbedObject != null) { return(laundryGarment.GetInstanceID() == LaundryTaskController.instance.grabbedObject.GetInstanceID()); } return(false); }
private void OnTriggerEnter2D(Collider2D collision) { LaundryGarment laundryGarment = collision.GetComponentInParent <LaundryGarment>(); if (laundryGarment != null) { laundryGarment.garment.Dry = false; laundryGarment.UpdateAppearance(); } }
void OnLaundryGarmentReleased(LaundryGarment laundryGarment) { if (!Locked) { //If BasketView is open if (basketView.activeSelf) { bool alreadyInBasket = laundryGarments.Contains(laundryGarment); bool withinBasketView = basketView.GetComponent <Collider2D>().bounds.Contains(laundryGarment.transform.position); if (alreadyInBasket && withinBasketView) { Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); rb.gravityScale = 0.0f; rb.velocity = Vector3.zero; AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); if (PlacedInBasketView != null) { PlacedInBasketView(laundryGarment); } } else if (!alreadyInBasket && withinBasketView) { if (basket.AddGarment(laundryGarment.garment, laundryGarment.transform.position - transform.position)) { laundryGarment.transform.parent = transform; Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); rb.gravityScale = 0.0f; rb.velocity = Vector3.zero; AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarments.Add(laundryGarment); } else { BasketIsFull(); } if (PlacedInBasketView != null) { PlacedInBasketView(laundryGarment); } } else if (alreadyInBasket && !withinBasketView) { basket.RemoveGarment(laundryGarment.garment); laundryGarments.Remove(laundryGarment); } } //If BasketView is closed //Wait for a frame, in case an overlapping BasketView captures the garment first else { StartCoroutine(DelayedAddToBasket(laundryGarment)); } } }
private void OnLaundryGarmentReleased(LaundryGarment laundryGarment) { if (col.bounds.Contains(laundryGarment.transform.position)) { if (clothesline.HangGarment(index, laundryGarment.garment)) { AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); } } }
private void UpdateContents() { ClearContents(); for (int i = 0; i < basket.contents.Count; i++) { LaundryGarment laundryGarment = basket.contents[i].CreateLaundryGarment(transform.position + 0.5f * basket.positions[i], transform.rotation, GarmentContainer.transform); laundryGarment.transform.localScale = new Vector3(0.6f, 0.6f, 1.0f); Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); rb.simulated = false; } }
private void ClearContents() { for (int i = GarmentContainer.transform.childCount - 1; i >= 0; i--) { LaundryGarment laundryGarment = GarmentContainer.transform.GetChild(i).GetComponent <LaundryGarment>(); laundryGarment.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f); Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); rb.simulated = true; laundryGarment.ReturnToPool(); } }
private void OnLaundryGarmentReleased(LaundryGarment laundryGarment) { //Place garment on machine if (col.bounds.Contains(laundryGarment.transform.position)) { if (sewingMachine.PlaceGarment(laundryGarment.garment)) { AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); } } }
public LaundryGarment SpawnLaundryGarment(Vector3 position, Transform parent, Garment garment) { for (int i = 0; i < LaundryGarmentPools.Length; i++) { if (LaundryGarmentPools[i].GarmentPoolType == garment.type) { LaundryGarment laundryGarment = LaundryGarmentPools[i].GetLaundryGarment(position, parent, garment); laundryGarment.UpdateAppearance(); return(laundryGarment); } } return(null); }
private void EnableBasketView() { basketCollider.enabled = false; basketView.SetActive(true); OpenBasketView(this); //Instantiate all Garments on top of it in their given positions on the Basket object. laundryGarments = new List <LaundryGarment>(); for (int i = 0; i < basket.contents.Count; i++) { LaundryGarment laundryGarment = basket.contents[i].CreateLaundryGarment(basket.positions[i] + transform.position, transform.rotation, transform); laundryGarments.Add(laundryGarment); } }
private void OnTriggerEnter2D(Collider2D collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("LaundryGarment")) { LaundryGarment laundryGarment = collision.GetComponentInParent <LaundryGarment>(); if (laundryGarment != null && !laundryGarment.IsHeld && laundryGarment.GetComponent <Rigidbody2D>().gravityScale != 0.0f) { if (sewingMachine.PlaceGarment(laundryGarment.garment)) { AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); } } } }
protected virtual void OnLaundryGarmentReleased(LaundryGarment laundryGarment) { if (HasGravity) { laundryGarment.GetComponent <Rigidbody2D>().gravityScale = 1.0f; } else { laundryGarment.GetComponent <Rigidbody2D>().gravityScale = 0.0f; } if (LaundryGarmentReleased != null) { LaundryGarmentReleased(laundryGarment); } }
public LaundryGarment GetLaundryGarment(Vector3 position, Transform parent, Garment garment) { GameObject obj = SpawnObject(position); if (obj != null) { LaundryGarment laundryGarment = obj.GetComponent <LaundryGarment>(); laundryGarment.transform.parent = parent; laundryGarment.garment = garment; return(laundryGarment); } //In the unlikely event that there are no LaundryGarments left in the pool, instantiate a new one Instantiate(garment.laundryGarmentPrefab, position, Quaternion.identity, parent); return(null); }
private void OnLaundryGarmentReleased(LaundryGarment laundryGarment) { //If released within open door bounds, add garment to machine if (dryer.state == DryerState.DoorOpen && GetComponent <Collider2D>().bounds.Contains(laundryGarment.transform.position)) { if (dryer.AddGarment(laundryGarment.garment)) { AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); animator.SetTrigger("BasketInput"); } else { animator.SetTrigger("BasketFull"); } } }
public void ReturnToPool(LaundryGarment laundryGarment) { GarmentType type = laundryGarment.garment.type; Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); rb.gravityScale = 0.0f; rb.velocity = Vector3.zero; laundryGarment.garment = null; for (int i = 0; i < LaundryGarmentPools.Length; i++) { if (LaundryGarmentPools[i].GarmentPoolType == type) { laundryGarment.transform.parent = LaundryGarmentPools[i].transform; laundryGarment.gameObject.SetActive(false); } } }
private void OnLaundryGarmentReleased(LaundryGarment laundryGarment) { bool progress = false; switch (step) { case 1: if (laundryGarment.garment.Clean) { progress = true; } break; case 2: if (laundryGarment.garment.Clean && laundryGarment.garment.Dry) { progress = true; } break; case 3: if (laundryGarment.garment.Pressed) { progress = true; } break; case 4: if (laundryGarment.garment.Folded) { progress = true; } break; default: break; } if (progress && delayedNextStep == null) { delayedNextStep = DelayedNextStep(1.0f); StartCoroutine(delayedNextStep); } }
private void PlaceGarmentOnBoard(LaundryGarment laundryGarment) { //Unfold garment if folded //If pair of socks, separate them, then spawn the extra sock as a LaundryGarment if (laundryGarment.garment is GarmentSock && laundryGarment.garment.Folded) { GarmentSock sock = (GarmentSock)laundryGarment.garment; GarmentSock other = sock.SeparatePair(); other.CreateLaundryGarment(laundryGarment.transform.position, laundryGarment.transform.rotation, laundryGarment.transform.parent); } laundryGarment.garment.currentFoldingStep = 0; ironingBoard.garmentOnBoard = laundryGarment.garment; AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); garmentRenderer.UpdateAppearance(); pressingProgress = 0.0f; burnTimer = 0.0f; graceTimer = 0.0f; }
private void OnTriggerStay2D(Collider2D collision) { Iron iron = collision.GetComponent <Iron>(); if (iron != null && !iron.onIroningBoard) { iron.PlaceOnIroningBoard(); } if (collision.gameObject.layer == LayerMask.NameToLayer("LaundryGarment")) { LaundryGarment laundryGarment = collision.GetComponentInParent <LaundryGarment>(); if (laundryGarment != null && !laundryGarment.IsHeld && laundryGarment.GetComponent <Rigidbody2D>().gravityScale != 0.0f) { if (ironingBoard.garmentOnBoard == null) { PlaceGarmentOnBoard(laundryGarment); } } } }
private void OnTriggerStay2D(Collider2D collision) { if (!laundryBasket.Locked && !laundryBasket.basketView.activeSelf) { if (collision.gameObject.layer == LayerMask.NameToLayer("LaundryGarment")) { LaundryGarment laundryGarment = collision.GetComponentInParent <LaundryGarment>(); if (laundryGarment != null && !laundryGarment.IsHeld && laundryGarment.GetComponent <Rigidbody2D>().gravityScale != 0.0f) { if (laundryBasket.basket.AddGarment(laundryGarment.garment)) { AudioManager.instance.PlaySound(laundryGarment.garment.fabric.dropSound); laundryGarment.ReturnToPool(); animator.SetTrigger("BasketInput"); } else { animator.SetTrigger("BasketFull"); } } } } }
private void OnTriggerStay2D(Collider2D collision) { if (collision.gameObject.layer == LayerMask.NameToLayer("LaundryGarment")) { LaundryGarment laundryGarment = collision.gameObject.GetComponentInParent <LaundryGarment>(); if (!laundryGarment.IsHeld) { Rigidbody2D rb = laundryGarment.GetComponent <Rigidbody2D>(); rb.velocity = Vector3.zero; rb.gravityScale = 0.0f; if (laundryGarment.OnFoldingSurface == table.FoldingLocked) { laundryGarment.OnFoldingSurface = !table.FoldingLocked; if (soundCoroutine == null) { soundCoroutine = DropSound(laundryGarment.garment.fabric.dropSound); StartCoroutine(soundCoroutine); } } } } }
//When a LaundryGarment is placed in a BasketView, remember it private void OnPlacedInBasketView(LaundryGarment laundryGarment) { placedInBasketView = true; placedInBasketViewID = laundryGarment.GetInstanceID(); }