Пример #1
0
        void LoadStrokes(InkDataModel model)
        {
            IPathCollection paths = GetComponentInChildren <IPathCollection>();

            if (paths == null)
            {
                return;
            }

            paths.ClearAllPaths();

            IStrokeRenderer renderer = GetComponentInChildren <IStrokeRenderer>();

            if (renderer == null)
            {
                return;
            }

            var enumerator = model.InkTree.Root.GetRecursiveEnumerator();

            while (enumerator.MoveNext())
            {
                if (enumerator.Current is PathNode pathNode)
                {
                    renderer.DrawStroke(pathNode.Path.Spline.Data);
                }
            }
        }
Пример #2
0
 public void RegisterStrokeRenderer(IStrokeRenderer strokeRenderer)
 {
     _strokeRenderers.Add(strokeRenderer);
     if (_isBufferingStroke)
     {
         Debug.LogError("[StrokeProcessor] Stroke in progress; Newly registered stroke renderers will not render the entire stroke if a stroke is already in progress.");
     }
 }
Пример #3
0
        void Start()
        {
            _smoothedSpeed.delay = _smoothingDelay;

            _strokeProcessor = new StrokeProcessor();

            // Set up and register filters.
            _strokeProcessor.RegisterStrokeFilter(new FilterPositionMovingAverage());
            _strokeProcessor.RegisterStrokeFilter(new FilterPitchYawRoll());

            _strokeProcessor.RegisterStrokeFilter(_colorFilter);
            _strokeProcessor.RegisterStrokeFilter(_thicknessFilter);

            _strokeProcessor.RegisterStrokeFilter(new FilterConstrainThickness());
            _strokeProcessor.RegisterStrokeFilter(new FilterSmoothThickness());

            // Set up and register renderers.
            //GameObject rendererObj = new GameObject();
            //rendererObj.name = "Stroke Ribbon Renderer";
            //var ribbonRenderer = rendererObj.AddComponent<StrokeRibbonRenderer>();
            //ribbonRenderer.OnMeshStrokeFinalized += DoOnMeshStrokeFinalized;
            //_strokeRenderer = ribbonRenderer;
            //_strokeProcessor.RegisterStrokeRenderer(ribbonRenderer);

            GameObject rendererObj = new GameObject();

            rendererObj.name             = "Thick Ribbon Renderer";
            rendererObj.transform.parent = transform;
            var thickRibbonRenderer = rendererObj.AddComponent <ThickRibbonRenderer>();

            rendererObj.AddComponent <ThickLineRendererRecorder>();

            thickRibbonRenderer._finalizedRibbonParent = _ribbonParentObject;
            thickRibbonRenderer._ribbonMaterial        = _ribbonMaterial;
            _strokeRenderer = thickRibbonRenderer;
            _strokeProcessor.RegisterStrokeRenderer(thickRibbonRenderer);

            //GameObject previewRendererObj = new GameObject();
            //previewRendererObj.name = "Stroke Preview Ribbon Renderer";
            //var previewRibbonRenderer = previewRendererObj.AddComponent<StrokeBufferRibbonRenderer>();
            //previewRibbonRenderer.previewThicknessCurve = _thicknessCurve;
            //_strokeProcessor.RegisterPreviewStrokeRenderer(previewRibbonRenderer);
        }