예제 #1
0
        bool?ProcessLineStripNoTint(NativeList <float4x2> lineBuffer)
        {
            var lPoints = points;
            var lColors = colors;

            if (lPoints.Length == 0)
            {
                return(null);
            }

            var p  = lPoints[0].Ros2Unity();
            var pc = lColors[0].ToUnityColor32();

            for (int i = 1; i < lPoints.Length; i++)
            {
                var q  = lPoints[i].Ros2Unity();
                var qc = lColors[i].ToUnityColor32();

                LineWithColor line = new LineWithColor(p, pc, q, qc);
                if (LineResource.IsElementValid(line))
                {
                    lineBuffer.Add(line.f);
                }

                p  = q;
                pc = qc;
            }

            return(null);
        }
예제 #2
0
        protected override void Awake()
        {
            base.Awake();
            disc.EndDragging += () =>
            {
                dragBack = true;
                Moved?.Invoke(this, 0);
                lines.Reset();
                currentAngle = null;
            };

            disc.StartDragging += () =>
            {
                dragBack = false;
            };


            link.Color             = Color.cyan.WithAlpha(0.8f);
            link.EmissiveColor     = Color.cyan;
            ringUp.Color           = Color.cyan.WithAlpha(0.5f);
            ringUp.EmissiveColor   = Color.cyan;
            ringDown.Color         = Color.cyan.WithAlpha(0.5f);
            ringDown.EmissiveColor = Color.cyan;
            lines = ResourcePool.RentDisplay <LineResource>(transform);
            lines.ElementScale = 0.02f;
            lines.RenderType   = LineResource.LineRenderType.AlwaysCapsule;
        }
예제 #3
0
        bool?ProcessLineStripSingleColor(NativeList <float4x2> lineBuffer)
        {
            var lPoints = points;

            if (lPoints.Length == 0)
            {
                return(color32.a < 255);
            }

            var   p            = lPoints[0].Ros2Unity();
            float colorAsFloat = PointWithColor.FloatFromColorBits(color32);

            for (int i = 1; i < lPoints.Length; i++)
            {
                var q = lPoints[i].Ros2Unity();

                LineWithColor line = new LineWithColor(p, colorAsFloat, q, colorAsFloat);
                if (LineResource.IsElementValid(line))
                {
                    lineBuffer.Add(line.f);
                }

                p = q;
            }

            return(color32.a < 255);
        }
예제 #4
0
        void Awake()
        {
            node = new GameObject("AR LineConnector Node");
            node.transform.SetParentLocal(TfListener.OriginFrame.transform);
            lines = ResourcePool.RentDisplay <LineResource>(node.transform);
            lines.ElementScale = 0.005f;

            foreach (ref var sphere in spheres.Ref())
            {
                sphere = ResourcePool.Rent <MeshMarkerResource>(Resource.Displays.Sphere, node.transform);
                sphere.Transform.localScale = 0.05f * Vector3.one;
                sphere.ShadowsEnabled       = false;
            }

            Color = Color.cyan;
            Layer = LayerType.IgnoreRaycast;
        }
예제 #5
0
        bool?ProcessLineListNoTint(NativeList <float4x2> lineBuffer)
        {
            var lPoints = points;
            var lColors = colors;

            for (int i = 0; i < lPoints.Length / 2; i++)
            {
                LineWithColor line = new LineWithColor(
                    lPoints[2 * i + 0].Ros2Unity(), lColors[2 * i + 0].ToUnityColor32(),
                    lPoints[2 * i + 1].Ros2Unity(), lColors[2 * i + 1].ToUnityColor32()
                    );
                if (LineResource.IsElementValid(line))
                {
                    lineBuffer.Add(line.f);
                }
            }

            return(null);
        }
예제 #6
0
        bool?ProcessLineListSingleColor(NativeList <float4x2> lineBuffer)
        {
            var lPoints = points;

            float colorAsFloat = PointWithColor.FloatFromColorBits(color32);

            for (int i = 0; i < lPoints.Length / 2; i++)
            {
                LineWithColor line = new LineWithColor(
                    lPoints[2 * i + 0].Ros2Unity(), colorAsFloat,
                    lPoints[2 * i + 1].Ros2Unity(), colorAsFloat
                    );
                if (LineResource.IsElementValid(line))
                {
                    lineBuffer.Add(line.f);
                }
            }

            return(color32.a < 255);
        }
