public void RPCDetonate(Vector3 _explosionPosition, HitMode hitMode) { GetComponent <Rigidbody>().isKinematic = true; GetComponentInChildren <Collider>().enabled = false; Instantiate(Explosions[(int)hitMode], _explosionPosition, transform.rotation); gameObject.transform.GetChild(0).GetChild(0).gameObject.SetActive(false); }
private HitInfo FindHitObject(Ray ray, Geometry originator, HitMode mode) { Vector3D intersectionPoint = new Vector3D(double.MaxValue, double.MaxValue, double.MaxValue); HitInfo info = new HitInfo(null, intersectionPoint, ray); double distance = double.MaxValue; foreach (Geometry geometry in Scene.Geometries) { if (geometry != originator && geometry.Intersects(ray, ref intersectionPoint)) { double distanceToObject = Vector3D.Subtract(ray.Source, intersectionPoint).Length; if (distanceToObject < distance) { info.hitPoint = intersectionPoint; distance = distanceToObject; info.hitObject = geometry; if (mode == HitMode.Any) { break; } } } } return(info); }
public void HitCollier(HitMode hitMode, int damage, bool isKilled) { if (hitMode == HitMode.Tank) { hit = true; shooter.HitResult(damage, isKilled); } if (isOnGameServer) { photonView.RPC("RPCDetonate", PhotonTargets.All, explosionPosition, hitMode); } else { RPCDetonate(explosionPosition, hitMode); } }
public static void SetHitMode(DependencyObject element, HitMode value) => element.SetValue(HitModeProperty, value);
private HitInfo FindHitObject(Ray ray, Geometry originator, HitMode mode) { Vector3D intPoint = new Vector3D(double.MaxValue, double.MaxValue, double.MaxValue); HitInfo info = new HitInfo(null, intPoint, ray); double dist = double.MaxValue; foreach (Geometry geom in Scene.Geoms) { if (geom != originator && geom.Intersects(ray, ref intPoint)) { double distToObj = Vector3D.Subtract(ray.Source, intPoint).Length; if (distToObj < dist) { info.hitPoint = intPoint; dist = distToObj; info.hitObj = geom; if (mode == HitMode.Any) { break; } } } } return info; }