예제 #1
0
        private void RenderAllTilesFromLayer(Coordinate topLeft, Coordinate bottomRight, string currentLayer)
        {
            int        tileData;
            int        tileSetIndex;
            string     tileSetSource;
            Coordinate drawPosition;

            for (int y = (int)topLeft.y; y <= bottomRight.y; y++)
            {
                for (int x = (int)topLeft.x; x <= bottomRight.x; x++)
                {
                    tileData = FindDataAtPosition(x, y, currentLayer);
                    if (tileData > 0)
                    {
                        tileSetIndex  = FindSourceTileSetFor(tileData);
                        tileData      = tileData - mapMetaData.tilesets[tileSetIndex].firstgid + 0;
                        tileSetSource = mapMetaData.tilesets[tileSetIndex].source;

                        SetTextureTileSubRect(tileData, tileSetSource);

                        drawPosition.x = x * mapMetaData.tilewidth;
                        drawPosition.y = y * mapMetaData.tileheight;

                        drawPosition = CurrentCamera.ConvertMapToScreenCoordinate(drawPosition);

                        tileTextures[tileSetSource].RenderAtPosition((int)drawPosition.x, (int)drawPosition.y);
                    }
                }
            }
        }
예제 #2
0
    public void CloneWater(float viewportX, Vector2 origin)
    {
        Vector2 p             = origin * CurrentCamera.GetXZoom();
        int     viewportSizeX = Mathf.FloorToInt(viewportX * CurrentCamera.GetXZoom());
        Vector2 vecMin        = Convertion.Location2World(p) * -1;
        Vector2 vecMax        = Convertion.Location2World(new Vector2(p.x * -1 + viewportSizeX, p.y));

        if (vecMin.x < 0)
        {
            i  = (int)Mathf.Abs(vecMin.x / Chunk.size) + 1;
            i *= Chunk.size;
            foreach (Tuple <int, int> block in listLiquid)
            {
                if (block.Item1 > width - i)
                {
                    Liquid.listMap[type].SetCell(block.Item1 - width - 1, height - block.Item2, map[block.Item1, block.Item2]);
                }
            }
        }
        if (vecMax.x >= World.size * Chunk.size)
        {
            i  = (int)Mathf.Abs((vecMax.x - Chunk.size * World.size) / Chunk.size) + 1;
            i *= Chunk.size;
            foreach (Tuple <int, int> block in listLiquid)
            {
                if (block.Item1 < i)
                {
                    Liquid.listMap[type].SetCell(width + block.Item1 + 1, height - block.Item2, map[block.Item1, block.Item2]);
                }
            }
        }
    }
예제 #3
0
    public override void _Process(float delta)
    {
        int     viewportSizeX = Mathf.FloorToInt(GetViewport().Size.x *CurrentCamera.GetXZoom());
        Vector2 p             = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        float   xdiff         = viewportPos.x - p.x;
        float   ydiff         = viewportPos.y - p.y;

        /*Detection de teleportation a un seuil de 95%*/
        if (Mathf.Abs(xdiff) >= 0.95f * World.size * Chunk.size * World.BlockTilemap.CellSize.x)
        {
            foreach (var s in childs)
            {
                s.Position = new Vector2(s.Position.x + xdiff, s.Position.y + ydiff * speed);
            }
        }
        else
        {
            foreach (var s in childs)
            {
                s.Position = new Vector2(s.Position.x + xdiff * speed, s.Position.y + ydiff * speed);
                if (s.Position.x + texture.GetSize().x / 2 < -p.x)
                {
                    s.Position = new Vector2(s.Position.x + texture.GetSize().x *2, s.Position.y);
                }
                if (s.Position.x - texture.GetSize().x / 2 > (-p.x) + viewportSizeX)
                {
                    s.Position = new Vector2(s.Position.x - texture.GetSize().x *2, s.Position.y);
                }
            }
        }
        viewportPos = GetViewportTransform().origin *CurrentCamera.GetXZoom();
    }
