Esempio n. 1
0
 void Update()
 {
     if (Input.GetMouseButtonDown(0))
     {
         if (heldItem == null)
         {
             RaycastHit hit;
             Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 100, Color.green, 1);
             if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, pickupDistance, 1 << 10))
             {
                 // We hit something!
                 TransformableObject tObject = hit.transform.GetComponentInParent <TransformableObject>();
                 tObject.isThrown          = true;
                 heldItem                  = tObject.transform;
                 heldItem.gameObject.layer = 11;
                 heldItem.SetParent(heldItemContainer);
                 heldItem.localPosition = Vector3.zero;
                 heldItem.GetComponent <Rigidbody>().isKinematic = true;
             }
         }
         else
         {
             heldItem.SetParent(null);
             heldItem.gameObject.layer = 10;
             Rigidbody rb = heldItem.GetComponent <Rigidbody>();
             rb.isKinematic = false;
             rb.AddForce(transform.TransformDirection(Vector3.forward) * throwStrength);
             heldItem = null;
         }
     }
 }
Esempio n. 2
0
        private void DrawBillboard(TransformableObject billboardObject, Matrix staticViewProjection, Matrix view, EditorLogic.EditorSendData sendData)
        {
            Matrix world = Matrix.CreateTranslation(billboardObject.Position);

            Shaders.BillboardEffectParameter_WorldViewProj.SetValue(world * staticViewProjection);
            Shaders.BillboardEffectParameter_WorldView.SetValue(world * view);

            if (billboardObject.Id == GetHoveredId())
            {
                Shaders.BillboardEffectParameter_IdColor.SetValue(Color.White.ToVector3());
            }
            if (billboardObject.Id == sendData.SelectedObjectId)
            {
                Shaders.BillboardEffectParameter_IdColor.SetValue(Color.Gold.ToVector3());
            }

            Shaders.BillboardEffect.CurrentTechnique.Passes[0].Apply();

            _graphicsDevice.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, 2);

            if (billboardObject.Id == GetHoveredId() || billboardObject.Id == sendData.SelectedObjectId)
            {
                Shaders.BillboardEffectParameter_IdColor.SetValue(Color.Gray.ToVector3());
            }
        }
Esempio n. 3
0
        private void TransformEventHandler(Transformable sender, TransformEventArgs args)
        {
            ObjectModel.ComponentKey transformableKey;
            _transformableKeys.TryGetValue(sender, out transformableKey);
            if (transformableKey == null)
            {
                throw new InvalidTransformEventHandlerException();
            }

            List <ObjectModel.ComponentKey> initialPath = SealedObject.HierarchyPack.ComponentMap[_transformableKeys[sender]];
            TransformableObject             initialComp = SealedObject.Object;
            Matrix4 globalTransform = new Matrix4()
            {
                M11 = 1, M22 = 1, M33 = 1, M44 = 1
            };

            for (int i = 0; i < initialPath.Count - 1; i++)
            {
                globalTransform = initialComp.GetTransform() * globalTransform;
                initialComp     = initialComp.GetSubComp(initialPath[i]);
            }
            if (initialPath.Count > 0)
            {
                globalTransform = initialComp.GetTransform() * globalTransform;
                initialComp     = initialComp.GetSubComp(initialPath.Last());
                _identities[initialPath[initialPath.Count - 1]].SetJointTransform(initialPath.Last(), initialComp.GetTransform());
            }

            Dictionary <TransformableObject, Matrix4> components = new Dictionary <TransformableObject, Matrix4>();

            components.Add(initialComp, initialComp.GetTransform() * globalTransform);

            KeyValuePair <TransformableObject, Matrix4> currComp;
            Dictionary <ObjectModel.ComponentKey, TransformableObject> subComps;

            while (components.Count > 0)
            {
                currComp = components.First();
                components.Remove(currComp.Key);
                if (currComp.Key.GetStructType() == ObjectModel.StructType.Hierarchical)
                {
                    subComps = currComp.Key.GetSubComps();
                    foreach (KeyValuePair <ObjectModel.ComponentKey, TransformableObject> comp in subComps)
                    {
                        components.Add(comp.Value, comp.Value.GetTransform() * currComp.Value);
                    }
                }
                _identities[_transformableKeys[currComp.Key]].SetTransform(currComp.Value);
            }
        }
