예제 #1
0
    IEnumerator DoSpawnAll(SpriteShape spriteShape, float delayPerSpawn)
    {
        var wait = new WaitForSeconds(delayPerSpawn);

        mParms[Rock.parmSpriteShape] = spriteShape;
        mParms[Rock.parmDir]         = (Vector2)spawnPoint.up;

        for (int i = 0; i < capacity; i++)
        {
            mPool.Spawn(name, "", null, spawnPoint.position, mParms);
            yield return(wait);
        }
    }
예제 #2
0
        public static void CreateNewSpriteShape()
        {
            SpriteShape newSpriteShape = SpriteShapeEditorUtility.CreateSpriteShapeAsset();

            newSpriteShape.angleRanges.Add(CreateAngleRange(-22.5f, 22.5f, 7));
            newSpriteShape.angleRanges.Add(CreateAngleRange(22.5f, 67.5f, 6));
            newSpriteShape.angleRanges.Add(CreateAngleRange(67.5f, 112.5f, 4));
            newSpriteShape.angleRanges.Add(CreateAngleRange(112.5f, 157.5f, 2));
            newSpriteShape.angleRanges.Add(CreateAngleRange(157.5f, 202.5f, 8));
            newSpriteShape.angleRanges.Add(CreateAngleRange(-157.5f, -112.5f, 1));
            newSpriteShape.angleRanges.Add(CreateAngleRange(-112.5f, -67.5f, 3));
            newSpriteShape.angleRanges.Add(CreateAngleRange(-67.5f, -22.5f, 5));
        }
예제 #3
0
        static GameObject CreateDragGO(SpriteShape spriteShape, Vector3 position)
        {
            SpriteShapeController spriteShapeController = SpriteShapeEditorUtility.CreateSpriteShapeController();
            GameObject            gameObject            = spriteShapeController.gameObject;

            gameObject.transform.position     = position;
            gameObject.hideFlags              = HideFlags.HideAndDontSave;
            spriteShapeController.spriteShape = spriteShape;

            SpriteShapeEditorUtility.SetShapeFromAsset(spriteShapeController);

            return(gameObject);
        }
예제 #4
0
        protected override void OnReadyForInitGLShaderProgram()
        {
            SvgRenderVx svgRenderVx = SvgRenderVxLoader.CreateSvgRenderVxFromFile("d:\\WImageTest\\lion.svg");

            lionShape = new SpriteShape(svgRenderVx);


            //flip this lion vertically before use with openGL
            PixelFarm.Agg.Transform.Affine aff = PixelFarm.Agg.Transform.Affine.NewMatix(
                PixelFarm.Agg.Transform.AffinePlan.Scale(1, -1),
                PixelFarm.Agg.Transform.AffinePlan.Translate(0, 600));
            lionShape.ApplyTransform(aff);
        }
예제 #5
0
        static void DrawLion(Painter p, SpriteShape shape)
        {
            shape.Paint(p);

            //int j = shape.NumPaths;
            //int[] pathList = shape.PathIndexList;
            //Color[] colors = shape.Colors;
            //for (int i = 0; i < j; ++i)
            //{
            //    p.FillColor = colors[i];
            //    p.Fill(new VertexStoreSnap(myvxs, pathList[i]));
            //}
        }
예제 #6
0
 public perspective_application()
 {
     lionShape = new SpriteShape();
     lionShape.ParseLion();
     quadPolygonControl = new PixelFarm.Agg.UI.PolygonEditWidget(4, 5.0);
     quadPolygonControl.SetXN(0, lionShape.Bounds.Left);
     quadPolygonControl.SetYN(0, lionShape.Bounds.Top);
     quadPolygonControl.SetXN(1, lionShape.Bounds.Right);
     quadPolygonControl.SetYN(1, lionShape.Bounds.Top);
     quadPolygonControl.SetXN(2, lionShape.Bounds.Right);
     quadPolygonControl.SetYN(2, lionShape.Bounds.Bottom);
     quadPolygonControl.SetXN(3, lionShape.Bounds.Left);
     quadPolygonControl.SetYN(3, lionShape.Bounds.Bottom);
 }
