Ejemplo n.º 1
0
    private static void UpdateGeometry(IEditorCylinderTargetBehaviour ct, float sideLength, float topDiameter, float bottomDiameter, bool hasTopGeometry, bool hasBottomGeometry)
    {
        GameObject   gameObject = ct.gameObject;
        MeshRenderer component  = gameObject.GetComponent <MeshRenderer>();

        if (component == null)
        {
            component = gameObject.AddComponent <MeshRenderer>();
        }
        component.hideFlags = HideFlags.NotEditable;
        MeshFilter filter = gameObject.GetComponent <MeshFilter>();

        if (filter == null)
        {
            filter = gameObject.AddComponent <MeshFilter>();
        }
        filter.hideFlags = HideFlags.NotEditable;
        Mesh mesh = CylinderMeshFactory.CreateCylinderMesh(sideLength, topDiameter, bottomDiameter, 0x20, hasTopGeometry, hasBottomGeometry, true);

        filter.sharedMesh = mesh;
        MaskOutAbstractBehaviour behaviour = gameObject.GetComponent <MaskOutAbstractBehaviour>();

        if (behaviour == null)
        {
            Material material = (Material)AssetDatabase.LoadAssetAtPath("Assets/Qualcomm Augmented Reality/Materials/DepthMask.mat", typeof(Material));
            behaviour = BehaviourComponentFactory.Instance.AddMaskOutBehaviour(gameObject);
            behaviour.maskMaterial = material;
        }
        behaviour.hideFlags = HideFlags.NotEditable;
        EditorUtility.UnloadUnusedAssets();
    }
Ejemplo n.º 2
0
 internal static void UpdateParts(SerializedMultiTarget serializedObject, ConfigData.MultiTargetPartData[] prtConfigs)
 {
     foreach (MultiTargetAbstractBehaviour current in serializedObject.GetBehaviours())
     {
         Transform transform = current.transform.Find("ChildTargets");
         if (transform == null)
         {
             GameObject expr_38 = new GameObject();
             expr_38.name             = "ChildTargets";
             expr_38.transform.parent = current.transform;
             transform = expr_38.transform;
         }
         transform.localPosition = Vector3.zero;
         transform.localRotation = Quaternion.identity;
         transform.localScale    = Vector3.one;
         Material   maskMaterial = AssetDatabase.LoadAssetAtPath <Material>("Assets/Vuforia/Materials/DepthMask.mat");
         ConfigData configData   = ConfigDataManager.Instance.GetConfigData(serializedObject.GetDataSetName());
         if (configData == null)
         {
             Debug.LogError("Could not update Multi Target parts. A data set with the given name does not exist.");
             UnityEngine.Object.DestroyImmediate(transform);
         }
         else
         {
             if (MultiTargetEditor.mPlaneMesh == null)
             {
                 Mesh mesh = new Mesh();
                 mesh.vertices = new Vector3[]
                 {
                     new Vector3(-0.5f, 0f, -0.5f),
                     new Vector3(-0.5f, 0f, 0.5f),
                     new Vector3(0.5f, 0f, -0.5f),
                     new Vector3(0.5f, 0f, 0.5f)
                 };
                 mesh.uv = new Vector2[]
                 {
                     new Vector2(1f, 1f),
                     new Vector2(1f, 0f),
                     new Vector2(0f, 1f),
                     new Vector2(0f, 0f)
                 };
                 mesh.normals   = new Vector3[4];
                 mesh.triangles = new int[]
                 {
                     0,
                     1,
                     2,
                     2,
                     1,
                     3
                 };
                 MultiTargetEditor.mPlaneMesh = mesh;
                 MultiTargetEditor.mPlaneMesh.RecalculateNormals();
             }
             List <GameObject> list = new List <GameObject>();
             for (int i = 0; i < transform.childCount; i++)
             {
                 list.Add(transform.GetChild(i).gameObject);
             }
             int num = prtConfigs.Length;
             for (int j = 0; j < num; j++)
             {
                 if (!configData.ImageTargetExists(prtConfigs[j].name))
                 {
                     Debug.LogError("No Image Target named " + prtConfigs[j].name);
                 }
                 else
                 {
                     ConfigData.ImageTargetData imageTargetData;
                     configData.GetImageTarget(prtConfigs[j].name, out imageTargetData);
                     GameObject gameObject = null;
                     if (list.Count > 0)
                     {
                         gameObject = list[0];
                         list.RemoveAt(0);
                         if (gameObject.GetComponent <MeshRenderer>() == null || gameObject.GetComponent <MeshFilter>() == null || gameObject.GetComponent <MaskOutAbstractBehaviour>() == null)
                         {
                             UnityEngine.Object.DestroyImmediate(gameObject);
                             gameObject = null;
                         }
                     }
                     if (gameObject == null)
                     {
                         gameObject = new GameObject();
                         gameObject.AddComponent <MeshRenderer>();
                         gameObject.AddComponent <MeshFilter>().sharedMesh = MultiTargetEditor.mPlaneMesh;
                         gameObject.transform.parent = transform.transform;
                         MaskOutAbstractBehaviour maskOutAbstractBehaviour = BehaviourComponentFactory.Instance.AddMaskOutBehaviour(gameObject);
                         if (maskOutAbstractBehaviour != null)
                         {
                             maskOutAbstractBehaviour.maskMaterial = maskMaterial;
                         }
                     }
                     gameObject.name = prtConfigs[j].name;
                     Vector2 size       = imageTargetData.size;
                     Vector3 localScale = new Vector3(size.x, 1f, size.y);
                     gameObject.transform.localPosition = prtConfigs[j].translation;
                     gameObject.transform.localRotation = prtConfigs[j].rotation;
                     gameObject.transform.localScale    = localScale;
                     MultiTargetEditor.UpdateMaterial(serializedObject.GetDataSetName(), gameObject);
                 }
             }
             using (List <GameObject> .Enumerator enumerator2 = list.GetEnumerator())
             {
                 while (enumerator2.MoveNext())
                 {
                     UnityEngine.Object.DestroyImmediate(enumerator2.Current);
                 }
             }
         }
     }
 }