/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { SpriteRender sprite = (SpriteRender)Actor; Vector3 viewPosition = ray.View.Position; Vector3 viewDirection = ray.View.Direction; Matrix m1, m2, m3, world; var size = sprite.Size; Matrix.Scaling(size.X, size.Y, 1.0f, out m1); var transform = sprite.Transform; if (sprite.FaceCamera) { var up = Vector3.Up; Matrix.Billboard(ref transform.Translation, ref viewPosition, ref up, ref viewDirection, out m2); Matrix.Multiply(ref m1, ref m2, out m3); Matrix.Scaling(ref transform.Scale, out m1); Matrix.Multiply(ref m1, ref m3, out world); } else { transform.GetWorld(out m2); Matrix.Multiply(ref m1, ref m2, out world); } OrientedBoundingBox bounds; bounds.Extents = Vector3.Half; bounds.Transformation = world; normal = -ray.Ray.Direction; return(bounds.Intersects(ref ray.Ray, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; var sphere = new BoundingSphere(Transform.Translation, 1.0f); return(sphere.Intersects(ref ray.Ray, out distance)); }
public override bool RayCastSelf(ref RayCastData ray, out Real distance, out Vector3 normal) { var actor = (Spline)_node.Actor; var pos = actor.GetSplinePoint(Index); normal = -ray.Ray.Direction; return(new BoundingSphere(pos, 7.0f).Intersects(ref ray.Ray, out distance)); }
public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { var actor = (Spline)_node.Actor; var pos = actor.GetSplineTangent(_index, _isIn).Translation; normal = -ray.Ray.Direction; return(new BoundingSphere(pos, 7.0f).Intersects(ref ray.Ray, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { if (Actor is UICanvas uiCanvas && uiCanvas.Is3D) { return(uiCanvas.Bounds.Intersects(ref ray.Ray, out distance)); } distance = 0; return(false); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipColliders) == RayCastData.FlagTypes.SkipColliders) { distance = 0; return(false); } return(base.RayCastSelf(ref ray, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out Real distance, out Vector3 normal) { normal = Vector3.Up; if (Actor is UICanvas uiCanvas && uiCanvas.Is3D) { return(uiCanvas.Bounds.Intersects(ref ray.Ray, out distance)); } distance = 0; return(false); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out Real distance, out Vector3 normal) { // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipColliders) == RayCastData.FlagTypes.SkipColliders) { distance = 0; normal = Vector3.Up; return(false); } return(base.RayCastSelf(ref ray, out distance, out normal)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipEditorPrimitives) == RayCastData.FlagTypes.SkipEditorPrimitives) { distance = 0; return(false); } return(Camera.Internal_IntersectsItselfEditor(Object.GetUnmanagedPtr(_actor), ref ray.Ray, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { var volume = (PostFxVolume)_actor; var box = volume.OrientedBox; if (!box.Intersects(ref ray.Ray, out distance)) { return(false); } return(true); //box.Scale(0.8f); //return !box.Intersects(ref ray, out distance); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { // Pick wires var actor = (BoxCollider)_actor; var box = actor.OrientedBox; if (Utilities.Utils.RayCastWire(ref box, ref ray.Ray, out distance, ref ray.View.Position)) { normal = Vector3.Up; return(true); } return(base.RayCastSelf(ref ray, out distance, out normal)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipEditorPrimitives) == RayCastData.FlagTypes.SkipEditorPrimitives) { distance = 0; return(false); } BoundingSphere sphere = new BoundingSphere(Transform.Translation, 7.0f); return(CollisionsHelper.RayIntersectsSphere(ref ray.Ray, ref sphere, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { if (((BoxBrush)_actor).OrientedBox.Intersects(ref ray.Ray)) { for (int i = 0; i < ChildNodes.Count; i++) { if (ChildNodes[i] is SideLinkNode node && node.RayCastSelf(ref ray, out distance)) { return(true); } } } distance = 0; return(false); }
public static void GenerateRayCastObject(Vector3 position, Quaternion rotation, Vector3 forward, Camera currentCamera, out RayCastData rayCastData, out HitPositionData hitPositions) { rayCastData = new RayCastData(); hitPositions = new HitPositionData { CameraPosition = position, CameraRotation = rotation }; //TODO Fabian: Check here for all the Layers we use! if (Physics.Raycast(currentCamera.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0f)), out var centerHit, Mathf.Infinity, 1 << 8)) { rayCastData.CenterHit = centerHit.transform.name; hitPositions.CenterHitPosition = centerHit.point; rayCastData.CenterHitPosition = centerHit.point; rayCastData.CenterHitGroup = centerHit.transform.root.name; }
void DrillFX(Vector2 direction, RayCastData rayCastData) { SoundManager.PlaySound(SoundManager.SoundEnum.Drill); if (ShovelAnim != null) { ShovelAnim.StartAnimation(direction.X); } if (Shake != null) { Shake.InitShake(ShakeData); } if (fxManager != null) { fxManager.CreateParticleSystem(rayCastData.Pos); } }
private float OnRayCast(RayCastData data) { var ship = data.GameObj.GetComponent <Ship>(); if (ship != null && !data.Shape.IsSensor) { if (_hitFraction > data.Fraction) { _hitFraction = data.Fraction; } return(data.Fraction); } else { return(1); } }
void DoDrill(RayCastData rayCastData, Vector2 direction) { if (gameManager.PlayerDrillCount <= 0) { return; } gameManager.PlayerDrillCount--; Vector2 EpsVec = direction.Normalized; var tilemap = rayCastData.GameObj.GetComponent <TilemapCollider> ().CollisionSource [0].SourceTilemap; var tileCoord = GetTileCoord(rayCastData.Pos + EpsVec, tilemap); if (IsTileCoordBorder(tileCoord, tilemap)) { return; } DrillFX(direction, rayCastData); //Profile.BeginMeasure ("Measure"); try { Grid <Tile> tiles = tilemap.BeginUpdateTiles(); var tileset = tilemap.Tileset; tilemap.SetTile(tileCoord.X, tileCoord.Y, new Tile(emptyTile)); var updateGrid = new Grid <bool> (tilemap.Size.X, tilemap.Size.Y); updateGrid.Fill(true, 0, 0, tilemap.Size.X, tilemap.Size.Y); Tile.UpdateAutoTileCon(tiles, updateGrid, tileCoord.X - 1, tileCoord.Y - 1, 3, 3, tileset); tilemap.EndUpdateTiles(); } catch (IndexOutOfRangeException /*exception*/) { // do f*****g nothing } //Profile.EndMeasure ("Measure"); //Profile.SaveTextReport ("measure.txt"); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipEditorPrimitives) == RayCastData.FlagTypes.SkipEditorPrimitives) { distance = 0; return(false); } var volume = (PostFxVolume)_actor; var box = volume.OrientedBox; if (!box.Intersects(ref ray.Ray, out distance)) { return(false); } return(true); //box.Scale(0.8f); //return !box.Intersects(ref ray, out distance); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipEditorPrimitives) == RayCastData.FlagTypes.SkipEditorPrimitives) { distance = 0; return(false); } // Skip itself if any link gets hit if (RayCastChildren(ref ray, out distance, out normal) != null) { return(false); } // Check itself var actor = (BoxVolume)_actor; var box = actor.OrientedBox; return(Utilities.Utils.RayCastWire(ref box, ref ray.Ray, out distance, ref ray.View.Position)); }
public void OnUpdate() { var contact = new RayCastData(); RigidBody.RayCast( GameObj.Transform.Pos.Xy, Vector2.FromAngleLength(MathF.DegToRad(_angle), Radius) + GameObj.Transform.Pos.Xy, delegate(RayCastData data) { if (data.GameObj == GameObj || data.Shape.IsSensor) { return(1); } else { return(0); } }, out contact); GameObj.FireEvent(this, new SensorEvent { Data = contact }); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; // Check if skip raycasts if ((ray.Flags & RayCastData.FlagTypes.SkipEditorPrimitives) == RayCastData.FlagTypes.SkipEditorPrimitives) { distance = 0; return(false); } // Skip itself if any link gets hit if (RayCastChildren(ref ray, out distance, out normal) != null) { return(false); } // Check itself var volume = (PostFxVolume)_actor; var box = volume.OrientedBox; return(box.Contains(ref ray.Ray.Position) == ContainmentType.Disjoint && box.Intersects(ref ray.Ray, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { BoundingSphere sphere = new BoundingSphere(Transform.Translation, 7.0f); return(CollisionsHelper.RayIntersectsSphere(ref ray.Ray, ref sphere, out distance)); }
public RayInfo(RayCastData caster) { this.caster = caster; }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { return(Brush.Surfaces[Index].Intersects(ref ray.Ray, out distance, out normal)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { return(Camera.Internal_IntersectsItselfEditor(Object.GetUnmanagedPtr(_actor), ref ray.Ray, out distance)); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance, out Vector3 normal) { normal = Vector3.Up; distance = float.MaxValue; return(false); }
/// <inheritdoc /> public override bool RayCastSelf(ref RayCastData ray, out float distance) { return(Entry.Intersects(ray.Ray, out distance)); }