Ejemplo n.º 1
0
    void SetUpTubeLightBuffers(int kernel)
    {
        int count = m_TubeLightParamsCB == null ? 0 : m_TubeLightParamsCB.count;

        m_InjectLightingAndDensity.SetFloat("_TubeLightsCount", count);
        if (count == 0)
        {
            return;
        }

        if (m_TubeLightParams == null || m_TubeLightParams.Length != count)
        {
            m_TubeLightParams = new TubeLightParams[count];
        }

        if (m_TubeLightShadowPlaneParams == null || m_TubeLightShadowPlaneParams.Length != count)
        {
            m_TubeLightShadowPlaneParams = new TubeLightShadowPlaneParams[count];
        }

        HashSet <FogLight> fogLights = LightManagerFogLights.Get();

        int j = 0;

        for (var x = fogLights.GetEnumerator(); x.MoveNext();)
        {
            var fl = x.Current;
            if (fl == null || fl.type != FogLight.Type.Tube || !fl.isOn)
            {
                continue;
            }

            TubeLight light      = fl.tubeLight;
            Transform t          = light.transform;
            Vector3   pos        = t.position;
            Vector3   halfLength = 0.5f * t.up * light.m_Length;

            // Tube lights
            m_TubeLightParams[j].start = pos + halfLength;
            m_TubeLightParams[j].end   = pos - halfLength;
            float range = light.m_Range * fl.m_RangeMult;
            m_TubeLightParams[j].range = 1.0f / (range * range);
            //m_TubeLightParams[j].color = new Vector3(light.m_Color.r, light.m_Color.g, light.m_Color.b) * light.m_Intensity * fl.m_IntensityMult;
            m_TubeLightParams[j].radius = light.m_Radius;

            // Tube light shadow planes
            var p = light.GetShadowPlaneParams(ref sppArr);
            m_TubeLightShadowPlaneParams[j].plane0   = p[0].plane;
            m_TubeLightShadowPlaneParams[j].plane1   = p[1].plane;
            m_TubeLightShadowPlaneParams[j].feather0 = p[0].feather;
            m_TubeLightShadowPlaneParams[j].feather1 = p[1].feather;

            j++;
        }

        m_TubeLightParamsCB.SetData(m_TubeLightParams);
        m_InjectLightingAndDensity.SetBuffer(kernel, "_TubeLights", m_TubeLightParamsCB);
        m_TubeLightShadowPlaneParamsCB.SetData(m_TubeLightShadowPlaneParams);
        m_InjectLightingAndDensity.SetBuffer(kernel, "_TubeLightShadowPlanes", m_TubeLightShadowPlaneParamsCB);
    }
Ejemplo n.º 2
0
    bool AddShadowPlane()
    {
        TubeLight tubeLight = (TubeLight)target;

        int i = 0;

        for (; i < TubeLight.maxPlanes; i++)
        {
            if (tubeLight.m_ShadowPlanes[i] != null)
            {
                continue;
            }

            GameObject           go          = new GameObject("Shadow Plane");
            TubeLightShadowPlane shadowPlane = go.AddComponent <TubeLightShadowPlane>();

            go.transform.position       = tubeLight.transform.position + go.transform.forward;
            go.transform.parent         = tubeLight.transform;
            tubeLight.m_ShadowPlanes[i] = shadowPlane;
            EditorUtility.SetDirty(tubeLight);
            break;
        }

        return(i < TubeLight.maxPlanes);
    }
Ejemplo n.º 3
0
    void Init()
    {
        if (m_Initialized)
        {
            return;
        }

        if ((m_Light = GetComponent <Light>()) != null)
        {
            switch (m_Light.type)
            {
            case LightType.Point: m_Type = Type.Point; break;

            case LightType.Directional: m_Type = Type.Directional; break;

            default: m_Type = Type.None; break;
            }
        }
        else if ((m_TubeLight = GetComponent <TubeLight>()) != null)
        {
            m_Type = Type.Tube;
        }
        else if ((m_AreaLight = GetComponent <AreaLight>()) != null)
        {
            m_Type = Type.Area;
        }

        m_Initialized = true;
    }
Ejemplo n.º 4
0
        public void LightOnTest()
        {
            string command = "turn on Light";

            _hometest.SetCommand(command);
            int actual = 1;
            //int result = _hometest.GetStatus(new Fan());
            int result = TubeLight.GetStatus();

            Assert.Equal(actual, result);
        }