Compare commits

..

2 Commits

27 changed files with 336 additions and 373 deletions

View File

@ -48,19 +48,19 @@ public class JunctionBox : MonoBehaviour
{
case "쌈窟분李蕨뺄욥001":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.06131744f, -0.0075f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
break;
case "쌈窟분李蕨뺄욥002":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(0.02013969f, -0.0075f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
break;
case "쌈窟분李蕨뺄욥003":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.02001452f, -0.0075f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
break;
case "쌈窟분李蕨뺄욥004":
hit.collider.gameObject.transform.DOLocalMove(new Vector3(-0.06075525f, -0.0075f, 0.0089f), 1f);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
break;
}
}

View File

@ -114,12 +114,12 @@ Material:
- _UVSec: 0
- _ZWrite: 1
- __dirty: 0
- _step_p1: 0
- _step_p2: 0
- _step_p3: 0
- _step_p4: 0
- _step_p5: 0
- _step_p6: 0
- _step_p1: 1
- _step_p2: 1
- _step_p3: 1
- _step_p4: 1
- _step_p5: 1
- _step_p6: 1
m_Colors:
- _BaseCol: {r: 0.23429155, g: 0.28497556, b: 0.3679245, a: 0}
- _Color: {r: 1, g: 1, b: 1, a: 1}

View File

@ -25,7 +25,7 @@ Material:
m_TexEnvs: []
m_Ints: []
m_Floats:
- _LightSpeed: 2
- _LightSpeed: 3
- _LightSwitch: 0
- __dirty: 1
m_Colors:

View File

@ -7581,9 +7581,10 @@ MonoBehaviour:
m_GameObject: {fileID: 505215068}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0234ae9c682a4828aa916e415ad8b21d, type: 3}
m_Script: {fileID: 11500000, guid: 51f73ee94f284a86b677a6bc74544094, type: 3}
m_Name:
m_EditorClassIdentifier:
_toolsPackScene: 0
--- !u!1 &514951653
GameObject:
m_ObjectHideFlags: 0

View File

@ -25663,6 +25663,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 51f73ee94f284a86b677a6bc74544094, type: 3}
m_Name:
m_EditorClassIdentifier:
_toolsPackScene: 1
--- !u!4 &1516723168
Transform:
m_ObjectHideFlags: 0

View File

