本文整理汇总了C#中IAgentData类的典型用法代码示例。如果您正苦于以下问题:C# IAgentData类的具体用法?C# IAgentData怎么用?C# IAgentData使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
IAgentData类属于命名空间,在下文中一共展示了IAgentData类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: Decide
/// <summary>
/// Depending on the group policy of its parent, the floating point return value indicates whether the decider will be activated.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <param name="decisionData"> Decision data to use in activate method. </param>
/// <returns> Floating point value used to decide if the decider will be activated. </returns>
public override float Decide(IAgentData agentData, ref IDecisionData decisionData)
{
// Create blackboard.
Blackboard blackboard = new Blackboard();
// Add parent blackboards.
if (this.Blackboard != null)
{
blackboard.Parents.Add(this.Blackboard);
}
blackboard.Parents.Add(agentData.Blackboard);
// Setup blackboard.
Blackboard previousBlackboard = agentData.Blackboard;
agentData.Blackboard = blackboard;
// Deactivate child.
IDecisionData childDecisionData = null;
float decisionValue = this.DecideChild(agentData, ref childDecisionData);
// Tear down.
agentData.Blackboard = previousBlackboard;
// Create decision data.
if (decisionValue > 0.0f)
{
decisionData = new DecisionData { Blackboard = blackboard, ChildDecisionData = childDecisionData };
}
return decisionValue;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:38,代码来源:CreateBlackboard.cs
示例2: Update
/// <summary>
/// Per frame update.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <returns> Execution status after this update. </returns>
public override ExecutionStatus Update(IAgentData agentData)
{
Data data = agentData.GetTaskData<Data>();
if (data.Status == ExecutionStatus.Running)
{
// Update.
data.Status = this.UpdateChild(agentData);
}
else
{
// Restart if still possible.
IDecisionData decisionData = null;
++agentData.CurrentDeciderLevel;
float decisionValue = this.Task.Decide(agentData, ref decisionData);
--agentData.CurrentDeciderLevel;
if (decisionValue > 0.0f)
{
data.Status = this.ActivateChild(agentData, decisionData);
if (data.Status == ExecutionStatus.Running)
{
data.Status = this.UpdateChild(agentData);
}
}
else
{
data.Status = ExecutionStatus.Failed;
}
}
return ExecutionStatus.Running;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:36,代码来源:LoopDecorator.cs
示例3: Deactivate
/// <summary>
/// Deactivation.
/// </summary>
/// <param name="agentData"> Agent data. </param>
public override void Deactivate(IAgentData agentData)
{
ITask task = this.GetTask(agentData);
if (task != null)
{
task.Deactivate(agentData);
}
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:12,代码来源:DynamicTask.cs
示例4: Decide
/// <summary>
/// Decision function for a boolean condition.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <returns> Returns true if the condition is forfilled, else false. </returns>
protected override bool Decide(IAgentData agentData)
{
object attribute = null;
if (!agentData.Blackboard.TryGetValue(this.BlackboardAttributeKey, out attribute))
{
return false;
}
// Check that not null.
return attribute != null;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:16,代码来源:CheckBlackboardSet.cs
示例5: Deactivate
/// <summary>
/// Deactivation.
/// </summary>
/// <param name="agentData"> Agent data. </param>
public override void Deactivate(IAgentData agentData)
{
Data data = agentData.GetTaskData<Data>();
// Deactivate child if running.
if (data.Status == ExecutionStatus.Running)
{
this.DeactivateChild(agentData);
}
agentData.CurrentTaskData = null;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:16,代码来源:LoopDecorator.cs
示例6: Update
/// <summary>
/// Per frame update.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <returns> Execution status after this update. </returns>
public override ExecutionStatus Update(IAgentData agentData)
{
// Get key of attribute to remove.
object key = this.GetBlackboardAttributeKey(agentData);
if (key != null)
{
// Remove attribute.
agentData.Blackboard.RemoveValue(key);
}
return ExecutionStatus.Success;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:17,代码来源:BaseRemoveBlackboardAttribute.cs
示例7: Activate
/// <summary>
/// Activation. This method is called when the task was chosen to be executed. It's called right before the first update of the task. The task can setup its specific task data in here and do initial actions.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <param name="decisionData"> Decision data to use in activate method. </param>
/// <returns> Execution status after activation. </returns>
public override ExecutionStatus Activate(IAgentData agentData, IDecisionData decisionData)
{
Data data = new Data();
data.Status = this.ActivateChild(agentData, decisionData);
if (data.Status == ExecutionStatus.Failed)
{
return ExecutionStatus.Failed;
}
agentData.CurrentTaskData = data;
return ExecutionStatus.Running;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:19,代码来源:UntilFailDecorator.cs
示例8: Deactivate
/// <summary>
/// Deactivation.
/// </summary>
/// <param name="agentData"> Agent data. </param>
public override void Deactivate(IAgentData agentData)
{
Data data = agentData.GetTaskData<Data>();
// Setup blackboard.
Setup(agentData, data);
// Deactivate child.
this.DeactivateChild(agentData);
// Tear down.
TearDown(agentData, data);
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:17,代码来源:CreateBlackboard.cs
示例9: Update
/// <summary>
/// Per frame update.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <returns> Execution status after this update. </returns>
public override ExecutionStatus Update(IAgentData agentData)
{
// Get value from blackboard.
object attribute = null;
if (!agentData.Blackboard.TryGetValue(this.SourceAttributeKey, out attribute))
{
return ExecutionStatus.Failed;
}
// Set value to target key.
agentData.Blackboard.SetValue(this.TargetAttributeKey, attribute);
return ExecutionStatus.Success;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:19,代码来源:BaseCopyBlackboardAttribute.cs
示例10: Activate
/// <summary>
/// Activation. This method is called when the task was chosen to be executed. It's called right before the first update of the task. The task can setup its specific task data in here and do initial actions.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <param name="decisionData"> Decision data to use in activate method. </param>
/// <returns> Execution status after activation. </returns>
public override ExecutionStatus Activate(IAgentData agentData, IDecisionData decisionData)
{
Data data = new Data { Status = ExecutionStatus.Failed };
// Check if child wants to run.
float childDecisionValue = this.DecideChild(agentData, ref decisionData);
if (childDecisionValue > 0.0f)
{
data.Status = this.ActivateChild(agentData, decisionData);
}
agentData.CurrentTaskData = data;
return ExecutionStatus.Running;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:21,代码来源:LoopDecorator.cs
示例11: Activate
/// <summary>
/// Activation. This method is called when the task was chosen to be executed. It's called right before the first update of the task. The task can setup its specific task data in here and do initial actions.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <param name="decisionData"> Decision data to use in activate method. </param>
/// <returns> Execution status after activation. </returns>
public override ExecutionStatus Activate(IAgentData agentData, IDecisionData decisionData)
{
DecisionData taskDecisionData = (DecisionData)decisionData;
// Create child blackboard.
Data data = new Data { Blackboard = taskDecisionData.Blackboard, PreviousBlackboard = agentData.Blackboard };
agentData.CurrentTaskData = data;
// Setup blackboard.
Setup(agentData, data);
// Activate child.
ExecutionStatus result = this.ActivateChild(agentData, taskDecisionData.ChildDecisionData);
if (result != ExecutionStatus.Running)
{
// Tear down.
TearDown(agentData, data);
}
return result;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:27,代码来源:CreateBlackboard.cs
示例12: Activate
/// <summary>
/// Activation. This method is called when the task was chosen to be executed. It's called right before the first update of the task. The task can setup its specific task data in here and do initial actions.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <param name="decisionData"> Decision data to use in activate method. </param>
/// <returns> Execution status after activation. </returns>
public override ExecutionStatus Activate(IAgentData agentData, IDecisionData decisionData)
{
Blackboard blackboard = agentData.Blackboard;
if (blackboard.Parents == null)
{
return ExecutionStatus.Failed;
}
// Find attribute on parent blackboard.
foreach (Blackboard parent in blackboard.Parents)
{
object attribute = null;
if (parent.TryGetValue(this.AttributeKey, out attribute))
{
// Set attribute on blackboard.
blackboard.SetValue(this.AttributeKey, attribute);
return ExecutionStatus.Success;
}
}
return ExecutionStatus.Failed;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:29,代码来源:BaseCopyParentBlackboardAttribute.cs
示例13: Update
/// <summary>
/// Per frame update.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <returns> Execution status after this update. </returns>
public override ExecutionStatus Update(IAgentData agentData)
{
Data data = agentData.CurrentTaskData as Data;
if (data.Status == ExecutionStatus.Running)
{
data.Status = this.UpdateChild(agentData);
}
else
{
// Restart if still possible.
IDecisionData decisionData = null;
float decisionValue = this.Task.Decide(agentData, ref decisionData);
if (decisionValue > 0.0f)
{
data.Status = this.ActivateChild(agentData, decisionData);
if (data.Status == ExecutionStatus.Running)
{
data.Status = this.UpdateChild(agentData);
}
}
}
return data.Status == ExecutionStatus.Failed ? ExecutionStatus.Failed : ExecutionStatus.Running;
}
开发者ID:jixiang111,项目名称:slash-framework,代码行数:29,代码来源:UntilFailDecorator.cs
示例14: UpdateAgent
private bool UpdateAgent(GridRegion destination, IAgentData cAgentData)
{
// Try local first
if (cAgentData is AgentData)
{
if (m_localBackend.UpdateAgent(destination, (AgentData) cAgentData))
return true;
}
else if (cAgentData is AgentPosition)
{
if (m_localBackend.UpdateAgent(destination, (AgentPosition) cAgentData))
return true;
}
// else do the remote thing
if (!m_localBackend.IsLocalRegion(destination.RegionHandle))
{
// Eventually, we want to use a caps url instead of the agentID
string uri = MakeUri(destination, true) + cAgentData.AgentID + "/";
if (m_blackListedRegions.ContainsKey(uri))
{
//Check against time
if (m_blackListedRegions[uri] > 3 &&
Util.EnvironmentTickCountSubtract(m_blackListedRegions[uri]) > 0)
{
MainConsole.Instance.Warn("[SimServiceConnector]: Blacklisted region " + destination.RegionName + " requested");
//Still blacklisted
return false;
}
}
try
{
OSDMap args = cAgentData.Pack();
args["destination_x"] = OSD.FromString(destination.RegionLocX.ToString());
args["destination_y"] = OSD.FromString(destination.RegionLocY.ToString());
args["destination_name"] = OSD.FromString(destination.RegionName);
args["destination_uuid"] = OSD.FromString(destination.RegionID.ToString());
OSDMap result = WebUtils.PutToService(uri, args, true, true, false);
if (!result["Success"].AsBoolean())
{
if (m_blackListedRegions.ContainsKey(uri))
{
if (m_blackListedRegions[uri] == 3)
{
//add it to the blacklist as the request completely failed 3 times
m_blackListedRegions[uri] = Util.EnvironmentTickCount() + 60*1000; //60 seconds
}
else if (m_blackListedRegions[uri] == 0)
m_blackListedRegions[uri]++;
}
else
m_blackListedRegions[uri] = 0;
return result["Success"].AsBoolean();
}
//Clear out the blacklist if it went through
m_blackListedRegions.Remove(uri);
OSDMap innerResult = (OSDMap) result["_Result"];
return innerResult["Updated"].AsBoolean();
}
catch (Exception e)
{
MainConsole.Instance.Warn("[REMOTE SIMULATION CONNECTOR]: UpdateAgent failed with exception: " + e);
}
return false;
}
return false;
}
开发者ID:savino1976,项目名称:Aurora-Sim,代码行数:73,代码来源:SimulationServiceConnector.cs
示例15: GetBlackboardAttributeKey
/// <summary>
/// Should return the key of the blackboard attribute to remove.
/// </summary>
/// <param name="agentData"> Agent data. </param>
/// <returns> Key of the blackboard attribute to remove. </returns>
protected abstract object GetBlackboardAttributeKey(IAgentData agentData);
开发者ID:jixiang111,项目名称:slash-framework,代码行数:6,代码来源:BaseRemoveBlackboardAttribute.cs
示例16: SendChildAgentUpdate
public void SendChildAgentUpdate(IAgentData childAgentUpdate, UUID regionID)
{
if (!m_KnownNeighbors.ContainsKey(regionID))
return;
Util.FireAndForget(delegate(object o)
{
//Send the updates to all known neighbors
foreach (GridRegion region in m_KnownNeighbors[regionID])
{
if (childAgentUpdate is AgentData)
m_simService.UpdateAgent(region, (AgentData)childAgentUpdate);
else
m_simService.UpdateAgent(region, (AgentPosition)childAgentUpdate);
}
});
}
开发者ID:kow,项目名称:Aurora-Sim,代码行数:17,代码来源:LocalNeighborServiceConnector.cs
示例17: DoRetrieveRootAgentCall
public bool DoRetrieveRootAgentCall(RegionInfo region, UUID id, out IAgentData agent)
{
agent = null;
// Eventually, we want to use a caps url instead of the agentID
string uri = "http://" + region.ExternalHostName + ":" + region.HttpPort + "/agent/" + id + "/" + region.RegionHandle.ToString() + "/";
//Console.WriteLine(" >>> DoRetrieveRootAgentCall <<< " + uri);
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
request.Method = "GET";
request.Timeout = 10000;
//request.Headers.Add("authorization", ""); // coming soon
request.Headers["authorization"] = GenerateAuthorization();
HttpWebResponse webResponse = null;
string reply = string.Empty;
try
{
webResponse = (HttpWebResponse)request.GetResponse();
if (webResponse == null)
{
m_log.Info("[REST COMMS]: Null reply on agent get ");
return false;
}
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
reply = sr.ReadToEnd().Trim();
sr.Close();
//Console.WriteLine("[REST COMMS]: ChildAgentUpdate reply was " + reply);
}
catch (WebException ex)
{
m_log.InfoFormat("[REST COMMS]: exception on reply of agent get {0}", ex.Message);
// ignore, really
return false;
}
if (webResponse.StatusCode == HttpStatusCode.OK)
{
// we know it's jason
OSDMap args = GetOSDMap(reply);
if (args == null)
{
//Console.WriteLine("[REST COMMS]: Error getting OSDMap from reply");
return false;
}
agent = new CompleteAgentData();
agent.Unpack(args);
return true;
}
//Console.WriteLine("[REST COMMS]: DoRetrieveRootAgentCall returned status " + webResponse.StatusCode);
return false;
}
开发者ID:digitalmystic,项目名称:halcyon,代码行数:54,代码来源:RegionClient.cs
示例18: RetrieveAgent
/// <summary>
/// Not sure what sequence causes this function to be invoked. The only calling
/// path is through the GET method
/// </summary>
public bool RetrieveAgent(GridRegion destination, UUID id, out IAgentData agent)
{
// m_log.DebugFormat("[REMOTE SIMULATION CONNECTOR]: RetrieveAgent start");
agent = null;
// Eventually, we want to use a caps url instead of the agentID
string uri = destination.ServerURI + AgentPath() + id + "/" + destination.RegionID.ToString() + "/";
try
{
OSDMap result = WebUtil.GetFromService(uri, 10000);
if (result["Success"].AsBoolean())
{
// OSDMap args = Util.GetOSDMap(result["_RawResult"].AsString());
OSDMap args = (OSDMap)result["_Result"];
if (args != null)
{
agent = new CompleteAgentData();
agent.Unpack(args, null);
return true;
}
}
}
catch (Exception e)
{
m_log.Warn("[REMOTE SIMULATION CONNECTOR]: UpdateAgent failed with exception: " + e.ToString());
}
return false;
}
开发者ID:JAllard,项目名称:osmodified,代码行数:35,代码来源:SimulationServiceConnector.cs
示例19: IncomingRetrieveRootAgent
public virtual bool IncomingRetrieveRootAgent(UUID id, out IAgentData agent)
{
agent = null;
ScenePresence sp = GetScenePresence(id);
if ((sp != null) && (!sp.IsChildAgent))
{
sp.IsChildAgent = true;
return sp.CopyAgent(out agent);
}
return false;
}
开发者ID:CCIR,项目名称:opensim,代码行数:12,代码来源:Scene.cs
示例20: SendRetrieveRootAgent
public bool SendRetrieveRootAgent(ulong regionHandle, UUID id, out IAgentData agent)
{
agent = null;
foreach (Scene s in m_sceneList)
{
if (s.RegionInfo.RegionHandle == regionHandle)
{
//m_log.Debug("[LOCAL COMMS]: Found region to send ChildAgentUpdate");
return s.IncomingRetrieveRootAgent(id, out agent);
}
}
//m_log.Debug("[LOCAL COMMS]: region not found for ChildAgentUpdate");
return false;
}
开发者ID:BogusCurry,项目名称:halcyon,代码行数:14,代码来源:LocalInterregionComms.cs
注:本文中的IAgentData类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论