コード例 #1
0
ファイル: NoisePostProcessor.cs プロジェクト: KommuSoft/MoRen
 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);
     }
 }
コード例 #2
0
ファイル: CameraWrapper.cs プロジェクト: KommuSoft/MoRen
 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;
 }
コード例 #3
0
ファイル: MapCollidable.cs プロジェクト: coler706/CaveStory
 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);
 }
コード例 #4
0
 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);
 }
コード例 #5
0
ファイル: MapCollidable.cs プロジェクト: coler706/CaveStory
 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);
 }
コード例 #6
0
 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);
 }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
ファイル: RayTracer.cs プロジェクト: KommuSoft/MoRen
 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;
 }
コード例 #9
0
ファイル: MapCollidable.cs プロジェクト: coler706/CaveStory
        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);
            }
        }
コード例 #10
0
ファイル: Camera.cs プロジェクト: KommuSoft/MoRen
		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>();
			}
		}
コード例 #11
0
        public void UpdateY(GameTime gameTime, Map map)
        {
            IAccelerator accelerator = jumpActive && kinematicsY.velocity < 0 ? JumpGravityAccelerator : ConstantAccelerator.Gravity;

            UpdateY(collisionRectangle, accelerator, kinematicsX, kinematicsY, gameTime, map, maybeGroundTile);
        }
コード例 #12
0
 public abstract void Process(Camera cam, Texture output, IAccelerator acc);