EntityDataSystem class
Пакет: com.hypixel.hytale.component.system.data
Файл: com/hypixel/hytale/component/system/data/EntityDataSystem.java
extends: ArchetypeDataSystem<ECS_TYPE, Q, R>
Поля (16)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private ArchetypeChunk<ECS_TYPE> |
archetypeChunk |
|
private CommandBuffer<ECS_TYPE> |
commandBuffer |
|
private Q |
query |
|
private final List<R> |
results |
|
|
return |
|
private Store<ECS_TYPE> |
store |
|
private EntityDataSystem<ECS_TYPE, Q, R> |
system |
|
int |
var11 |
|
int |
var3 |
|
ParallelRangeTask |
var5 |
|
int |
var6 |
|
int |
var6 |
|
ParallelTask |
var7 |
|
ParallelRangeTask |
var8 |
|
EntityDataSystem.SystemTaskData |
var8 |
|
int |
var9 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public |
SystemTaskDatapublic SystemTaskData() |
|
public void |
acceptpublic void accept(int var1) |
|
public void |
clearpublic void clear() |
static |
<ECS_TYPE, Q, R> void |
doFetch<ECS_TYPE, Q, R> void doFetch(@Nonnull EntityDataSystem<ECS_TYPE, Q, R> var0,
@Nonnull ArchetypeChunk<ECS_TYPE> var1,
@Nonnull Store<ECS_TYPE> var2,
@Nonnull CommandBuffer<ECS_TYPE> var3,
Q var4,
List<R> var5) |
abstract |
|
doFetch doFetch(this, var1, var2, var3, var4, var5) |
abstract abstract |
void |
fetchvoid fetch(int var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5, List<R> var6) |
|
|
for for(int var4 = 0; var4 < var3; var4++) |
abstract |
|
for for(int var10 = var8.size() |
abstract |
|
for for(int var12 = var1.size() |
abstract |
|
for for(int var7 = var5.size() |
|
|
if if(var6 == 0) |
|
|
if if(var3 > 0) |
|
public void |
initpublic void init(EntityDataSystem<ECS_TYPE, Q, R> var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5) |
|
public static <ECS_TYPE, Q, R> void |
invokeParallelTaskpublic static <ECS_TYPE, Q, R> void invokeParallelTask(@Nonnull ParallelTask<EntityDataSystem.SystemTaskData<ECS_TYPE, Q, R>> var0, @Nonnull CommandBuffer<ECS_TYPE> var1, @Nonnull List<R> var2) |
public |
boolean |
isParallelboolean isParallel() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.component.system.data;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.task.ParallelRangeTask;
class="kw">import com.hypixel.hytale.component.task.ParallelTask;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import java.util.function.IntConsumer;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class="kw">abstract class EntityDataSystem<ECS_TYPE, Q, R> class="kw">extends ArchetypeDataSystem<ECS_TYPE, Q, R> {
class="kw">public EntityDataSystem() {
}
class="kw">public boolean isParallel() {
class="kw">return false;
}
@Override
class="kw">public void fetch(@Nonnull ArchetypeChunk<ECS_TYPE> var1, @Nonnull Store<ECS_TYPE> var2, @Nonnull CommandBuffer<ECS_TYPE> var3, Q var4, List<R> var5) {
doFetch(this, var1, var2, var3, var4, var5);
}
class="kw">public class="kw">abstract void fetch(int var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5, List<R> var6);
class="kw">public class="kw">static <ECS_TYPE, Q, R> void doFetch(
@Nonnull EntityDataSystem<ECS_TYPE, Q, R> var0,
@Nonnull ArchetypeChunk<ECS_TYPE> var1,
@Nonnull Store<ECS_TYPE> var2,
@Nonnull CommandBuffer<ECS_TYPE> var3,
Q var4,
List<R> var5
) {
if (var0.isParallel()) {
int var6 = var1.size();
if (var6 == 0) {
class="kw">return;
}
ParallelTask var7 = var2.getFetchTask();
ParallelRangeTask var8 = var7.appendTask();
var8.init(0, var6);
int var9 = 0;
for (int var10 = var8.size(); var9 < var10; var9++) {
((EntityDataSystem.SystemTaskData<ECS_TYPE, Q, ?>)var8.get(var9)).init(var0, var1, var2, var3.fork(), var4);
}
} else {
int var11 = 0;
for (int var12 = var1.size(); var11 < var12; var11++) {
var0.fetch(var11, var1, var2, var3, var4, var5);
}
}
}
class="kw">public class="kw">static class SystemTaskData<ECS_TYPE, Q, R> class="kw">implements IntConsumer {
class="kw">private class="kw">final List<R> results = new ObjectArrayList();
@Nullable
class="kw">private EntityDataSystem<ECS_TYPE, Q, R> system;
@Nullable
class="kw">private ArchetypeChunk<ECS_TYPE> archetypeChunk;
@Nullable
class="kw">private Store<ECS_TYPE> store;
@Nullable
class="kw">private CommandBuffer<ECS_TYPE> commandBuffer;
@Nullable
class="kw">private Q query;
class="kw">public SystemTaskData() {
}
class="kw">public void init(EntityDataSystem<ECS_TYPE, Q, R> var1, ArchetypeChunk<ECS_TYPE> var2, Store<ECS_TYPE> var3, CommandBuffer<ECS_TYPE> var4, Q var5) {
this.system = var1;
this.archetypeChunk = var2;
this.store = var3;
this.commandBuffer = var4;
this.query = var5;
}
@Override
class="kw">public void accept(int var1) {
assert this.commandBuffer.setThread();
this.system.fetch(var1, this.archetypeChunk, this.store, this.commandBuffer, this.query, this.results);
}
class="kw">public void clear() {
this.system = null;
this.archetypeChunk = null;
this.store = null;
this.commandBuffer = null;
this.query = null;
this.results.clear();
}
class="kw">public class="kw">static <ECS_TYPE, Q, R> void invokeParallelTask(
@Nonnull ParallelTask<EntityDataSystem.SystemTaskData<ECS_TYPE, Q, R>> var0, @Nonnull CommandBuffer<ECS_TYPE> var1, @Nonnull List<R> var2
) {
int var3 = var0.size();
if (var3 > 0) {
var0.doInvoke();
for (int var4 = 0; var4 < var3; var4++) {
ParallelRangeTask var5 = var0.get(var4);
int var6 = 0;
for (int var7 = var5.size(); var6 < var7; var6++) {
EntityDataSystem.SystemTaskData var8 = var5.get(var6);
var2.addAll(var8.results);
var8.commandBuffer.mergeParallel(var1);
var8.clear();
}
}
}
}
}
}