예제 #7
0
        public perspective_application()
        {
            lionShape = new SpriteShape(SvgRenderVxLoader.CreateSvgRenderVxFromFile(@"Samples\lion.svg"));

            quadPolygonControl = new PixelFarm.Agg.UI.PolygonEditWidget(4, 5.0);
            quadPolygonControl.SetXN(0, lionShape.Bounds.Left);
            quadPolygonControl.SetYN(0, lionShape.Bounds.Top);
            quadPolygonControl.SetXN(1, lionShape.Bounds.Right);
            quadPolygonControl.SetYN(1, lionShape.Bounds.Top);
            quadPolygonControl.SetXN(2, lionShape.Bounds.Right);
            quadPolygonControl.SetYN(2, lionShape.Bounds.Bottom);
            quadPolygonControl.SetXN(3, lionShape.Bounds.Left);
            quadPolygonControl.SetYN(3, lionShape.Bounds.Bottom);
        }
예제 #8
0
        private void _quadControl_ShapeUpdated(QuadWidgetControl sender, EventArgs arg)
        {
            //update shape of sprite

            //transform from original lionBounds to quadPolygon
            Quad2f quadCorners = _quadControl.GetQuadCorners();

            _quadCorners[0] = quadCorners.left_top_x;
            _quadCorners[1] = quadCorners.left_top_y;
            _quadCorners[2] = quadCorners.right_top_x;
            _quadCorners[3] = quadCorners.right_top_y;
            _quadCorners[4] = quadCorners.right_bottom_x;
            _quadCorners[5] = quadCorners.right_bottom_y;
            _quadCorners[6] = quadCorners.left_bottom_x;
            _quadCorners[7] = quadCorners.left_bottom_y;


            //this is bilinear transformation
            if (_useBilinear)
            {
                Bilinear txBilinear = Bilinear.RectToQuad(
                    _lionBounds.Left,
                    _lionBounds.Top,
                    _lionBounds.Right,
                    _lionBounds.Bottom,
                    _quadCorners);

                if (txBilinear.IsValid)
                {
                    SpriteShape spriteShape = _mySprite.GetSpriteShape();
                    spriteShape.ResetTransform();
                    spriteShape.ApplyTransform(txBilinear);
                }
            }
            else
            {
                Perspective perspective = new Perspective(
                    _lionBounds.Left,
                    _lionBounds.Top,
                    _lionBounds.Right,
                    _lionBounds.Bottom,
                    _quadCorners);
                if (perspective.IsValid)
                {
                    SpriteShape spriteShape = _mySprite.GetSpriteShape();
                    spriteShape.ResetTransform();
                    spriteShape.ApplyTransform(perspective);
                }
            }
        }
예제 #9
0
        public override void Init()
        {
            VgVisualElement renderVx    = VgVisualDocHelper.CreateVgVisualDocFromFile(@"Samples\lion.svg").VgRootElem;
            var             spriteShape = new SpriteShape(renderVx);

            _testSprite = new MyTestSprite(spriteShape);

            //lionFill.AutoFlipY = true;

            _currentTx = PixelFarm.CpuBlit.VertexProcessing.Affine.NewMatix(
                VertexProcessing.AffinePlan.RotateDeg(30),
                VertexProcessing.AffinePlan.Scale(2)
                );
        }
예제 #10
0
        public static GameObject Create(SpriteShape shape, Vector3 position, SceneView sceneView)
        {
            string name = string.IsNullOrEmpty(shape.name) ? "New SpriteShapeController" : shape.name;

            name = GameObjectUtility.GetUniqueNameForSibling(null, name);
            GameObject go = new GameObject(name);

            SpriteShapeController shapeController = go.AddComponent <SpriteShapeController>();

            shapeController.spriteShape = shape;
            go.transform.position       = position;
            go.hideFlags = HideFlags.HideAndDontSave;

            return(go);
        }
