void Solver_OnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) { for (int i = 0; i < e.contacts.Count; ++i) { if (e.contacts[i].distance < 0.001f) { Component collider; if (ObiCollider.idToCollider.TryGetValue(e.contacts[i].other, out collider)) { if (collider == killer) { ObiSolver.ParticleInActor pa = solver.particleToActor[e.contacts[i].particle]; ObiEmitter emitter = pa.actor as ObiEmitter; if (emitter != null) { emitter.life[pa.indexInActor] = 0; } } if (hands.Contains(collider)) { collider.gameObject.GetComponent <Touched_Me>().touchedwater = true; } } } } }
void SolverOnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) { foreach (Oni.Contact contact in e.contacts) { // this one is an actual collision: if (contact.distance < 0.01) { ActiveCollider ac = new ActiveCollider(); ObiSolver.ParticleInActor pa = solver.particleToActor[contact.particle]; ac.actor = pa.actor; ac.idxInAct = pa.indexInActor; ac.idxInSol = contact.particle; Component collider; if (ObiCollider.idToCollider.TryGetValue(contact.other, out collider)) { Vector3 SolvColPos = new Vector3(contact.point[0], contact.point[1], contact.point[2]); //print("Куб: Обнаружен контакт: " + contact.particle + " " + contact.point); Vector3 WorldColPos = solver.gameObject.transform.TransformPoint(SolvColPos); //marker.position = WorldColPos; ac.pos = WorldColPos; if (collider is Collider) { ac.col = collider as Collider; } } _actCol.Add(ac); } } }
private void Solver_OnCollision(object sender, ObiSolver.ObiCollisionEventArgs e) { // Debug.Log("collision obi"); if (OnParticleCollided != null) { foreach (var item in e.contacts) { Component collider; if (ObiCollider.idToCollider.TryGetValue(item.other, out collider)) { OnParticleCollided.Invoke(this, collider.gameObject); // Destroy particle if (collider.tag.Equals("Throwable")) { ObiSolver.ParticleInActor pa = _solver.particleToActor[item.particle]; ObiEmitter emitter = pa.actor as ObiEmitter; if (emitter != null) { emitter.life[pa.indexInActor] = 0; } } } } } }
public void Solver_OnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) { var world = ObiColliderWorld.GetInstance(); foreach (Oni.Contact contact in e.contacts) { ObiColliderBase collider = world.colliderHandles[contact.other].owner; if (collider != null) { if (collider.tag != "Ground" || collider.tag != "Walls") { if (contact.distance < 0.01) { ObiSolver.ParticleInActor pa = solver.particleToActor[contact.particle]; Slime s = pa.actor.gameObject.GetComponent <Slime> (); switch (collider.tag) { case "Food": for (var f = 0; f < s.food.Count; f++) { if (s.food[f] == collider.transform) { if (s.testingFood[f]) { s.testingFood[f] = false; s.AddReward(1f); break; } } } break; case "Enemy": s.Death(); break; } } } } } }
void Solver_OnCollision(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) { foreach (Oni.Contact contact in e.contacts) { // this one is an actual collision: if (contact.distance < 0.01) { Component component; if (ObiCollider.idToCollider.TryGetValue(contact.other, out component)) { ObiSolver.ParticleInActor pa = solver.particleToActor[contact.particle]; ObiEmitter emitter = pa.actor as ObiEmitter; if (emitter != null && emitter.life[pa.indexInActor] > 0f) { WithLiquid wl = component.gameObject.GetComponent <WithLiquid>(); if (wl) { if (wl.Fill(WithLiquid.volumePerParticle)) { emitter.life[pa.indexInActor] = 0; } } else { Effect effect = pa.actor.GetComponent <Effect>(); if (effect && effect.AddEffectTo(component.gameObject)) { emitter.life[pa.indexInActor] = 0; } } } } } } }
void Detector(object sender, Obi.ObiSolver.ObiCollisionEventArgs e) { foreach (Oni.Contact contact in e.contacts) { if (contact.distance < 0.01) { Component collider; if (ObiCollider.idToCollider.TryGetValue(contact.other, out collider)) { if (collider.tag == killerTag) { ObiSolver.ParticleInActor pa = solver.particleToActor[contact.particle]; ObiEmitter emitter = pa.actor as ObiEmitter; // destory particle emitter.life[pa.indexInActor] = 0; if (emitter != null) { Transform sirupObject = collider.transform.parent.Find(sirupObjectName); if (sirupObject != null) { if (!emitter.transform.parent.Equals(sirupObject.parent)) { // update cup TheSirup cupScript = sirupObject.GetComponent <TheSirup>(); Color color = emitter.transform.GetComponent <ObiParticleRenderer>().particleColor; cupScript.addParticle(color); } } } } } } } }