com.badlogic.gdx.ai.btree.utils.BehaviorTreeLibraryManager Maven / Gradle / Ivy
/*******************************************************************************
* Copyright 2014 See AUTHORS file.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package com.badlogic.gdx.ai.btree.utils;
import com.badlogic.gdx.ai.btree.BehaviorTree;
import com.badlogic.gdx.ai.btree.Task;
import com.badlogic.gdx.ai.btree.TaskCloneException;
import com.badlogic.gdx.utils.SerializationException;
/** The {@code BehaviorTreeLibraryManager} is a singleton in charge of the creation of behavior trees using the underlying library.
* If no library is explicitly set (see the method {@link #setLibrary(BehaviorTreeLibrary)}), a default library instantiated by
* the constructor {@link BehaviorTreeLibrary#BehaviorTreeLibrary() BehaviorTreeLibrary()} is used instead.
*
* @author davebaol */
public class BehaviorTreeLibraryManager {
private static BehaviorTreeLibraryManager instance = new BehaviorTreeLibraryManager();
protected BehaviorTreeLibrary library;
private BehaviorTreeLibraryManager () {
setLibrary(new BehaviorTreeLibrary());
}
/** Returns the singleton instance of the {@code BehaviorTreeLibraryManager}. */
public static BehaviorTreeLibraryManager getInstance () {
return instance;
}
/** Gets the the behavior tree library
* @return the behavior tree library */
public BehaviorTreeLibrary getLibrary () {
return library;
}
/** Sets the the behavior tree library
* @param library the behavior tree library to set */
public void setLibrary (BehaviorTreeLibrary library) {
this.library = library;
}
/** Creates the root task of {@link BehaviorTree} for the specified reference.
* @param treeReference the tree identifier, typically a path
* @return the root task of the tree cloned from the archetype.
* @throws SerializationException if the reference cannot be successfully parsed.
* @throws TaskCloneException if the archetype cannot be successfully parsed. */
public Task createRootTask (String treeReference) {
return library.createRootTask(treeReference);
}
/** Creates the {@link BehaviorTree} for the specified reference.
* @param treeReference the tree identifier, typically a path
* @return the tree cloned from the archetype.
* @throws SerializationException if the reference cannot be successfully parsed.
* @throws TaskCloneException if the archetype cannot be successfully parsed. */
public BehaviorTree createBehaviorTree (String treeReference) {
return library.createBehaviorTree(treeReference);
}
/** Creates the {@link BehaviorTree} for the specified reference and blackboard object.
* @param treeReference the tree identifier, typically a path
* @param blackboard the blackboard object (it can be {@code null}).
* @return the tree cloned from the archetype.
* @throws SerializationException if the reference cannot be successfully parsed.
* @throws TaskCloneException if the archetype cannot be successfully parsed. */
public BehaviorTree createBehaviorTree (String treeReference, T blackboard) {
return library.createBehaviorTree(treeReference, blackboard);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy