public void TriggerPoint(bool advanceLevel, TriggerData tData, ExtraTriggerData extras) { if (advanceLevel) { IncrementLevel(); } if (tData.moveObject) { TeleportableGameItem tgi = extras.colliderLevelItem.GetComponent <TeleportableGameItem>(); if (tgi != null) { Vector3 dPos = tData.playerPositionOffset; if (tData.playerPositionOffset.x > 0) { dPos -= new Vector3(extras.objectSize.x / 2f, 0, 0); } else if (tData.playerPositionOffset.x < 0) { dPos += new Vector3(extras.objectSize.x / 2f, 0, 0); } if (positionChanges.ContainsKey(tgi.rigidBody)) { positionChanges[tgi.rigidBody] = dPos; } else { positionChanges.Add(tgi.rigidBody, dPos); } } } }
public void Trigger(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { TriggerActivated(tgi, type, extras); if (triggers.ContainsKey(tgi) && triggers[tgi].ContainsKey(type)) { GameSceneManager.INSTANCE.TriggerPoint(shouldAdvance, triggers[tgi][type], extras); } }
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { if (ballLeft && crateRight) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Player) { shouldAdvance = true; } } else if (crateRight) { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == ball) { ballLeft = true; ParticlesManager.INSTANCE.DestroyCrateParticles(ball.transform.position); ball.SetActive(false); GameObject.Destroy(ball); } } else if (plate.IsPlateGood) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate) { crateRight = true; ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position); crate.SetActive(false); GameObject.Destroy(crate); } } }
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { if (plate.IsPlateGood && plate2.IsPlateGood) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Player) { shouldAdvance = true; } } }
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { shouldAdvance = true; }
protected abstract void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras);
protected override void TriggerActivated(TriggeringGameItem tgi, TriggerInteractionType type, ExtraTriggerData extras) { if (crateRight && crateLeft) { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Player) { shouldAdvance = true; } } else if (crateLeft) { if (tgi == rightPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate) { crateRight = true; ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position); crate.SetActive(false); GameObject.Destroy(crate); PortalsAudio.INSTANCE.right2.Play(); } } else { if (tgi == leftPortal && type == TriggerInteractionType.Portal_Inanimate && extras.colliderLevelItem.gameObject == crate) { crateLeft = true; ParticlesManager.INSTANCE.DestroyCrateParticles(crate.transform.position); crate.SetActive(false); GameObject.Destroy(crate); crate = CreateSimpleLevelItem( LevelItemType.Crate, new Vector3(0, 8f, 0), Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.forward), savedParent ); PortalsAudio.INSTANCE.left2.Play(); } } }