예제 #4
0
        protected override void OnUpdate(GameTime gameTime)
        {
            MouseState State = Mouse.GetState();

            if (State.LeftButton == ButtonState.Pressed && OldState.LeftButton != ButtonState.Pressed)
            {
                var Entity = SceneManager.ActiveScene.GetEntityAtPosition(new Point(State.X + (int)Player.Camera.Position.X, State.Y + (int)Player.Camera.Position.Y));
                if (Entity != null)
                {
                    if (!CurrentCamera.IsDisposed)
                    {
                        CurrentCamera.Dispose();
                    }
                    CurrentCamera = new ChaseCameraComponent(Player.Camera);
                    Entity.Components.Add(CurrentCamera);
                }
            }
            if (State.RightButton == ButtonState.Pressed && OldState.RightButton != ButtonState.Pressed)
            {
                var Entity = SceneManager.ActiveScene.GetEntityAtPosition(new Point(State.X + (int)Player.Camera.Position.X, State.Y + (int)Player.Camera.Position.Y));
                if (Entity != null)
                {
                    foreach (var OtherEntity in SceneManager.ActiveScene.Entities.ToArray())
                    {
                        if (OtherEntity != Entity && !CorvusGame.Instance.Players.Any(c => c.Character == OtherEntity))
                        {
                            OtherEntity.Dispose();
                        }
                    }
                }
            }
        }
예제 #5
0
 // Set the currently selected camera
 public static void SetCurrentCamera(int id)
 {
     // Before setting the new camera make sure to deselect the old one
     CurrentCamera.Deselect();
     CurrentCamera = Cameras[id];
     CurrentCamera.Select();
 }
예제 #6
0
        public void Render(IRenderer renderer)
        {
            //AE August 2015: We need to tell the shaders
            if (_isDirty)
            {
                //retrieve a list of lights for each type
                var pointLights       = _lights.Where(l => l.GetType() == typeof(PointLight));
                var directionalLights = _lights.Where(l => l.GetType() == typeof(DirectionalLight));

                //reset the indexes
                int index = 0;
                foreach (var l in pointLights)
                {
                    l.Index = index++;
                }
                index = 0;
                foreach (var l in directionalLights)
                {
                    l.Index = index++;
                }

                //reset the counters
                renderer.SetNumericParameter("activeNumberOfPointLights", pointLights.Count());
                renderer.SetNumericParameter("activeNumberOfDirectionalLights", directionalLights.Count());

                _isDirty = false;
            }

            CurrentCamera.Render(renderer);
            _lights.ForEach(l => l.Render(renderer));
            _shapes.ForEach(s => s.Render(renderer));
        }
예제 #7
0
        protected override void OnResize(EventArgs e)
        {
            GL.Viewport(0, 0, Width, Height);
            CurrentCamera.Resize(Width, Height);

            base.OnResize(e);
        }
예제 #8
0
        /// <summary>
        /// Use WASD tp change the position, rotation, fov of camera
        /// </summary>
        private void UpdateCameraPosition()
        {
            //if (ChangingCameraPosition)
            //{
            if (CurrentCamera != null)
            {
                if (IsChangingFOV) //Control fov
                {
                    CurrentCamera.GetComponent <UnityEngine.Camera>().fieldOfView += Input.InputControl.GetAxis(Input.Controls.Global.GetAxes().cameraLateral);

                    //Limit fov to range from 0 to 180
                    float fov = CurrentCamera.GetComponent <UnityEngine.Camera>().fieldOfView;
                    if (fov > 179)
                    {
                        fov = 179;            //Not quite 180 because at 180 it has this weird circle thing
                    }
                    else if (fov < 0)
                    {
                        fov = 0;
                    }
                    CurrentCamera.GetComponent <UnityEngine.Camera>().fieldOfView = fov;
                }
                else if (IsShowingAngle) //Control rotation (only when the angle panel is active)
                {
                    CurrentCamera.transform.Rotate(new Vector3(-Input.InputControl.GetAxis(Input.Controls.Global.GetAxes().cameraLateral) * rotationSpeed, Input.InputControl.GetAxis(Input.Controls.Global.GetAxes().cameraForward) * rotationSpeed, 0) * Time.deltaTime);
                }

                CurrentCamera.GetComponent <RobotCamera>().UpdateConfiguration();
            }
            //}
        }
