mirror of
https://github.com/MovingBlocks/Terasology
synced 2026-05-24 09:28:22 +00:00
Merge remote-tracking branch 'origin/develop' into refactor/remove-usage-ThreadManagerSubsystem
This commit is contained in:
commit
e8b880872e
239 changed files with 1401 additions and 671 deletions
30
Jenkinsfile
vendored
30
Jenkinsfile
vendored
|
|
@ -115,20 +115,24 @@ pipeline {
|
|||
stage('Analytics') {
|
||||
steps {
|
||||
sh './gradlew --console=plain check -x test'
|
||||
// the default resolution when omitting `defaultBranch` is to `master`
|
||||
// this is wrong in our case, so explicitly set `develop` as default
|
||||
// TODO: does this also work for PRs with different base branch?
|
||||
discoverGitReferenceBuild(defaultBranch: 'develop')
|
||||
recordIssues skipBlames: true,
|
||||
tools: [
|
||||
checkStyle(pattern: '**/build/reports/checkstyle/*.xml'),
|
||||
spotBugs(pattern: '**/build/reports/spotbugs/main/*.xml', useRankAsPriority: true),
|
||||
pmdParser(pattern: '**/build/reports/pmd/*.xml')
|
||||
]
|
||||
}
|
||||
post {
|
||||
always {
|
||||
// the default resolution when omitting `defaultBranch` is to `master`
|
||||
// this is wrong in our case, so explicitly set `develop` as default
|
||||
// TODO: does this also work for PRs with different base branch?
|
||||
discoverGitReferenceBuild(defaultBranch: 'develop')
|
||||
recordIssues skipBlames: true, enabledForFailure: true,
|
||||
tools: [
|
||||
checkStyle(pattern: '**/build/reports/checkstyle/*.xml'),
|
||||
spotBugs(pattern: '**/build/reports/spotbugs/main/*.xml', useRankAsPriority: true),
|
||||
pmdParser(pattern: '**/build/reports/pmd/*.xml')
|
||||
]
|
||||
|
||||
recordIssues skipBlames: true,
|
||||
tool: taskScanner(includePattern: '**/*.java,**/*.groovy,**/*.gradle', \
|
||||
lowTags: 'WIBNIF', normalTags: 'TODO', highTags: 'ASAP')
|
||||
recordIssues skipBlames: true, enabledForFailure: true,
|
||||
tool: taskScanner(includePattern: '**/*.java,**/*.groovy,**/*.gradle', \
|
||||
lowTags: 'WIBNIF', normalTags: 'TODO', highTags: 'ASAP')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ jacocoTestReport {
|
|||
// Solo module builds in Jenkins get a copy of the config dir from the engine harness so it still lives at root/config
|
||||
// TODO: Maybe update other projects like modules to pull the zipped dependency so fewer quirks are needed in Jenkins
|
||||
checkstyle {
|
||||
ignoreFailures = true
|
||||
ignoreFailures = false
|
||||
configFile = new File(rootDir, 'config/metrics/checkstyle/checkstyle.xml')
|
||||
configProperties.samedir = checkstyle.configFile.parentFile
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ class Environment {
|
|||
*
|
||||
* @param moduleNames a list of module names
|
||||
*/
|
||||
public Environment(Name... moduleNames) {
|
||||
Environment(Name... moduleNames) {
|
||||
try {
|
||||
reset(Sets.newHashSet(moduleNames));
|
||||
} catch (Exception e) {
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class EntityRefComponent implements Component {
|
||||
public class EntityRefComponent implements Component<EntityRefComponent> {
|
||||
|
||||
public EntityRef entityRef = EntityRef.NULL;
|
||||
|
||||
|
|
@ -16,4 +16,9 @@ public EntityRefComponent() {
|
|||
public EntityRefComponent(EntityRef ref) {
|
||||
this.entityRef = ref;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(EntityRefComponent other) {
|
||||
this.entityRef = other.entityRef;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.world.block.ForceBlockActive;
|
||||
import org.terasology.gestalt.entitysystem.component.EmptyComponent;
|
||||
|
||||
@ForceBlockActive
|
||||
public class ForceBlockActiveComponent implements Component {
|
||||
public class ForceBlockActiveComponent extends EmptyComponent<ForceBlockActiveComponent> {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.joml.Vector3f;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class GetterSetterComponent implements Component {
|
||||
public class GetterSetterComponent implements Component<GetterSetterComponent> {
|
||||
public transient boolean getterUsed;
|
||||
public transient boolean setterUsed;
|
||||
|
||||
|
|
@ -20,4 +20,10 @@ public void setValue(Vector3f value) {
|
|||
this.value = value;
|
||||
setterUsed = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(GetterSetterComponent other) {
|
||||
this.getterUsed = other.getterUsed;
|
||||
this.setterUsed = other.setterUsed;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public final class IntegerComponent implements Component {
|
||||
public final class IntegerComponent implements Component<IntegerComponent> {
|
||||
public int value;
|
||||
|
||||
public IntegerComponent() {
|
||||
|
|
@ -36,4 +36,9 @@ public boolean equals(Object o) {
|
|||
public int hashCode() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(IntegerComponent other) {
|
||||
this.value = other.value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,18 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.engine.math.Side;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ListOfEnumsComponent implements Component {
|
||||
public class ListOfEnumsComponent implements Component<ListOfEnumsComponent> {
|
||||
public List<Side> elements = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void copyFrom(ListOfEnumsComponent other) {
|
||||
this.elements = Lists.newArrayList(other.elements);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,19 +3,38 @@
|
|||
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.reflection.MappedContainer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class ListOfObjectComponent implements Component {
|
||||
public class ListOfObjectComponent implements Component<ListOfObjectComponent> {
|
||||
public String shortName;
|
||||
public List<SubElement> elements = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void copyFrom(ListOfObjectComponent other) {
|
||||
this.shortName = other.shortName;
|
||||
this.elements = other.elements.stream()
|
||||
.map(SubElement::new)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@MappedContainer
|
||||
public static class SubElement {
|
||||
public String id;
|
||||
public String type;
|
||||
|
||||
public SubElement() {
|
||||
|
||||
}
|
||||
|
||||
public SubElement(SubElement other) {
|
||||
this();
|
||||
this.id = other.id;
|
||||
this.type = other.type;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,14 +2,24 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.reflection.MappedContainer;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class MappedContainerComponent implements Component {
|
||||
public class MappedContainerComponent implements Component<MappedContainerComponent> {
|
||||
public Set<Cont> containers;
|
||||
|
||||
@Override
|
||||
public void copyFrom(MappedContainerComponent other) {
|
||||
this.containers = other.containers.stream().map((cont)-> {
|
||||
Cont newCont = new Cont();
|
||||
newCont.value = cont.value;
|
||||
return newCont;
|
||||
}).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@MappedContainer
|
||||
public static class Cont {
|
||||
public String value;
|
||||
|
|
|
|||
|
|
@ -3,14 +3,20 @@
|
|||
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.reflection.MappedContainer;
|
||||
|
||||
public class MappedTypeComponent implements Component {
|
||||
public class MappedTypeComponent implements Component<MappedTypeComponent> {
|
||||
|
||||
public InnerType val = new InnerType();
|
||||
public Number number = 2;
|
||||
|
||||
@Override
|
||||
public void copyFrom(MappedTypeComponent other) {
|
||||
this.val = other.val;
|
||||
this.number = other.number;
|
||||
}
|
||||
|
||||
@MappedContainer
|
||||
public static class InnerType {
|
||||
public static final int STATIC_VALUE = 2;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,16 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import com.google.common.collect.Maps;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
public final class OrderedMapTestComponent implements Component {
|
||||
public final class OrderedMapTestComponent implements Component<OrderedMapTestComponent> {
|
||||
public Map<String, Long> orderedMap;
|
||||
|
||||
@Override
|
||||
public void copyFrom(OrderedMapTestComponent other) {
|
||||
this.orderedMap = Maps.newHashMap(other.orderedMap);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,16 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.Owns;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class OwnerComponent implements Component {
|
||||
public class OwnerComponent implements Component<OwnerComponent> {
|
||||
@Owns
|
||||
public EntityRef child = EntityRef.NULL;
|
||||
|
||||
@Override
|
||||
public void copyFrom(OwnerComponent other) {
|
||||
this.child = other.child;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.world.block.ForceBlockActive;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
@ForceBlockActive(retainUnalteredOnBlockChange = true)
|
||||
public class RetainedOnBlockChangeComponent implements Component {
|
||||
public class RetainedOnBlockChangeComponent implements Component<RetainedOnBlockChangeComponent> {
|
||||
public int value;
|
||||
|
||||
public RetainedOnBlockChangeComponent() {
|
||||
|
|
@ -15,4 +15,9 @@ public RetainedOnBlockChangeComponent() {
|
|||
public RetainedOnBlockChangeComponent(int value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(RetainedOnBlockChangeComponent other) {
|
||||
this.value = other.value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.base.Objects;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
|
||||
public final class StringComponent implements Component {
|
||||
public final class StringComponent implements Component<StringComponent>{
|
||||
public static String staticValue = "Test";
|
||||
public String value;
|
||||
|
||||
|
|
@ -41,4 +41,9 @@ public String toString() {
|
|||
.addValue(value)
|
||||
.toString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(StringComponent other) {
|
||||
this.value = other.value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,15 +3,22 @@
|
|||
|
||||
package org.terasology.unittest.stubs;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.systems.internal.DoNotAutoRegister;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
@DoNotAutoRegister
|
||||
public class UnsupportedTypeComponent implements Component {
|
||||
public class UnsupportedTypeComponent implements Component<UnsupportedTypeComponent> {
|
||||
public UnsupportedType value;
|
||||
public UnsupportedType2 value2;
|
||||
public UnsupportedType3 value3;
|
||||
|
||||
@Override
|
||||
public void copyFrom(UnsupportedTypeComponent other) {
|
||||
this.value = other.value;
|
||||
this.value2 = other.value2;
|
||||
this.value3 = other.value3;
|
||||
}
|
||||
|
||||
public interface UnsupportedType3 {
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
import org.terasology.engine.core.PathManager;
|
||||
import org.terasology.engine.core.PathManagerProvider;
|
||||
import org.terasology.engine.core.subsystem.EngineSubsystem;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.logic.permission.PermissionSetComponent;
|
||||
import org.terasology.engine.world.block.structure.AttachSupportRequiredComponent;
|
||||
import org.terasology.gestalt.module.Module;
|
||||
|
|
@ -104,7 +103,6 @@ public void nonApiClassesAreNotPermitted(Class<?> disallowedClass) {
|
|||
*/
|
||||
@ParameterizedTest
|
||||
@ValueSource(classes = {
|
||||
Component.class,
|
||||
AttachSupportRequiredComponent.class,
|
||||
PermissionSetComponent.class
|
||||
})
|
||||
|
|
|
|||
|
|
@ -6,13 +6,10 @@
|
|||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager;
|
||||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.context.internal.ContextImpl;
|
||||
import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.entity.EntityManager;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager;
|
||||
|
|
@ -26,16 +23,19 @@
|
|||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.entitySystem.prefab.PrefabData;
|
||||
import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab;
|
||||
import org.terasology.unittest.stubs.EntityRefComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
import org.terasology.engine.network.NetworkMode;
|
||||
import org.terasology.engine.network.NetworkSystem;
|
||||
import org.terasology.engine.recording.RecordAndReplayCurrentStatus;
|
||||
import org.terasology.engine.registry.CoreRegistry;
|
||||
import org.terasology.engine.testUtil.ModuleManagerFactory;
|
||||
import org.terasology.engine.utilities.Assets;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl;
|
||||
import org.terasology.unittest.stubs.EntityRefComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
|
|
@ -360,7 +360,7 @@ public void testIsLoadedFalseAfterPersist() {
|
|||
@Test
|
||||
public void testIsLoadedTrueAfterRestore() {
|
||||
entityManager.setNextId(3);
|
||||
EntityRef entity = entityManager.createEntityWithId(2, Collections.<Component>emptyList());
|
||||
EntityRef entity = entityManager.createEntityWithId(2, Collections.emptyList());
|
||||
assertTrue(entity.isActive());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,13 +3,19 @@
|
|||
package org.terasology.engine.entitySystem.metadata;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.Owns;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class OwnedCollectionComponent implements Component {
|
||||
public class OwnedCollectionComponent implements Component<OwnedCollectionComponent> {
|
||||
@Owns
|
||||
public List<EntityRef> items = Lists.newArrayList();
|
||||
|
||||
|
||||
@Override
|
||||
public void copyFrom(OwnedCollectionComponent other) {
|
||||
this.items = Lists.newArrayList(other.items);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,13 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.delay;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class ArbritaryDelayActionComponent implements Component {
|
||||
public class ArbritaryDelayActionComponent implements Component<ArbritaryDelayActionComponent> {
|
||||
public int value = 1;
|
||||
|
||||
@Override
|
||||
public void copyFrom(ArbritaryDelayActionComponent other) {
|
||||
this.value = other.value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.particles.components.ParticleEmitterComponent;
|
||||
import org.terasology.engine.particles.components.affectors.VelocityAffectorComponent;
|
||||
import org.terasology.engine.particles.components.generators.EnergyRangeGeneratorComponent;
|
||||
import org.terasology.engine.physics.Physics;
|
||||
import org.terasology.engine.physics.engine.PhysicsEngine;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
|
|
|
|||
|
|
@ -9,17 +9,12 @@
|
|||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.reflections.Reflections;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.context.internal.ContextImpl;
|
||||
import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentLibrary;
|
||||
import org.terasology.unittest.stubs.GetterSetterComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
import org.terasology.engine.network.NetworkMode;
|
||||
import org.terasology.engine.network.NetworkSystem;
|
||||
import org.terasology.engine.persistence.serializers.ComponentSerializer;
|
||||
|
|
@ -28,9 +23,14 @@
|
|||
import org.terasology.engine.persistence.typeHandling.mathTypes.Vector3fTypeHandler;
|
||||
import org.terasology.engine.recording.RecordAndReplayCurrentStatus;
|
||||
import org.terasology.engine.registry.CoreRegistry;
|
||||
import org.terasology.engine.testUtil.ModuleManagerFactory;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.persistence.typeHandling.TypeHandlerLibrary;
|
||||
import org.terasology.protobuf.EntityData;
|
||||
import org.terasology.engine.testUtil.ModuleManagerFactory;
|
||||
import org.terasology.unittest.stubs.GetterSetterComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
|
|
|
|||
|
|
@ -6,14 +6,10 @@
|
|||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager;
|
||||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.context.internal.ContextImpl;
|
||||
import org.terasology.engine.core.bootstrap.EntitySystemSetupUtil;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.DoNotPersist;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager;
|
||||
|
|
@ -23,20 +19,24 @@
|
|||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.entitySystem.prefab.PrefabData;
|
||||
import org.terasology.engine.entitySystem.prefab.internal.PojoPrefab;
|
||||
import org.terasology.unittest.stubs.GetterSetterComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.MappedTypeComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
import org.terasology.engine.network.NetworkMode;
|
||||
import org.terasology.engine.network.NetworkSystem;
|
||||
import org.terasology.engine.persistence.serializers.EntitySerializer;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl;
|
||||
import org.terasology.engine.persistence.serializers.PersistenceComponentSerializeCheck;
|
||||
import org.terasology.protobuf.EntityData;
|
||||
import org.terasology.engine.recording.RecordAndReplayCurrentStatus;
|
||||
import org.terasology.engine.registry.CoreRegistry;
|
||||
import org.terasology.engine.testUtil.ModuleManagerFactory;
|
||||
import org.terasology.engine.utilities.Assets;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManagerImpl;
|
||||
import org.terasology.gestalt.entitysystem.component.EmptyComponent;
|
||||
import org.terasology.protobuf.EntityData;
|
||||
import org.terasology.unittest.stubs.GetterSetterComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.MappedTypeComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
|
|
@ -321,6 +321,6 @@ public void testComponentWithDoNotPersistIsIgnoredUponDeserialization() {
|
|||
}
|
||||
|
||||
@DoNotPersist
|
||||
public static class NonpersistedComponent implements Component {
|
||||
public static class NonpersistedComponent extends EmptyComponent<NonpersistedComponent> {
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,8 @@
|
|||
import org.terasology.engine.core.PathManager;
|
||||
import org.terasology.engine.core.PathManagerProvider;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.testUtil.ModuleManagerFactory;
|
||||
import org.terasology.engine.world.block.family.BlockFamily;
|
||||
import org.terasology.gestalt.module.ModuleEnvironment;
|
||||
import org.terasology.reflection.ModuleTypeRegistry;
|
||||
import org.terasology.reflection.TypeRegistry;
|
||||
|
|
@ -53,7 +53,7 @@ public void findSubtypeOfGlobalClass() {
|
|||
|
||||
@Test
|
||||
public void findSubtypeOfEngineClass() {
|
||||
assertNotEmpty(sandbox.findSubTypeOf("engine:BlockComponent", Component.class));
|
||||
assertNotEmpty(sandbox.findSubTypeOf("engine:AbstractBlockFamily", BlockFamily.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -10,10 +10,7 @@
|
|||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.terasology.engine.TerasologyTestingEnvironment;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.engine.core.GameThread;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager;
|
||||
import org.terasology.engine.entitySystem.entity.lifecycleEvents.BeforeDeactivateComponent;
|
||||
|
|
@ -27,10 +24,6 @@
|
|||
import org.terasology.engine.entitySystem.event.internal.EventSystem;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.entitySystem.prefab.PrefabData;
|
||||
import org.terasology.unittest.stubs.ForceBlockActiveComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.RetainedOnBlockChangeComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
import org.terasology.engine.entitySystem.systems.BaseComponentSystem;
|
||||
import org.terasology.engine.network.NetworkComponent;
|
||||
import org.terasology.engine.testUtil.WorldProviderCoreStub;
|
||||
|
|
@ -43,6 +36,13 @@
|
|||
import org.terasology.engine.world.block.loader.BlockFamilyDefinition;
|
||||
import org.terasology.engine.world.block.loader.BlockFamilyDefinitionData;
|
||||
import org.terasology.engine.world.internal.EntityAwareWorldProvider;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.unittest.stubs.ForceBlockActiveComponent;
|
||||
import org.terasology.unittest.stubs.IntegerComponent;
|
||||
import org.terasology.unittest.stubs.RetainedOnBlockChangeComponent;
|
||||
import org.terasology.unittest.stubs.StringComponent;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
import org.reflections.Reflections;
|
||||
import org.terasology.engine.ModuleEnvironmentTest;
|
||||
import org.terasology.engine.core.module.ExternalApiWhitelist;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.naming.Name;
|
||||
|
||||
import java.util.Collection;
|
||||
|
|
|
|||
|
|
@ -114,9 +114,11 @@ dependencies {
|
|||
implementation group: 'net.logstash.logback', name: 'logstash-logback-encoder', version: '4.10'
|
||||
|
||||
// Our developed libs
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-asset-core', version: '7.1.0'
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-module', version: '7.1.0'
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-util', version: '7.1.0'
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-asset-core', version: '7.2.0-SNAPSHOT'
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-module', version: '7.2.0-SNAPSHOT'
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-entity-system', version: '7.2.0-SNAPSHOT'
|
||||
api group: 'org.terasology.gestalt', name: 'gestalt-util', version: '7.2.0-SNAPSHOT'
|
||||
api "com.github.zafarkhaja:java-semver:0.10.0" // ASAP: Remove after https://github.com/MovingBlocks/gestalt/pull/110
|
||||
|
||||
api group: 'org.terasology', name: 'TeraMath', version: '1.5.0'
|
||||
api group: 'org.terasology', name: 'splash-screen', version: '1.1.1'
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@
|
|||
import org.openjdk.jmh.annotations.Setup;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager;
|
||||
import org.terasology.engine.logic.location.LocationComponent;
|
||||
import org.terasology.engine.rendering.logic.MeshComponent;
|
||||
import org.terasology.engine.utilities.random.FastRandom;
|
||||
import org.terasology.engine.world.block.BlockComponent;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
|
|||
|
|
@ -12,13 +12,13 @@
|
|||
import org.openjdk.jmh.annotations.Scope;
|
||||
import org.openjdk.jmh.annotations.State;
|
||||
import org.openjdk.jmh.annotations.Warmup;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.PojoEntityManager;
|
||||
import org.terasology.engine.logic.location.LocationComponent;
|
||||
import org.terasology.engine.rendering.logic.MeshComponent;
|
||||
import org.terasology.engine.utilities.random.FastRandom;
|
||||
import org.terasology.engine.world.block.BlockComponent;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.benchmark.reflectFactory;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class GetterSetterComponent implements Component {
|
||||
public class GetterSetterComponent implements Component<GetterSetterComponent> {
|
||||
private int value;
|
||||
|
||||
public void setValue(int value) {
|
||||
|
|
@ -14,4 +14,9 @@ public void setValue(int value) {
|
|||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(GetterSetterComponent other) {
|
||||
this.value = other.value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,12 +17,12 @@
|
|||
import org.terasology.engine.core.SimpleUri;
|
||||
import org.terasology.engine.core.TerasologyConstants;
|
||||
import org.terasology.engine.core.subsystem.Resolution;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory;
|
||||
import org.terasology.engine.utilities.gson.InputHandler;
|
||||
import org.terasology.engine.utilities.gson.ResolutionHandler;
|
||||
import org.terasology.engine.utilities.gson.SetMultimapTypeAdapter;
|
||||
import org.terasology.engine.utilities.gson.UriTypeAdapterFactory;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
import org.terasology.gestalt.naming.Name;
|
||||
import org.terasology.gestalt.naming.Version;
|
||||
|
|
@ -239,7 +239,7 @@ public Set<String> getModuleConfigKeys(SimpleUri uri) {
|
|||
* @param clazz the class to convert the data to
|
||||
* @return a config component for the given uri and class or <code>null</code>
|
||||
*/
|
||||
public <T extends Component> T getModuleConfig(SimpleUri uri, String key, Class<T> clazz) {
|
||||
public <T extends Component<T>> T getModuleConfig(SimpleUri uri, String key, Class<T> clazz) {
|
||||
Map<String, JsonElement> map = config.getModuleConfigs().get(uri);
|
||||
if (map == null) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ public class RenderingConfig extends AbstractSubscribable {
|
|||
public static final String ANIMATED_MENU = "AnimatedMenu";
|
||||
public static final String VIEW_DISTANCE = "viewDistance";
|
||||
public static final String CHUNK_LODS = "chunkLods";
|
||||
public static final String BILLBOARD_LIMIT = "billboardLimit";
|
||||
public static final String FLICKERING_LIGHT = "FlickeringLight";
|
||||
public static final String ANIMATE_GRASS = "AnimateGrass";
|
||||
public static final String ANIMATE_WATER = "AnimateWater";
|
||||
|
|
@ -76,6 +77,7 @@ public class RenderingConfig extends AbstractSubscribable {
|
|||
private boolean animatedMenu;
|
||||
private ViewDistance viewDistance;
|
||||
private float chunkLods;
|
||||
private float billboardLimit;
|
||||
private boolean flickeringLight;
|
||||
private boolean animateGrass;
|
||||
private boolean animateWater;
|
||||
|
|
@ -270,6 +272,16 @@ public void setChunkLods(float chunkLods) {
|
|||
propertyChangeSupport.firePropertyChange(CHUNK_LODS, oldLods, chunkLods);
|
||||
}
|
||||
|
||||
public float getBillboardLimit() {
|
||||
return billboardLimit;
|
||||
}
|
||||
|
||||
public void setBillboardLimit(float billboardLimit) {
|
||||
float oldValue = this.billboardLimit;
|
||||
this.billboardLimit = billboardLimit;
|
||||
propertyChangeSupport.firePropertyChange(BILLBOARD_LIMIT, oldValue, this.billboardLimit);
|
||||
}
|
||||
|
||||
public boolean isFlickeringLight() {
|
||||
return flickeringLight;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,6 @@
|
|||
import org.terasology.engine.audio.events.PlaySoundEvent;
|
||||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityManager;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager;
|
||||
|
|
@ -39,6 +38,7 @@
|
|||
import org.terasology.engine.recording.RecordedEventStore;
|
||||
import org.terasology.engine.recording.RecordingEventSystemDecorator;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.ModuleEnvironment;
|
||||
import org.terasology.gestalt.naming.Name;
|
||||
import org.terasology.nui.properties.OneOfProviderFactory;
|
||||
|
|
@ -48,6 +48,7 @@
|
|||
import org.terasology.reflection.reflect.ReflectFactory;
|
||||
import org.terasology.reflection.reflect.ReflectionReflectFactory;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -169,7 +170,9 @@ private static EventSystem createEventSystem(NetworkSystem networkSystem,
|
|||
|
||||
static void registerComponents(ComponentLibrary library, ModuleEnvironment environment) {
|
||||
for (Class<? extends Component> componentType : environment.getSubtypesOf(Component.class)) {
|
||||
if (componentType.getAnnotation(DoNotAutoRegister.class) == null) {
|
||||
if (componentType.getAnnotation(DoNotAutoRegister.class) == null
|
||||
&& !componentType.isInterface()
|
||||
&& !Modifier.isAbstract(componentType.getModifiers())) {
|
||||
String componentName = MetadataUtil.getComponentClassName(componentType);
|
||||
Name componentModuleName = verifyNotNull(environment.getModuleProviding(componentType),
|
||||
"Could not find module for %s %s", componentName, componentType);
|
||||
|
|
|
|||
|
|
@ -18,9 +18,11 @@
|
|||
import org.terasology.engine.entitySystem.metadata.ComponentLibrary;
|
||||
import org.terasology.engine.entitySystem.metadata.EntitySystemLibrary;
|
||||
import org.terasology.engine.entitySystem.metadata.EventLibrary;
|
||||
import org.terasology.engine.entitySystem.metadata.MetadataUtil;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.entitySystem.prefab.internal.PrefabDeltaFormat;
|
||||
import org.terasology.engine.entitySystem.prefab.internal.PrefabFormat;
|
||||
import org.terasology.engine.entitySystem.systems.internal.DoNotAutoRegister;
|
||||
import org.terasology.engine.persistence.typeHandling.RegisterTypeHandler;
|
||||
import org.terasology.engine.persistence.typeHandling.RegisterTypeHandlerFactory;
|
||||
import org.terasology.engine.persistence.typeHandling.TypeHandlerLibraryImpl;
|
||||
|
|
@ -28,8 +30,11 @@
|
|||
import org.terasology.engine.physics.CollisionGroup;
|
||||
import org.terasology.engine.physics.CollisionGroupManager;
|
||||
import org.terasology.engine.registry.InjectionHelper;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.assets.module.ModuleAwareAssetTypeManager;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.ModuleEnvironment;
|
||||
import org.terasology.gestalt.naming.Name;
|
||||
import org.terasology.gestalt.util.reflection.GenericsUtil;
|
||||
import org.terasology.persistence.typeHandling.TypeHandler;
|
||||
import org.terasology.persistence.typeHandling.TypeHandlerFactory;
|
||||
|
|
@ -40,11 +45,12 @@
|
|||
import org.terasology.reflection.copy.CopyStrategyLibrary;
|
||||
import org.terasology.reflection.reflect.ReflectFactory;
|
||||
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
import static org.terasology.engine.core.bootstrap.EntitySystemSetupUtil.registerComponents;
|
||||
import static com.google.common.base.Verify.verifyNotNull;
|
||||
|
||||
/**
|
||||
* Handles an environment switch by updating the asset manager, component library, and other context objects.
|
||||
|
|
@ -184,6 +190,20 @@ private void unregisterPrefabFormats(ModuleAwareAssetTypeManager assetTypeManage
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
private static void registerComponents(ComponentLibrary library, ModuleEnvironment environment) {
|
||||
for (Class<? extends Component> componentType : environment.getSubtypesOf(Component.class)) {
|
||||
if (componentType.getAnnotation(DoNotAutoRegister.class) == null
|
||||
&& !componentType.isInterface()
|
||||
&& !Modifier.isAbstract(componentType.getModifiers())) {
|
||||
String componentName = MetadataUtil.getComponentClassName(componentType);
|
||||
Name componentModuleName = verifyNotNull(environment.getModuleProviding(componentType),
|
||||
"Could not find module for %s %s", componentName, componentType);
|
||||
library.register(new ResourceUrn(componentModuleName.toString(), componentName), componentType);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
private static void registerTypeHandlers(Context context, TypeHandlerLibrary library, ModuleEnvironment environment) {
|
||||
for (Class<? extends TypeHandler> handler : environment.getSubtypesOf(TypeHandler.class)) {
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
package org.terasology.engine.core.bootstrap.eventSystem;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.event.Event;
|
||||
import org.terasology.engine.entitySystem.event.internal.EventReceiver;
|
||||
import org.terasology.engine.entitySystem.event.internal.EventSystem;
|
||||
import org.terasology.engine.entitySystem.systems.ComponentSystem;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public abstract class AbstractEventSystemDecorator implements EventSystem {
|
||||
private final EventSystem eventSystem;
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.core.SimpleUri;
|
||||
import org.terasology.engine.core.modes.SingleStepLoadProcess;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityManager;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.game.GameManifest;
|
||||
|
|
@ -18,6 +17,7 @@
|
|||
import org.terasology.engine.world.chunks.ChunkProvider;
|
||||
import org.terasology.engine.world.generator.WorldConfigurator;
|
||||
import org.terasology.engine.world.generator.WorldGenerator;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
|
|
|
|||
|
|
@ -48,8 +48,13 @@ public final class ExternalApiWhitelist {
|
|||
.add(org.terasology.reflection.TypeInfo.class)
|
||||
.build();
|
||||
|
||||
private static final Set<String> GESTALT_ECS_PACKAGES = new ImmutableSet.Builder<String>()
|
||||
.add("org.terasology.gestalt.entitysystem.component")
|
||||
.build();
|
||||
|
||||
public static final Set<String> PACKAGES = new ImmutableSet.Builder<String>()
|
||||
.addAll(NUI_PACKAGES)
|
||||
.addAll(GESTALT_ECS_PACKAGES)
|
||||
.add("org.terasology.math")
|
||||
.add("org.terasology.math.geom")
|
||||
.add("org.terasology.joml.geom")
|
||||
|
|
|
|||
|
|
@ -22,7 +22,6 @@
|
|||
import static org.lwjgl.opengl.GL11.GL_LINEAR_MIPMAP_LINEAR;
|
||||
import static org.lwjgl.opengl.GL11.GL_NEAREST;
|
||||
import static org.lwjgl.opengl.GL11.GL_NEAREST_MIPMAP_NEAREST;
|
||||
import static org.lwjgl.opengl.GL11.GL_NORMALIZE;
|
||||
import static org.lwjgl.opengl.GL11.GL_REPEAT;
|
||||
import static org.lwjgl.opengl.GL11.glDepthFunc;
|
||||
import static org.lwjgl.opengl.GL11.glEnable;
|
||||
|
|
|
|||
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright 2021 The Terasology Foundation
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem;
|
||||
|
||||
/**
|
||||
* A Component is (a collection of) <b>data</b> that
|
||||
* <ul>
|
||||
* <li> can be attached to/carried by an entity, and</li>
|
||||
* <li> can be inspected and/or edited by one or more {@link org.terasology.engine.entitySystem.systems.ComponentSystem}s.</li>
|
||||
* </ul>
|
||||
*
|
||||
*/
|
||||
public interface Component {
|
||||
|
||||
}
|
||||
|
|
@ -2,6 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem;
|
||||
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ComponentContainer {
|
||||
|
|
|
|||
|
|
@ -2,6 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem;
|
||||
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
import com.google.common.collect.Maps;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.MutableComponentContainer;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityManager;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityPool;
|
||||
|
|
@ -14,6 +13,7 @@
|
|||
import org.terasology.engine.entitySystem.entity.lifecycleEvents.OnActivatedComponent;
|
||||
import org.terasology.engine.entitySystem.entity.lifecycleEvents.OnAddedComponent;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.entity;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityPool;
|
||||
import org.terasology.engine.entitySystem.event.internal.EventSystem;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentLibrary;
|
||||
|
|
@ -10,6 +9,7 @@
|
|||
import org.terasology.engine.entitySystem.sectors.SectorSimulationComponent;
|
||||
import org.terasology.engine.game.GameManifest;
|
||||
import org.terasology.engine.world.internal.WorldInfo;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
|
||||
import org.joml.Quaternionfc;
|
||||
import org.joml.Vector3fc;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public interface EntityPool {
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,9 @@
|
|||
package org.terasology.engine.entitySystem.entity;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.MutableComponentContainer;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.entity;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineEntityPool;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EngineSectorManager;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public interface LowLevelEntityManager extends EntityManager {
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,6 @@
|
|||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.LowLevelEntityManager;
|
||||
import org.terasology.engine.entitySystem.event.Event;
|
||||
|
|
@ -13,6 +12,7 @@
|
|||
import org.terasology.engine.network.NetworkComponent;
|
||||
import org.terasology.engine.persistence.serializers.EntityDataJSONFormat;
|
||||
import org.terasology.engine.persistence.serializers.EntitySerializer;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.security.AccessController;
|
||||
import java.security.PrivilegedAction;
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
import gnu.trove.map.hash.TLongObjectHashMap;
|
||||
import gnu.trove.set.TLongSet;
|
||||
import gnu.trove.set.hash.TLongHashSet;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.entity.internal;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.LowLevelEntityManager;
|
||||
import org.terasology.engine.entitySystem.event.internal.EventSystem;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.persistence.typeHandling.TypeHandlerLibrary;
|
||||
|
||||
import java.util.Optional;
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.entity.internal;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityPool;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
package org.terasology.engine.entitySystem.entity.internal;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.entity.internal;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.DoNotPersist;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
* Component for storing entity system information on an entity
|
||||
*/
|
||||
@DoNotPersist
|
||||
public class EntityInfoComponent implements Component {
|
||||
public class EntityInfoComponent implements Component<EntityInfoComponent> {
|
||||
// TODO: Switch this to use Optional<Prefab>
|
||||
public Prefab parentPrefab;
|
||||
/**
|
||||
|
|
@ -42,4 +42,13 @@ public EntityInfoComponent(@Nullable Prefab parentPrefab, boolean persisted, boo
|
|||
this(parentPrefab, persisted, alwaysRelevant);
|
||||
this.scope = scope;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(EntityInfoComponent other) {
|
||||
this.persisted = other.persisted;
|
||||
this.parentPrefab = other.parentPrefab;
|
||||
this.alwaysRelevant = other.alwaysRelevant;
|
||||
this.scope = other.scope;
|
||||
this.owner = other.owner;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.entity.internal;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.event.Event;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -3,11 +3,11 @@
|
|||
package org.terasology.engine.entitySystem.entity.internal;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentFieldMetadata;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentLibrary;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentMetadata;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.core.TerasologyConstants;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityBuilder;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.lifecycleEvents.BeforeDeactivateComponent;
|
||||
|
|
@ -31,6 +30,7 @@
|
|||
import org.terasology.engine.entitySystem.sectors.SectorSimulationComponent;
|
||||
import org.terasology.engine.game.GameManifest;
|
||||
import org.terasology.engine.world.internal.WorldInfo;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.persistence.typeHandling.TypeHandlerLibrary;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
|
|||
|
|
@ -8,7 +8,6 @@
|
|||
import org.joml.Vector3fc;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityBuilder;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.lifecycleEvents.BeforeDeactivateComponent;
|
||||
|
|
@ -16,6 +15,7 @@
|
|||
import org.terasology.engine.entitySystem.event.internal.EventSystem;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.logic.location.LocationComponent;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
import com.google.common.collect.Iterables;
|
||||
import org.joml.Quaternionfc;
|
||||
import org.joml.Vector3fc;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityBuilder;
|
||||
import org.terasology.engine.entitySystem.entity.EntityPool;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -4,9 +4,9 @@
|
|||
|
||||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.event.Event;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
package org.terasology.engine.entitySystem.event;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class PendingEvent {
|
||||
private EntityRef entity;
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.event;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.systems.RegisterMode;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.event.internal;
|
||||
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.event.Event;
|
||||
import org.terasology.engine.entitySystem.systems.ComponentSystem;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
/**
|
||||
* Event system propagates events to registered handlers
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@
|
|||
import org.reflections.ReflectionUtils;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.event.AbstractConsumableEvent;
|
||||
import org.terasology.engine.entitySystem.event.ConsumableEvent;
|
||||
|
|
@ -28,6 +27,7 @@
|
|||
import org.terasology.engine.entitySystem.systems.ComponentSystem;
|
||||
import org.terasology.engine.monitoring.PerformanceMonitor;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.metadata;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.Owns;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.reflection.copy.strategy.EntityCopyStrategy;
|
||||
import org.terasology.engine.utilities.ReflectionUtil;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.reflection.copy.CopyStrategy;
|
||||
import org.terasology.reflection.copy.CopyStrategyLibrary;
|
||||
import org.terasology.reflection.metadata.ClassMetadata;
|
||||
|
|
|
|||
|
|
@ -6,9 +6,9 @@
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.module.ModuleEnvironment;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.Module;
|
||||
import org.terasology.gestalt.module.ModuleEnvironment;
|
||||
import org.terasology.gestalt.naming.Name;
|
||||
import org.terasology.reflection.copy.CopyStrategy;
|
||||
import org.terasology.reflection.copy.CopyStrategyLibrary;
|
||||
|
|
|
|||
|
|
@ -5,16 +5,16 @@
|
|||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.DoNotPersist;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.engine.world.block.ForceBlockActive;
|
||||
import org.terasology.engine.world.block.RequiresBlockLifecycleEvents;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.reflection.copy.CopyStrategyLibrary;
|
||||
import org.terasology.reflection.metadata.ClassMetadata;
|
||||
import org.terasology.reflection.reflect.InaccessibleFieldException;
|
||||
import org.terasology.reflection.reflect.ReflectFactory;
|
||||
import org.terasology.engine.world.block.ForceBlockActive;
|
||||
import org.terasology.engine.world.block.RequiresBlockLifecycleEvents;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Field;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.metadata;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
package org.terasology.engine.entitySystem.prefab;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.terasology.gestalt.assets.AssetData;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.MutableComponentContainer;
|
||||
import org.terasology.gestalt.assets.AssetData;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.prefab;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@
|
|||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.gestalt.assets.AssetType;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.entitySystem.prefab.PrefabData;
|
||||
import org.terasology.gestalt.assets.AssetType;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
|
||||
import com.google.common.base.Strings;
|
||||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.prefab.Prefab;
|
||||
import org.terasology.engine.entitySystem.prefab.PrefabManager;
|
||||
import org.terasology.gestalt.assets.management.AssetManager;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
|
|
|
|||
|
|
@ -3,12 +3,13 @@
|
|||
package org.terasology.engine.entitySystem.sectors;
|
||||
|
||||
import org.joml.Vector3i;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
import org.terasology.engine.world.chunks.Chunk;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* When this component is added to a sector-scope entity, the {@link SectorSimulationComponent} will count any chunks
|
||||
|
|
@ -18,11 +19,17 @@
|
|||
* rather than positions, if desired.
|
||||
*/
|
||||
@API
|
||||
public class SectorRegionComponent implements Component {
|
||||
public class SectorRegionComponent implements Component<SectorRegionComponent> {
|
||||
|
||||
/**
|
||||
* The set of positions of chunks for this entity to watch.
|
||||
*/
|
||||
public Set<Vector3i> chunks = new HashSet<>();
|
||||
|
||||
@Override
|
||||
public void copyFrom(SectorRegionComponent other) {
|
||||
this.chunks = other.chunks.stream()
|
||||
.map(Vector3i::new)
|
||||
.collect(Collectors.toSet());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.entitySystem.sectors;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityManager;
|
||||
import org.terasology.engine.entitySystem.entity.internal.BaseEntityRef;
|
||||
import org.terasology.engine.entitySystem.entity.internal.EntityScope;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
|
||||
/**
|
||||
|
|
@ -15,7 +15,7 @@
|
|||
* {@link BaseEntityRef#setScope(EntityScope)}, so modules should not need to modify or add it.
|
||||
*/
|
||||
@API
|
||||
public class SectorSimulationComponent implements Component {
|
||||
public class SectorSimulationComponent implements Component<SectorSimulationComponent> {
|
||||
|
||||
public static final long UNLOADED_MAX_DELTA_DEFAULT = 60_000;
|
||||
public static final long LOADED_MAX_DELTA_DEFAULT = 10_000;
|
||||
|
|
@ -56,4 +56,10 @@ public SectorSimulationComponent() {
|
|||
loadedMaxDelta = LOADED_MAX_DELTA_DEFAULT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(SectorSimulationComponent other) {
|
||||
this.lastSimulationTime = other.lastSimulationTime;
|
||||
this.loadedMaxDelta = other.loadedMaxDelta;
|
||||
this.unloadedMaxDelta = other.unloadedMaxDelta;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,10 +10,10 @@
|
|||
import com.google.gson.JsonElement;
|
||||
import org.terasology.engine.core.SimpleUri;
|
||||
import org.terasology.engine.core.TerasologyConstants;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.utilities.gson.CaseInsensitiveEnumTypeAdapterFactory;
|
||||
import org.terasology.engine.utilities.gson.UriTypeAdapterFactory;
|
||||
import org.terasology.engine.world.internal.WorldInfo;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.naming.Name;
|
||||
import org.terasology.gestalt.naming.NameVersion;
|
||||
import org.terasology.gestalt.naming.Version;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,6 @@
|
|||
import org.terasology.engine.physics.Physics;
|
||||
import org.terasology.engine.physics.StandardCollisionGroup;
|
||||
import org.terasology.engine.registry.In;
|
||||
import org.terasology.engine.rendering.world.WorldRenderer;
|
||||
import org.terasology.engine.world.BlockEntityRegistry;
|
||||
import org.terasology.engine.world.block.BlockComponent;
|
||||
import org.terasology.math.TeraMath;
|
||||
|
|
@ -34,9 +33,6 @@ public class CameraTargetSystem extends BaseComponentSystem {
|
|||
@In
|
||||
private Config config;
|
||||
|
||||
@In
|
||||
private WorldRenderer worldRenderer;
|
||||
|
||||
@In
|
||||
private Physics physics;
|
||||
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.engine.audio.StaticSound;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
* When activated, plays a random sound
|
||||
*
|
||||
*/
|
||||
public class PlaySoundActionComponent implements Component {
|
||||
public class PlaySoundActionComponent implements Component<PlaySoundActionComponent> {
|
||||
public List<StaticSound> sounds = Lists.newArrayList();
|
||||
public float volume = 1.0f;
|
||||
public ActionTarget relativeTo = ActionTarget.Instigator;
|
||||
|
|
@ -28,4 +28,11 @@ public PlaySoundActionComponent() {
|
|||
public PlaySoundActionComponent(StaticSound... sounds) {
|
||||
this.sounds.addAll(Arrays.asList(sounds));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(PlaySoundActionComponent other) {
|
||||
this.sounds = Lists.newArrayList(other.sounds);
|
||||
this.volume = other.volume;
|
||||
this.relativeTo = other.relativeTo;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,15 @@
|
|||
|
||||
package org.terasology.engine.logic.actions;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class SpawnPrefabActionComponent implements Component {
|
||||
public class SpawnPrefabActionComponent implements Component<SpawnPrefabActionComponent> {
|
||||
public String prefab;
|
||||
public ActionTarget spawnLocationRelativeTo = ActionTarget.Target;
|
||||
|
||||
@Override
|
||||
public void copyFrom(SpawnPrefabActionComponent other) {
|
||||
this.prefab = other.prefab;
|
||||
this.spawnLocationRelativeTo = other.spawnLocationRelativeTo;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,12 +2,16 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.afk;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class AfkComponent implements Component {
|
||||
public class AfkComponent implements Component<AfkComponent> {
|
||||
|
||||
@Replicate
|
||||
public boolean afk;
|
||||
|
||||
@Override
|
||||
public void copyFrom(AfkComponent other) {
|
||||
this.afk = other.afk;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
package org.terasology.engine.logic.ai;
|
||||
|
||||
import org.joml.Vector3f;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public final class HierarchicalAIComponent implements Component {
|
||||
public final class HierarchicalAIComponent implements Component<HierarchicalAIComponent> {
|
||||
|
||||
//how often updates are progressed, handle whit care
|
||||
public int updateFrequency;
|
||||
|
|
@ -64,4 +64,37 @@ public final class HierarchicalAIComponent implements Component {
|
|||
//TODO remove this when fight system is ready!!!
|
||||
public int damage = 50;
|
||||
public int damageFrequency = 500;
|
||||
|
||||
@Override
|
||||
public void copyFrom(HierarchicalAIComponent other) {
|
||||
this.updateFrequency = other.updateFrequency;
|
||||
this.lastProgressedUpdateAt = other.lastProgressedUpdateAt;
|
||||
this.movementTarget = new Vector3f(other.movementTarget);
|
||||
this.lastChangeOfDirectionAt = other.lastChangeOfDirectionAt;
|
||||
this.lastChangeOfMovementAt = other.lastChangeOfMovementAt;
|
||||
this.lastChangeOfidlingtAt = other.lastChangeOfidlingtAt;
|
||||
this.lastChangeOfDangerAt = other.lastChangeOfDangerAt;
|
||||
this.moveUpdateTime = other.moveUpdateTime;
|
||||
this.directionUpdateTime = other.directionUpdateTime;
|
||||
this.idlingUpdateTime = other.idlingUpdateTime;
|
||||
this.dangerUpdateTime = other.dangerUpdateTime;
|
||||
this.dieIfPlayerFar = other.dieIfPlayerFar;
|
||||
this.dieDistance = other.dieDistance;
|
||||
this.hunter = other.hunter;
|
||||
this.aggressive = other.aggressive;
|
||||
this.wild = other.wild;
|
||||
this.flying = other.flying;
|
||||
this.maxAltitude = other.maxAltitude;
|
||||
this.hectic = other.hectic;
|
||||
this.straightLined = other.straightLined;
|
||||
this.forgiving = other.forgiving;
|
||||
this.playerSense = other.playerSense;
|
||||
this.playerdistance = other.playerdistance;
|
||||
this.attackDistance = other.attackDistance;
|
||||
this.runDistance = other.runDistance;
|
||||
this.panicDistance = other.panicDistance;
|
||||
this.inDanger = other.inDanger;
|
||||
this.damage = other.damage;
|
||||
this.damageFrequency = other.damageFrequency;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,12 +3,18 @@
|
|||
package org.terasology.engine.logic.ai;
|
||||
|
||||
import org.joml.Vector3f;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public final class SimpleAIComponent implements Component {
|
||||
public final class SimpleAIComponent implements Component<SimpleAIComponent> {
|
||||
|
||||
public long lastChangeOfDirectionAt;
|
||||
public Vector3f movementTarget = new Vector3f();
|
||||
public boolean followingPlayer;
|
||||
|
||||
@Override
|
||||
public void copyFrom(SimpleAIComponent other) {
|
||||
this.lastChangeOfDirectionAt = other.lastChangeOfDirectionAt;
|
||||
this.movementTarget = new Vector3f(other.movementTarget);
|
||||
this.followingPlayer = other.followingPlayer;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.autoCreate;
|
||||
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
|
||||
/**
|
||||
* This component is used to mark prefabs that should automatically created when a game begins or is loaded, if one does not already exist.
|
||||
|
|
@ -12,6 +12,11 @@
|
|||
*
|
||||
*/
|
||||
@API
|
||||
public class AutoCreateComponent implements Component {
|
||||
public class AutoCreateComponent implements Component<AutoCreateComponent> {
|
||||
public boolean createClientSide;
|
||||
|
||||
@Override
|
||||
public void copyFrom(AutoCreateComponent other) {
|
||||
this.createClientSide = other.createClientSide;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.behavior;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
|
||||
/**
|
||||
|
|
@ -11,7 +11,13 @@
|
|||
*
|
||||
*/
|
||||
@API
|
||||
public class BehaviorComponent implements Component {
|
||||
public class BehaviorComponent implements Component<BehaviorComponent> {
|
||||
public BehaviorTree tree;
|
||||
public transient Interpreter interpreter;
|
||||
|
||||
@Override
|
||||
public void copyFrom(BehaviorComponent other) {
|
||||
this.tree = other.tree;
|
||||
this.interpreter = other.interpreter;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.behavior;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
|
||||
/**
|
||||
|
|
@ -11,7 +11,13 @@
|
|||
*
|
||||
*/
|
||||
@API
|
||||
public class CollectiveBehaviorComponent implements Component {
|
||||
public class CollectiveBehaviorComponent implements Component<CollectiveBehaviorComponent> {
|
||||
public BehaviorTree tree;
|
||||
public transient CollectiveInterpreter collectiveInterpreter;
|
||||
|
||||
@Override
|
||||
public void copyFrom(CollectiveBehaviorComponent other) {
|
||||
this.tree = other.tree;
|
||||
this.collectiveInterpreter = other.collectiveInterpreter;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.behavior;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import com.google.common.collect.Sets;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
|
@ -14,7 +15,7 @@
|
|||
* behavior by all entities belonging to a group.
|
||||
* @see GroupTagComponent
|
||||
*/
|
||||
public class GroupMindComponent implements Component {
|
||||
public class GroupMindComponent implements Component<GroupMindComponent> {
|
||||
/**
|
||||
* The unique group identifier with which the component will be associated
|
||||
*/
|
||||
|
|
@ -28,4 +29,11 @@ public class GroupMindComponent implements Component {
|
|||
* The identifiers for each of the entities belonging to the group.
|
||||
*/
|
||||
public Set<EntityRef> groupMembers = new HashSet<>();
|
||||
|
||||
@Override
|
||||
public void copyFrom(GroupMindComponent other) {
|
||||
this.groupLabel = other.groupLabel;
|
||||
this.behavior = other.behavior;
|
||||
this.groupMembers = Sets.newHashSet(other.groupMembers);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,9 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.behavior;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
|
@ -16,7 +17,7 @@
|
|||
* easy identification/addition/removal of grouped
|
||||
* entities.
|
||||
*/
|
||||
public class GroupTagComponent implements Component {
|
||||
public class GroupTagComponent implements Component<GroupTagComponent> {
|
||||
|
||||
/**
|
||||
* Groups to which the entity belong.
|
||||
|
|
@ -39,4 +40,11 @@ public class GroupTagComponent implements Component {
|
|||
public BehaviorTree backupBT;
|
||||
|
||||
public Interpreter backupRunningState;
|
||||
|
||||
@Override
|
||||
public void copyFrom(GroupTagComponent other) {
|
||||
this.groups = Lists.newArrayList(other.groups);
|
||||
this.backupBT = other.backupBT;
|
||||
this.backupRunningState = other.backupRunningState;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.core.module.ModuleManager;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentLibrary;
|
||||
import org.terasology.engine.logic.behavior.BehaviorAction;
|
||||
|
|
@ -13,6 +12,7 @@
|
|||
import org.terasology.engine.logic.behavior.core.BaseAction;
|
||||
import org.terasology.engine.logic.behavior.core.BehaviorState;
|
||||
import org.terasology.engine.registry.In;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
|
|
|
|||
|
|
@ -5,16 +5,16 @@
|
|||
import com.google.common.collect.Maps;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.engine.core.ComponentFieldUri;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentLibrary;
|
||||
import org.terasology.engine.entitySystem.metadata.ComponentMetadata;
|
||||
import org.terasology.engine.entitySystem.metadata.EntitySystemLibrary;
|
||||
import org.terasology.engine.registry.CoreRegistry;
|
||||
import org.terasology.gestalt.assets.ResourceUrn;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
import org.terasology.reflection.metadata.FieldMetadata;
|
||||
import org.terasology.engine.registry.CoreRegistry;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.Map;
|
||||
|
|
|
|||
|
|
@ -6,29 +6,29 @@
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.context.Context;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
|
||||
import org.terasology.engine.logic.behavior.core.ActionNode;
|
||||
import org.terasology.engine.logic.behavior.core.BehaviorNode;
|
||||
import org.terasology.engine.logic.behavior.BehaviorComponent;
|
||||
import org.terasology.engine.logic.behavior.BehaviorSystem;
|
||||
import org.terasology.engine.logic.behavior.Interpreter;
|
||||
import org.terasology.nui.WidgetUtil;
|
||||
import org.terasology.nui.widgets.UIDropdown;
|
||||
import org.terasology.nui.widgets.UIList;
|
||||
import org.terasology.reflection.reflect.ReflectFactory;
|
||||
import org.terasology.engine.logic.behavior.asset.BehaviorTree;
|
||||
import org.terasology.engine.logic.behavior.core.ActionNode;
|
||||
import org.terasology.engine.logic.behavior.core.BehaviorNode;
|
||||
import org.terasology.engine.registry.In;
|
||||
import org.terasology.engine.rendering.nui.CoreScreenLayer;
|
||||
import org.terasology.engine.rendering.nui.NUIManager;
|
||||
import org.terasology.engine.rendering.nui.layers.mainMenu.EnterTextPopup;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.nui.WidgetUtil;
|
||||
import org.terasology.nui.databinding.Binding;
|
||||
import org.terasology.nui.databinding.ReadOnlyBinding;
|
||||
import org.terasology.nui.itemRendering.ToStringTextRenderer;
|
||||
import org.terasology.engine.rendering.nui.layers.mainMenu.EnterTextPopup;
|
||||
import org.terasology.nui.layouts.PropertyLayout;
|
||||
import org.terasology.nui.properties.OneOfProviderFactory;
|
||||
import org.terasology.nui.properties.Property;
|
||||
import org.terasology.nui.properties.PropertyProvider;
|
||||
import org.terasology.nui.widgets.UIDropdown;
|
||||
import org.terasology.nui.widgets.UIList;
|
||||
import org.terasology.reflection.reflect.ReflectFactory;
|
||||
|
||||
import java.awt.Toolkit;
|
||||
import java.awt.datatransfer.Clipboard;
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.behavior.nui;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
import org.terasology.nui.Color;
|
||||
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
*
|
||||
*/
|
||||
@API
|
||||
public class BehaviorNodeComponent implements Component {
|
||||
public class BehaviorNodeComponent implements Component<BehaviorNodeComponent> {
|
||||
public static final BehaviorNodeComponent DEFAULT = new BehaviorNodeComponent();
|
||||
|
||||
public String action; // the node(s) to create
|
||||
|
|
@ -27,4 +27,16 @@ public class BehaviorNodeComponent implements Component {
|
|||
public String toString() {
|
||||
return displayName;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(BehaviorNodeComponent other) {
|
||||
this.action = other.action;
|
||||
this.name = other.name;
|
||||
this.displayName = other.displayName;
|
||||
this.category = other.category;
|
||||
this.shape = other.shape;
|
||||
this.color = new Color(other.color);
|
||||
this.textColor = new Color(other.textColor);
|
||||
this.description = other.description;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.EmptyComponent;
|
||||
|
||||
/**
|
||||
* This is only attached to the <b>alive character</b> entities. <br/>
|
||||
|
|
@ -15,5 +15,5 @@
|
|||
* or respawn after a while.
|
||||
*/
|
||||
@Replicate
|
||||
public class AliveCharacterComponent implements Component {
|
||||
public class AliveCharacterComponent extends EmptyComponent<AliveCharacterComponent> {
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,19 +2,19 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.Owns;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.logic.characters.interactions.InteractionEndPredicted;
|
||||
import org.terasology.engine.logic.characters.interactions.InteractionStartPredicted;
|
||||
import org.terasology.engine.network.FieldReplicateType;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
/**
|
||||
* Information common to characters (the physical body of players and creatures)
|
||||
*
|
||||
*/
|
||||
public final class CharacterComponent implements Component {
|
||||
public final class CharacterComponent implements Component<CharacterComponent> {
|
||||
/**
|
||||
* Recommended height from center at which name tags should be placed if there is one.
|
||||
*/
|
||||
|
|
@ -65,4 +65,16 @@ public final class CharacterComponent implements Component {
|
|||
|
||||
@Replicate(FieldReplicateType.SERVER_TO_OWNER)
|
||||
public EntityRef controller = EntityRef.NULL;
|
||||
|
||||
@Override
|
||||
public void copyFrom(CharacterComponent other) {
|
||||
this.nameTagOffset = other.nameTagOffset;
|
||||
this.interactionRange = other.interactionRange;
|
||||
this.authorizedInteractionTarget = other.authorizedInteractionTarget;
|
||||
this.authorizedInteractionId = other.authorizedInteractionId;
|
||||
this.predictedInteractionTarget = other.predictedInteractionTarget;
|
||||
this.predictedInteractionId = other.predictedInteractionId;
|
||||
this.movingItem = other.movingItem;
|
||||
this.controller = other.controller;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
public class CharacterHeldItemComponent implements Component {
|
||||
public class CharacterHeldItemComponent implements Component<CharacterHeldItemComponent> {
|
||||
|
||||
@Replicate
|
||||
public EntityRef selectedItem = EntityRef.NULL;
|
||||
|
|
@ -16,4 +16,11 @@ public class CharacterHeldItemComponent implements Component {
|
|||
|
||||
@Replicate
|
||||
public long nextItemUseTime;
|
||||
|
||||
@Override
|
||||
public void copyFrom(CharacterHeldItemComponent other) {
|
||||
this.selectedItem = other.selectedItem;
|
||||
this.lastItemUsedTime = other.lastItemUsedTime;
|
||||
this.nextItemUseTime = other.nextItemUseTime;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,23 +3,22 @@
|
|||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import org.joml.Vector3f;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.network.FieldReplicateType;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.nui.properties.Range;
|
||||
import org.terasology.engine.physics.CollisionGroup;
|
||||
import org.terasology.engine.physics.StandardCollisionGroup;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.nui.properties.Range;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* This component is attached to all character entities. It governs movement and stores
|
||||
* associated paramenters, and can be used instead of a CapsuleShapeComponent by the physics system to define the collision shape. <br/>
|
||||
* The {@link AliveCharacterComponent} should necessarily be attached to the character entity for the movement systems to work.
|
||||
* This component is attached to all character entities. It governs movement and stores associated paramenters, and can
|
||||
* be used instead of a CapsuleShapeComponent by the physics system to define the collision shape. <br/> The {@link
|
||||
* AliveCharacterComponent} should necessarily be attached to the character entity for the movement systems to work.
|
||||
*/
|
||||
public final class CharacterMovementComponent implements Component {
|
||||
public final class CharacterMovementComponent implements Component<CharacterMovementComponent> {
|
||||
|
||||
// Collision settings
|
||||
@Range(min = 1, max = 25)
|
||||
|
|
@ -27,7 +26,11 @@ public final class CharacterMovementComponent implements Component {
|
|||
@Range(min = 0, max = 5)
|
||||
public float radius = 0.3f;
|
||||
public CollisionGroup collisionGroup = StandardCollisionGroup.CHARACTER;
|
||||
public List<CollisionGroup> collidesWith = Lists.<CollisionGroup>newArrayList(StandardCollisionGroup.WORLD, StandardCollisionGroup.SENSOR, StandardCollisionGroup.CHARACTER);
|
||||
public List<CollisionGroup> collidesWith = Lists.<CollisionGroup>newArrayList(
|
||||
StandardCollisionGroup.WORLD,
|
||||
StandardCollisionGroup.SENSOR,
|
||||
StandardCollisionGroup.CHARACTER
|
||||
);
|
||||
@Range(min = 0, max = 5)
|
||||
public float pickupRadius = 1.5f;
|
||||
|
||||
|
|
@ -84,4 +87,27 @@ public void setVelocity(Vector3f newVelocity) {
|
|||
velocity.set(newVelocity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void copyFrom(CharacterMovementComponent other) {
|
||||
this.height = other.height;
|
||||
this.radius = other.radius;
|
||||
this.collisionGroup = other.collisionGroup;
|
||||
this.collidesWith = Lists.newArrayList(other.collidesWith);
|
||||
this.pickupRadius = other.pickupRadius;
|
||||
this.speedMultiplier = other.speedMultiplier;
|
||||
this.runFactor = other.runFactor;
|
||||
this.jumpSpeed = other.jumpSpeed;
|
||||
this.stepHeight = other.stepHeight;
|
||||
this.slopeFactor = other.slopeFactor;
|
||||
this.baseNumberOfJumpsMax = other.baseNumberOfJumpsMax;
|
||||
this.numberOfJumpsMax = other.numberOfJumpsMax;
|
||||
this.numberOfJumpsLeft = other.numberOfJumpsLeft;
|
||||
this.distanceBetweenFootsteps = other.distanceBetweenFootsteps;
|
||||
this.faceMovementDirection = other.faceMovementDirection;
|
||||
this.mode = other.mode;
|
||||
this.grounded = other.grounded;
|
||||
this.jump = other.jump;
|
||||
this.footstepDelta = other.footstepDelta;
|
||||
this.velocity = new Vector3f(other.velocity);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,13 +3,12 @@
|
|||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
import org.terasology.engine.audio.StaticSound;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public final class CharacterSoundComponent implements Component {
|
||||
public final class CharacterSoundComponent implements Component<CharacterSoundComponent> {
|
||||
|
||||
public List<StaticSound> footstepSounds = Lists.newArrayList();
|
||||
public List<StaticSound> damageSounds = Lists.newArrayList();
|
||||
|
|
@ -33,4 +32,25 @@ public final class CharacterSoundComponent implements Component {
|
|||
|
||||
public long lastSoundTime;
|
||||
|
||||
@Override
|
||||
public void copyFrom(CharacterSoundComponent other) {
|
||||
this.footstepSounds = Lists.newArrayList(other.footstepSounds);
|
||||
this.damageSounds = Lists.newArrayList(other.damageSounds);
|
||||
this.landingSounds = Lists.newArrayList(other.landingSounds);
|
||||
this.jumpSounds = Lists.newArrayList(other.jumpSounds);
|
||||
this.deathSounds = Lists.newArrayList(other.deathSounds);
|
||||
this.respawnSounds = Lists.newArrayList(other.respawnSounds);
|
||||
this.swimSounds = Lists.newArrayList(other.swimSounds);
|
||||
this.enterWaterSounds = Lists.newArrayList(other.enterWaterSounds);
|
||||
this.leaveWaterSounds = Lists.newArrayList(other.leaveWaterSounds);
|
||||
this.footstepVolume = other.footstepVolume;
|
||||
this.damageVolume = other.damageVolume;
|
||||
this.jumpVolume = other.jumpVolume;
|
||||
this.landingVolume = other.landingVolume;
|
||||
this.deathVolume = other.deathVolume;
|
||||
this.respawnVolume = other.respawnVolume;
|
||||
this.swimmingVolume = other.swimmingVolume;
|
||||
this.diveVolume = other.diveVolume;
|
||||
this.lastSoundTime = other.lastSoundTime;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
import org.terasology.engine.entitySystem.systems.RegisterSystem;
|
||||
import org.terasology.engine.entitySystem.systems.UpdateSubscriberSystem;
|
||||
import org.terasology.engine.input.binds.interaction.AttackButton;
|
||||
import org.terasology.engine.input.cameraTarget.PlayerTargetSystem;
|
||||
import org.terasology.engine.logic.characters.events.ActivationRequest;
|
||||
import org.terasology.engine.logic.characters.events.ActivationRequestDenied;
|
||||
import org.terasology.engine.logic.characters.events.AttackEvent;
|
||||
|
|
@ -48,13 +47,11 @@
|
|||
import org.terasology.engine.recording.RecordAndReplayCurrentStatus;
|
||||
import org.terasology.engine.recording.RecordAndReplayStatus;
|
||||
import org.terasology.engine.registry.In;
|
||||
import org.terasology.engine.world.BlockEntityRegistry;
|
||||
import org.terasology.engine.world.block.BlockComponent;
|
||||
import org.terasology.engine.world.block.regions.ActAsBlockComponent;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
@RegisterSystem
|
||||
public class CharacterSystem extends BaseComponentSystem implements UpdateSubscriberSystem {
|
||||
public static final CollisionGroup[] DEFAULTPHYSICSFILTER =
|
||||
|
|
@ -76,12 +73,6 @@ public class CharacterSystem extends BaseComponentSystem implements UpdateSubscr
|
|||
@In
|
||||
private Time time;
|
||||
|
||||
@In
|
||||
private PlayerTargetSystem targetSystem;
|
||||
|
||||
@In
|
||||
private BlockEntityRegistry blockRegistry;
|
||||
|
||||
@In
|
||||
private DirectionAndOriginPosRecorderList directionAndOriginPosRecorderList;
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import org.joml.Vector3f;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.Owns;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
/**
|
||||
* The gaze mount point represents a character's "eyes".
|
||||
|
|
@ -16,7 +16,7 @@
|
|||
* The character location usually points to the center of the entity. The gaze mount point translation is relative to
|
||||
* that anchor location.
|
||||
*/
|
||||
public class GazeMountPointComponent implements Component {
|
||||
public class GazeMountPointComponent implements Component<GazeMountPointComponent> {
|
||||
/**
|
||||
* Holds an entity that will have its location linked to the character entity.
|
||||
* <p>
|
||||
|
|
@ -33,4 +33,10 @@ public class GazeMountPointComponent implements Component {
|
|||
*/
|
||||
@Replicate
|
||||
public Vector3f translate = new Vector3f(0, 0, 0);
|
||||
|
||||
@Override
|
||||
public void copyFrom(GazeMountPointComponent other) {
|
||||
this.gazeEntity = other.gazeEntity;
|
||||
this.translate = new Vector3f(other.translate);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,6 @@
|
|||
import org.joml.RoundingMode;
|
||||
import org.joml.Vector3f;
|
||||
import org.joml.Vector3i;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.logic.characters.events.FootstepEvent;
|
||||
import org.terasology.engine.logic.characters.events.HorizontalCollisionEvent;
|
||||
|
|
@ -17,13 +15,13 @@
|
|||
import org.terasology.engine.logic.characters.events.SwimStrokeEvent;
|
||||
import org.terasology.engine.logic.characters.events.VerticalCollisionEvent;
|
||||
import org.terasology.engine.logic.location.LocationComponent;
|
||||
import org.terasology.math.TeraMath;
|
||||
import org.terasology.engine.physics.engine.CharacterCollider;
|
||||
import org.terasology.engine.physics.engine.PhysicsEngine;
|
||||
import org.terasology.engine.physics.engine.SweepCallback;
|
||||
import org.terasology.engine.physics.events.MovedEvent;
|
||||
import org.terasology.engine.world.WorldProvider;
|
||||
import org.terasology.engine.world.block.Block;
|
||||
import org.terasology.math.TeraMath;
|
||||
|
||||
/**
|
||||
* Calculates character movement using a physics-engine provided CharacterCollider.
|
||||
|
|
@ -66,7 +64,6 @@ public class KinematicCharacterMover implements CharacterMover {
|
|||
public static final float VERTICAL_PENETRATION_LEEWAY = 0.05f;
|
||||
private static final float CHECK_FORWARD_DIST = 0.05f;
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(KinematicCharacterMover.class);
|
||||
private boolean stepped;
|
||||
|
||||
// Processing state variables
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.rendering.assets.animation.MeshAnimation;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
* The component gets currently only used to define the idle stand animations.
|
||||
*
|
||||
*/
|
||||
public class StandComponent implements Component {
|
||||
public class StandComponent implements Component<StandComponent> {
|
||||
/**
|
||||
* A pool of idle stand animations. It gets currently only used by behavior trees to make a skeletal mesh perform a
|
||||
* idle stand animation loop. The animations of the pool will be picked by random. The result is a randomized
|
||||
|
|
@ -21,4 +21,8 @@ public class StandComponent implements Component {
|
|||
*/
|
||||
public List<MeshAnimation> animationPool = Lists.newArrayList();
|
||||
|
||||
@Override
|
||||
public void copyFrom(StandComponent other) {
|
||||
this.animationPool = Lists.newArrayList(other.animationPool);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,11 +2,11 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.entitySystem.entity.EntityRef;
|
||||
import org.terasology.engine.logic.characters.events.CreateVisualCharacterEvent;
|
||||
import org.terasology.engine.network.NoReplicate;
|
||||
import org.terasology.engine.network.Replicate;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
/**
|
||||
* Add this component to characters to give them a visual appearance.
|
||||
|
|
@ -19,10 +19,15 @@
|
|||
*
|
||||
*/
|
||||
@Replicate
|
||||
public class VisualCharacterComponent implements Component {
|
||||
public class VisualCharacterComponent implements Component<VisualCharacterComponent> {
|
||||
/**
|
||||
* Should not be set manually. Can however be used to forward events from character to visual character.
|
||||
*/
|
||||
@NoReplicate
|
||||
public EntityRef visualCharacter = EntityRef.NULL;
|
||||
|
||||
@Override
|
||||
public void copyFrom(VisualCharacterComponent other) {
|
||||
this.visualCharacter = other.visualCharacter;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
package org.terasology.engine.logic.characters;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.engine.rendering.assets.animation.MeshAnimation;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -13,11 +13,16 @@
|
|||
* but will in future also store the walk speed.
|
||||
*
|
||||
*/
|
||||
public class WalkComponent implements Component {
|
||||
public class WalkComponent implements Component<WalkComponent> {
|
||||
/**
|
||||
* A pool of walk animations. It gets currently only used by behavior trees to make a skeletal mesh perform a
|
||||
* walk animation loop. The animations of the pool will be picked by random. The result is a randomized animation
|
||||
* loop. The same animation can be put multiple times in the pool, so that it will be chosen more frequently.
|
||||
*/
|
||||
public List<MeshAnimation> animationPool = Lists.newArrayList();
|
||||
|
||||
@Override
|
||||
public void copyFrom(WalkComponent other) {
|
||||
this.animationPool = Lists.newArrayList(other.animationPool);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
// SPDX-License-Identifier: Apache-2.0
|
||||
package org.terasology.engine.logic.characters.interactions;
|
||||
|
||||
import org.terasology.engine.entitySystem.Component;
|
||||
import org.terasology.gestalt.entitysystem.component.Component;
|
||||
import org.terasology.gestalt.module.sandbox.API;
|
||||
|
||||
/**
|
||||
|
|
@ -10,7 +10,11 @@
|
|||
*
|
||||
*/
|
||||
@API
|
||||
public class InteractionScreenComponent implements Component {
|
||||
public class InteractionScreenComponent implements Component<InteractionScreenComponent> {
|
||||
public String screen;
|
||||
|
||||
@Override
|
||||
public void copyFrom(InteractionScreenComponent other) {
|
||||
this.screen = other.screen;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue