Exemplo n.º 1
0
 public void Init(TimeOfDayStateTypes state)
 {
     streetLights = GetComponentsInChildren <Light>();
     lightMesh    = GetComponent <Renderer>();
     SimulatorManager.Instance.EnvironmentEffectsManager.TimeOfDayChanged += OnTimeOfDayChange;
     OnTimeOfDayChange(state);
 }
Exemplo n.º 2
0
    private void OnTimeOfDayChange(TimeOfDayStateTypes state)
    {
        switch (state)
        {
        case TimeOfDayStateTypes.Day:
            ToggleLight(false);
            SetMeshEmissiveColor(Color.black);
            break;

        case TimeOfDayStateTypes.Night:
            ToggleLight(true);
            SetMeshEmissiveColor(emitColor);
            break;

        case TimeOfDayStateTypes.Sunrise:
            ToggleLight(true);
            SetMeshEmissiveColor(emitColor);
            break;

        case TimeOfDayStateTypes.Sunset:
            ToggleLight(true);
            SetMeshEmissiveColor(emitColor);
            break;
        }
    }
Exemplo n.º 3
0
 private void SetTimeOfDayState(TimeOfDayStateTypes state)
 {
     if (currentTimeOfDayState != state)
     {
         currentTimeOfDayState = state;
         TimeOfDayChanged?.Invoke(state);
     }
 }
Exemplo n.º 4
0
    public void Init(TimeOfDayStateTypes state)
    {
        allRenderers = transform.GetComponentsInChildren <Renderer>();
        var materials       = new List <Material>();
        var sharedMaterials = new List <Material>();
        var mapping         = new Dictionary <Material, Material>();

        Array.ForEach(allRenderers, renderer =>
        {
            if (Application.isEditor)
            {
                renderer.GetSharedMaterials(sharedMaterials);
                renderer.GetMaterials(materials);

                Debug.Assert(sharedMaterials.Count == materials.Count);

                for (int i = 0; i < materials.Count; i++)
                {
                    if (sharedMaterials[i] == null)
                    {
                        Debug.LogWarning($"{renderer.gameObject.name} has null material", renderer.gameObject);
                    }
                    else
                    {
                        if (mapping.TryGetValue(sharedMaterials[i], out var mat))
                        {
                            DestroyImmediate(materials[i]);
                            materials[i] = mat;
                        }
                        else
                        {
                            mapping.Add(sharedMaterials[i], materials[i]);
                        }
                    }
                }

                renderer.materials = materials.ToArray();
            }
            else
            {
                renderer.GetSharedMaterials(materials);
                materials.ForEach(m =>
                {
                    if (!mapping.ContainsKey(m))
                    {
                        mapping.Add(m, m);
                    }
                });
            }
        });
        allBuildingMaterials.AddRange(mapping.Values);
        if (SimulatorManager.InstanceAvailable)
        {
            SimulatorManager.Instance.EnvironmentEffectsManager.TimeOfDayChanged += OnTimeOfDayChange;
        }

        OnTimeOfDayChange(state);
    }
Exemplo n.º 5
0
    public void Init(TimeOfDayStateTypes state)
    {
        var materials = new List <Material>();

        Array.ForEach(transform.GetComponentsInChildren <Renderer>(), renderer =>
        {
            renderer.GetSharedMaterials(materials);
            foreach (var material in materials)
            {
                if (!allBuildingMaterials.Contains(material))
                {
                    allBuildingMaterials.Add(material);
                }
            }
        });
        SimulatorManager.Instance.EnvironmentEffectsManager.TimeOfDayChanged += OnTimeOfDayChange;
        OnTimeOfDayChange(state);
    }
Exemplo n.º 6
0
    private void OnTimeOfDayChange(TimeOfDayStateTypes state)
    {
        switch (state)
        {
        case TimeOfDayStateTypes.Day:
            UpdateBuildingMats(Color.black);
            break;

        case TimeOfDayStateTypes.Night:
            UpdateBuildingMats(emitColor);
            break;

        case TimeOfDayStateTypes.Sunrise:
            UpdateBuildingMats(emitColor);
            break;

        case TimeOfDayStateTypes.Sunset:
            UpdateBuildingMats(emitColor);
            break;
        }
    }
Exemplo n.º 7
0
    private void OnTimeOfDayChange(TimeOfDayStateTypes state)
    {
        switch (state)
        {
        case TimeOfDayStateTypes.Day:
            currentNPCLightState = NPCLightStateTypes.Off;
            break;

        case TimeOfDayStateTypes.Night:
            currentNPCLightState = NPCLightStateTypes.Low;
            break;

        case TimeOfDayStateTypes.Sunrise:
            currentNPCLightState = NPCLightStateTypes.Low;
            break;

        case TimeOfDayStateTypes.Sunset:
            currentNPCLightState = NPCLightStateTypes.Low;
            break;
        }
        SetLights((int)currentNPCLightState);
    }