예제 #9
0
    // Use this for initialization
    void Start()
    {
        mousehook   = this;
        overButton  = false;
        didBack     = false;
        dragging    = false;
        keepDetails = false;
        //gameCam = GetComponentInParent<Camera>();
        heldSpriteRenderer = GetComponent <SpriteRenderer>();
        UICaster           = GetComponentInParent <GraphicRaycaster>();
        UIEventSystem      = GetComponentInParent <EventSystem>();
        player             = transform.parent.GetComponentInChildren <Player>();
        //transform.parent = null;
        camHandle     = gameCam.transform.parent;
        gridOverlays  = new List <HexHighlighter>();
        currentCamera = CurrentCamera.main;
        UIMask        = 1 << 5;

        mouseCheck = new int[3];
        zoomLevel  = 10;
        hexWidth   = Mathf.Sqrt(3) * hexSize;

        UIHits           = new List <RaycastResult>();
        UIEvent          = new PointerEventData(UIEventSystem);
        UIEvent.position = Input.mousePosition;
        showingRange     = false;
        overHeadLight.SetActive(false);

        Vector3 camPos = gameCam.transform.localPosition;

        camPos.z = Mathf.Clamp(camPos.z, -40, -2.5f);
        camPos.y = Mathf.Clamp(camPos.y, 5f, 20);
        gameCam.transform.localPosition = camPos;
    }
예제 #10
0
 private void resumePreview(bool i)
 {
     PreviewIsForbidden = false;
     if (CurrentCamera != null)
     {
         CurrentCamera.startUpdatePTZ();
     }
 }
예제 #11
0
 private void pausePreview(bool i)
 {
     PreviewIsForbidden = true;
     if (CurrentCamera != null)
     {
         CurrentCamera.stopUpdatePTZ();
     }
 }
예제 #12
0
 private void cameraPropertyValueAuto_CheckedChanged(Object sender, EventArgs e)
 {
     if (CameraPropertyControlInitializationComplete)
     {
         CameraPropertyValue value = new CameraPropertyValue(IsCameraPropertyValueTypePercentage, CameraPropertyValue, IsCameraPropertyAuto);
         CurrentCamera.SetCameraProperty(SelectedCameraProperty, value);
     }
 }
예제 #13
0
        private void UpdateCameraPropertyRange(CameraPropertyCapabilities propertyCapabilities)
        {
            String text;

            if (IsSelectedCameraPropertySupported && propertyCapabilities.IsGetRangeSupported && propertyCapabilities.IsGetSupported)
            {
                CameraPropertyRange range = CurrentCamera.GetCameraPropertyRange(SelectedCameraProperty);
                text = String.Format("[ {0}, {1} ], step: {2}", range.Minimum, range.Maximum, range.Step);

                Int32   decimalPlaces;
                Decimal minimum, maximum, increment;
                if (IsCameraPropertyValueTypeValue)
                {
                    minimum       = range.Minimum;
                    maximum       = range.Maximum;
                    increment     = range.Step;
                    decimalPlaces = 0;
                }
                else if (IsCameraPropertyValueTypePercentage)
                {
                    minimum       = 0;
                    maximum       = 100;
                    increment     = 0.01M;
                    decimalPlaces = 2;
                }
                else
                {
                    throw new NotSupportedException(String.Format("Camera property value type '{0}' is not supported.", ( String )cameraPropertyValueTypeSelection.SelectedItem));
                }

                cameraPropertyValueValue.Minimum       = minimum;
                cameraPropertyValueValue.Maximum       = maximum;
                cameraPropertyValueValue.Increment     = increment;
                cameraPropertyValueValue.DecimalPlaces = decimalPlaces;

                if (CurrentCameraPropertyRanges.ContainsKey(SelectedCameraProperty))
                {
                    CurrentCameraPropertyRanges[SelectedCameraProperty] = range;
                }
                else
                {
                    CurrentCameraPropertyRanges.Add(SelectedCameraProperty, range);
                }

                CameraPropertyValue value = CurrentCamera.GetCameraProperty(SelectedCameraProperty, IsCameraPropertyValueTypeValue);

                SuppressCameraPropertyValueValueChangedEvent = true;
                cameraPropertyValueValue.Value  = value.Value;
                cameraPropertyValueAuto.Checked = value.IsAuto;
                SuppressCameraPropertyValueValueChangedEvent = false;
            }
            else
            {
                text = "N/A";
            }

            cameraPropertyRangeValue.Text = text;
        }
예제 #14
0
 private void cameraPropertyValueValue_EnabledChanged(Object sender, EventArgs e)
 {
     if (CameraPropertyControlInitializationComplete && !SuppressCameraPropertyValueValueChangedEvent && cameraPropertyValueValue.Enabled)
     {
         CameraPropertyValue value = CurrentCamera.GetCameraProperty(SelectedCameraProperty, IsCameraPropertyValueTypeValue);
         cameraPropertyValueValue.Value  = value.Value;
         cameraPropertyValueAuto.Checked = value.IsAuto;
     }
 }
