-
Notifications
You must be signed in to change notification settings - Fork 54
Rework na iluminação e ciclo de dia e noite. #44
Conversation
… funcionar em planetas.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Além das coisas que eu tava te falando por dm, seguem aí algumas alterações pra fazer. Vou tentar marcar aqui o que realmente precisa ser feito.
Abraço
var regex = new Regex(@"^#(\d+.?\d*)-(\d+.?\d*)-(\d+.?\d*)$"); | ||
var rgb_energy = _cfg.GetCVar(CCVars.NightLightRGBIntensity); | ||
var result = regex.Match(rgb_energy); | ||
Match match; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
As alterações aqui em UpdateLight são meio compridas e quando mudarem algo aqui upstream vai ser bem chato fazer merge. Seria bom isolar isso em uma fução que retorna a cor. De preferência no seu system, mas coisas em funções novas ainda conflitam mas pelo menos é mais fácil fazer o merge.
Se vc tiver problemas em pegar o singleton (com a tal da "injeção de dependência") me fala, eu nunca fiz isso em sistema novo mas parece não ter mistério.
@@ -480,30 +493,45 @@ private void OnEmpPulse(EntityUid uid, PoweredLightComponent component, ref EmpP | |||
args.Affected = true; | |||
} | |||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Esses métodos que não tem no upstream, precisam mesmo estar nesse sistema?
Pelo que eu tô vendo as outras alterações realmente precisam estar aqui, como por exemplo setar a cor certa quando a luz é ligada. Mas tudo isso precisa morar nesse arquivo? Seria legal passar o que desse pro sistema novo.
private double _greenLevel; | ||
private double _blueLevel; | ||
private double _lightClip; | ||
private readonly Regex _regex = new Regex(@"^#([A-Fa-f0-9]){6}$"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eu não faço idéia como é a inicialização de objetos declaradas fora do escopo de uma classe ou função no C#, o que em C++ é chamado de inicialização estática. Por exemplo, isso aqui claramente nunca vai ser apagado, o que pra mim não é um problema pra um regex, mas só pra ilustrar. Não deve dar nada, eu só não sei como isso funciona direito, mas isso foi intencional né?
ajusta a DayCyclemSystem para funcionar sozinha, remove CVars e ajusta o componente. Melhorias gerais.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Muito bom. Acabou q nesse PR vc nao só adicionou as coisas novas mas também melhorou coisas do PR anterior.
Vou fazer merge aqui.
About the PR
Adiciona interpolação de luz e cor (são separados, podem ser ativados individualmente.) e mais liberdade para alterar a iluminação do jogo via comandos. Remove e altera a maioria das CVars do PR antigo para que sejam mais "direto ao ponto".
Why / Balance
Em favor da estética, para as luzes não mudarem abruptamente, e dar mais liberdade pros admins para controlar a iluminação do jogo.
Technical details
A iluminação e cor é calculada em "tempo real" atráves de quatro funções trigonometricas. A frequência em que as lâmpadas são atualizadas depende do incremento do nível de luminosidade, desta forma, é possível ajustar o quão "suave" é a transição das luzes. Os impactos no desempenho se demonstraram mínimos, senão, inexistentes, mas reforço que os testes foram todos em máquina local, na plataforma Windows.
Update: Agora é tudo feito via componente, que passa os valores pras classes de entidade de sistema realizarem os cálculos envolvendo a luz.
Changelog
-add: Interpolação de luz e cor
-add: Deve funcionar em planetas agora
-edit: Transfere a maior parte das CVars antigas para um componente ajustável