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(); }
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; } }