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);
            }
        }
Beispiel #2
0
            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);
            }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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");
            }
        }
Beispiel #5
0
            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();
            }
Beispiel #6
0
            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;
            }
Beispiel #7
0
 public void SetHpos1()
 {
     hpos1 = Cube_Selection.Decide_Position_To_Place_Cube(false);
 }