예제 #11
0
        protected override void OnInitGLProgram(object sender, EventArgs args)
        {
            int max = Math.Max(this.Width, this.Height);

            canvas2d  = CreateCanvasGL2d(max, max);
            lionShape = new SpriteShape();
            lionShape.ParseLion();
            //flip this lion vertically before use with openGL
            PixelFarm.Agg.Transform.Affine aff = PixelFarm.Agg.Transform.Affine.NewMatix(
                PixelFarm.Agg.Transform.AffinePlan.Scale(1, -1),
                PixelFarm.Agg.Transform.AffinePlan.Translate(0, 600));
            lionVxs = new VertexStore();
            aff.TransformToVxs(lionShape.Path.Vxs, lionVxs);
            painter = new GLCanvasPainter(canvas2d, max, max);
        }
        public static SpriteShapeController CreateSpriteShapeController(SpriteShape shape)
        {
            var                   objName               = "New SpriteShapeController";
            GameObject            gameObject            = new GameObject(objName, typeof(SpriteShapeController));
            SpriteShapeController spriteShapeController = gameObject.GetComponent <SpriteShapeController>();

            spriteShapeController.spline.Clear();
            if (shape != null)
            {
                objName = shape.name;
            }
            gameObject.name = GameObjectUtility.GetUniqueNameForSibling(gameObject.transform.parent, objName);
            SpriteShapeEditorAnalytics.instance.eventBus.spriteShapeRendererEvent.Invoke(gameObject.GetComponent <SpriteShapeRenderer>());
            return(spriteShapeController);
        }
예제 #13
0
        public perspective_application()
        {
            _lionShape = new SpriteShape(PaintLab.Svg.VgVisualDocHelper.CreateVgVisualDocFromFile(@"Samples\lion.svg").VgRootElem);
            _lionFill  = new MyTestSprite(_lionShape);


            _quadPolygonControl = new PixelFarm.CpuBlit.UI.PolygonEditWidget(4, 5.0);
            _quadPolygonControl.SetXN(0, _lionShape.Bounds.Left);
            _quadPolygonControl.SetYN(0, _lionShape.Bounds.Top);
            _quadPolygonControl.SetXN(1, _lionShape.Bounds.Right);
            _quadPolygonControl.SetYN(1, _lionShape.Bounds.Top);
            _quadPolygonControl.SetXN(2, _lionShape.Bounds.Right);
            _quadPolygonControl.SetYN(2, _lionShape.Bounds.Bottom);
            _quadPolygonControl.SetXN(3, _lionShape.Bounds.Left);
            _quadPolygonControl.SetYN(3, _lionShape.Bounds.Bottom);
        }
예제 #14
0
        public FilterFxDemo()
        {
            VgVisualElement renderVx    = VgVisualDocHelper.CreateVgVisualDocFromFile(@"Samples\lion.svg").VgRootElem;
            var             spriteShape = new SpriteShape(renderVx);

            _testSprite = new MyTestSprite(spriteShape);
            //--------------

            //m_rbuf2 = new ReferenceImage();
            _shape_bounds            = new RectD();
            _shadow_ctrl             = new PolygonEditWidget(4);
            this.FlattenCurveChecked = true;
            this.FilterMethod        = FilterMethod.None;
            this.BlurRadius          = 15;
            //
        }
예제 #15
0
        public void Init2(CanvasGL2d canvas2d)
        {
            int max = 800;

            this.canvas2d = canvas2d;
            lionShape     = new SpriteShape();
            lionShape.ParseLion();
            //flip this lion vertically before use with openGL
            PixelFarm.Agg.Transform.Affine aff = PixelFarm.Agg.Transform.Affine.NewMatix(
                PixelFarm.Agg.Transform.AffinePlan.Scale(1, -1),
                PixelFarm.Agg.Transform.AffinePlan.Translate(0, 600));
            lionVxs = new VertexStore();
            aff.TransformToVxs(lionShape.Path.Vxs, lionVxs);
            painter = new GLCanvasPainter(canvas2d, max, max);
            SetPrinter(painter);
        }
