public virtual void AssignMatrixParameters()
        {
            var    transform     = ParentObject.GetComponent <TransformComponent>();
            Matrix worldViewProj = Matrix.CreateScale(ParentObject.Transform.Scale) * transform.AbsoluteTransform;

            worldViewProj *= SystemCore.GetCamera(Camera).View;
            worldViewProj *= SystemCore.GetCamera(Camera).Projection;

            if (ParameterExists("World"))
            {
                effect.Parameters["World"].SetValue(Matrix.CreateScale(ParentObject.Transform.Scale) * transform.AbsoluteTransform);
            }

            if (ParameterExists("View"))
            {
                effect.Parameters["View"].SetValue(SystemCore.GetCamera(Camera).View);
            }

            if (ParameterExists("Projection"))
            {
                effect.Parameters["Projection"].SetValue(SystemCore.GetCamera(Camera).Projection);
            }

            if (ParameterExists("WorldViewProjection"))
            {
                effect.Parameters["WorldViewProjection"].SetValue(worldViewProj);
            }

            if (ParameterExists("CameraPosition"))
            {
                effect.Parameters["CameraPosition"].SetValue(SystemCore.GetCamera(Camera).Position);
            }

            if (ParameterExists("ViewInvert"))
            {
                effect.Parameters["ViewInvert"].SetValue(Matrix.Invert(SystemCore.GetCamera(Camera).View));
            }
        }
        public virtual void AssignMatrixParameters()
        {
            var    transform     = ParentObject.GetComponent <TransformComponent>();
            Matrix worldViewProj = Matrix.CreateScale(ParentObject.Transform.Scale) * transform.AbsoluteTransform;

            worldViewProj *= SystemCore.GetCamera(Camera).View;
            worldViewProj *= SystemCore.GetCamera(Camera).Projection;

            if (ParameterExists("World"))
            {
                effect.Parameters["World"].SetValue(Matrix.CreateScale(ParentObject.Transform.Scale) * transform.AbsoluteTransform);
            }

            if (ParameterExists("View"))
            {
                effect.Parameters["View"].SetValue(SystemCore.GetCamera(Camera).View);
            }

            if (ParameterExists("Projection"))
            {
                effect.Parameters["Projection"].SetValue(SystemCore.GetCamera(Camera).Projection);
            }

            if (ParameterExists("WorldViewProjection"))
            {
                effect.Parameters["WorldViewProjection"].SetValue(worldViewProj);
            }

            if (ParameterExists("CameraPosition"))
            {
                effect.Parameters["CameraPosition"].SetValue(SystemCore.GetCamera(Camera).Position);
            }

            if (ParameterExists("ViewInvert"))
            {
                effect.Parameters["ViewInvert"].SetValue(Matrix.Invert(SystemCore.GetCamera(Camera).View));
            }

            if (ParameterExists("WorldInverseTranspose"))
            {
                effect.Parameters["WorldInverseTranspose"].SetValue(Matrix.Transpose(Matrix.Invert(transform.AbsoluteTransform)));
            }

            if (ParameterExists("ViewVector"))
            {
                effect.Parameters["ViewVector"].SetValue((SystemCore.GetCamera(Camera).View.Forward));
            }


            if (ParameterExists("LightViewProj"))
            {
                effect.Parameters["LightViewProj"].SetValue(SystemCore.ShadowMapRenderer.LightViewProj);
            }

            if (ParameterExists("CameraDirection"))
            {
                effect.Parameters["CameraDirection"].SetValue(SystemCore.ActiveCamera.View.Forward);
            }

            if (ParameterExists("CameraPosition"))
            {
                effect.Parameters["CameraPosition"].SetValue(SystemCore.ActiveCamera.Position);
            }


            if (ParameterExists("FogEnabled"))
            {
                effect.Parameters["FogEnabled"].SetValue(SystemCore.ActiveScene.FogEnabled);
            }

            if (ParameterExists("c"))
            {
                effect.Parameters["c"].SetValue(SystemCore.ActiveScene.FogC);
            }

            if (ParameterExists("b"))
            {
                effect.Parameters["b"].SetValue(SystemCore.ActiveScene.FogB);
            }

            if (ParameterExists("fogColor"))
            {
                effect.Parameters["fogColor"].SetValue(SystemCore.ActiveScene.FogColor.ToVector3());
            }
        }