Operand ambiguity occurs when referencing built-in Vector types via arithmetic and comparison operators
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 42/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Estancado
- Área
- computer-graphics
Línea de trabajo
Comienza localizando las definiciones de los tipos VectorX y floatX, así como sus implementaciones existentes de conversiones y operadores. Reproduce el ejemplo de Input.mousePosition y float3 y, a continuación, verifica que las expresiones aritméticas y de comparación relevantes se resuelvan sin ambigüedad y produzcan el tipo de resultado previsto de Unity.Mathematics.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Given the following code snip:
static float3 lastMouseSpinViewPos;
var delta = Input.mousePosition - lastMouseSpinViewPos;
The following compiler error occurs:
Operator '-' is ambiguous on operands of type 'Vector3' and 'float3'
The reason is that the compiler doesn't know if it should implicitly convert the first operand to float3, or implicitly convert the second operand to Vector3.
Expected Behavior
My expectation is that Unity.Mathematics types should assume priority in this case: the first operand is converted to float3 and the result type is a float3. I'm not sure if there's a valid case for expecting behavior favoring Vector3, and if there were, it could be achieved by using explicit (Vector3) cast or type definition. Seeking a legacy Vector3 result is an edge case and is well-suited to be delegated to an explicit cast condition.
Cause of Problem
Input.mousePositionis a unity built-in property or field, so its type isVector3- There are no explicit arithmetic operator implementations for
VectorXtypes andfloatXtypes.
Proposed solution
For the sake of streamlining interoperability with Unity built-in class Vector types, I think it makes sense to provide explicit implementations of arithmetic and comparison operators, like so:
public static float3 operator +(Vector3 l, float3 r) { return (float3)l + r; }
public static float3 operator -(Vector3 l, float3 r) { return (float3)l - r; }
public static float3 operator +(float3 l, Vector3 r) { return l + (float3)r; }
public static float3 operator -(float3 l, Vector3 r) { return l - (float3)r; }
Workaround
Add explicit typecast in all situations, like so:
static float3 lastMouseSpinViewPos;
var delta = (float3)Input.mousePosition - lastMouseSpinViewPos;
- Lenguaje dominante
- C#
- Estrellas
- 1.4k
- Forks
- 159
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Unity-Technologies/Unity.Mathematics
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 55/100
-
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
-
64 Bit Quaternion RequestAbierto
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
Unity-Technologies/Unity.Mathematics#245 · 3 comentarios ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 42/100
Unity-Technologies/Unity.Mathematics#243 · 6 reacciones ·
Todos los issues de Unity-Technologies/Unity.Mathematics
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
Esri/calcite-dotnet-toolkit#30 · 1 reacción ·
-
VideoViewer: rotated (portrait phone) videos shown sideways when system decimal separator is a commaAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Volodymyr-Petrunin/Bankomaten#45 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
thekid/inotify-win#45 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
AvaloniaUI/Avalonia#22420 ·
Los mantenedores suelen responder en 1 día