130 lines
3.2 KiB
Java
130 lines
3.2 KiB
Java
package speiger.src.coreengine.rendering.gui.components.tree;
|
|
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import speiger.src.coreengine.math.misc.ColorUtils;
|
|
import speiger.src.coreengine.rendering.gui.GuiBase;
|
|
import speiger.src.coreengine.rendering.gui.GuiComponent;
|
|
import speiger.src.coreengine.rendering.gui.components.TextComponent;
|
|
import speiger.src.coreengine.rendering.gui.components.window.debug.PieProfilerWindowComponent;
|
|
import speiger.src.coreengine.rendering.gui.helper.Align;
|
|
import speiger.src.coreengine.rendering.input.Keyboard;
|
|
import speiger.src.coreengine.utils.profiler.IProfiler.IProfilerEntry;
|
|
|
|
public class ProfilerTreeEntry extends BaseTreeEntry
|
|
{
|
|
TextComponent text = new TextComponent().limit(false).align(Align.LEFT_TOP, Align.LEFT_TOP).special(true).setTextScale(0.4F).set(0F, 1F).cast();
|
|
IProfilerEntry entry;
|
|
|
|
public ProfilerTreeEntry(IProfilerEntry entry)
|
|
{
|
|
this.entry = entry;
|
|
}
|
|
|
|
@Override
|
|
public float getWidth()
|
|
{
|
|
return text.getMetadata().getMaxWidth();
|
|
}
|
|
|
|
@Override
|
|
public void init(GuiComponent comp, GuiBase owner)
|
|
{
|
|
super.init(comp, owner);
|
|
text.setOwner(owner);
|
|
}
|
|
|
|
@Override
|
|
public void updateState(GuiComponent comp, float scale)
|
|
{
|
|
text.setScale(scale);
|
|
}
|
|
|
|
@Override
|
|
public void onClosed()
|
|
{
|
|
text.onClosed();
|
|
}
|
|
|
|
@Override
|
|
public void onFixedUpdate()
|
|
{
|
|
if(text.length() > 0 && (Keyboard.isAltDown() || text.getGui().getGlobalClock() % 2 != 0))
|
|
{
|
|
return;
|
|
}
|
|
StringBuilder builder = new StringBuilder();
|
|
builder.append(entry.getName()).append(": ");
|
|
builder.append(getColor(entry.getMinTime())).append(getTime(entry.getMinTime())).append("§<reset>").append(" / ");
|
|
builder.append(getColor(entry.getNanoTime())).append(getTime(entry.getNanoTime())).append("§<reset>").append(" / ");
|
|
builder.append(getColor(entry.getMaxTime())).append(getTime(entry.getMaxTime())).append("§<reset>");
|
|
text.setText(builder.toString());
|
|
}
|
|
|
|
@Override
|
|
public void onRender(GuiComponent comp, boolean enabled, int mouseX, int mouseY, float particalTicks)
|
|
{
|
|
text.setEnabled(enabled).render(mouseX, mouseY, particalTicks);
|
|
}
|
|
|
|
@Override
|
|
public void collectTooltips(GuiComponent comp, int mouseX, int mouseY, float particalTicks, Map<UUID, GuiComponent> collector)
|
|
{
|
|
|
|
}
|
|
|
|
@Override
|
|
public int hashCode()
|
|
{
|
|
return entry.getPathName().hashCode();
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj)
|
|
{
|
|
if(obj instanceof ProfilerTreeEntry)
|
|
{
|
|
return ((ProfilerTreeEntry)obj).entry == entry;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public String getTime(long time)
|
|
{
|
|
if(time >= 2000000L)
|
|
{
|
|
return PieProfilerWindowComponent.PERCENT_FORMAT.format(time / 1000000.0D) + "ms";
|
|
}
|
|
if(time >= 2000L)
|
|
{
|
|
return PieProfilerWindowComponent.PERCENT_FORMAT.format(time / 1000.0D) + "µs";
|
|
}
|
|
return PieProfilerWindowComponent.PERCENT_FORMAT.format(time) + "ns";
|
|
}
|
|
|
|
public String getColor(long time)
|
|
{
|
|
time /= 1000000L;
|
|
if(time < 1)
|
|
{
|
|
return "§<color="+ColorUtils.LIGHT_BLUE+">";
|
|
}
|
|
if(time >= 12)
|
|
{
|
|
return "§<color="+ColorUtils.RED+">";
|
|
}
|
|
if(time >= 5)
|
|
{
|
|
return "§<color="+ColorUtils.YELLOW+">";
|
|
}
|
|
return "§<color="+ColorUtils.GREEN+">";
|
|
}
|
|
|
|
@Override
|
|
public String toString()
|
|
{
|
|
return entry.getPathName();
|
|
}
|
|
}
|