Exemplo n.º 1
0
    /// <summary>
    /// 检查设置
    /// </summary>
    public void CheckDataSetting()
    {
        bool      result         = false;
        ARManager sceneARManager = GameObject.FindObjectOfType <ARManager>();

        if (sceneARManager != null)
        {
            sceneARManager.ARAssetsConfig = ConfigObject; result = true;
        }
        for (int i = 0; i < TrackAssets.Count; i++)
        {
            for (int j = 0; j < TrackAssets[i].targetObjects.Count; j++)
            {
                if (TrackAssets[i].targetObjects[j].ManagerComponent == "")
                {
                    TrackTarget trackObject =
                        TrackAssets[i].targetObjects[j];
                    trackObject.ManagerComponent = AssetDatabase.LoadAssetAtPath <MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").GetClass().Name;
                    //Debug.LogWarning(AssetDatabase.LoadAssetAtPath<MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").GetClass().Name);
                    // Debug.Log(trackObject.ManagerComponent.name);
                    TrackAssets[i].targetObjects[j] = trackObject;
                    result = true;
                }
            }
        }

        if (result)
        {
            Debug.LogWarning("配置文件设置已更新!");
        }
    }
Exemplo n.º 2
0
    public void ConfirmChanges()
    {
        if (configObject == null)
        {
            Debug.LogError("未填写配置文件");
            return;
        }
        foreach (DataSetting datas in configObject.TrackAssets)
        {
            int colums = configObject.TrackAssets.IndexOf(datas);
            for (int i = 0; i < datas.targetObjects.Count; i++)
            {
                int        row             = datas.targetObjects.IndexOf(datas.targetObjects[i]);
                GameObject SelectionTarget = GameObject.Find(datas.targetObjects[i].id);
                if (SelectionTarget == null)
                {
                    continue;
                }
                if (SelectionTarget.transform.childCount == 0)
                {
                    continue;
                }
                GameObject  prefab    = SelectionTarget.transform.GetChild(0).gameObject;
                TrackTarget tTarget   = configObject.TrackAssets[colums].targetObjects[row];
                string      assetPath = AssetDatabase.GetAssetPath(prefab);
                //Debug.LogWarning(assetPath);
                if (assetPath != "")
                {
                    tTarget.prefab = AssetDatabase.LoadAssetAtPath <GameObject>(assetPath);
                }
                else
                {
                    if (!AssetDatabase.IsValidFolder("Assets/Prefabs"))
                    {
                        AssetDatabase.CreateFolder("Assets", "Prefabs");
                    }
                    bool result = true;
                    PrefabUtility.SaveAsPrefabAsset(prefab, "Assets/Prefabs/" + datas.targetObjects[i].id + "_ARPrefab.prefab", out result);
                    if (result)
                    {
                        tTarget.prefab = AssetDatabase.LoadAssetAtPath <GameObject>("Assets/Prefabs/" + datas.targetObjects[i].id + "_ARPrefab.prefab");
                    }
                }
                //Debug.LogWarning(SelectionTarget.transform.GetChild(0).gameObject);

                tTarget.localOffset   = prefab.transform.localPosition;
                tTarget.localRotation = prefab.transform.localRotation;
                tTarget.localScale    = prefab.transform.localScale;
                configObject.TrackAssets[colums].targetObjects[row] = tTarget;
            }
        }
        AssetDatabase.SaveAssets();
        Debug.LogWarning("保存成功");
        AssetDatabase.Refresh();
        GiveUpChanges();
        AssetConfig.EditARAssetsAdapte();
        Selection.activeObject = configObject;
    }
Exemplo n.º 3
0
    public void UpdateDataSetting(TextAsset targetXml)
    {
        List <ImageSize> list = ReadARTrackXml(targetXml.text);

        List <DataSetting> dTarget = new List <DataSetting>(
            (from DataSetting dt in TrackAssets where dt.xmlName == targetXml.name select dt));

        if (dTarget.Count == 0)//不存在DataSet
        {
            DataSetting tData = new DataSetting();
            tData.targetObjects = new List <TrackTarget>();
            tData.xmlName       = targetXml.name;
            //增加ImageTarget
            foreach (ImageSize imageSize in list)
            {
                TrackTarget tTarget = new TrackTarget();
                tTarget.id               = imageSize.id;
                tTarget.width            = imageSize.size.x;
                tTarget.height           = imageSize.size.y;
                tTarget.localScale       = new Vector3(1.0f, 1.0f, imageSize.size.y / imageSize.size.x);
                tTarget.ManagerComponent = AssetDatabase.LoadAssetAtPath <MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").name;
                tData.targetObjects.Add(tTarget);
            }
            TrackAssets.Add(tData);
        }
        else//存在DataSet
        {
            DataSetting dataSetting = dTarget[0];
            foreach (ImageSize imageSize in list)
            {
                List <TrackTarget> selectionList = new List <TrackTarget>(
                    from TrackTarget t in dataSetting.targetObjects
                    where t.id == imageSize.id select t);
                if (selectionList.Count == 0)
                {
                    int         dataSettingIndex = TrackAssets.IndexOf(dataSetting);
                    TrackTarget newTrack         = new TrackTarget();
                    newTrack.id     = imageSize.id;
                    newTrack.width  = imageSize.size.x;
                    newTrack.height = imageSize.size.y;
                    TrackAssets[dataSettingIndex].targetObjects.Add(newTrack);
                }
            }
        }
    }
Exemplo n.º 4
0
    public void CreateDataSetting(TextAsset targetXml)
    {
        List <ImageSize> list  = ReadARTrackXml(targetXml.text);
        DataSetting      tData = new DataSetting();

        tData.targetObjects = new List <TrackTarget>();
        tData.xmlName       = targetXml.name;
        //增加ImageTarget
        foreach (ImageSize imageSize in list)
        {
            TrackTarget tTarget = new TrackTarget();
            tTarget.id               = imageSize.id;
            tTarget.width            = imageSize.size.x;
            tTarget.height           = imageSize.size.y;
            tTarget.localScale       = new Vector3(1.0f, 1.0f, imageSize.size.x / imageSize.size.y);
            tTarget.ManagerComponent = AssetDatabase.LoadAssetAtPath <MonoScript>("Assets/Vuforia/Scripts/DefaultTrackableEventHandler.cs").name;
            tData.targetObjects.Add(tTarget);
        }
        if (TrackAssets == null)
        {
            TrackAssets = new List <DataSetting>();
        }
        TrackAssets.Add(tData);
    }
Exemplo n.º 5
0
 void Start()
 {
     tracker = GetComponent <TrackTarget>();
 }