From 4cf34d162c70e9185f71d747b7ddc3628db81463 Mon Sep 17 00:00:00 2001 From: austin Date: Tue, 13 Aug 2024 14:12:17 -0400 Subject: [PATCH] convert scene tag datastructure --- docs/src/progress/currenttarget.md | 2 +- docs/src/progress/renderertodo.md | 1 + src/main/java/electrosphere/entity/Scene.java | 36 +++++++++---------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/docs/src/progress/currenttarget.md b/docs/src/progress/currenttarget.md index 790c03e6..239b3cf6 100644 --- a/docs/src/progress/currenttarget.md +++ b/docs/src/progress/currenttarget.md @@ -15,7 +15,7 @@ + fix the vibes Attack animation feels slow - Hitboxes between server and client feel wayyyy off + Stability + bug fixes diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index 7d89c0ef..df24443f 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -552,6 +552,7 @@ Movement tweaks (08/13/2024) Hitbox support offsets now Multiple hitboxes per bone +Potential fix for client concurrency issue # TODO diff --git a/src/main/java/electrosphere/entity/Scene.java b/src/main/java/electrosphere/entity/Scene.java index bdaf6a85..3eb18735 100644 --- a/src/main/java/electrosphere/entity/Scene.java +++ b/src/main/java/electrosphere/entity/Scene.java @@ -4,12 +4,12 @@ import electrosphere.engine.Globals; import electrosphere.entity.btree.BehaviorTree; import electrosphere.entity.types.attach.AttachUtils; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CopyOnWriteArrayList; +import java.util.concurrent.CopyOnWriteArraySet; /** * A game scene @@ -24,22 +24,22 @@ public class Scene { List behaviorTreeList = new CopyOnWriteArrayList(); public Scene(){ - tagEntityMap.put(EntityTags.BONE_ATTACHED, new HashSet()); - tagEntityMap.put(EntityTags.COLLIDABLE, new HashSet()); - tagEntityMap.put(EntityTags.SPRINTABLE, new HashSet()); - tagEntityMap.put(EntityTags.MOVEABLE, new HashSet()); - tagEntityMap.put(EntityTags.ATTACKER, new HashSet()); - tagEntityMap.put(EntityTags.TARGETABLE, new HashSet()); - tagEntityMap.put(EntityTags.LIFE_STATE, new HashSet()); - tagEntityMap.put(EntityTags.CREATURE, new HashSet()); - tagEntityMap.put(EntityTags.UI, new HashSet()); - tagEntityMap.put(EntityTags.DRAWABLE, new HashSet()); - tagEntityMap.put(EntityTags.DRAW_INSTANCED, new HashSet()); - tagEntityMap.put(EntityTags.LIGHT, new HashSet()); - tagEntityMap.put(EntityTags.ITEM, new HashSet()); - tagEntityMap.put(EntityTags.GRAVITY, new HashSet()); - tagEntityMap.put(EntityTags.PARTICLE, new HashSet()); - tagEntityMap.put(EntityTags.TRANSFORM_ATTACHED, new HashSet()); + tagEntityMap.put(EntityTags.BONE_ATTACHED, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.COLLIDABLE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.SPRINTABLE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.MOVEABLE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.ATTACKER, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.TARGETABLE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.LIFE_STATE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.CREATURE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.UI, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.DRAWABLE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.DRAW_INSTANCED, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.LIGHT, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.ITEM, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.GRAVITY, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.PARTICLE, new CopyOnWriteArraySet()); + tagEntityMap.put(EntityTags.TRANSFORM_ATTACHED, new CopyOnWriteArraySet()); } /** @@ -62,7 +62,7 @@ public class Scene { if(tagEntityMap.containsKey(tag)){ tagEntityMap.get(tag).add(e); } else { - Set newEntityList = new HashSet(); + Set newEntityList = new CopyOnWriteArraySet(); newEntityList.add(e); tagEntityMap.put(tag,newEntityList); }