@ -122,22 +122,22 @@ public class Screwdriver : MonoBehaviour
if (hit.collider.gameObject.name == "맨_미땍쭁介_Rup")
{
StartCoroutine(Rscrew());
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "미땍쭁介_Ldown")
{
StartCoroutine(Lscrew());
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "옳미땍쭁介_R")
{
Debug.Log(hit.collider.gameObject.name);
StartCoroutine(IERconcentratorScrew()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
StartCoroutine(IERconcentratorScrew()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "옳미땍쭁介_L")
{
Debug.Log(hit.collider.gameObject.name);
StartCoroutine(IELconcentratorScrew()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
StartCoroutine(IELconcentratorScrew()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
for (int i = 0; i < ScrewObj.Length; i++)
{
@ -146,17 +146,18 @@ public class Screwdriver : MonoBehaviour
Debug.Log(hit.collider.gameObject.name);
ScrewObj[i].gameObject.SetActive(false);
ScrewdriverTrans.gameObject.transform.localPosition = new Vector3(3.1215f, 2.1383f, -1.3484f);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}
if (hit.collider.gameObject.name == "미땍쭁介_Rdown")
{
Debug.Log(hit.collider.gameObject.name);
StartCoroutine(right()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
StartCoroutine(right()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "섞든포미땍쭁介_Ldown")
{
Debug.Log(hit.collider.gameObject.name);
StartCoroutine(left()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
StartCoroutine(left()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}

View File

@ -35,7 +35,7 @@ public class CharacterMirrorManager : MonoBehaviour
{
if(EventSystem.current.IsPointerOverGameObject())
return;
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(this.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(this.gameObject.name);
StartCoroutine(FadeIn(uiImage, 0.5f));
}

View File

@ -23,9 +23,9 @@ public class ConsumePowerManager : MonoBehaviour
confirmBt.onClick.AddListener(delegate
{
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(GameObject.Find("临时用电"));
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(GameObject.Find("现场调试"));
MotionEngine.GetModule<AnimationProcessManager>().HandleClick("临时用电");
MotionEngine.GetModule<AnimationProcessManager>().HandleClick("现场调试");
OnOpenLight();
});
}

View File

@ -40,19 +40,19 @@ namespace DefaultNamespace
public void SetProcessMode(int index)
{
if (index == 0)
if (index == 0)// 教学模式
{
_processMode = DefaultNamespace.ProcessMode.ProcessMode.Teaching;
}
else if (index == 1)
else if (index == 1)// 培训模式
{
_processMode = DefaultNamespace.ProcessMode.ProcessMode.Training;
}
else if (index == 2)
else if (index == 2)// 练习模式
{
_processMode = DefaultNamespace.ProcessMode.ProcessMode.Practice;
}
else if (index == 3)
else if (index == 3)// 考核模式
{
_processMode = DefaultNamespace.ProcessMode.ProcessMode.Assessment;
}

View File

@ -6,23 +6,23 @@ namespace DefaultNamespace.ProcessMode
{
public class ActionWithDescription
{
public List<GameObject> TargetObjects { get; set; }
public List<string> TargetObjects { get; set; }
public Action Action { get; set; }
public string Description { get; set; }
public bool IsSequential { get; set; } // 是否按顺序点击
public HashSet<GameObject> ClickedObjects { get; private set; } // 已点击的对象集合
public HashSet<string> ClickedObjects { get; private set; } // 已点击的对象集合
public int CurrentObjectIndex { get; set; } // 当前对象的点击索引,仅用于按顺序点击的情况
public bool FeedbackDisplayed { get; set; } // 是否已经显示过反馈
public string StepDescription { get; set; }
public ActionWithDescription(List<GameObject> targetObjects, Action action, string description, bool isSequential,string stepDescription)
public ActionWithDescription(List<string> targetObjects, Action action, string description, bool isSequential, string stepDescription)
{
TargetObjects = targetObjects ?? new List<GameObject>();
TargetObjects = targetObjects ?? new List<string>();
Action = action;
Description = description;
IsSequential = isSequential;
ClickedObjects = new HashSet<GameObject>(); // 初始化已点击的对象集合
ClickedObjects = new HashSet<string>(); // 初始化已点击的对象集合
CurrentObjectIndex = 0; // 初始化为第一个对象
FeedbackDisplayed = false; // 初始化反馈未显示

View File

@ -6,7 +6,7 @@ namespace DefaultNamespace.ProcessMode
{
public string Type { get; set; } // 流程类型(例如:教学、培训、练习)
public List<AnimationStep> Steps { get; private set; } // 流程中的步骤列表
/// <summary>
/// 构造函数
/// </summary>
@ -16,7 +16,7 @@ namespace DefaultNamespace.ProcessMode
Type = type;
Steps = new List<AnimationStep>();
}
/// <summary>
/// 添加步骤到流程中
/// </summary>
@ -25,7 +25,7 @@ namespace DefaultNamespace.ProcessMode
{
Steps.Add(step);
}
/// <summary>
/// 计算流程的总评分
/// </summary>

View File

@ -25,12 +25,14 @@ namespace DefaultNamespace.ProcessMode
public delegate void UIEventHandler();
public delegate void SendMessagePrompt(string message);
// 定义一个事件,使用委托类型
/// <summary>
/// 全部流程结束调用方法
/// </summary>
public event CompleteEventHandler OnCompleteEvent;
public event UIEventHandler OnUIEvent;
public event SendMessagePrompt OnSendMessagePrompt;
public void AddProcess(string type)
{
@ -39,7 +41,7 @@ namespace DefaultNamespace.ProcessMode
// processes[type] = new AnimationProcess(type);
// Enum.TryParse(type, true, out currentMode);
// }
processes[type] = new AnimationProcess(type);
Enum.TryParse(type, true, out currentMode);
}
@ -58,7 +60,7 @@ namespace DefaultNamespace.ProcessMode
}
}
public void HandleClick(GameObject clickedObject)
public void HandleClick(string clickedObject)
{
string type = currentMode.ToString();
@ -77,10 +79,10 @@ namespace DefaultNamespace.ProcessMode
if (currentAction.CurrentObjectIndex < currentAction.TargetObjects.Count &&
currentAction.TargetObjects[currentAction.CurrentObjectIndex] == clickedObject)
{
Debug.Log($"正确点击了:{clickedObject.name}");
Debug.Log($"正确点击了:{clickedObject}");
currentAction.CurrentObjectIndex++; // 正确点击,递增对象索引
currentAction.ClickedObjects.Add(clickedObject); // 添加到已点击对象集合
HandleModeSpecificFeedback(currentMode, currentAction); // 处理模式特定的反馈
HandleModeFeedback(currentMode, currentAction); // 处理模式特定的反馈
if (currentAction.CurrentObjectIndex >= currentAction.TargetObjects.Count)
{
@ -89,26 +91,26 @@ namespace DefaultNamespace.ProcessMode
}
else
{
string correctObjectName = currentAction.TargetObjects[currentAction.CurrentObjectIndex].name;
Debug.Log($"错误点击或顺序错误:{clickedObject.name}。正确的物体是:{correctObjectName}");
string correctObjectName = currentAction.TargetObjects[currentAction.CurrentObjectIndex];
Debug.Log($"错误点击或顺序错误:{clickedObject}。正确的物体是:{correctObjectName}");
}
}
else
{
// 不按顺序点击的逻辑
if (currentAction.TargetObjects.Any(obj => obj.name == clickedObject.name))
if (currentAction.TargetObjects.Any(obj => obj == clickedObject))
{
if (currentAction.ClickedObjects.Any(obj => obj.name == clickedObject.name))
if (currentAction.ClickedObjects.Any(obj => obj == clickedObject))
{
Debug.Log($"错误点击:{clickedObject.name}。这个物体已经点击过。");
Debug.Log($"错误点击:{clickedObject}。这个物体已经点击过。");
return; // 如果物体已经点击过,不继续处理
}
if (!currentAction.ClickedObjects.Contains(clickedObject))
{
Debug.Log($"正确点击了:{clickedObject.name}");
Debug.Log($"正确点击了:{clickedObject}");
currentAction.ClickedObjects.Add(clickedObject); // 添加到已点击对象集合
HandleModeSpecificFeedback(currentMode, currentAction); // 处理模式特定的反馈
HandleModeFeedback(currentMode, currentAction); // 处理模式特定的反馈
if (currentAction.ClickedObjects.Count >= currentAction.TargetObjects.Count)
{
@ -118,17 +120,17 @@ namespace DefaultNamespace.ProcessMode
}
else
{
Debug.Log($"错误点击:{clickedObject.name}");
Debug.Log($"错误点击:{clickedObject}");
List<string> correctObjectNames = new List<string>();
foreach (var obj in currentAction.TargetObjects)
{
if (!currentAction.ClickedObjects.Contains(obj))
{
correctObjectNames.Add(obj.name);
correctObjectNames.Add(obj);
}
}
string correctObjects = string.Join(", ", correctObjectNames);
string correctObjects = string.Join(",", correctObjectNames);
Debug.Log($"正确的物体是:{correctObjects}");
}
}
@ -145,7 +147,6 @@ namespace DefaultNamespace.ProcessMode
{
Debug.Log($"完成了动作 {currentActionIndex + 1}");
step.PlayAnimation(currentActionIndex); // 播放当前动作的动画
DisplayActionFeedback(currentMode, currentAction); // 显示模式特定的反馈
currentActionIndex++;
currentAction.CurrentObjectIndex = 0; // 重置当前动作对象索引
@ -159,20 +160,14 @@ namespace DefaultNamespace.ProcessMode
currentStepIndex++;
if (currentStepIndex < processes[currentMode.ToString()].Steps.Count)
{
var nextStep = processes[currentMode.ToString()].Steps[currentStepIndex];
PrepareNextStep(currentMode, nextStep.Actions[0]); // 准备下一个步骤
// if (nextStep.Actions[0].StepDescription == "临时用电")
// {
// Debug.Log("临时用电临时用电临时用电临时用电临时用电临时用电临时用电临时用电临时用电临时用电");
// OnUIEvent();
// }
var nextStep = processes[currentMode.ToString()].Steps[currentStepIndex];
HandleModeFeedback(currentMode, nextStep.Actions[0]); // 准备下一个步骤
}
else
{
if (MotionEngine.GetModule<ToolsPackManager>().GetToolsPackScene() == ToolsPackScene.)
{
OnCompleteEvent();
OnCompleteEvent?.Invoke();
}
Debug.Log("全部完成了!!!!");
@ -181,73 +176,76 @@ namespace DefaultNamespace.ProcessMode
else
{
Debug.Log("开始下一个动作!");
PrepareNextStep(currentMode, step.Actions[currentActionIndex]); // 传递下一个动作对象
// if (step.Actions[currentActionIndex].StepDescription == "临时用电")
// {
// Debug.Log("临时用电临时用电临时用电临时用电临时用电临时用电临时用电临时用电临时用电临时用电");
// OnUIEvent();
// }
HandleModeFeedback(currentMode, step.Actions[currentActionIndex]); // 传递下一个动作对象
}
}
// Start is called before the first frame update
/// <summary>
/// 根据当前模式显示相应的动作反馈
/// 判断是否为最后一个动作
/// </summary>
/// <param name="mode">当前的流程模式</param>
/// <param name="action">当前的动作</param>
private void DisplayActionFeedback(ProcessMode mode, ActionWithDescription action)
/// <returns>是否为最后一个动作</returns>
private bool IsLastAction(ActionWithDescription action)
{
switch (mode)
if (currentStepIndex == processes[currentMode.ToString()].Steps.Count - 1 &&
currentActionIndex == processes[currentMode.ToString()].Steps[currentStepIndex].Actions.Count - 1)
{
case ProcessMode.Teaching:
HighlightNextObject(action); // 高亮下一个需要点击的物体
break;
case ProcessMode.Training:
//ShowTrainingStep(action); // 在右上角显示流程步骤
break;
case ProcessMode.Practice:
ShowPracticeStep(action); // 只显示当前步骤
break;
case ProcessMode.Assessment:
// 考核模式无提示
break;
return true;
}
return false;
}
/// <summary>
/// 准备下一个步骤或动作,并根据模式处理相应的提示或反馈
/// 根据当前模式处理相应的反馈逻辑,包括准备下一个步骤或动作
/// </summary>
/// <param name="mode">当前的流程模式</param>
/// <param name="nextStepOrAction">下一个步骤或动作</param>
public void PrepareNextStep(ProcessMode mode, object nextStepOrAction)
/// <param name="stepOrAction">当前步骤或动作</param>
public void HandleModeFeedback(ProcessMode mode, object stepOrAction)
{
switch (mode)
{
case ProcessMode.Teaching:
HighlightNextObject(nextStepOrAction as ActionWithDescription); // 高亮显示下一个需要点击的物体
HighlightNextObject(stepOrAction as ActionWithDescription); // 高亮下一个需要点击的物体
break;
case ProcessMode.Training:
// 在培训模式下只打印下一步骤或动作的描述
if (nextStepOrAction is ActionWithDescription action)
if (stepOrAction is ActionWithDescription action)
{
Debug.Log($"培训模式:{action.Description}");
OnSendMessagePrompt("提示:" + action.Description);
OnSendMessagePrompt?.Invoke("提示:" + action.Description);
// ShowTrainingStep(action.Description); // 在右上角显示流程步骤
}
else if (nextStepOrAction is AnimationStep step)
else if (stepOrAction is AnimationStep step)
{
if (step.Actions.Count > 0)
{
Debug.Log($"培训模式:{step.Actions[0].Description}");
OnSendMessagePrompt("提示:" + step.Actions[0].Description);
OnSendMessagePrompt?.Invoke("提示:" + step.Actions[0].Description);
// ShowTrainingStep(step.Actions[0].Description); // 在右上角显示流程步骤
}
}
break;
case ProcessMode.Practice:
// 练习模式下不需要提前显示下一个步骤的描述
if (stepOrAction is ActionWithDescription practiceAction)
{
if (IsLastAction(practiceAction))
{
ShowPracticeStep(practiceAction.Description); // 只显示当前步骤
}
}
else if (stepOrAction is AnimationStep practiceStep)
{
if (practiceStep.Actions.Count > 0)
{
if (IsLastAction(practiceStep.Actions[0]))
{
ShowPracticeStep(practiceStep.Actions[0].Description); // 只显示当前步骤
}
}
}
break;
case ProcessMode.Assessment:
// 考核模式无提示
@ -255,38 +253,6 @@ namespace DefaultNamespace.ProcessMode
}
}
/// <summary>
/// 处理模式特定的反馈逻辑
/// </summary>
/// <param name="mode">当前的流程模式</param>
/// <param name="action">当前的动作</param>
private void HandleModeSpecificFeedback(ProcessMode mode, ActionWithDescription action)
{
if (action.FeedbackDisplayed)
{
return; // 已经显示过反馈,不再重复显示
}
switch (mode)
{
case ProcessMode.Teaching:
HighlightNextObject(action); // 高亮下一个需要点击的物体
break;
case ProcessMode.Training:
//ShowTrainingStep(action.Description); // 在右上角显示流程步骤
break;
case ProcessMode.Practice:
ShowPracticeStep(action.Description); // 只显示当前步骤
break;
case ProcessMode.Assessment:
// 考核模式无提示
break;
}
action.FeedbackDisplayed = true; // 标记反馈已显示
}
/// <summary>
/// 高亮显示下一个需要点击的物体
/// </summary>
@ -295,21 +261,60 @@ namespace DefaultNamespace.ProcessMode
{
if (action != null)
{
bool hasDuplicates = action.TargetObjects.GroupBy(x => x).Any(g => g.Count() > 1);
for (int i = action.CurrentObjectIndex; i < action.TargetObjects.Count; i++)
{
GameObject nextObject = action.TargetObjects[i];
if (!action.ClickedObjects.Contains(nextObject))
string nextObject = action.TargetObjects[i];
if (hasDuplicates)
{
// 添加高亮效果的逻辑
GameObject.Find(nextObject.name).GetComponent<HighlightEffect>().highlighted = true;
Debug.Log($"高亮显示:{nextObject.name}");
break;
// 处理重复物体的高亮逻辑
int count = action.TargetObjects.Take(i).Count(o => o == nextObject); // 统计当前物体之前出现的次数
if (!action.ClickedObjects.Contains($"{nextObject}_{count}"))
{
HighlightObject(nextObject);
break;
}
}
else
{
// 无重复物体的高亮逻辑
if (!action.ClickedObjects.Contains(nextObject))
{
HighlightObject(nextObject);
break;
}
}
}
}
}
/// <summary>
/// 高亮指定的物体
/// </summary>
/// <param name="objectName">物体名称</param>
private void HighlightObject(string objectName)
{
try
{
var obj = GameObject.Find(objectName);
if (obj != null)
{
var highlightEffect = obj.GetComponent<HighlightEffect>();
if (highlightEffect != null)
{
highlightEffect.highlighted = true;
}
Debug.Log($"高亮显示:{objectName}");
}
}
catch (Exception e)
{
Debug.LogError($"Error highlighting object {objectName}: {e.Message}");
}
}
/// <summary>
/// 设置当前模式
/// </summary>
@ -321,27 +326,14 @@ namespace DefaultNamespace.ProcessMode
currentActionIndex = 0;
}
private void ShowTrainingStep(object nextStepOrAction)
{
if (nextStepOrAction is AnimationStep step)
{
Debug.Log($"培训模式:{step.StepDescription}");
}
else if (nextStepOrAction is ActionWithDescription action)
{
Debug.Log($"培训模式:{action.Description}");
}
}
private void ShowPracticeStep(object nextStepOrAction)
{
if (nextStepOrAction is AnimationStep step)
if (nextStepOrAction is ActionWithDescription practiceAction)
{
Debug.Log($"练习模式:{step.StepDescription}");
}
else if (nextStepOrAction is ActionWithDescription action)
{
Debug.Log($"练习模式:{action.Description}");
OnSendMessagePrompt(practiceAction.Description);
Debug.Log($"练习模式:{practiceAction.Description}");
}
}

View File

@ -5,10 +5,22 @@ namespace DefaultNamespace.ProcessMode
/// </summary>
public enum ProcessMode
{
Teaching, // 教学模式
Training, // 培训模式
Practice, // 练习模式
Assessment // 考核模式
/// <summary>
/// 教学模式
/// </summary>
Teaching,
/// <summary>
/// 培训模式
/// </summary>
Training,
/// <summary>
/// 练习模式
/// </summary>
Practice,
/// <summary>
/// 考核模式
/// </summary>
Assessment
}
}

View File

@ -10,70 +10,75 @@ using UnityEngine;
namespace DefaultNamespace.ProcessMode
{
[ScriptDescription("现场场景的流程启动器")]
[ScriptDescription("场景的流程启动器")]
public class SceneProcessLauncher : MonoBehaviour
{
private AnimationProcessManager processManager;
[SerializeField] private ToolsPackScene _toolsPackScene;
[SerializeField] private ProcessMode _processMode;
private async void Start()
{
await Task.Delay(TimeSpan.FromSeconds(1));
processManager = MotionEngine.GetModule<AnimationProcessManager>();
processManager.ClearProcess();
processManager.AddProcess(MotionEngine.GetModule<DataConfigManager>().GetProcessMode().ToString());
string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/SceneStepData.json");
_processMode = MotionEngine.GetModule<DataConfigManager>().GetProcessMode();
processManager.AddProcess(_processMode.ToString());
string json = "";
if (_toolsPackScene == ToolsPackScene.)
{
json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/ToolsSceneStepData.json");
}
else
{
json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/SceneStepData.json");
}
StepsContainer stepsContainer = JsonConvert.DeserializeObject<StepsContainer>(json);
foreach (var stepData in stepsContainer.Steps)
{
List<ActionWithDescription> actions = new List<ActionWithDescription>();
foreach (var actionData in stepData.Actions)
{
List<GameObject> targetObjects = new List<GameObject>();
List<string> targetObjects = new List<string>();
foreach (var objectName in actionData.TargetObjects)
{
GameObject obj = GameObject.Find(objectName);
if (obj != null)
{
targetObjects.Add(obj);
}
else
{
Debug.LogError($"Object not found: {objectName}");
}
targetObjects.Add(objectName);
}
Action action = () => { };
actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential,stepData.StepDescription));
actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential, stepData.StepDescription));
}
AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions);
processManager.AddStepToProcess(MotionEngine.GetModule<DataConfigManager>().GetProcessMode().ToString(), step);
processManager.AddStepToProcess(_processMode.ToString(), step);
}
InitializeFirstStep();
if (_processMode == ProcessMode.Teaching)
InitializeFirstStep();
}
private void InitializeFirstStep()
{
ProcessMode initialMode = ProcessMode.Training; // 假设初始模式是教学模式
MotionEngine.GetModule<AnimationProcessManager>().SetCurrentMode(initialMode);
MotionEngine.GetModule<AnimationProcessManager>().SetCurrentMode(_processMode);
if (MotionEngine.GetModule<AnimationProcessManager>().CurrentProcess.Steps.Count > 0)
{
AnimationStep firstStep = MotionEngine.GetModule<AnimationProcessManager>().CurrentProcess.Steps[0];
if (firstStep.Actions.Count > 0)
{
MotionEngine.GetModule<AnimationProcessManager>().PrepareNextStep(initialMode, firstStep.Actions[0]);
MotionEngine.GetModule<AnimationProcessManager>().HandleModeFeedback(_processMode, firstStep.Actions[0]);
}
}
}

View File

@ -46,7 +46,7 @@ namespace ToolsPack
if ( MotionEngine.GetModule<ToolsPackManager>().GetToolsPackScene() == ToolsPackScene.)
{
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(this.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(this.gameObject.name);
if (IsClick)
MotionEngine.GetModule<ToolsPackManager>().AddToolsPack(this.name, this.gameObject);
this.gameObject.SetActive(false);

View File

@ -1,86 +1,78 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using DefaultNamespace;
using DefaultNamespace.Dto;
using DefaultNamespace.ProcessMode;
using MotionFramework;
using Newtonsoft.Json;
using UnityEngine;
namespace ToolsPack
{
[ScriptDescription("工具间场景的流程启动器")]
public class ToolsSceneProcessLauncher : MonoBehaviour
{
private AnimationProcessManager processManager;
private async void Start()
{
await Task.Delay(TimeSpan.FromSeconds(1));
processManager = MotionEngine.GetModule<AnimationProcessManager>();
processManager.ClearProcess();
processManager.AddProcess( MotionEngine.GetModule<DataConfigManager>().GetProcessMode().ToString());
string json = System.IO.File.ReadAllText(Application.streamingAssetsPath + "/DataConfig/ToolsSceneStepData.json");
StepsContainer stepsContainer = JsonConvert.DeserializeObject<StepsContainer>(json);
foreach (var stepData in stepsContainer.Steps)
{
List<ActionWithDescription> actions = new List<ActionWithDescription>();
foreach (var actionData in stepData.Actions)
{
List<GameObject> targetObjects = new List<GameObject>();
foreach (var objectName in actionData.TargetObjects)
{
GameObject obj = GameObject.Find(objectName);
if (obj != null)
{
targetObjects.Add(obj);
}
else
{
// Debug.LogError($"Object not found: {objectName}");
}
}
Action action = () => { };
actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential,stepData.StepDescription));
}
AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions);
processManager.AddStepToProcess(MotionEngine.GetModule<DataConfigManager>().GetProcessMode().ToString(), step);
}
InitializeFirstStep();
}
private void InitializeFirstStep()
{
MotionEngine.GetModule<AnimationProcessManager>().SetCurrentMode(MotionEngine.GetModule<DataConfigManager>().GetProcessMode());
if (MotionEngine.GetModule<AnimationProcessManager>().CurrentProcess.Steps.Count > 0)
{
AnimationStep firstStep = MotionEngine.GetModule<AnimationProcessManager>().CurrentProcess.Steps[0];
if (firstStep.Actions.Count > 0)
{
MotionEngine.GetModule<AnimationProcessManager>().PrepareNextStep(MotionEngine.GetModule<DataConfigManager>().GetProcessMode(), firstStep.Actions[0]);
}
}
}
}
}
// using System;
// using System.Collections;
// using System.Collections.Generic;
// using System.Threading.Tasks;
// using DefaultNamespace;
// using DefaultNamespace.Dto;
// using DefaultNamespace.ProcessMode;
// using MotionFramework;
// using Newtonsoft.Json;
// using UnityEngine;
//
// namespace ToolsPack
// {
//
//
// [ScriptDescription("工具间场景的流程启动器")]
// public class ToolsSceneProcessLauncher : MonoBehaviour
// {
// private AnimationProcessManager processManager;
//
//
// private async void Start()
// {
// await Task.Delay(TimeSpan.FromSeconds(1));
//
//
// processManager = MotionEngine.GetModule<AnimationProcessManager>();
//
//
// processManager.ClearProcess();
//
//
// processManager.AddProcess( MotionEngine.GetModule<DataConfigManager>().GetProcessMode().ToString());
//
// string json =
// StepsContainer stepsContainer = JsonConvert.DeserializeObject<StepsContainer>(json);
//
//
// foreach (var stepData in stepsContainer.Steps)
// {
// List<ActionWithDescription> actions = new List<ActionWithDescription>();
//
// foreach (var actionData in stepData.Actions)
// {
// List<string> targetObjects = new List<string>();
// foreach (var objectName in actionData.TargetObjects)
// {
// targetObjects.Add(objectName);
// }
//
// Action action = () => { };
// actions.Add(new ActionWithDescription(targetObjects, action, actionData.Description, actionData.IsSequential,stepData.StepDescription));
// }
//
// AnimationStep step = new AnimationStep(stepData.StepDescription, stepData.Score, actions);
// processManager.AddStepToProcess(MotionEngine.GetModule<DataConfigManager>().GetProcessMode().ToString(), step);
// }
//
// InitializeFirstStep();
//
// }
//
// private void InitializeFirstStep()
// {
// MotionEngine.GetModule<AnimationProcessManager>().SetCurrentMode(MotionEngine.GetModule<DataConfigManager>().GetProcessMode());
//
// if (MotionEngine.GetModule<AnimationProcessManager>().CurrentProcess.Steps.Count > 0)
// {
// AnimationStep firstStep = MotionEngine.GetModule<AnimationProcessManager>().CurrentProcess.Steps[0];
// if (firstStep.Actions.Count > 0)
// {
// MotionEngine.GetModule<AnimationProcessManager>().HandleModeFeedback(MotionEngine.GetModule<DataConfigManager>().GetProcessMode(), firstStep.Actions[0]);
// }
// }
// }
//
// }
// }

View File

@ -14,7 +14,7 @@ public class test1 : MonoBehaviour
{
this.GetComponent<Button>().onClick.AddListener(delegate
{
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(this.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(this.gameObject.name);
});
}

View File

@ -58,14 +58,14 @@ public class Seal : MonoBehaviour
if (hit.collider.gameObject.name == "集中器_封印_L碰撞")
{
Sealcol[0].gameObject.SetActive(true);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "集中器_封印R碰撞 ")
{
Sealcol[1].gameObject.SetActive(true);
CabinetDoorLatch.GetComponent<BoxCollider>().enabled = true;
SparentoverCol.GetComponent<BoxCollider>().enabled = true;
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}
}

View File

@ -147,20 +147,6 @@
}
]
},
{
"stepDescription": "更换集中器",
"score": 0,
"actions": [
{
"description": "更换集中器",
"score": 0,
"isSequential": true,
"targetObjects": [
"pCylinder170"
]
}
]
},
{
"stepDescription": "更换集中器",
"score": 0,

View File

@ -1 +1 @@
2024-06-14 15:04:12#'sxfz://;lyht,1,18,userId,username,token,90;/'|
2024-06-14 15:04:12#'sxfz://;lyht,2,18,userId,username,token,90;/'|

View File

@ -69,7 +69,7 @@ public class concentrator : MonoBehaviour
if (hit.collider.gameObject.name == "新的集中器碰撞")
{
StartCoroutine(Newconcentrator());
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
Debug.Log(hit.collider.gameObject.name); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
for (int i = 0; i < ScrewObj.Length; i++)
{
@ -84,7 +84,7 @@ public class concentrator : MonoBehaviour
{
if (isplaying)
{
StartCoroutine(IEElectricWire()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
StartCoroutine(IEElectricWire()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
isplaying = false;
}
}

View File

@ -54,7 +54,7 @@ using UnityEngine;
{
if (hit.collider.gameObject.name == "pCylinder170")
{
StartCoroutine(Tape()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
StartCoroutine(Tape()); MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}
}

View File

@ -112,31 +112,31 @@ public class Pliers : MonoBehaviour
PliersObj.gameObject.transform.SetParent(null);
StartCoroutine(PliersIE());
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "接线盒_封印R")
{
StartCoroutine(JunctionBoxRight());
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "接线盒_封印L")
{
StartCoroutine(JunctionBoxLeft());
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "集中器_封印R")
{
StartCoroutine(RightRconcentrator());
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "集中器_封印_L")
{
StartCoroutine(LeftRconcentrator());
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}
}

View File

@ -59,7 +59,7 @@ public class ElectricCheckPen : MonoBehaviour
ElectricCheckPenOBJ.gameObject.transform.SetParent(null);
ElectricCheckPenOBJ.gameObject.transform.DOLocalMove(new Vector3(303.038f, 2.655f, 163.822f), 2f);
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "²å×ù")
{
@ -67,7 +67,7 @@ public class ElectricCheckPen : MonoBehaviour
StartCoroutine(socket());
//Warninglight();
Debug.Log(hit.collider.gameObject.name);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}
}

View File

@ -100,7 +100,7 @@ public class Fieldobservation : MonoBehaviour
BOXseal[1].enabled = true;
//isbox = false;
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
@ -111,7 +111,7 @@ public class Fieldobservation : MonoBehaviour
parentoverSeal[0].gameObject.SetActive(true);
isbox = false;
}
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == ¸Ã÷¸Ç×Ó·âÓ¡ÅöײL")
{
@ -121,7 +121,7 @@ public class Fieldobservation : MonoBehaviour
guimenkashuan.enabled = true;
isbox = false;
}
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "¹ñÃÅ¿¨Ë¨")
{
@ -131,13 +131,13 @@ public class Fieldobservation : MonoBehaviour
guimenbox.GetComponent<BoxCollider>().enabled = true;
isbox = false;
// }
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
if (hit.collider.gameObject.name == "µç¹ñÃÅ·âÓ¡boxÅöײ")
{
fengy.gameObject.SetActive(true);
fengy.transform.localPosition = new Vector3(0.6371536f, 0.02661133f, -0.01525164f);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(hit.collider.gameObject.name);
}
}
}

View File

@ -47,7 +47,7 @@ public class WorkPermit : MonoBehaviour
Dialogbox.gameObject.SetActive(false);
DialogboxText.text = null;
Destroy(WorkPermitObj);
MotionEngine.GetModule<AnimationProcessManager>().HandleClick(GameObject.Find("Man_stand"));
MotionEngine.GetModule<AnimationProcessManager>().HandleClick("Man_stand");
});

View File

@ -1,90 +1,63 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NaughtyAttributes.Core", "NaughtyAttributes.Core.csproj", "{70C866B3-6982-AEAE-4186-8220020279AA}"
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NaughtyAttributes.Core", "NaughtyAttributes.Core.csproj", "{b366c870-8269-aeae-4186-8220020279aa}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Linq", "UniTask.Linq.csproj", "{328AEAE8-36DB-0919-A8A7-26F06060F4D3}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Linq", "UniTask.Linq.csproj", "{e8ea8a32-db36-1909-a8a7-26f06060f4d3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-firstpass", "Assembly-CSharp-firstpass.csproj", "{D8880EA9-DBBA-9941-850A-29EEEE6B3832}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-firstpass", "Assembly-CSharp-firstpass.csproj", "{a90e88d8-badb-4199-850a-29eeee6b3832}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask", "UniTask.csproj", "{431CD62F-2442-CB9F-8A4A-9397608E2318}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask", "UniTask.csproj", "{2fd61c43-4224-9fcb-8a4a-9397608e2318}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{99E7EFED-28DC-D24D-3165-1ACB9E1A5D82}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly-CSharp.csproj", "{edefe799-dc28-4dd2-3165-1acb9e1a5d82}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NaughtyAttributes.Test", "NaughtyAttributes.Test.csproj", "{804E5D77-8A7B-13C1-E64A-F0327B5A51D2}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NaughtyAttributes.Test", "NaughtyAttributes.Test.csproj", "{775d4e80-7b8a-c113-e64a-f0327b5a51d2}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NaughtyAttributes.Editor", "NaughtyAttributes.Editor.csproj", "{89912F7C-9D47-5C67-B95E-C95F88C2A560}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NaughtyAttributes.Editor", "NaughtyAttributes.Editor.csproj", "{7c2f9189-479d-675c-b95e-c95f88c2a560}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MotionFramework", "MotionFramework.csproj", "{8526E427-FBAD-A00A-06E3-F5025D183005}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MotionFramework", "MotionFramework.csproj", "{27e42685-adfb-0aa0-06e3-f5025d183005}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Addressables", "UniTask.Addressables.csproj", "{3EBE0A4D-FF2E-4151-CB61-B756EB38B78B}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Addressables", "UniTask.Addressables.csproj", "{4d0abe3e-2eff-5141-cb61-b756eb38b78b}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{CA93E3BA-F2B3-5C03-979C-FF7E0D806194}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{bae393ca-b3f2-035c-979c-ff7e0d806194}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.TextMeshPro", "UniTask.TextMeshPro.csproj", "{2D23DF76-3788-F610-4EB2-65D4B80D2C66}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.TextMeshPro", "UniTask.TextMeshPro.csproj", "{76df232d-8837-10f6-4eb2-65d4b80d2c66}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.DOTween", "UniTask.DOTween.csproj", "{5569EEC5-5613-62FE-795C-07A46B224741}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.DOTween", "UniTask.DOTween.csproj", "{c5ee6955-1356-fe62-795c-07a46b224741}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Editor", "UniTask.Editor.csproj", "{53349ADB-6DD3-9261-985B-3E8CC856B5BD}"
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UniTask.Editor", "UniTask.Editor.csproj", "{db9a3453-d36d-6192-985b-3e8cc856b5bd}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{70C866B3-6982-AEAE-4186-8220020279AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{70C866B3-6982-AEAE-4186-8220020279AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{70C866B3-6982-AEAE-4186-8220020279AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{70C866B3-6982-AEAE-4186-8220020279AA}.Release|Any CPU.Build.0 = Release|Any CPU
{328AEAE8-36DB-0919-A8A7-26F06060F4D3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{328AEAE8-36DB-0919-A8A7-26F06060F4D3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{328AEAE8-36DB-0919-A8A7-26F06060F4D3}.Release|Any CPU.ActiveCfg = Release|Any CPU
{328AEAE8-36DB-0919-A8A7-26F06060F4D3}.Release|Any CPU.Build.0 = Release|Any CPU
{D8880EA9-DBBA-9941-850A-29EEEE6B3832}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{D8880EA9-DBBA-9941-850A-29EEEE6B3832}.Debug|Any CPU.Build.0 = Debug|Any CPU
{D8880EA9-DBBA-9941-850A-29EEEE6B3832}.Release|Any CPU.ActiveCfg = Release|Any CPU
{D8880EA9-DBBA-9941-850A-29EEEE6B3832}.Release|Any CPU.Build.0 = Release|Any CPU
{431CD62F-2442-CB9F-8A4A-9397608E2318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{431CD62F-2442-CB9F-8A4A-9397608E2318}.Debug|Any CPU.Build.0 = Debug|Any CPU
{431CD62F-2442-CB9F-8A4A-9397608E2318}.Release|Any CPU.ActiveCfg = Release|Any CPU
{431CD62F-2442-CB9F-8A4A-9397608E2318}.Release|Any CPU.Build.0 = Release|Any CPU
{99E7EFED-28DC-D24D-3165-1ACB9E1A5D82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{99E7EFED-28DC-D24D-3165-1ACB9E1A5D82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{99E7EFED-28DC-D24D-3165-1ACB9E1A5D82}.Release|Any CPU.ActiveCfg = Release|Any CPU
{99E7EFED-28DC-D24D-3165-1ACB9E1A5D82}.Release|Any CPU.Build.0 = Release|Any CPU
{804E5D77-8A7B-13C1-E64A-F0327B5A51D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{804E5D77-8A7B-13C1-E64A-F0327B5A51D2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{804E5D77-8A7B-13C1-E64A-F0327B5A51D2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{804E5D77-8A7B-13C1-E64A-F0327B5A51D2}.Release|Any CPU.Build.0 = Release|Any CPU
{89912F7C-9D47-5C67-B95E-C95F88C2A560}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{89912F7C-9D47-5C67-B95E-C95F88C2A560}.Debug|Any CPU.Build.0 = Debug|Any CPU
{89912F7C-9D47-5C67-B95E-C95F88C2A560}.Release|Any CPU.ActiveCfg = Release|Any CPU
{89912F7C-9D47-5C67-B95E-C95F88C2A560}.Release|Any CPU.Build.0 = Release|Any CPU
{8526E427-FBAD-A00A-06E3-F5025D183005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8526E427-FBAD-A00A-06E3-F5025D183005}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8526E427-FBAD-A00A-06E3-F5025D183005}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8526E427-FBAD-A00A-06E3-F5025D183005}.Release|Any CPU.Build.0 = Release|Any CPU
{3EBE0A4D-FF2E-4151-CB61-B756EB38B78B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3EBE0A4D-FF2E-4151-CB61-B756EB38B78B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3EBE0A4D-FF2E-4151-CB61-B756EB38B78B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3EBE0A4D-FF2E-4151-CB61-B756EB38B78B}.Release|Any CPU.Build.0 = Release|Any CPU
{CA93E3BA-F2B3-5C03-979C-FF7E0D806194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CA93E3BA-F2B3-5C03-979C-FF7E0D806194}.Debug|Any CPU.Build.0 = Debug|Any CPU
{CA93E3BA-F2B3-5C03-979C-FF7E0D806194}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CA93E3BA-F2B3-5C03-979C-FF7E0D806194}.Release|Any CPU.Build.0 = Release|Any CPU
{2D23DF76-3788-F610-4EB2-65D4B80D2C66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2D23DF76-3788-F610-4EB2-65D4B80D2C66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2D23DF76-3788-F610-4EB2-65D4B80D2C66}.Release|Any CPU.ActiveCfg = Release|Any CPU
{2D23DF76-3788-F610-4EB2-65D4B80D2C66}.Release|Any CPU.Build.0 = Release|Any CPU
{5569EEC5-5613-62FE-795C-07A46B224741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5569EEC5-5613-62FE-795C-07A46B224741}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5569EEC5-5613-62FE-795C-07A46B224741}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5569EEC5-5613-62FE-795C-07A46B224741}.Release|Any CPU.Build.0 = Release|Any CPU
{53349ADB-6DD3-9261-985B-3E8CC856B5BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{53349ADB-6DD3-9261-985B-3E8CC856B5BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{53349ADB-6DD3-9261-985B-3E8CC856B5BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{53349ADB-6DD3-9261-985B-3E8CC856B5BD}.Release|Any CPU.Build.0 = Release|Any CPU
{b366c870-8269-aeae-4186-8220020279aa}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{b366c870-8269-aeae-4186-8220020279aa}.Debug|Any CPU.Build.0 = Debug|Any CPU
{e8ea8a32-db36-1909-a8a7-26f06060f4d3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{e8ea8a32-db36-1909-a8a7-26f06060f4d3}.Debug|Any CPU.Build.0 = Debug|Any CPU
{a90e88d8-badb-4199-850a-29eeee6b3832}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{a90e88d8-badb-4199-850a-29eeee6b3832}.Debug|Any CPU.Build.0 = Debug|Any CPU
{2fd61c43-4224-9fcb-8a4a-9397608e2318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{2fd61c43-4224-9fcb-8a4a-9397608e2318}.Debug|Any CPU.Build.0 = Debug|Any CPU
{edefe799-dc28-4dd2-3165-1acb9e1a5d82}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{edefe799-dc28-4dd2-3165-1acb9e1a5d82}.Debug|Any CPU.Build.0 = Debug|Any CPU
{775d4e80-7b8a-c113-e64a-f0327b5a51d2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{775d4e80-7b8a-c113-e64a-f0327b5a51d2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7c2f9189-479d-675c-b95e-c95f88c2a560}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7c2f9189-479d-675c-b95e-c95f88c2a560}.Debug|Any CPU.Build.0 = Debug|Any CPU
{27e42685-adfb-0aa0-06e3-f5025d183005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{27e42685-adfb-0aa0-06e3-f5025d183005}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4d0abe3e-2eff-5141-cb61-b756eb38b78b}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4d0abe3e-2eff-5141-cb61-b756eb38b78b}.Debug|Any CPU.Build.0 = Debug|Any CPU
{bae393ca-b3f2-035c-979c-ff7e0d806194}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{bae393ca-b3f2-035c-979c-ff7e0d806194}.Debug|Any CPU.Build.0 = Debug|Any CPU
{76df232d-8837-10f6-4eb2-65d4b80d2c66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{76df232d-8837-10f6-4eb2-65d4b80d2c66}.Debug|Any CPU.Build.0 = Debug|Any CPU
{c5ee6955-1356-fe62-795c-07a46b224741}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{c5ee6955-1356-fe62-795c-07a46b224741}.Debug|Any CPU.Build.0 = Debug|Any CPU
{db9a3453-d36d-6192-985b-3e8cc856b5bd}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{db9a3453-d36d-6192-985b-3e8cc856b5bd}.Debug|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE