public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable movesnap) { var res = c.GetComponent <ResourceComponent>(); if (res != null) { bool isOre = res.Data.Container.MatterType.IsRawMaterial(); bool isPowder = res.Data.Container.MatterType.IsFurnaceOutput(); if (isOre && capturedOre == null && child == oreSnap) { //if powder is empty or ore matches powder //and //we can make this into powder //and //not currently smelting anything or matches current smelt if ((capturedPowder == null || matches(res.Data.Container.MatterType, capturedPowder.Data.Container.MatterType)) && (res.Data.Container.MatterType.MatchingPowder() != Matter.Unspecified) && (FlexData.CurrentOre == Matter.Unspecified || res.Data.Container.MatterType == FlexData.CurrentOre)) { res.SnapCrate(this, child.transform.position); res.transform.SetParent(platform); capturedOre = res; FlexData.CurrentOre = res.Data.Container.MatterType; } else { GuiBridge.Instance.ShowNews(NewsSource.InvalidSnap); return; } } else if (isPowder && capturedPowder == null && child == powderSnap) { //if ore is empty or powder matches ore //and //we can make this powder //and //not currently smelting anything or matching ore is what we're smelting if (capturedOre == null || (capturedOre.Data.Container.MatterType == Matter.Unspecified || matches(capturedOre.Data.Container.MatterType, res.Data.Container.MatterType)) && (res.Data.Container.MatterType.MatchingOre().MatchingPowder() != Matter.Unspecified) && (FlexData.CurrentOre == Matter.Unspecified || res.Data.Container.MatterType.MatchingOre() == FlexData.CurrentOre)) { res.SnapCrate(this, child.transform.position); capturedPowder = res; FlexData.CurrentOre = res.Data.Container.MatterType.MatchingOre(); } else { GuiBridge.Instance.ShowNews(NewsSource.InvalidSnap); return; } } else { GuiBridge.Instance.ShowNews(NewsSource.InvalidSnap); return; } } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { if (res == null && child.transform.name == "PumpSnap") { string valveTag = c.tag.ToLower(); if (valveTag.EndsWith("valve")) { AttachTo(c, valveTag); } } else if (detachTimer == null && res is ResourceComponent) { if (ResourceMatchesCurrentPumpable(res as ResourceComponent)) { capturedResource = res as ResourceComponent; capturedResource.SnapCrate(this, CrateAnchor.position); if (valveType == Matter.Unspecified) { if (connectedPumpable is GasStorage && (connectedPumpable as GasStorage).Data.Container.CurrentAmount <= 0f) { this.valveType = capturedResource.Data.Container.MatterType; (connectedPumpable as GasStorage).SpecifyCompound(capturedResource.Data.Container.MatterType); this.SyncMeshesToMatterType(); } } RefreshPumpState(); } } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { if (!detachTimers.ContainsKey(res) && res != null) { if (child.name == "LeftLatch") { int index = 1; if (attachedCrates[index] != null) { index = 0; } attachedCrates[index] = res; SnapToLatch(child, res, (index * -1) + .5f); } else //if (childName == "RightLatch") { int index = 3; if (attachedCrates[index] != null) { index = 2; } attachedCrates[index] = res; SnapToLatch(child, res, (index % 2 * -1) + .5f); } } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { ResourceComponent resComp = res.transform.GetComponent <ResourceComponent>(); if (resComp != null) { if (resComp.Data.Container.MatterType.Is3DPrinterFeedstock()) { if (child == leftInputTrigger && LeftInput == null) { LeftInput = resComp; res.SnapCrate(this, child.transform.position, globalRotation: child.transform.rotation); } else if (child == rightInputTrigger && RightInput == null) { RightInput = resComp; res.SnapCrate(this, child.transform.position, globalRotation: child.transform.rotation); } } else { GuiBridge.Instance.ShowNews(NewsSource.InvalidSnap); } } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { if (c.transform == CurrentMinilab && detachTimer == null) { MinilabDocked = true; res.SnapCrate(this, MinilabSnap.position); } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider other, IMovableSnappable res) { MarketRow whichRow = GetRow(child.name); if (whichRow != null && res is ResourceComponent && !CrateInterferenceTimers.ContainsKey(whichRow)) { whichRow.Capture(this, res as ResourceComponent); } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable mov) { ResourceComponent res = mov as ResourceComponent; if (unsnapTimer == null && Bays.ContainsKey(child) && Bays[child] == null && res != null) { res.SnapCrate(this, child.transform.position, globalRotation: child.transform.rotation); } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { if (detachTimer == null && res is ResourceComponent) { if ((res as ResourceComponent).Data.Container.MatterType == Matter.Water) { capturedResource = res as ResourceComponent; capturedResource.SnapCrate(this, CrateAnchor.position); } } }
void Start() { GetComponentInChildren <BoxCollider2D>().enabled = true; GameManager.Tridentlist.Add(gameObject); // mask = ~(1 << 10); Player = GameObject.FindGameObjectWithTag("Player"); TriggerForwarder forwarder = GetComponentInChildren <TriggerForwarder>(); forwarder.OnTriggerEvent += OnTriggerEnter2D; }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable movesnap) { if (unsnapTimer == null) { var cube = movesnap.transform.GetComponent <PowerCube>(); if (cube != null) { movesnap.SnapCrate(this, child.transform.position, globalRotation: child.transform.rotation); BalanceAddNew(cube, child.transform.GetSiblingIndex()); } } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable moveSnap) { ResourceComponent res = c.GetComponent <ResourceComponent>(); if (res != null && detachTimer == null && res.Data.Container.MatterType == Matter.Produce) { if (outputs[0] == null) { outputs[0] = res; res.SnapCrate(this, child.transform.position); } else if (outputs[1] == null) { outputs[1] = res; res.SnapCrate(this, child.transform.position); } } }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { ResourceComponent oreBucket = res.transform.GetComponent <ResourceComponent>(); if (oreBucket != null && oreOut == null && attachedDeposit != null && oreBucket.Data.Container.MatterType.IsRawMaterial() && matches(oreBucket.Data.Container.MatterType, attachedDeposit.Data.Extractable.MatterType)) { oreOut = oreBucket; if (oreBucket.Data.Container.MatterType == Matter.Unspecified) { oreBucket.Data.Container.MatterType = attachedDeposit.Data.Extractable.MatterType; } res.SnapCrate(this, child.transform.position); } }
/// <summary> /// landing sequence /// </summary> /// <returns></returns> private IEnumerator DoLand() { Lander.gameObject.SetActive(true); yield return(DoFly(airborneLanderPosition, landedLanderLocalPosition)); bool turnedLightsOn = false; if (Game.Current.Environment.CurrentHour > 20 || Game.Current.Environment.CurrentHour < 6) { this.LZ.ToggleLights(true); turnedLightsOn = true; } yield return(DoFireRockets(airborneLanderHinge, landedLanderHinge)); int i = 0; TriggerForwarder[] slots = new TriggerForwarder[Bays.Keys.Count]; Bays.Keys.CopyTo(slots, 0); foreach (Matter key in this.Data.Delivery.Keys) { var crateEnumerator = this.Data.Delivery.SquareMeters(key); while (crateEnumerator.MoveNext()) { float volume = crateEnumerator.Current; TriggerForwarder child = slots[i]; var t = BounceLander.CreateCratelike(key, volume, Vector3.zero, this.Lander); Bays[child] = t.GetComponent <ResourceComponent>(); i++; } } this.Data.Delivery = null; foreach (var kvp in Bays) { if (kvp.Value != null) { kvp.Value.transform.SetParent(null); kvp.Value.SnapCrate(this, kvp.Key.transform.position, globalRotation: kvp.Key.transform.rotation); kvp.Value.GetComponent <Collider>().enabled = true; } } SetState(FlightState.Landed); yield return(new WaitForSeconds(3f)); doorSource.Play(); if (!rampsDown) { ToggleAllRamps(); } yield return(new WaitForSeconds(DoorMoveDuration)); doorSource.Stop(); if (turnedLightsOn) { this.LZ.ToggleLights(false); } movement = null; }
public void OnChildTriggerEnter(TriggerForwarder child, Collider c, IMovableSnappable res) { currentForwarder = child; currentlyColliding = c; currentResource = res; }
private void SnapToLatch(TriggerForwarder child, IMovableSnappable res, float offset) { res.SnapCrate(this, child.transform.position + child.transform.TransformDirection(new Vector3(0, 0, -offset)), carRigid); }