Esempio n. 4
0
 private void Update()
 {
     if (Input.GetMouseButtonDown(1) && gunAquired)
     {
         // We right clicked, lets see if we should open the transform menu
         RaycastHit hit;
         Debug.DrawRay(transform.position, transform.TransformDirection(Vector3.forward) * 100, Color.yellow, 1);
         if (Physics.Raycast(transform.position, transform.TransformDirection(Vector3.forward), out hit, Mathf.Infinity, ~((1 << 9) + (1 << 11))))
         {
             // We hit something!
             TransformableObject target = hit.transform.GetComponentInParent <TransformableObject>();
             if (target)
             {
                 // We hit something transformable
                 // Finally we can actually do something!
                 originalTarget = currentTarget = target.gameObject;
                 UpdateOutline(originalTarget.transform, 0.025f);
                 TransformMenu.instance.gameObject.SetActive(true);
                 Time.timeScale   = bulletTimeSpeed;
                 fps.enabled      = false;
                 Cursor.lockState = CursorLockMode.None;
                 Cursor.visible   = true;
             }
         }
     }
     if (Input.GetMouseButtonUp(1) && gunAquired)
     {
         // Reset everything
         if (currentTarget)
         {
             UpdateOutline(currentTarget.transform, 0);
         }
         if (originalTarget != currentTarget)
         {
             Destroy(originalTarget);
         }
         originalTarget = currentTarget = null;
         TransformMenu.instance.gameObject.SetActive(false);
         Time.timeScale   = 1;
         fps.enabled      = true;
         Cursor.lockState = CursorLockMode.Locked;
         Cursor.visible   = false;
     }
 }
Esempio n. 5
0
 public PropertyProvider(TransformableObject obj, EditorSceneBase scene)
 {
     this.obj   = obj;
     this.scene = scene;
 }
