fix ai moving out of sim range
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit
Some checks reported errors
studiorailgun/Renderer/pipeline/head Something is wrong with the build of this commit
This commit is contained in:
parent
0136a78992
commit
f07ea76129
@ -1700,6 +1700,7 @@ Ability to explicitly spawn new characters into macro data and have them then sp
|
||||
Debug ability to send characters off map
|
||||
More windows for debugging work
|
||||
GriddedDataCellManager simulates cells that contain creatures
|
||||
Characters can pursue goal to leave sim range and the real entity is unloaded when they leave range
|
||||
|
||||
|
||||
|
||||
|
||||
@ -9,8 +9,6 @@ import electrosphere.entity.state.server.ServerCharacterData;
|
||||
import electrosphere.server.ai.blackboard.Blackboard;
|
||||
import electrosphere.server.ai.blackboard.BlackboardKeys;
|
||||
import electrosphere.server.ai.nodes.AITreeNode;
|
||||
import electrosphere.server.datacell.Realm;
|
||||
import electrosphere.server.datacell.gridded.GriddedDataCellManager;
|
||||
import electrosphere.server.macro.character.Character;
|
||||
import electrosphere.server.macro.MacroData;
|
||||
import electrosphere.server.macro.character.goal.CharacterGoal;
|
||||
@ -66,11 +64,11 @@ public class MacroCharacterGoalNode implements AITreeNode {
|
||||
}
|
||||
switch(goal.getType()){
|
||||
case LEAVE_SIM_RANGE: {
|
||||
Realm realm = Globals.realmManager.getEntityRealm(entity);
|
||||
// Realm realm = Globals.realmManager.getEntityRealm(entity);
|
||||
Vector3d entityPos = EntityUtils.getPosition(entity);
|
||||
Vector3d offset = new Vector3d(entityPos).add(1000,0,0);
|
||||
GriddedDataCellManager griddedDataCellManager = (GriddedDataCellManager)realm.getDataCellManager();
|
||||
Vector3d targetPos = griddedDataCellManager.getMacroEntryPoint(offset);
|
||||
// GriddedDataCellManager griddedDataCellManager = (GriddedDataCellManager)realm.getDataCellManager();
|
||||
Vector3d targetPos = offset;//griddedDataCellManager.getMacroEntryPoint(offset).add(10,0,0);
|
||||
blackboard.put(BlackboardKeys.POINT_TARGET, targetPos);
|
||||
} break;
|
||||
}
|
||||
|
||||
@ -1,12 +1,15 @@
|
||||
package electrosphere.server.ai.trees.character.goals;
|
||||
|
||||
import electrosphere.entity.state.movement.groundmove.ClientGroundMovementTree.MovementRelativeFacing;
|
||||
import electrosphere.server.ai.blackboard.BlackboardKeys;
|
||||
import electrosphere.server.ai.nodes.AITreeNode;
|
||||
import electrosphere.server.ai.nodes.actions.move.FaceTargetNode;
|
||||
import electrosphere.server.ai.nodes.actions.move.MoveStartNode;
|
||||
import electrosphere.server.ai.nodes.macro.MacroCharacterGoalNode;
|
||||
import electrosphere.server.ai.nodes.meta.collections.SelectorNode;
|
||||
import electrosphere.server.ai.nodes.meta.collections.SequenceNode;
|
||||
import electrosphere.server.ai.nodes.meta.debug.PublishStatusNode;
|
||||
import electrosphere.server.ai.trees.creature.MoveToTree;
|
||||
import electrosphere.server.ai.nodes.meta.decorators.RunnerNode;
|
||||
import electrosphere.server.macro.character.goal.CharacterGoal.CharacterGoalType;
|
||||
|
||||
/**
|
||||
@ -30,7 +33,8 @@ public class CharacterGoalTree {
|
||||
//check if we're trying to leave sim range
|
||||
MacroCharacterGoalNode.create(CharacterGoalType.LEAVE_SIM_RANGE),
|
||||
new PublishStatusNode("Leaving simulation range"),
|
||||
MoveToTree.create(BlackboardKeys.POINT_TARGET)
|
||||
new FaceTargetNode(BlackboardKeys.POINT_TARGET),
|
||||
new RunnerNode(new MoveStartNode(MovementRelativeFacing.FORWARD))
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
@ -10,7 +10,6 @@ import electrosphere.server.ai.nodes.checks.spatial.TargetRangeCheckNode;
|
||||
import electrosphere.server.ai.nodes.meta.DataDeleteNode;
|
||||
import electrosphere.server.ai.nodes.meta.collections.SelectorNode;
|
||||
import electrosphere.server.ai.nodes.meta.collections.SequenceNode;
|
||||
import electrosphere.server.ai.nodes.meta.debug.PublishStatusNode;
|
||||
import electrosphere.server.ai.nodes.meta.decorators.RunnerNode;
|
||||
import electrosphere.server.ai.nodes.meta.decorators.SucceederNode;
|
||||
import electrosphere.server.ai.nodes.plan.PathfindingNode;
|
||||
@ -36,25 +35,7 @@ public class MoveToTree {
|
||||
* @return The root node of the move-to-target tree
|
||||
*/
|
||||
public static AITreeNode create(String targetKey){
|
||||
return new SelectorNode(
|
||||
new SequenceNode(
|
||||
//check if in range of target
|
||||
new TargetRangeCheckNode(DEFAULT_DIST, targetKey),
|
||||
new DataDeleteNode(BlackboardKeys.PATHFINDING_POINT),
|
||||
new DataDeleteNode(BlackboardKeys.PATHFINDING_DATA),
|
||||
//if in range, stop moving fowards and return SUCCESS
|
||||
new SucceederNode(new MoveStopNode())
|
||||
),
|
||||
|
||||
//not in range of target, keep moving towards it
|
||||
new SequenceNode(
|
||||
new PublishStatusNode("Thinking about pathing"),
|
||||
PathfindingNode.createPathEntity(targetKey),
|
||||
new PublishStatusNode("Moving"),
|
||||
new FaceTargetNode(BlackboardKeys.PATHFINDING_POINT),
|
||||
new RunnerNode(new MoveStartNode(MovementRelativeFacing.FORWARD))
|
||||
)
|
||||
);
|
||||
return MoveToTree.create(DEFAULT_DIST, targetKey);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user