private List <Tuple <List <float3>, float3> > ReflectingSingleRays(DiscreteBeam descreteBeam, RaycastHit hit) { var cos = Vector3.Dot(descreteBeam.DirectionOfPropagation, hit.normal.normalized); var DirectionOfPropagation = descreteBeam.DirectionOfPropagation - ConvertToFloat3(cos * hit.normal.normalized * 2); return(new List <Tuple <List <float3>, float3> >() { new Tuple <List <float3>, float3> (new List <float3>() { ConvertToFloat3(hit.point) }, ConvertToFloat3(DirectionOfPropagation)) }); }
private void UpdatePointsOnLinerenderer(DiscreteBeam discreteBeam, GameObject line) { var lineRenderer = line.GetComponent <LineRenderer>(); lineRenderer.positionCount = discreteBeam.movementCoordinates.Count; for (int i = 0; i < discreteBeam.movementCoordinates.Count; i++) { if (!ChechTwofloat3sEqual(discreteBeam.movementCoordinates[i], Vector3ToFloat3(lineRenderer.GetPosition(i)))) { lineRenderer.SetPosition(i, discreteBeam.movementCoordinates[i]); } } }