Esempio n. 6
0
        /// <summary>
        /// Main Logic for the editor part
        /// </summary>
        /// <param name="gameTime"></param>
        /// <param name="entities"></param>
        /// <param name="data"></param>
        public void Update(GameTime gameTime,
                           List <BasicEntity> entities,
                           List <Decal> decals,
                           List <PointLight> pointLights,
                           List <DirectionalLight> dirLights,
                           EnvironmentSample envSample,
                           List <DebugEntity> debugEntities,
                           EditorReceivedData data,
                           MeshMaterialLibrary meshMaterialLibrary)
        {
            if (!GameSettings.e_enableeditor)
            {
                return;
            }

            if (!DebugScreen.ConsoleOpen)
            {
                if (Input.WasKeyPressed(Keys.R))
                {
                    GameStats.e_gizmoMode = GizmoModes.Rotation;
                }
                if (Input.WasKeyPressed(Keys.T))
                {
                    GameStats.e_gizmoMode = GizmoModes.Translation;
                }
                if (Input.WasKeyPressed(Keys.Z))
                {
                    GameStats.e_gizmoMode = GizmoModes.Scale;
                }
            }

            _gizmoMode = GameStats.e_gizmoMode;

            int hoveredId = data.HoveredId;

            if (_gizmoTransformationMode)
            {
                if (Input.mouseState.LeftButton == ButtonState.Pressed)
                {
                    GizmoControl(_gizmoId, data);
                }
                else
                {
                    _gizmoTransformationMode = false;
                }
            }
            else if (Input.WasLMBClicked() && !GUIControl.UIWasUsed)
            {
                previousMouseX = Input.mouseState.X;
                previousMouseY = Input.mouseState.Y;

                //Gizmos
                if (hoveredId >= 1 && hoveredId <= 3)
                {
                    _gizmoId = hoveredId;
                    GizmoControl(_gizmoId, data);
                    return;
                }

                if (hoveredId <= 0)
                {
                    SelectedObject = null;
                    return;
                }

                bool foundnew = false;
                //Get the selected entity!
                for (int index = 0; index < entities.Count; index++)
                {
                    var VARIABLE = entities[index];
                    if (VARIABLE.Id == hoveredId)
                    {
                        SelectedObject = VARIABLE;
                        foundnew       = true;
                        break;
                    }
                }
                if (foundnew == false)
                {
                    for (int index = 0; index < decals.Count; index++)
                    {
                        Decal decal = decals[index];
                        if (decal.Id == hoveredId)
                        {
                            SelectedObject = decal;
                            break;
                        }
                    }

                    for (int index = 0; index < pointLights.Count; index++)
                    {
                        PointLight pointLight = pointLights[index];
                        if (pointLight.Id == hoveredId)
                        {
                            SelectedObject = pointLight;
                            break;
                        }
                    }

                    for (int index = 0; index < dirLights.Count; index++)
                    {
                        DirectionalLight directionalLight = dirLights[index];
                        if (directionalLight.Id == hoveredId)
                        {
                            SelectedObject = directionalLight;
                            break;
                        }
                    }

                    {
                        if (envSample.Id == hoveredId)
                        {
                            SelectedObject = envSample;
                        }
                    }

                    for (int index = 0; index < debugEntities.Count; index++)
                    {
                        DirectionalLight debugEntity = dirLights[index];
                        if (debugEntity.Id == hoveredId)
                        {
                            SelectedObject = debugEntity;
                            break;
                        }
                    }
                }
            }

            //Controls

            if (Input.WasKeyPressed(Keys.Delete))
            {
                //Find object
                if (SelectedObject is BasicEntity)
                {
                    entities.Remove((BasicEntity)SelectedObject);
                    meshMaterialLibrary.DeleteFromRegistry((BasicEntity)SelectedObject);

                    SelectedObject = null;
                }
                else if (SelectedObject is Decal)
                {
                    decals.Remove((Decal)SelectedObject);

                    SelectedObject = null;
                }
                else if (SelectedObject is PointLight)
                {
                    pointLights.Remove((PointLight)SelectedObject);

                    SelectedObject = null;
                }
                else if (SelectedObject is DirectionalLight)
                {
                    dirLights.Remove((DirectionalLight)SelectedObject);

                    SelectedObject = null;
                }
            }

            if (Input.WasKeyPressed(Keys.Insert) || (Input.keyboardState.IsKeyDown(Keys.LeftControl) && Input.WasKeyPressed(Keys.C)))
            {
                if (SelectedObject is BasicEntity)
                {
                    BasicEntity copy = (BasicEntity)SelectedObject.Clone;
                    copy.RegisterInLibrary(meshMaterialLibrary);

                    entities.Add(copy);
                }
                else if (SelectedObject is Decal)
                {
                    Decal copy = (Decal)SelectedObject.Clone;
                    decals.Add(copy);
                }
                else if (SelectedObject is PointLight)
                {
                    PointLight copy = (PointLight)SelectedObject.Clone;
                    pointLights.Add(copy);
                }
                else if (SelectedObject is DirectionalLight)
                {
                    DirectionalLight copy = (DirectionalLight)SelectedObject.Clone;
                    dirLights.Add(copy);
                }
            }
        }
        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            EditableObject obj;

            #region Create scene and add objects to it
            scene = new EditorScene();

            scene.objects.Add(obj = new ExampleObject(new Vector3(0, -4, 0)));

            List <PathPoint> pathPoints = new List <PathPoint>
            {
                new PathPoint(
                    new Vector3(0, 0, 0),
                    new Vector3(0, 0, 0),
                    new Vector3(2, 0, 0)
                    ),
                new PathPoint(
                    new Vector3(8, 4, 2),
                    new Vector3(-4, 0, 4),
                    new Vector3(4, 0, -4)
                    ),
                new PathPoint(
                    new Vector3(4, 2, -6),
                    new Vector3(0, 0, 0),
                    new Vector3(0, 0, 0)
                    )
            };

            scene.objects.Add(obj = new Path(pathPoints));

            for (int i = 0; i < 20; i++)
            {
                pathPoints = new List <PathPoint>
                {
                    new PathPoint(
                        new Vector3(-3, 6 + i * 2, 0),
                        new Vector3(0, 0, -1.75f),
                        new Vector3(0, 0, 1.75f)
                        ),
                    new PathPoint(
                        new Vector3(0, 6 + i * 2, 3),
                        new Vector3(-1.75f, 0, 0),
                        new Vector3(1.75f, 0, 0)
                        ),
                    new PathPoint(
                        new Vector3(3, 6 + i * 2, 0),
                        new Vector3(0, 0, 1.75f),
                        new Vector3(0, 0, -1.75f)
                        ),
                    new PathPoint(
                        new Vector3(0, 6 + i * 2, -3),
                        new Vector3(1.75f, 0, 0),
                        new Vector3(-1.75f, 0, 0)
                        )
                };

                scene.objects.Add(obj = new Path(pathPoints)
                {
                    Closed = true
                });
            }

            for (int i = 5; i < 2000; i++)
            {
                scene.objects.Add(obj = new TransformableObject(new Vector3(i, 0, 0), Vector3.Zero, Vector3.One));
            }
            #endregion

            //setup the gl controls
            gL_Control.MainDrawable = scene;

            gL_Control.ActiveCamera = new GL_EditorFramework.StandardCameras.InspectCamera(1f);

            gL_ControlLegacy1.MainDrawable = new SingleObject(new Vector3());
            gL_Control.CameraDistance      = 20;

            //add event handlers to scene and gl control
            scene.SelectionChanged += Scene_SelectionChanged;
            scene.ObjectsMoved     += Scene_ObjectsMoved;
            scene.ListChanged      += Scene_ListChanged;
            scene.ListEntered      += Scene_ListEntered;
            scene.ListInvalidated  += Scene_ListInvalidated;
            gL_Control.KeyDown     += GL_ControlModern1_KeyDown;

            //add categories to sceneListView (in this case 15 references to the same list,
            //which should never be done and only serves for demonstration purposes)
            for (int i = 0; i < 15; i++)
            {
                sceneListView1.RootLists.Add("Test" + i, scene.objects);
            }

            sceneListView1.UpdateComboBoxItems();

            //link the scenes selected objs to sceneListView
            sceneListView1.SelectedItems = scene.SelectedObjects;
            //set current category (highly recommended to do once all categories are added
            sceneListView1.SetRootList("Test0");

            //add event handlers to sceneListView
            sceneListView1.SelectionChanged += SceneListView1_SelectionChanged;
            sceneListView1.ItemsMoved       += SceneListView1_ItemsMoved;
            sceneListView1.ListExited       += SceneListView1_ListExited;
        }