예제 #16
0
        protected override void OnReadyForInitGLShaderProgram()
        {
            PaintLab.Svg.VgVisualDoc vgVisualDoc = PaintLab.Svg.VgVisualDocHelper.CreateVgVisualDocFromFile("Samples/lion.svg");
            _lionShape = new SpriteShape(vgVisualDoc.VgRootElem);

            var lionBounds = _lionShape.Bounds;

            //-------------
            _memBmp     = new MemBitmap((int)lionBounds.Width, (int)lionBounds.Height);
            _aggPainter = AggPainter.Create(_memBmp);


            DrawLion(_aggPainter, _lionShape);
            //convert affImage to texture
            _glBmp = DemoHelper.LoadTexture(_memBmp);
        }
        protected override void OnReadyForInitGLShaderProgram()
        {
            lionShape = new SpriteShape();
            lionShape.ParseLion();
            RectD lionBounds = lionShape.Bounds;

            //-------------
            aggImage   = new ActualImage((int)lionBounds.Width, (int)lionBounds.Height, PixelFarm.Agg.PixelFormat.ARGB32);
            _aggsx     = new AggRenderSurface(aggImage);
            aggPainter = new AggPainter(_aggsx);


            DrawLion(aggPainter, lionShape, lionShape.Vxs);
            //convert affImage to texture
            glBmp = DemoHelper.LoadTexture(aggImage);
        }
        private List <ShapeAngleRange> GetAngleRangeSorted(SpriteShape ss)
        {
            List <ShapeAngleRange> angleRanges = new List <ShapeAngleRange>();
            int i = 0;

            foreach (var angleRange in ss.angleRanges)
            {
                ShapeAngleRange sar = new ShapeAngleRange()
                {
                    start = angleRange.start, end = angleRange.end, order = angleRange.order, index = i
                };
                angleRanges.Add(sar);
                i++;
            }
            angleRanges.Sort((a, b) => a.order.CompareTo(b.order));
            return(angleRanges);
        }
예제 #19
0
        protected override void OnReadyForInitGLShaderProgram()
        {
            string sampleFile = "Samples/lion.svg";
            //string sampleFile = "Samples/tiger_whiskers.svg";
            //string sampleFile = "Samples/tiger002.svg";
            //string sampleFile = "Samples/tiger_wrinkles.svg";
            VgVisualElement vgVisElem = VgVisualDocHelper.CreateVgVisualDocFromFile(sampleFile).VgRootElem;

            _spriteShape = new SpriteShape(vgVisElem);


            //flip this lion vertically
            //PixelFarm.CpuBlit.VertexProcessing.Affine aff = PixelFarm.CpuBlit.VertexProcessing.Affine.NewMatix(
            //     PixelFarm.CpuBlit.VertexProcessing.AffinePlan.Scale(1, -1),
            //     PixelFarm.CpuBlit.VertexProcessing.AffinePlan.Translate(0, 600));
            //_lionShape.ApplyTransform(aff);
        }
        protected override void OnReadyForInitGLShaderProgram()
        {
            int max = Math.Max(this.Width, this.Height);

            lionShape = new SpriteShape();
            lionShape.ParseLion();
            //flip this lion vertically before use with openGL
            PixelFarm.Agg.Transform.Affine aff = PixelFarm.Agg.Transform.Affine.NewMatix(
                PixelFarm.Agg.Transform.AffinePlan.Scale(1, -1),
                PixelFarm.Agg.Transform.AffinePlan.Translate(0, 600));
            lionVxs = new VertexStore();
            aff.TransformToVxs(lionShape.Vxs, lionVxs);
            //convert lion vxs to renderVx

            ////-------------
            ////version 1:
            //int j = lionShape.NumPaths;
            //int[] pathList = lionShape.PathIndexList;
            //for (int i = 0; i < j; ++i)
            //{
            //    lionRenderVxList.Add(painter.CreateRenderVx(new VertexStoreSnap(lionVxs, pathList[i])));
            //}
            ////-------------
            //version 2:
            {
                tmpDrawVersion = 2;
                MultiPartPolygon mutiPartPolygon = new MultiPartPolygon();
                int     j        = lionShape.NumPaths;
                int[]   pathList = lionShape.PathIndexList;
                Color[] colors   = lionShape.Colors;
                for (int i = 0; i < j; ++i)
                {
                    //from lionvxs extract each part
                    //fetch data and add to multipart polygon
                    //if (i != 4) continue;
                    //if (i > 1)
                    //{
                    //    break;
                    //}
                    mutiPartPolygon.AddVertexSnap(new VertexStoreSnap(lionVxs, pathList[i]));
                }
                //then create single render vx
                this.multipartTessResult = painter.CreateMultiPartTessResult(mutiPartPolygon);
                //create render vx for the multipart test result
            }
        }
