Foro de elhacker.net

Programación => .NET (C#, VB.NET, ASP) => Mensaje iniciado por: yoelrodguez en 24 Agosto 2022, 00:44 am



Título: Como usar una función public List de una clase C#
Publicado por: yoelrodguez en 24 Agosto 2022, 00:44 am
Hola, tengo la siguiente situación: estoy haciendo una aplicación con unity 3d y c# (Soy nuevo en C#) en la que estoy usando la sdk de Easyar. El problema que tengo es que no sé cómo usar la función de una clase de la sdk a continuación les dejo lo que tengo hasta ahora hecho y la función que quiero utilizar.

Gracias

Lo que tengo hasta ahora:

Código:
public class Audiora : MonoBehaviour
{
    public AudioClip otherClip;
    public AudioSource audios;
    private AudioSource[] allAudioSources;
    private AudioSource audioN;

    private readonly ImageTrackerFrameFilter filter = new ImageTrackerFrameFilter();

    void Start()
    {
         //Aquí es donde necesito llamar a la función de la clase ImageTrackerFrameFilter
    }
}


Función que quiero llamar.
Código:
 public List<KeyValuePair<Optional<TargetController>, Matrix44F>> OnResult(Optional<FrameFilterResult> frameFilterResult)
        {
            var resultControllers = new List<KeyValuePair<Optional<TargetController>, Matrix44F>>();
            var targetIDs = new List<int>();
            var lostIDs = new List<int>();

            if (frameFilterResult.OnSome)
            {
                var targetTrackerResult = frameFilterResult.Value as TargetTrackerResult;
                foreach (var targetInstance in targetTrackerResult.targetInstances())
                {
                    using (targetInstance)
                    {
                        if (targetInstance.status() != TargetStatus.Tracked)
                        {
                            continue;
                        }
                        var targetOptional = targetInstance.target();
                        if (targetOptional.OnNone)
                        {
                            continue;
                        }
                        using (var target = targetOptional.Value)
                        {
                            var controller = TryGetTargetController(target.runtimeID());
                            if (controller)
                            {
                                targetIDs.Add(target.runtimeID());
                                resultControllers.Add(new KeyValuePair<Optional<TargetController>, Matrix44F>(controller, targetInstance.pose()));
                                             
                            }
                        }
                    }
                }
            }
 foreach (var id in previousTargetIDs)
            {
                lostIDs.Add(id);
            }
            foreach (var id in targetIDs)
            {
                if (lostIDs.Contains(id))
                {
                    lostIDs.Remove(id);
                }
                var controller = TryGetTargetController(id);
                if (controller && controller.IsLoaded)
                {
                    controller.OnTracking(true);
                }
            }
            foreach (var id in lostIDs)
            {
                var controller = TryGetTargetController(id);
                if (controller)
                {
                    controller.OnTracking(false);
                }
            }

            previousTargetIDs = targetIDs;
            return resultControllers;
        }


Título: Re: Como usar una función public List de una clase C#
Publicado por: **Aincrad** en 30 Agosto 2022, 20:31 pm
No he usado unity, pero ...

OnResult Es una funcion que retorna una Lista de KeyValuePair, osea que tiene como Key TargetController y Value Matrix44F

A la funcion OnResult tambien debes pasarle un parametro FrameFilterResult hay un identeificador Optional, no se para que sirve, pero si es lo mismo que en VB, entonces no hay necesidad de pasarle parametro, ya que es opcional.

Código
  1.  
  2. FrameFilterResult FrameFilterEX;
  3.  
  4.        List<KeyValuePair[<TargetController, Matrix44F>]> OnResultData = OnResult(FrameFilterEX);
  5.  
  6.        foreach (KeyValuePair[<TargetController, Matrix44F>] ResultData in OnResultData)
  7.        {
  8.            TargetController TargetControllerEx = ResultData.Key;
  9.            Matrix44F MatrixEx = ResultData.Value;
  10.        }
  11.  
  12.  

Seria algo como eso, Osea no tal cual, pero si similar.