Ejemplo n.º 1
0
        public override void initialization()
        {
            START_initialization();

            int i = 0;
            int j = 0;

            int value = 0;

            if ((value = Scene.SS.env.player.coords.Player_chunk_position.x - StaticSettings.S.RangeOfView) > 0)
            {
                i = value + 1;
            }
            else
            {
                i = 0;
            }

            for (; i < Scene.SS.env.cub_mem.world.World_as_Whole.Count() && i < Scene.SS.env.player.coords.Player_chunk_position.x + StaticSettings.S.RangeOfView; i++)
            {
                if ((value = Scene.SS.env.player.coords.Player_chunk_position.z - StaticSettings.S.RangeOfView) > 0)
                {
                    j = value + 1;
                }
                else
                {
                    j = 0;
                }

                for (; j < Scene.SS.env.cub_mem.world.World_as_Whole[i].Count() && j < Scene.SS.env.player.coords.Player_chunk_position.z + StaticSettings.S.RangeOfView; j++)
                {
                    var XYworld = Scene.SS.env.cub_mem.world.World_as_Whole[i][j];

                    if (Math.Abs(XYworld.xz.x - Scene.SS.env.player.coords.Player_chunk_position.x) < StaticSettings.S.RangeOfView &&
                        Math.Abs(XYworld.xz.z - Scene.SS.env.player.coords.Player_chunk_position.z) < StaticSettings.S.RangeOfView)
                    {
                        foreach (var Xcube in XYworld.cubes)
                        {
                            foreach (var XYcube in Xcube)
                            {
                                foreach (var XYZcube in XYcube)
                                {
                                    if (XYZcube.IsFilled && !XYZcube.IsTakenForExplosion)
                                    {
                                        ShaderedScene.CalculateFromMaptoGraphical(XYZcube, ref x, ref y, ref z);

                                        //POINT OF VIEWER
                                        Scene.SS.env.player.NormalizedToXYWorld.x = Scene.SS.env.player.coords.Player_precise_stepback.x - x;
                                        Scene.SS.env.player.NormalizedToXYWorld.y = Scene.SS.env.player.coords.Player_precise_stepback.y - y;
                                        Scene.SS.env.player.NormalizedToXYWorld.z = Scene.SS.env.player.coords.Player_precise_stepback.z - z;
                                        float range = GeneralProgrammingStuff.vec3_range(Scene.SS.env.player.NormalizedToXYWorld);
                                        GeneralProgrammingStuff.vec3_normalize(ref Scene.SS.env.player.NormalizedToXYWorld, range);
                                        Scene.SS.env.player.coords.LookForCube();
                                        float scalar = GeneralProgrammingStuff.vec3_scalar(Scene.SS.env.player.NormalizedToXYWorld, Scene.SS.env.player.coords.NormalizedLook);
                                        //POINT OF VIEWER

                                        if (!StaticSettings.S.RealoderCauseOfPointOfView || scalar > 0)
                                        {
                                            //if (!StaticSettings.S.RealoderCauseOfSunSided ||
                                            //    XYworld.xz.x == Scene.SS.env.player.coords.Player_chunk_position.x
                                            //    && XYworld.xz.z == Scene.SS.env.player.coords.Player_chunk_position.z)
                                            //    Draw_Quad_Full_Sunsided(x, y, z, localed_range, XYZcube.color, true); //Вроде обычный куб.
                                            //else
                                            if (!StaticSettings.S.PointOfView_Circled_Visible_Cubes || range < CubicalMemory.Cube.rangeOfTheEdge * CubicalMemory.Chunk.Width * (StaticSettings.S.RangeOfView))
                                            {
                                                Draw_Quad_Full_Sunsided_not_angled(x, y, z, localed_range, XYZcube.color);
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            END_initialization();
        }
Ejemplo n.º 2
0
            public void Exploding_Rewriter()
            {
                if (ExplosionCenter != null)
                {
                    Point2Int Bomb_chunk_position   = new Point2Int(0, 0);
                    Point3Int Bomb_cubical_position = new Point3Int(0, 0, 0);
                    Scene.SS.env.player.coords.Reverse_presice_to_map_coords(Bomb_precise_position, ref Bomb_chunk_position, ref Bomb_cubical_position);

                    int Range_of_chunk_explosion = (int)Projectile.settings.Explosion_radius;
                    //DataForDraw_ExplodingList.TemporalList.Clear();

                    int i = 0;
                    int j = 0;

                    int value = 0;
                    if ((value = Bomb_chunk_position.x - Range_of_chunk_explosion) > 0)
                    {
                        i = value;
                    }
                    else
                    {
                        i = 0;
                    }

                    for (; i < Scene.SS.env.cub_mem.world.World_as_Whole.Count() && i < Bomb_chunk_position.x + Range_of_chunk_explosion; i++)
                    {
                        if ((value = Bomb_chunk_position.z - Range_of_chunk_explosion) > 0)
                        {
                            j = value;
                        }
                        else
                        {
                            j = 0;
                        }

                        for (; j < Scene.SS.env.cub_mem.world.World_as_Whole[i].Count() && j < Bomb_chunk_position.z + Range_of_chunk_explosion; j++)
                        {
                            var XYworld = Scene.SS.env.cub_mem.world.World_as_Whole[i][j];

                            if (Math.Abs(XYworld.xz.x - Bomb_chunk_position.x) < Range_of_chunk_explosion &&
                                Math.Abs(XYworld.xz.z - Bomb_chunk_position.z) < Range_of_chunk_explosion)
                            {
                                foreach (var Xcube in XYworld.cubes)
                                {
                                    foreach (var XYcube in Xcube)
                                    {
                                        foreach (var XYZcube in XYcube)
                                        {
                                            if (XYZcube.IsFilled && !XYZcube.IsTakenForExplosion)
                                            {
                                                ShaderedScene.CalculateFromMaptoGraphical(XYZcube, ref x, ref y, ref z);

                                                //POINT OF VIEWER
                                                vec3 range_to_cube = new vec3(0, 0, 0);
                                                range_to_cube.x = Bomb_precise_position.x - x;
                                                range_to_cube.y = Bomb_precise_position.y - y;
                                                range_to_cube.z = Bomb_precise_position.z - z;
                                                float range = GeneralProgrammingStuff.vec3_range(range_to_cube);

                                                if (range < CubicalMemory.Cube.rangeOfTheEdge * Projectile.settings.Explosion_radius)
                                                {
                                                    XYZcube.FallingStartingTime = Explosion.exp.StartingTime;
                                                    DataForDraw_ExplodingList.TemporalList.Add(XYZcube);
                                                    //Draw_Quad_Full_Sunsided_not_angled(x, y, z, localed_range, XYZcube.color);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }

                    ExplosionCenter.IsTakenForExplosion = true;
                }
            }