Esempio n. 8
0
        public void OnKeyPress(string key)
        {
            if (key.Equals("m"))
            {
                if (activeTransform == TransformEventArgs.TransformEvent.Translation)
                {
                    activeTransform = TransformEventArgs.TransformEvent.Rotation;
                }
                else
                {
                    activeTransform = TransformEventArgs.TransformEvent.Translation;
                }
            }
            else if (key.Equals("b"))
            {
                ub = !ub;
            }

            if (key.Equals("1"))
            {
                focusComp = SpiderHiearchyPackage.body;
            }
            else if (ub)
            {
                if (key.Equals("2"))
                {
                    focusComp = SpiderHiearchyPackage.uleg1;
                }
                else if (key.Equals("3"))
                {
                    focusComp = SpiderHiearchyPackage.uleg2;
                }
                else if (key.Equals("4"))
                {
                    focusComp = SpiderHiearchyPackage.uleg3;
                }
                else if (key.Equals("5"))
                {
                    focusComp = SpiderHiearchyPackage.uleg4;
                }
                else if (key.Equals("6"))
                {
                    focusComp = SpiderHiearchyPackage.uleg5;
                }
                else if (key.Equals("7"))
                {
                    focusComp = SpiderHiearchyPackage.uleg6;
                }
                else if (key.Equals("8"))
                {
                    focusComp = SpiderHiearchyPackage.uleg7;
                }
                else if (key.Equals("9"))
                {
                    focusComp = SpiderHiearchyPackage.uleg8;
                }
            }
            else
            {
                if (key.Equals("2"))
                {
                    focusComp = SpiderHiearchyPackage.bleg1;
                }
                else if (key.Equals("3"))
                {
                    focusComp = SpiderHiearchyPackage.bleg2;
                }
                else if (key.Equals("4"))
                {
                    focusComp = SpiderHiearchyPackage.bleg3;
                }
                else if (key.Equals("5"))
                {
                    focusComp = SpiderHiearchyPackage.bleg4;
                }
                else if (key.Equals("6"))
                {
                    focusComp = SpiderHiearchyPackage.bleg5;
                }
                else if (key.Equals("7"))
                {
                    focusComp = SpiderHiearchyPackage.bleg6;
                }
                else if (key.Equals("8"))
                {
                    focusComp = SpiderHiearchyPackage.bleg7;
                }
                else if (key.Equals("9"))
                {
                    focusComp = SpiderHiearchyPackage.bleg8;
                }
            }

            TransformableObject transform = transformableSpiderObj.GetComp(focusComp);

            if (key.Equals("q"))
            {
                if (activeTransform == TransformEventArgs.TransformEvent.Rotation)
                {
                    transform.Rotate(new Vector(0, 0, 1), 5.0f);
                }
                else
                {
                    transform.Translate(new Vector(0, 0, 0.1f));
                }
                transform.Transform();
            }
            else if (key.Equals("e"))
            {
                if (focusComp != SpiderHiearchyPackage.body)
                {
                    transform = transform.GetSubComp(focusComp);
                }
                if (activeTransform == TransformEventArgs.TransformEvent.Rotation)
                {
                    transform.Rotate(new Vector(0, 0, 1), -5.0f);
                }
                else
                {
                    transform.Translate(new Vector(0, 0, -0.1f));
                }
                transform.Transform();
            }
            else if (key.Equals("w"))
            {
                if (focusComp != SpiderHiearchyPackage.body)
                {
                    transform = transform.GetSubComp(focusComp);
                }
                if (activeTransform == TransformEventArgs.TransformEvent.Rotation)
                {
                    transform.Rotate(new Vector(0, 1, 0), 5.0f);
                }
                else
                {
                    transform.Translate(new Vector(0, 0.1f, 0));
                }
                transform.Transform();
            }
            else if (key.Equals("s"))
            {
                if (focusComp != SpiderHiearchyPackage.body)
                {
                    transform = transform.GetSubComp(focusComp);
                }
                if (activeTransform == TransformEventArgs.TransformEvent.Rotation)
                {
                    transform.Rotate(new Vector(0, 1, 0), -5.0f);
                }
                else
                {
                    transform.Translate(new Vector(0, -0.1f, 0));
                }
                transform.Transform();
            }
            else if (key.Equals("a"))
            {
                if (focusComp != SpiderHiearchyPackage.body)
                {
                    transform = transform.GetSubComp(focusComp);
                }
                if (activeTransform == TransformEventArgs.TransformEvent.Rotation)
                {
                    transform.Rotate(new Vector(1, 0, 0), 5.0f);
                }
                else
                {
                    transform.Translate(new Vector(0.1f, 0, 0));
                }
                transform.Transform();
            }
            else if (key.Equals("d"))
            {
                if (focusComp != SpiderHiearchyPackage.body)
                {
                    transform = transform.GetSubComp(focusComp);
                }
                if (activeTransform == TransformEventArgs.TransformEvent.Rotation)
                {
                    transform.Rotate(new Vector(1, 0, 0), -5.0f);
                }
                else
                {
                    transform.Translate(new Vector(-0.1f, 0, 0));
                }
                transform.Transform();
            }
        }
