示例#1
0
    /// <summary>
    /// Set variables as classes
    /// </summary>
    private static void SetVariables()
    {
        var height = new RangeVar("UR_SphereHeight", "float", SphereHeight.ToString(".00"), "0.5", "2.5");

        Demo.SetUpdatableVariable(height);
        var levitate = new BooleanVar("UB_CanLevitate", CanLevitate.ToString());

        Demo.SetUpdatableVariable(levitate);
        var threshold = new ReadableVar("R_Threshold", "value");

        Demo.SetReadableVariable(threshold);

        DataManager.AllVariablesSet = true;
    }
示例#2
0
        public QsiQualifiedIdentifier VisitRangeVar(RangeVar var)
        {
            string[] names =
            {
                var.catalogname,
                var.schemaname,
                var.relname
            };

            int start = Array.FindIndex(names, n => !string.IsNullOrEmpty(n));
            int end   = Array.FindLastIndex(names, n => !string.IsNullOrEmpty(n));

            if (start == -1 || end == -1)
            {
                throw new QsiException(QsiError.SyntaxError, $"Invalid identifier '{string.Join(".", names.Select(n => n ?? "null"))}'");
            }

            return(new QsiQualifiedIdentifier(names[start..(end + 1)].Select(n => new QsiIdentifier(n, false))));
        public void Update()
        {
            VRageRender.MyRenderProxy.GetRenderProfiler().StartProfilingBlock("ParticleLight-Update");

            bool created = false;

            if (Enabled && m_renderObjectID == MyRenderProxy.RENDER_ID_UNASSIGNED)
            {
                InitLight();
                created = true;
            }
            if (!Enabled && m_renderObjectID != MyRenderProxy.RENDER_ID_UNASSIGNED)
            {
                CloseLight();
                VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock();
                return;
            }
            if (!Enabled)
            {
                VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock();
                return;
            }

            Vector3 localPosition;

            Position.GetInterpolatedValue(m_effect.GetElapsedTime(), out localPosition);
            Vector3 localPositionVar;

            PositionVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out localPositionVar);
            Vector3 localPositionVarRnd = new Vector3(
                MyUtils.GetRandomFloat(-localPositionVar.X, localPositionVar.X),
                MyUtils.GetRandomFloat(-localPositionVar.Y, localPositionVar.Y),
                MyUtils.GetRandomFloat(-localPositionVar.Z, localPositionVar.Z));

            localPosition += localPositionVarRnd;


            Vector4 color;

            Color.GetInterpolatedValue(m_effect.GetElapsedTime(), out color);
            float colorVar;

            ColorVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out colorVar);
            float colorVarRnd = MyUtils.GetRandomFloat(1 - colorVar, 1 + colorVar);

            color.X = MathHelper.Clamp(color.X * colorVarRnd, 0, 1);
            color.Y = MathHelper.Clamp(color.Y * colorVarRnd, 0, 1);
            color.Z = MathHelper.Clamp(color.Z * colorVarRnd, 0, 1);

            float range;

            Range.GetInterpolatedValue(m_effect.GetElapsedTime(), out range);
            float rangeVar;

            RangeVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out rangeVar);
            float rangeVarRnd = MyUtils.GetRandomFloat(-rangeVar, rangeVar);

            range += rangeVarRnd;

            float intensity;

            Intensity.GetInterpolatedValue(m_effect.GetElapsedTime(), out intensity);
            float intensityVar;

            IntensityVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out intensityVar);
            float intensityRnd = MyUtils.GetRandomFloat(-intensityVar, intensityVar);

            intensity += intensityRnd;

            Vector3D position = Vector3D.Transform(localPosition, m_effect.WorldMatrix);

            if (m_position != position || created)
            {
                m_position = position;

                MatrixD lightMatrix = MatrixD.CreateTranslation(m_position);
                VRageRender.MyRenderProxy.UpdateRenderObject(
                    m_renderObjectID,
                    ref lightMatrix,
                    true);
            }

            if ((m_color != color) ||
                (m_range != range) ||
                (m_intensity != intensity) ||
                created)
            {
                m_color     = color;
                m_intensity = intensity;
                m_range     = range;

                VRageRender.MyRenderProxy.UpdateRenderLight(
                    m_renderObjectID,
                    VRageRender.LightTypeEnum.PointLight,
                    m_position,
                    -1,
                    0,
                    m_color,
                    m_color,
                    1,
                    m_range,
                    m_intensity,
                    true,
                    true,
                    0,
                    false,
                    Vector3.Zero,
                    Vector3.Zero,
                    0,
                    Vector4.Zero,
                    0,
                    0,
                    null,
                    0,
                    false,
                    false,
                    VRageRender.Lights.MyGlareTypeEnum.Normal,
                    0,
                    0,
                    0,
                    null,
                    0);
            }



            VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock();
        }