예제 #21
0
        public void OnEnable()
        {
            m_PreviewAngle = SessionState.GetFloat("SpriteShape/PreviewAngle/" + target.GetInstanceID(), m_PreviewAngle);

            m_SpriteShape = target as SpriteShape;

            m_FillTextureProp      = this.serializedObject.FindProperty("m_FillTexture");
            m_UseSpriteBordersProp = serializedObject.FindProperty("m_UseSpriteBorders");
            m_AngleRangesProp      = this.serializedObject.FindProperty("m_Angles");
            m_CornerSpritesProp    = this.serializedObject.FindProperty("m_CornerSprites");
            m_FillOffsetProp       = this.serializedObject.FindProperty("m_FillOffset");

            selectedIndex = SpriteShapeEditorUtility.GetRangeIndexFromAngle(angleRanges, m_PreviewAngle);

            SetupAngleRangeController();

            Undo.undoRedoPerformed += UndoRedoPerformed;
        }
        protected override void OnReadyForInitGLShaderProgram()
        {
            var _svgRenderVx = PixelFarm.Agg.SvgRenderVxLoader.CreateSvgRenderVxFromFile("Samples/lion.svg");

            lionShape = new SpriteShape(_svgRenderVx);

            RectD lionBounds = lionShape.Bounds;

            //-------------
            aggImage   = new ActualImage((int)lionBounds.Width, (int)lionBounds.Height);
            _aggsx     = new AggRenderSurface(aggImage);
            aggPainter = new AggPainter(_aggsx);


            DrawLion(aggPainter, lionShape);
            //convert affImage to texture
            glBmp = DemoHelper.LoadTexture(aggImage);
        }
        protected override void OnInitGLProgram(object sender, EventArgs args)
        {
            lionShape = new SpriteShape();
            lionShape.ParseLion();
            RectD lionBounds = lionShape.Bounds;

            //-------------
            aggImage   = new ActualImage((int)lionBounds.Width, (int)lionBounds.Height, PixelFarm.Agg.PixelFormat.ARGB32);
            imgGfx2d   = new ImageGraphics2D(aggImage);
            aggPainter = new AggCanvasPainter(imgGfx2d);

            DrawLion(aggPainter, lionShape, lionShape.Path.Vxs);
            //convert affImage to texture
            glBmp = LoadTexture(aggImage);

            int max = Math.Max(this.Width, this.Height);

            canvas2d = PixelFarm.Drawing.GLES2.GLES2Platform.CreateCanvasGL2d(max, max);
            //-------------------------
            painter = new GLCanvasPainter(canvas2d, max, max);
        }
예제 #24
0
 public void SwitchSpriteShape()
 {
     stockedShape = currentPlatform.GetComponent <SpriteShapeController>().spriteShape;
     if (stockedShape.name.Length - "LinearPlatform".Length > 0)
     {
         if (stockedShape.name.Substring(stockedShape.name.Length - "LinearPlatform".Length) == "LinearPlatform")
         {
             currentPlatform.GetComponent <SpriteShapeController>().spriteShape = thornsLinearShape;
         }
         else
         {
             currentPlatform.GetComponent <SpriteShapeController>().spriteShape = thornsShape;
         }
     }
     else
     {
         currentPlatform.GetComponent <SpriteShapeController>().spriteShape = thornsShape;
     }
     currentPlatform.tag = "Thorns";
     Invoke("Infest", timeBetweenEachInfest);
 }
