public override void Process(Camera cam, Texture output, IAccelerator acc) { uint[] pix = output.Pixel; for(int i = 0; i < pix.Length; i++) { pix[i] = ColorUtils.AlphaChannel|ColorUtils.Random(pix[i], delta); } }
public Camera Camera(IAccelerator acc, Light[] lights, EnvironmentSettings es) { Camera cam = new Camera((int)this.Width, (int)this.Height, this.ScreenDistance, this.FoVH, acc, lights, es); cam.Position = this.Position; cam.LookAt = this.Lookat; cam.Roll = Roll; cam.MakeDirty(); return cam; }
protected void UpdateX(ICollisionRectangle collisionRectangle, IAccelerator accelerator, Kinematics kinematicsX, Kinematics kinematicsY, GameTime gameTime, Map map) { Update(collisionRectangle, accelerator, kinematicsX, kinematicsY, gameTime, map, null, kinematicsX, AxisType.XAxis); }
protected void UpdateY(ICollisionRectangle collisionRectangle, IAccelerator accelerator, Kinematics kinematicsX, Kinematics kinematicsY, GameTime gameTime, Map map, BitArray maybeGroundTile) { Update(collisionRectangle, accelerator, kinematicsX, kinematicsY, gameTime, map, maybeGroundTile, kinematicsY, AxisType.YAxis); }
private void Update(ICollisionRectangle collisionRectangle, IAccelerator accelerator, Kinematics kinematicsX, Kinematics kinematicsY, GameTime gameTime, Map map, BitArray maybeGroundTile, Kinematics kinematics, AxisType axis) { Func <Map, Rectangle, TileInfo.SideType, BitArray, CollisionInfo?> testMapCollisionFunc; if (collisionType == CollisionType.BouncingCollision) { testMapCollisionFunc = TestMapBouncingCollision; } else { testMapCollisionFunc = TestMapStickyCollision; } accelerator.UpdateVelocity(kinematics, gameTime); GameUnit delta = kinematics.velocity * (float)gameTime.ElapsedGameTime.TotalMilliseconds; TileInfo.SideType direction = axis == AxisType.XAxis ? (delta > 0 ? TileInfo.SideType.RightSide : TileInfo.SideType.LeftSide) : (delta > 0 ? TileInfo.SideType.BottomSide : TileInfo.SideType.TopSide); CollisionInfo?maybeInfo = testMapCollisionFunc(map, collisionRectangle.Collision(direction, kinematicsX.position, kinematicsY.position, delta), direction, maybeGroundTile); if (maybeInfo.HasValue) { kinematics.position = maybeInfo.Value.position - collisionRectangle.BoundingBox.Side(direction); debugCollidingTiles.Add(maybeInfo.Value.tilePosition); OnCollision(direction, true, maybeInfo.Value.tileType); } else { kinematics.position += delta; OnDelta(direction); } maybeInfo = null; TileInfo.SideType oppositeDirection = TileInfo.OppositeSide(direction); maybeInfo = testMapCollisionFunc(map, collisionRectangle.Collision(oppositeDirection, kinematicsX.position, kinematicsY.position, 0), oppositeDirection, null); if (maybeInfo.HasValue) { kinematics.position = maybeInfo.Value.position - collisionRectangle.BoundingBox.Side(oppositeDirection); debugOppositeCollidingTiles.Add(maybeInfo.Value.tilePosition); OnCollision(oppositeDirection, false, maybeInfo.Value.tileType); } }
public RayTracer(IAccelerator acc, Light[] lights, EnvironmentSettings settings) { this.acc = acc; this.maxDepth = settings.RecursionDepth; this.rayCache = new Ray[maxDepth+0x01]; for(int i = 0x00; i < this.maxDepth+0x01; i++) { this.rayCache[i] = new Ray(0.0d, 0.0d, 0.0d, 0.0d, 0.0d, 0.0d); } this.lights = lights; this.ambientColor = settings.AmbientColor.Color; this.EnvironmentMap = EnvironmentMaps.GetOrBlack(settings.EnvironmentMap); this.lightTest = settings.LightTest; this.sr = new Ray(new Point3(0.0d, 0.0d, 0.0d), dis); this.distanceUnit = settings.DistanceUnit; }
private void Update(ICollisionRectangle collisionRectangle, IAccelerator accelerator, Kinematics kinematicsX, Kinematics kinematicsY, GameTime gameTime, Map map, BitArray maybeGroundTile, Kinematics kinematics, AxisType axis) { Func<Map, Rectangle, TileInfo.SideType, BitArray, CollisionInfo?> testMapCollisionFunc; if (collisionType == CollisionType.BouncingCollision) { testMapCollisionFunc = TestMapBouncingCollision; } else { testMapCollisionFunc = TestMapStickyCollision; } accelerator.UpdateVelocity(kinematics, gameTime); GameUnit delta = kinematics.velocity * (float)gameTime.ElapsedGameTime.TotalMilliseconds; TileInfo.SideType direction = axis == AxisType.XAxis ? (delta > 0 ? TileInfo.SideType.RightSide : TileInfo.SideType.LeftSide) : (delta > 0 ? TileInfo.SideType.BottomSide : TileInfo.SideType.TopSide); CollisionInfo? maybeInfo = testMapCollisionFunc(map, collisionRectangle.Collision(direction, kinematicsX.position, kinematicsY.position, delta), direction, maybeGroundTile); if (maybeInfo.HasValue) { kinematics.position = maybeInfo.Value.position - collisionRectangle.BoundingBox.Side(direction); debugCollidingTiles.Add(maybeInfo.Value.tilePosition); OnCollision(direction, true, maybeInfo.Value.tileType); } else { kinematics.position += delta; OnDelta(direction); } maybeInfo = null; TileInfo.SideType oppositeDirection = TileInfo.OppositeSide(direction); maybeInfo = testMapCollisionFunc(map, collisionRectangle.Collision(oppositeDirection, kinematicsX.position, kinematicsY.position, 0), oppositeDirection, null); if (maybeInfo.HasValue) { kinematics.position = maybeInfo.Value.position - collisionRectangle.BoundingBox.Side(oppositeDirection); debugOppositeCollidingTiles.Add(maybeInfo.Value.tilePosition); OnCollision(oppositeDirection, false, maybeInfo.Value.tileType); } }
public Camera (int w, int h, double screenDistance, double foVH, IAccelerator acc, Light[] lights, EnvironmentSettings settings, List<CameraPostProcessor> postprocessors = null) { this.raster = new Texture(w, h); this.foVH = foVH; this.acc = acc; this.Lights = lights; this.antialiasSqrt = settings.AntiAliasingSqrt; this.dispersion = settings.Dispersion; this.dispersionAntialiasSqrt = settings.DispersingAntiAliasingSqrt; this.settings = settings; if(postprocessors != null) { this.postProcessors = postprocessors; } else { this.postProcessors = new List<CameraPostProcessor>(); } }
public void UpdateY(GameTime gameTime, Map map) { IAccelerator accelerator = jumpActive && kinematicsY.velocity < 0 ? JumpGravityAccelerator : ConstantAccelerator.Gravity; UpdateY(collisionRectangle, accelerator, kinematicsX, kinematicsY, gameTime, map, maybeGroundTile); }
public abstract void Process(Camera cam, Texture output, IAccelerator acc);