private void openGLControl_MouseDown(object sender, MouseEventArgs e) { try { if (StaticSettings.S.GhostCube_Add_in_Data_For_Draw) { CubicalMemory.Cube cube = Cube_Selection.Decide_Position_To_Place_Cube(StaticSettings.S.FallingCube); if (e.Button.ToString() == "Right") { if (GraphicalOverlap.GO_interface_item_choice == 0 && Projectile.jp.Loaded && !Projectile.jp.Launched) { Projectile.jp.SetStartingPlayerView(); //Projectile.jp.SetEndingPlayerView(); } Music.wav_player.SaySoundEffect("BlockPlacement"); Explosion.exp.PlaceTheBombAt(cube); //if (!StaticSettings.S.ExplosionMod) //{ cube.IsFilled = true; cube.IsTakenForExplosion = false; cube.color = GraphicalOverlap.GO_color; //} //else //{ //Explosion.exp.StartingTime = (float)Time.time.GetGameTotalSeconds(); //Explosion.exp.ExplosionCenter = cube; //} cube.FallingFromHeight = Scene.SS.env.player.coords.Player_cubical_lookforcube.y; cube.FallingStartingTime = (float)Time.time.GetGameTotalSeconds(); DataForDraw_FreshlyPlacedCubes.TemporalList.Add(cube); scene.Reloader_TemporalList(); float TookTime = (float)Math.Sqrt((Scene.SS.env.player.coords.Player_cubical_lookforcube.y - cube.xyz.y) * 2 / 9.8); if (Time.time.GetGameTotalSeconds() + TookTime > Time.time.TimeWaitForFallingCubes) { Time.time.TimeWaitForFallingCubes = Time.time.GetGameTotalSeconds() + TookTime; } } else if (e.Button.ToString() == "Left") { Music.wav_player.SaySoundEffect("BlockRemovement"); cube.IsFilled = false; cube.color = cube.color_default; StaticSettings.S.RealoderCauseOfBuildingBlocks = true; } } } catch (Exception Ouch) { Console.WriteLine(Ouch.Message); } }
public void PlaceTheBombAt(CubicalMemory.Cube cube) { float x1 = 0, y1 = 0, z1 = 0; ShaderedScene.CalculateFromMaptoGraphical(cube, ref x1, ref y1, ref z1); Explosion.exp.SetBombLocation(x1, y1, z1); }
public static void CalculateFromMaptoGraphical(CubicalMemory.Cube cube, ref vec3 inp) { inp.x = cube.xz.x * CubicalMemory.Chunk.Width + cube.xyz.x; inp.y = cube.xyz.y; inp.z = cube.xz.z * CubicalMemory.Chunk.Length + cube.xyz.z; inp.x *= (CubicalMemory.Cube.rangeOfTheEdge); inp.y *= (CubicalMemory.Cube.rangeOfTheEdge); inp.z *= (CubicalMemory.Cube.rangeOfTheEdge); }
public static void CalculateFromMaptoGraphical(CubicalMemory.Cube cube, ref float x, ref float y, ref float z) { try { x = cube.xz.x * CubicalMemory.Chunk.Width + cube.xyz.x; y = cube.xyz.y; z = cube.xz.z * CubicalMemory.Chunk.Length + cube.xyz.z; x *= (CubicalMemory.Cube.rangeOfTheEdge); y *= (CubicalMemory.Cube.rangeOfTheEdge); z *= (CubicalMemory.Cube.rangeOfTheEdge); } catch (Exception) { MessageBox.Show("CalculateFromMaptoGraphical Error"); } }
public void SetHpos2() { if (hpos1 == null) { MessageBox.Show("Select Hpos1(K) before Hpos2(U)!"); return; } hpos2 = Cube_Selection.Decide_Position_To_Place_Cube(false); ShaderedScene.CalculateFromMaptoGraphical(hpos1, ref hposition1); ShaderedScene.CalculateFromMaptoGraphical(hpos2, ref hposition2); sd.Set_Center((hposition1 + hposition2) / 2); GatherCubes(); }
public void GatherCubes() { Loaded = true; if (ProjectileParts.Count() != 0) { foreach (var item in ProjectileParts) { item.IsTakenForExplosion = false; } } ProjectileParts.Clear(); sd.Set_Center((hposition1 + hposition2) / 2); vec3 pos_min = new vec3(Math.Min(hposition1.x, hposition2.x), Math.Min(hposition1.y, hposition2.y), Math.Min(hposition1.z, hposition2.z)); vec3 pos_max = new vec3(Math.Max(hposition1.x, hposition2.x), Math.Max(hposition1.y, hposition2.y), Math.Max(hposition1.z, hposition2.z)); half_height = hposition2.y - hposition1.y; vec3 cubeposition = new vec3(0, 0, 0); foreach (var XWorld in Scene.SS.env.cub_mem.world.World_as_Whole) { foreach (var XYWorld in XWorld) { foreach (var Xcube in XYWorld.cubes) { foreach (var XYcube in Xcube) { foreach (var XYZcube in XYcube) { ShaderedScene.CalculateFromMaptoGraphical(XYZcube, ref cubeposition); if (cubeposition.x >= pos_min.x && cubeposition.y >= pos_min.y && cubeposition.z >= pos_min.z && cubeposition.x <= pos_max.x && cubeposition.y <= pos_max.y && cubeposition.z <= pos_max.z ) { vec3 ranged = cubeposition - sd.Get_Center(); double range = Math.Sqrt(ranged.x * ranged.x + ranged.y * ranged.y + ranged.z * ranged.z); if (range < CenterCube_RangeMax) { CenterCube_RangeMax = range; CenterCube = XYZcube; } if (XYZcube.IsFilled) { XYZcube.IsTakenForExplosion = true; ProjectileParts.Add(XYZcube); } } } } } } } Scene.SS.ProjectileList.Reloader(); StaticSettings.S.RealoderCauseOfBuildingBlocks = true; }
public void SetHpos1() { hpos1 = Cube_Selection.Decide_Position_To_Place_Cube(false); }