Esempio n. 9
0
        /// <summary>
        /// Main Logic for the editor part
        /// </summary>
        /// <param name="gameTime"></param>
        /// <param name="entities"></param>
        /// <param name="data"></param>
        public void Update(GameTime gameTime, List <BasicEntity> entities, List <PointLightSource> pointLights, List <DirectionalLightSource> dirLights, EditorReceivedData data, MeshMaterialLibrary meshMaterialLibrary)
        {
            if (Input.WasKeyPressed(Keys.R))
            {
                _gizmoMode = GizmoModes.Rotation;
            }
            if (Input.WasKeyPressed(Keys.T))
            {
                _gizmoMode = GizmoModes.Translation;
            }

            int hoveredId = data.HoveredId;

            if (_gizmoTransformationMode)
            {
                if (Input.mouseState.LeftButton == ButtonState.Pressed)
                {
                    GizmoControl(_gizmoId, data);
                }
                else
                {
                    _gizmoTransformationMode = false;
                }
            }
            else if (Input.WasLMBPressed())
            {
                //Gizmos
                if (hoveredId >= 1 && hoveredId <= 3)
                {
                    _gizmoId = hoveredId;
                    GizmoControl(_gizmoId, data);
                    return;
                }

                if (hoveredId <= 0)
                {
                    SelectedObject = null;
                    return;
                }

                bool foundnew = false;
                //Get the selected entity!
                for (int index = 0; index < entities.Count; index++)
                {
                    var VARIABLE = entities[index];
                    if (VARIABLE.Id == hoveredId)
                    {
                        SelectedObject = VARIABLE;
                        foundnew       = true;
                        break;
                    }
                }
                if (foundnew == false)
                {
                    for (int index = 0; index < pointLights.Count; index++)
                    {
                        PointLightSource pointLightSource = pointLights[index];
                        if (pointLightSource.Id == hoveredId)
                        {
                            SelectedObject = pointLightSource;
                            break;
                        }
                    }

                    for (int index = 0; index < dirLights.Count; index++)
                    {
                        DirectionalLightSource directionalLightSource = dirLights[index];
                        if (directionalLightSource.Id == hoveredId)
                        {
                            SelectedObject = directionalLightSource;
                            break;
                        }
                    }
                }
            }

            //Controls

            if (Input.WasKeyPressed(Keys.Delete))
            {
                //Find object
                if (SelectedObject is BasicEntity)
                {
                    entities.Remove((BasicEntity)SelectedObject);
                    meshMaterialLibrary.DeleteFromRegistry((BasicEntity)SelectedObject);

                    SelectedObject = null;
                }

                else if (SelectedObject is PointLightSource)
                {
                    pointLights.Remove((PointLightSource)SelectedObject);

                    SelectedObject = null;
                }
                else if (SelectedObject is DirectionalLightSource)
                {
                    dirLights.Remove((DirectionalLightSource)SelectedObject);

                    SelectedObject = null;
                }
            }

            if (Input.WasKeyPressed(Keys.Insert))
            {
                if (SelectedObject is BasicEntity)
                {
                    BasicEntity copy = (BasicEntity)SelectedObject.Clone;
                    copy.RegisterInLibrary(meshMaterialLibrary);

                    entities.Add(copy);
                }
                else if (SelectedObject is PointLightSource)
                {
                    PointLightSource copy = (PointLightSource)SelectedObject.Clone;
                    pointLights.Add(copy);
                }
                else if (SelectedObject is DirectionalLightSource)
                {
                    DirectionalLightSource copy = (DirectionalLightSource)SelectedObject.Clone;
                    dirLights.Add(copy);
                }
            }

            if (SelectedObject != null)
            {
                DebugScreen.AddString(SelectedObject.Position.ToString());
            }
        }
