public void OnEnable()
    {
        MarkerAbstractBehaviour target = (MarkerAbstractBehaviour)base.target;

        if (QCARUtilities.GetPrefabType(target) != PrefabType.Prefab)
        {
            if (!SceneManager.Instance.SceneInitialized)
            {
                SceneManager.Instance.InitScene();
            }
            IEditorMarkerBehaviour behaviour2 = target;
            if (!behaviour2.InitializedInEditor && !EditorApplication.isPlaying)
            {
                behaviour2.SetMarkerID(SceneManager.Instance.GetNextFrameMarkerID());
                CreateMesh(target);
                behaviour2.SetNameForTrackable("FrameMarker" + behaviour2.MarkerID);
                target.name = "FrameMarker" + behaviour2.MarkerID;
                behaviour2.SetInitializedInEditor(true);
                EditorUtility.SetDirty(target);
                SceneManager.Instance.SceneUpdated();
            }
            else if (!EditorApplication.isPlaying)
            {
                CheckMesh(target);
            }
            behaviour2.SetPreviousScale(target.transform.localScale);
        }
    }
    public static void CreateMesh(MarkerAbstractBehaviour marker)
    {
        GameObject gameObject = marker.gameObject;
        MeshFilter component  = gameObject.GetComponent <MeshFilter>();

        if (component == null)
        {
            component = gameObject.AddComponent <MeshFilter>();
        }
        Vector3 vector  = new Vector3(-0.5f, 0f, -0.5f);
        Vector3 vector2 = new Vector3(-0.5f, 0f, 0.5f);
        Vector3 vector3 = new Vector3(0.5f, 0f, -0.5f);
        Vector3 vector4 = new Vector3(0.5f, 0f, 0.5f);
        Mesh    mesh    = new Mesh();

        mesh.vertices  = new Vector3[] { vector, vector2, vector3, vector4 };
        mesh.triangles = new int[] { 0, 1, 2, 2, 1, 3 };
        mesh.uv        = new Vector2[] { new Vector2(0f, 0f), new Vector2(0f, 1f), new Vector2(1f, 0f), new Vector2(1f, 1f) };
        mesh.normals   = new Vector3[mesh.vertices.Length];
        mesh.RecalculateNormals();
        component.mesh = mesh;
        if (gameObject.GetComponent <MeshRenderer>() == null)
        {
            MeshRenderer renderer = gameObject.AddComponent <MeshRenderer>();
        }
        EditorUtility.UnloadUnusedAssets();
    }
    private static void CheckMesh(MarkerAbstractBehaviour mb)
    {
        MeshFilter component = mb.gameObject.GetComponent <MeshFilter>();

        if ((component == null) || (component.sharedMesh == null))
        {
            CreateMesh(mb);
        }
    }
示例#4
0
    private void InitializeMarkerBehaviour(MarkerAbstractBehaviour markerBehaviour, Marker marker)
    {
        IEditorMarkerBehaviour behaviour = markerBehaviour;

        behaviour.InitializeMarker(marker);
        if (!this.mTrackableBehaviours.ContainsKey(marker.ID))
        {
            this.mTrackableBehaviours[marker.ID] = markerBehaviour;
            Debug.Log(string.Concat(new object[] { "Found Marker named ", marker.Name, " with id ", marker.ID }));
        }
    }
示例#5
0
    internal MarkerAbstractBehaviour CreateNewMarkerBehaviourForMarker(Marker trackable, GameObject gameObject)
    {
        MarkerAbstractBehaviour behaviour = BehaviourComponentFactory.Instance.AddMarkerBehaviour(gameObject);
        float size = trackable.GetSize();

        Debug.Log(string.Concat(new object[] { "Creating Marker with values: \n MarkerID:     ", trackable.MarkerID, "\n TrackableID:  ", trackable.ID, "\n Name:         ", trackable.Name, "\n Size:         ", size, "x", size }));
        IEditorMarkerBehaviour behaviour2 = behaviour;

        behaviour2.SetMarkerID(trackable.MarkerID);
        behaviour2.SetNameForTrackable(trackable.Name);
        behaviour2.transform.localScale = new Vector3(size, size, size);
        behaviour2.InitializeMarker(trackable);
        this.mTrackableBehaviours[trackable.ID] = behaviour;
        return(behaviour);
    }
    public override void OnInspectorGUI()
    {
        EditorGUIUtility.LookLikeInspector();
        base.DrawDefaultInspector();
        MarkerAbstractBehaviour target     = (MarkerAbstractBehaviour)base.target;
        IEditorMarkerBehaviour  behaviour2 = target;

        if (QCARUtilities.GetPrefabType(target) == PrefabType.Prefab)
        {
            behaviour2.SetMarkerID(-1);
            EditorGUILayout.IntField("Marker ID", behaviour2.MarkerID, new GUILayoutOption[0]);
            EditorGUILayout.Toggle("Preserve child size", behaviour2.PreserveChildSize, new GUILayoutOption[0]);
        }
        else
        {
            int markerID = EditorGUILayout.IntField("Marker ID", behaviour2.MarkerID, new GUILayoutOption[0]);
            if (markerID < 0)
            {
                markerID = 0;
            }
            else if (markerID >= 0x200)
            {
                markerID = 0x1ff;
            }
            if (markerID != behaviour2.MarkerID)
            {
                behaviour2.SetMarkerID(markerID);
                behaviour2.SetNameForTrackable("FrameMarker" + markerID);
            }
            behaviour2.SetPreserveChildSize(EditorGUILayout.Toggle("Preserve child size", behaviour2.PreserveChildSize, new GUILayoutOption[0]));
        }
        if (GUI.changed)
        {
            EditorUtility.SetDirty(target);
            SceneManager.Instance.SceneUpdated();
        }
    }
示例#7
0
 public MarkerAccessor(MarkerAbstractBehaviour target)
 {
     base.mTarget = target;
 }