예제 #15
0
파일: Game.cs 프로젝트: Epita13/Ollopa_main
 public override void _Process(float delta)
 {
     WorldScreenSizeX = GetViewport().Size.x *CurrentCamera.GetXZoom();
     if (PlayerState.Is(PlayerState.State.Pause))
     {
         return;
     }
     timePlayed += delta;
 }
 public void SetCameraSetting(Packet.Type packetType, string setting, double value, bool bypassSkipCounter = false)
 {
     // If nothing has been recieved from QTM then update the settings
     // else wait 200 ms before updating qtm again to Xamarin.Forms time to update
     // and prevent an infinite feedback loop
     if (Urho.Time.SystemTime - lastQTMUpdate > 200 && !ignoreSettingsAfterCameraSelection)
     {
         CurrentCamera.SetSetting(packetType, setting, value);
     }
 }
        private void SetCameraMode(CameraMode mode)
        {
            cameraMode = mode;
            CurrentCamera.SetMode(mode);

            // Switch drawer scheme
            if (QTMNetworkConnection.IsMaster)
            {
                SwitchDrawers(mode);
            }
        }
예제 #18
0
 private void ChangeCamera(GameObject activeCamera, string cameraType, int cameraIndex)
 {
     if (CurrentCamera != null)
     {
         CurrentCamera.GetComponent <Camera>().enabled = false;
     }
     activeCamera.GetComponent <Camera>().enabled = true;
     CurrentCamera      = activeCamera;
     CurrentCameraType  = cameraType;
     CurrentCameraIndex = cameraIndex;
 }
예제 #19
0
        protected void OnRender(object sender, FrameEventArgs e)
        {
            // Clear the back buffer
            GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);

            CurrentCamera.Render(SceneGraph);

            // TODO: implement image effects: http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-14-render-to-texture/

            // swap backbuffer
            SwapBuffers();
        }
예제 #20
0
        private void cameraPropertyValue_SelectedIndexChanged(Object sender, EventArgs e)
        {
            if (CameraPropertyControlInitializationComplete)
            {
                IsSelectedCameraPropertySupported = CurrentCamera.IsCameraPropertySupported(SelectedCameraProperty);
                CameraPropertyCapabilities propertyCapabilities = CurrentCameraPropertyCapabilities[SelectedCameraProperty];

                UpdateCameraPropertyRange(propertyCapabilities);

                cameraPropertyValueAuto.Enabled = cameraPropertyValueValue.Enabled = cameraPropertyValueTypeSelection.Enabled = IsSelectedCameraPropertySupported && propertyCapabilities.IsFullySupported;
            }
        }
예제 #21
0
 private void ClearCameraPressed(BindState State)
 {
     if (State != BindState.Pressed)
     {
         return;
     }
     if (!CurrentCamera.IsDisposed)
     {
         CurrentCamera.Dispose();
     }
     Player.Character.Components.Add((CurrentCamera = new ChaseCameraComponent(Player.Camera)));
 }
예제 #22
0
    public override void _Ready()
    {
        Vector2 p      = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        Vector2 vecMin = Convertion.Location2World(p) * -1;

        prev_x_viewport = vecMin.x;
        GetNode <Sprite>("OUTLINE").Material = (Material)GetNode <Sprite>("OUTLINE").Material.Duplicate();

        GetNode <Timer>("TimerEnergy").WaitTime = 1.0f;
        timerEnergyWaitTime = GetNode <Timer>("TimerEnergy").WaitTime;

        timer = GetNode <Timer>("Timer");
    }
예제 #23
0
 public void SetCameraSetting(string setting, double value, bool bypassSkipCounter = false)
 {
     // If nothing has been recieved from QTM then update the settings
     // If one or several events has been recieved skip updating QTM an decrement the counter
     if (skipCounter == 0 || bypassSkipCounter)
     {
         CurrentCamera.SetSetting(setting, value);
     }
     else
     {
         skipCounter--;
     }
 }