Esempio n. 10
0
        public void Update(GameTime gameTime, bool isActive, TransformableObject selectedObject)
        {
            GameStats.UIIsHovered = false;
            if (!isActive || !GameSettings.e_enableeditor || !GameSettings.ui_enabled) return;

            if (GameStats.e_gizmoMode != _gizmoModePrevious)
            {
                _gizmoModePrevious = GameStats.e_gizmoMode;
                UpdateGizmoSelection(_gizmoModePrevious);
            }
            
            GUIControl.Update(Input.mouseLastState, Input.mouseState);

            if (GUIControl.GetMousePosition().X > _rightSideList.Position.X &&
                GUIControl.GetMousePosition().Y < _rightSideList.Dimensions.Y)
            {
                GameStats.UIIsHovered = true;
            }

             _leftSideList.IsHidden = !GameStats.e_EnableSelection;

            if (selectedObject != null)
            {
                //Check if cached, otherwise apply

                if (activeObjectName != selectedObject.Name || activeObjectPos != selectedObject.Position)
                {
                    _objectDescriptionList.IsHidden = false;
                    _objectDescriptionName.Text.Clear();
                    _objectDescriptionName.Text.Append(selectedObject.Name);
                    _objectDescriptionName.TextAlignment = GUIStyle.TextAlignment.Center;

                    _objectDescriptionPos.Text.Clear();
                    _objectDescriptionPos.Text.AppendVector3(selectedObject.Position);
                    _objectDescriptionPos.TextAlignment = GUIStyle.TextAlignment.Center;

                    activeObjectName = selectedObject.Name;
                    activeObjectPos = selectedObject.Position;
                }

                _objectButton1.IsHidden = true;
                _objectToggle0.IsHidden = true;
                _objectToggle1.IsHidden = true;
                _objectToggle2.IsHidden = true;
                _objectToggle3.IsHidden = true;
                _objectSlider0.IsHidden = true;
                _objectSlider1.IsHidden = true;
                _objectSlider2.IsHidden = true;
                _objectColorPicker1.IsHidden = true;

                if (selectedObject is PointLight)
                {
                    _objectToggle0.IsHidden = false;
                    _objectToggle1.IsHidden = false;
                    _objectToggle2.IsHidden = false;
                    _objectToggle3.IsHidden = false;
                    _objectSlider0.IsHidden = false;
                    _objectSlider1.IsHidden = false;
                    _objectSlider2.IsHidden = false;
                    _objectColorPicker1.IsHidden = false;

                    if (activeObject != selectedObject)
                    {
                        _objectToggle0.SetProperty(selectedObject, "IsEnabled");
                        _objectToggle0.Text = new StringBuilder("IsEnabled");

                        _objectToggle1.SetField(selectedObject, "IsVolumetric");
                        _objectToggle1.Text = new StringBuilder("Volumetric");

                        _objectToggle2.SetField(selectedObject, "CastShadows");
                        _objectToggle2.Text = new StringBuilder("Cast Shadows");

                        _objectToggle3.SetField(selectedObject, "CastSDFShadows");
                        _objectToggle3.Text = new StringBuilder("Cast SDF Shadows");

                        _objectSlider0.MinValue = 1.1f;
                        _objectSlider0.MaxValue = 200;

                        _objectSlider0.SetProperty(selectedObject, "Radius");
                        _objectSlider0.SetText(new StringBuilder("Radius: "));

                        _objectSlider1.MinValue = 0.01f;
                        _objectSlider1.MaxValue = 1000;

                        _objectSlider1.SetField(selectedObject, "Intensity");
                        _objectSlider1.SetText(new StringBuilder("Intensity: "));

                        _objectSlider2.SetValues("Shadow Softness: ", 1, 20, 1);
                        _objectSlider2.SetField(selectedObject, "ShadowMapRadius");

                        _objectColorPicker1.SetProperty(selectedObject, "Color");
                    }
                }

                else if (selectedObject is DirectionalLight)
                {
                    _objectToggle0.IsHidden = false;
                    _objectToggle2.IsHidden = false;
                    _objectSlider1.IsHidden = false;
                    _objectColorPicker1.IsHidden = false;

                    if (activeObject != selectedObject)
                    {
                        _objectToggle0.SetProperty(selectedObject, "IsEnabled");
                        _objectToggle0.Text = new StringBuilder("IsEnabled");

                        _objectToggle2.SetField(selectedObject, "CastShadows");
                        _objectToggle2.Text = new StringBuilder("Cast Shadows");
                        
                        _objectSlider1.MinValue = 0.01f;
                        _objectSlider1.MaxValue = 1000;

                        _objectSlider1.SetField(selectedObject, "Intensity");
                        _objectSlider1.SetText(new StringBuilder("Intensity: "));

                        _objectColorPicker1.SetProperty(selectedObject, "Color");
                    }
                }

                // Environment Sample!
                else if(selectedObject is EnvironmentSample)
                {
                    _objectButton1.IsHidden = false;
                    _objectToggle1.IsHidden = false;
                    _objectToggle2.IsHidden = false;

                    _objectSlider0.IsHidden = false;
                    _objectSlider1.IsHidden = false;

                    if (activeObject != selectedObject)
                    {
                        _objectButton1.ButtonObject = selectedObject;
                        _objectButton1.ButtonMethod = selectedObject.GetType().GetMethod("Update");

                        _objectButton1.Text = new StringBuilder("Update Cubemap");

                        _objectToggle1.ToggleObject = selectedObject;
                        _objectToggle1.ToggleField = selectedObject.GetType().GetField("AutoUpdate");

                        _objectToggle1.Toggle = (selectedObject as EnvironmentSample).AutoUpdate;

                        _objectToggle1.Text = new StringBuilder("Update on move");
                        
                        _objectToggle2.SetField(selectedObject, "UseSDFAO");
                        _objectToggle2.Text = new StringBuilder("Use SDFAO");

                        _objectSlider0.SetField(selectedObject, "SpecularStrength");
                        _objectSlider0.SetValues("Specular Strength: ", 0.01f, 1, 2);

                        _objectSlider1.SetField(selectedObject, "DiffuseStrength");
                        _objectSlider1.SetValues("Diffuse Strength: ", 0, 1, 2);
                    }
                }

                else if (selectedObject is DebugEntity)
                {
                    _objectSlider0.IsHidden = false;
                    _objectSlider1.IsHidden = false;
                    _objectSlider2.IsHidden = false;
                    if (activeObject != selectedObject)
                    {
                        //_objectSlider0.SetProperty(selectedObject, "SizeX");
                        //_objectSlider0.SetValues("Size X: ", 0.1f, 200, 2);
                        //_objectSlider1.SetProperty(selectedObject, "SizeY");
                        //_objectSlider1.SetValues("Size Y: ", 0.1f, 200, 2);
                        //_objectSlider2.SetProperty(selectedObject, "SizeZ");
                        //_objectSlider2.SetValues("Size Z: ", 0.1f, 200, 2);
                    }
                }

                activeObject = selectedObject;
            }
            else
            {
                _objectDescriptionList.IsHidden = true;
            }

            GuiCanvas.Update(gameTime, GUIControl.GetMousePosition(), Vector2.Zero);
        }