예제 #7
0
        static void CreateLineResource(float z)
        {
            using (NativeList <LineWithColor> lines = new NativeList <LineWithColor>())
            {
                LineResource resource = ResourcePool.RentDisplay <LineResource>();

                for (int i = 0; i < MaxSegmentsForMesh + 10; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z), Color.green,
                                  new Vector3(i + 1, 1, z), Color.green
                                  ));
                }

                resource.Set(lines);
            }

            using (NativeList <LineWithColor> lines = new NativeList <LineWithColor>())
            {
                LineResource resource = ResourcePool.RentDisplay <LineResource>();
                for (int i = 0; i < MaxSegmentsForMesh + 10; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z + 1), 0.025f * i,
                                  new Vector3(i + 1, 1, z + 1), 0.025f * i
                                  ));
                }

                resource.UseColormap = true;
                resource.Colormap    = ColormapId.hsv;
                resource.Set(lines);
            }

            using (NativeList <LineWithColor> lines = new NativeList <LineWithColor>())
            {
                LineResource resource = ResourcePool.RentDisplay <LineResource>();
                for (int i = 0; i < MaxSegmentsForMesh + 10; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z + 2), new Color(1, 0, 0, 0.5f),
                                  new Vector3(i + 1, 1, z + 2), Color.green
                                  ));
                }

                resource.Set(lines);
            }

            using (NativeList <LineWithColor> lines = new NativeList <LineWithColor>())
            {
                LineResource resource = ResourcePool.RentDisplay <LineResource>();
                for (int i = 0; i < MaxSegmentsForMesh + 10; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z + 3), 0.025f * i,
                                  new Vector3(i + 1, 1, z + 3), 0.025f * i
                                  ));
                }

                resource.UseColormap = true;
                resource.Tint        = new Color(1, 1, 1, 0.5f);
                resource.Colormap    = ColormapId.hsv;
                resource.Set(lines);
            }
        }
예제 #8
0
        static void CreateLineResourceShort(float z)
        {
            {
                LineResource resource            = ResourcePool.RentDisplay <LineResource>();
                NativeList <LineWithColor> lines = new NativeList <LineWithColor>();
                for (int i = 0; i < MaxSegmentsForMesh / 2; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z), Color.green,
                                  new Vector3(i + 1, 1, z), Color.green
                                  ));
                }

                resource.Set(lines);
            }

            {
                LineResource resource            = ResourcePool.RentDisplay <LineResource>();
                NativeList <LineWithColor> lines = new NativeList <LineWithColor>();
                for (int i = 0; i < MaxSegmentsForMesh / 2; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z + 1), 0.1f * i,
                                  new Vector3(i + 1, 1, z + 1), 0.1f * i
                                  ));
                }

                resource.UseColormap = true;
                resource.Colormap    = ColormapId.hsv;
                resource.Set(lines);
            }

            {
                LineResource resource            = ResourcePool.RentDisplay <LineResource>();
                NativeList <LineWithColor> lines = new NativeList <LineWithColor>();
                for (int i = 0; i < MaxSegmentsForMesh / 2; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z + 2), Color.red.WithAlpha(0.25f),
                                  new Vector3(i + 1, 1, z + 2), Color.green
                                  ));
                }

                resource.Set(lines);
            }

            {
                LineResource resource            = ResourcePool.RentDisplay <LineResource>();
                NativeList <LineWithColor> lines = new NativeList <LineWithColor>();
                for (int i = 0; i < MaxSegmentsForMesh / 2; i++)
                {
                    lines.Add(new LineWithColor(
                                  new Vector3(i, 0, z + 3), 0.1f * i,
                                  new Vector3(i + 1, 1, z + 3), 0.1f * i
                                  ));
                }

                resource.UseColormap = true;
                resource.Tint        = Color.white.WithAlpha(0.25f);
                resource.Colormap    = ColormapId.hsv;
                resource.Set(lines);
            }
        }
예제 #9
0
 /// <summary>
 /// Append part.
 /// </summary>
 /// <param name="appender"></param>
 /// <param name="previous"></param>
 /// <param name="value"></param>
 /// <param name="line"></param>
 /// <returns></returns>
 public virtual bool TryCreate(ILineFactory appender, ILine previous, byte[] value, out ILineResource line)
 {
     line = new LineResource(appender, previous, value);
     return(true);
 }