예제 #24
0
        public virtual void PointerWheelChanged(Vector2 deltaValue, GameTime gameTime)
        {
            bool res = UIWindowManager.PointerWheelChanged(deltaValue, gameTime);

            if (res == false)
            {
                // Event was not handled by UI
                res = CurrentController?.PointerWheelChanged(deltaValue) ?? false;
                if (res == false)
                {
                    CurrentCamera?.PointerWheelChanged(deltaValue);
                }
            }
        }
예제 #25
0
        public virtual bool KeyReleased(Keys key, GameTime gameTime)
        {
            bool res = UIWindowManager.KeyReleased(key, gameTime);

            if (res == false)
            {
                // Event was not handled by UI
                res = CurrentController?.KeyReleased(key) ?? false;
                if (res == false)
                {
                    CurrentCamera?.KeyReleased(key);
                }
            }
            return(res);
        }
예제 #26
0
    public void DrawTargetLockon(Transform aimtarget, int type)
    {
        if (CurrentCamera != null)
        {
            Vector3 dir       = (aimtarget.position - CurrentCamera.transform.position).normalized;
            float   direction = Vector3.Dot(dir, CurrentCamera.transform.forward);
            if (direction > 0.5f)
            {
                Vector3 screenPos = CurrentCamera.WorldToScreenPoint(aimtarget.transform.position);
                //float distance = Vector3.Distance (transform.position, aimtarget.transform.position);

                GUI.DrawTexture(new Rect(screenPos.x - NavTexture [type].width / 2, Screen.height - screenPos.y - NavTexture [type].height / 2, NavTexture [type].width, NavTexture [type].height), NavTexture [type]);
            }
        }
    }
예제 #27
0
    public override void _Ready()
    {
        time      = GetNode <Timer>("cooldown");
        time2     = GetNode <Timer>("afterattack");
        Enemy_fly = GetNode <Sprite>("Enemy_Fly");
        Enemy_Die = GetNode <Sprite>("Enemy_Die");
        proximity = GetNode <Area2D>("Detection");
        anim      = GetNode <AnimationPlayer>("AnimationEnemy");
        anim.Play("Flying");

        Enemies.enemiesCount++;

        Vector2 p      = GetViewportTransform().origin *CurrentCamera.GetXZoom();
        Vector2 vecMin = Convertion.Location2World(p) * -1;

        prev_x_viewport = vecMin.x;
    }
예제 #28
0
        /// <summary>
        /// Use this function to resize the scene window, and also to look through
        /// the current camera.
        /// </summary>
        /// <param name="width">Width of the screen.</param>
        /// <param name="height">Height of the screen.</param>
        public virtual void Resize(int width, int height)
        {
            if (width != -1 && height != -1 && gl != null)
            {
                //	Resize.
                gl.Viewport(0, 0, width, height);

                if (CurrentCamera != null)
                {
                    //  Set aspect ratio.
                    CurrentCamera.AspectRatio = width / (float)height;

                    //	Then project.
                    CurrentCamera.Project(gl);
                }
            }
        }
예제 #29
0
 public void acceptCamera(CameraInfo cam)
 {
     if (CurrentCamera != null)
     {
         CurrentCamera.stopUpdatePTZ();
     }
     CurrentCamera = cam;
     if (!previewIsForbidden)
     {
         CurrentCamera.startUpdatePTZ();
     }
     Idle       = Visibility.Hidden;
     Active     = Visibility.Visible;
     SliderPan  = Convert.ToInt32(CurrentCamera.Pan);
     SliderTilt = Convert.ToInt32(currentCamera.Tilt);
     UndoRedoManager.clear();
     SliderZoom = Convert.ToInt32(CurrentCamera.Zoom);
 }
        protected override void OnUpdateFrame(FrameEventArgs e)
        {
            base.OnUpdateFrame(e);

            CurrentCamera.Update();

            var ProjectionMatrix = CurrentCamera.Projection;
            var WorldMatrix      = CurrentCamera.View;
            var ModelViewMatrix  = Matrix4.CreateTranslation(0.0f, 0.0f, 0.0f);

            Matrix4 ModelViewProjection = ModelViewMatrix * WorldMatrix * ProjectionMatrix;

            GL.UseProgram(mBasicShader.Program);
            int mvpLocation = GL.GetUniformLocation(mBasicShader.Program, "mvp_matrix");

            GL.UniformMatrix4(mvpLocation, false, ref ModelViewProjection);
            GL.UseProgram(0);
        }