示例#4
0
        public void Update()
        {
            VRageRender.MyRenderProxy.GetRenderProfiler().StartProfilingBlock("ParticleLight-Update");

            bool created = false;

            if (Enabled)
            {
                if (m_renderObjectID == MyRenderProxy.RENDER_ID_UNASSIGNED)
                {
                    InitLight();
                    created = true;
                }
            }
            else
            {
                if (m_renderObjectID != MyRenderProxy.RENDER_ID_UNASSIGNED)
                {
                    CloseLight();
                }
                VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock();
                return;
            }

            Vector3 localPosition;

            Position.GetInterpolatedValue(m_effect.GetElapsedTime(), out localPosition);
            Vector3 localPositionVar;

            PositionVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out localPositionVar);
            Vector3 localPositionVarRnd = new Vector3(
                MyUtils.GetRandomFloat(-localPositionVar.X, localPositionVar.X),
                MyUtils.GetRandomFloat(-localPositionVar.Y, localPositionVar.Y),
                MyUtils.GetRandomFloat(-localPositionVar.Z, localPositionVar.Z));

            localPosition += localPositionVarRnd;


            Vector4 color;

            Color.GetInterpolatedValue(m_effect.GetElapsedTime(), out color);
            float colorVar;

            ColorVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out colorVar);
            float colorVarRnd = MyUtils.GetRandomFloat(1 - colorVar, 1 + colorVar);

            color.X = MathHelper.Clamp(color.X * colorVarRnd, 0, 1);
            color.Y = MathHelper.Clamp(color.Y * colorVarRnd, 0, 1);
            color.Z = MathHelper.Clamp(color.Z * colorVarRnd, 0, 1);

            float range;

            Range.GetInterpolatedValue(m_effect.GetElapsedTime(), out range);
            float rangeVar;

            RangeVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out rangeVar);
            float rangeVarRnd = MyUtils.GetRandomFloat(-rangeVar, rangeVar);

            range += rangeVarRnd;

            float intensity;

            Intensity.GetInterpolatedValue(m_effect.GetElapsedTime(), out intensity);
            float intensityVar;

            IntensityVar.GetInterpolatedValue(m_effect.GetElapsedTime(), out intensityVar);
            float intensityRnd = MyUtils.GetRandomFloat(-intensityVar, intensityVar);

            intensity += intensityRnd;
            if (m_effect.IsStopped)
            {
                intensity = 0;
            }

            Vector3D position = Vector3D.Transform(localPosition * m_effect.GetEmitterScale(), m_effect.WorldMatrix);

            if ((m_position != position) ||
                (m_color != color) ||
                (m_range != range) ||
                (m_intensity != intensity) ||
                created)
            {
                m_color     = color;
                m_intensity = intensity;
                m_range     = range;
                m_position  = position;

                MyLightLayout light = new MyLightLayout()
                {
                    Range         = m_range * m_effect.GetEmitterScale(),
                    Color         = new Vector3(m_color),
                    Falloff       = 1,
                    GlossFactor   = 1,
                    DiffuseFactor = 1,
                };

                UpdateRenderLightData renderLightData = new UpdateRenderLightData()
                {
                    ID                  = m_renderObjectID,
                    Position            = m_position,
                    Type                = LightTypeEnum.PointLight,
                    ParentID            = -1,
                    UseInForwardRender  = true,
                    SpecularColor       = new Vector3(m_color),
                    PointLightOn        = true,
                    PointLightIntensity = m_intensity,
                    PointLight          = light,
                };
                MyRenderProxy.UpdateRenderLight(ref renderLightData);
            }

            VRageRender.MyRenderProxy.GetRenderProfiler().EndProfilingBlock();
        }
示例#5
0
 public FromClause(string sql, RawToken keyword, RangeVar rangeVar)
     : base(sql, CreateChildren(rangeVar))
 {
     this.Keyword  = keyword.WithParent(this);
     this.RangeVar = rangeVar;
 }