예제 #25
0
    void M8.IPoolSpawn.OnSpawned(M8.GenericParams parms)
    {
        if (!mPoolData)
        {
            mPoolData = GetComponent <M8.PoolDataController>();
        }

        SpriteShape spriteShape = null;
        Vector2     dir         = Vector2.zero;

        if (parms != null)
        {
            if (parms.ContainsKey(parmSpriteShape))
            {
                spriteShape = parms.GetValue <SpriteShape>(parmSpriteShape);
            }
            if (parms.ContainsKey(parmDir))
            {
                dir = parms.GetValue <Vector2>(parmDir);
            }
        }

        if (spriteShape)
        {
            spriteShapeCtrl.spriteShape = spriteShape;
        }

        transform.localEulerAngles = new Vector3(0f, 0f, Random.Range(0f, 360f));

        spriteShapeCtrl.enabled = true;

        mBody.simulated = true;

        dir = M8.MathUtil.RotateAngle(dir, dirAngleRange.random);
        mBody.AddForce(dir * impulseRange.random, ForceMode2D.Impulse);

        spriteShapeCtrl.spriteShapeRenderer.color = mDefaultColor;

        StartCoroutine(DoAlive());
    }
예제 #26
0
        public alpha_mask2_application()
        {
            lionShape   = new SpriteShape(SvgRenderVxLoader.CreateSvgRenderVxFromFile("Samples\arrow2.svg"));
            this.Width  = 800;
            this.Height = 600;
            //AnchorAll();
            //alphaMaskImageBuffer = new ReferenceImage();

#if USE_CLIPPING_ALPHA_MASK
            //alphaMask = new AlphaMaskByteClipped(alphaMaskImageBuffer, 1, 0);
#else
            //alphaMask = new AlphaMaskByteUnclipped(alphaMaskImageBuffer, 1, 0);
#endif

            //numMasksSlider = new UI.Slider(5, 5, 150, 12);
            //sliderValue = 0.0;
            //AddChild(numMasksSlider);
            //numMasksSlider.SetRange(5, 100);
            //numMasksSlider.Value = 10;
            //numMasksSlider.Text = "N={0:F3}";
            //numMasksSlider.OriginRelativeParent = Vector2.Zero;
        }
        public static void SetShapeFromAsset(SpriteShapeController spriteShapeController)
        {
            SpriteShape spriteShape = spriteShapeController.spriteShape;

            if (!spriteShape)
            {
                SpriteShapeEditorUtility.SetToSquare(spriteShapeController);
                return;
            }

            if (spriteShape.angleRanges.Count == 1 && spriteShape.angleRanges[0].end - spriteShape.angleRanges[0].start == 360f)
            {
                SpriteShapeEditorUtility.SetToLine(spriteShapeController);
            }
            else if (spriteShape.angleRanges.Count < 8)
            {
                SpriteShapeEditorUtility.SetToSquare(spriteShapeController);
            }
            else
            {
                SpriteShapeEditorUtility.SetToOctogon(spriteShapeController);
            }
        }
예제 #28
0
        public IEnumerator Spawn(SpriteShape spriteShape, float delay)
        {
            layerSpriteCtrl.spriteShape = spriteShape;
            layerSpriteCtrl.gameObject.SetActive(true);

            var layerClr = layerSpriteCtrl.spriteShapeRenderer.color;

            layerClr.a = 0f;

            layerSpriteCtrl.spriteShapeRenderer.color = layerClr;

            isSpawning = true;

            float rockSpawnDelay = delay / spawner.capacity;

            spawner.SpawnAll(spriteShape, rockSpawnDelay);

            if (fadeInStartDelay > 0f)
            {
                yield return(new WaitForSeconds(fadeInStartDelay));
            }

            var curTime = 0f;

            while (isSpawning && curTime < delay)
            {
                yield return(null);

                curTime += Time.deltaTime;
                var t = Mathf.Clamp01(curTime / delay);

                layerClr.a = t;
                layerSpriteCtrl.spriteShapeRenderer.color = layerClr;
            }

            isSpawning = false;
        }
예제 #29
0
        void TestLoadLionFromBinaryFile()
        {
            System.Diagnostics.Debugger.Break();
            //test load raw buffer
            using (var fs = new System.IO.FileStream("..\\lion_stream.bin", System.IO.FileMode.Open))
            {
                var reader     = new System.IO.BinaryReader(fs);
                var lionShape2 = new PixelFarm.Agg.SpriteShape();

                PixelFarm.Agg.VertexSource.PathWriter path;
                PixelFarm.Agg.ColorRGBA[]             colors;
                int[] pathIndexList;
                //1. path and command
                PixelFarm.Agg.VertexSource.dbugVertexSourceIO.ReadPathDataFromStream(
                    reader, out path
                    );
                //2. colors
                PixelFarm.Agg.VertexSource.dbugVertexSourceIO.ReadColorDataFromStream(
                    reader, out colors
                    );
                //3. path indice
                int npaths;
                PixelFarm.Agg.VertexSource.dbugVertexSourceIO.ReadPathIndexListFromStream(
                    reader, out npaths, out pathIndexList
                    );

                //------------------------------
                SpriteShape.UnsafeDirectSetData(lionShape2,
                                                npaths,
                                                path, colors, pathIndexList);
                //---------------------------------

                fs.Close();

                this.lionShape = lionShape2;
            }
        }
예제 #30
0
        protected override void OnInitGLProgram(object sender, EventArgs args)
        {
            int max = Math.Max(this.Width, this.Height);

            canvas2d  = CreateCanvasGL2d(max, max);
            lionShape = new SpriteShape();
            lionShape.ParseLion();
            //flip this lion vertically before use with openGL
            PixelFarm.Agg.Transform.Affine aff = PixelFarm.Agg.Transform.Affine.NewMatix(
                PixelFarm.Agg.Transform.AffinePlan.Scale(1, -1),
                PixelFarm.Agg.Transform.AffinePlan.Translate(0, 600));
            lionVxs = new VertexStore();
            aff.TransformToVxs(lionShape.Path.Vxs, lionVxs);
            painter = new GLCanvasPainter(canvas2d, max, max);
            //convert lion vxs to renderVx

            int j = lionShape.NumPaths;

            int[] pathList = lionShape.PathIndexList;
            for (int i = 0; i < j; ++i)
            {
                lionRenderVxList.Add(painter.CreateRenderVx(new VertexStoreSnap(lionVxs, pathList[i])));
            }
        }
예제 #31
0
 /// <summary>
 /// Overridable that is called to fill the combobox with data. The default implementation parses the enum values
 /// </summary>
 /// <param name="context"></param>
 /// <param name="provider"></param>
 /// <param name="value"></param>
 /// <param name="list"></param>
 public virtual void FillListBox(SpriteShape shape, ITypeDescriptorContext context, IServiceProvider provider, object value, ListBox list)
 {
     string[] names = shape.EngineNode.GetStateNames();
     string currentState = shape.EngineNode.GetCurrentState();
     foreach (string name in names)
     {
         // Creates a clbItem that stores the name, the int value and the tooltip
         int added = list.Items.Add(new ListItem(name, 0, ""));
         if (name == currentState)
         {
             list.SelectedIndex = added;
         }
     }
 }
예제 #32
0
        private void CreateShape(System.Windows.Forms.DragEventArgs e)
        {
            Nullable<SpriteDropData> data = GetData(e);

            if (data != null)
            {
                SpriteShape entity = new SpriteShape(data.Value._name);
                entity.SpriteSheetFilename = data.Value._sheet;
                entity.ShoeBoxData = data.Value._xml;
                entity.SetHint(ShapeBase.HintFlags_e.RetainPositionAtCreation, true);
                _dummyShape = entity;
            }
        }
예제 #33
0
파일: HotSpot2D.cs 프로젝트: haoransun93/2d
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="owner"></param>
 /// <param name="fSize"></param>
 public HotSpot2D(SpriteShape owner, float fSize)
     : base(owner, null, VisionColors.White, HotSpotBase.PickType.Circle, fSize)
 {
     _fSize = fSize;
 }