Пример #1
0
        /// <summary>
        /// <paramref name="rect"/>の角を丸めた<see cref="asd.Shape"/>を返します。
        /// </summary>
        /// <param name="cornerDivision">1つの角を何分割するかを指定します</param>
        /// <param name="radius">角丸の半径を、左上、右上、右下、左下の順に指定します。</param>
        public static asd.Shape CreateRoundedRectangle(asd.RectF rect, uint cornerDivision, params uint[] radius)
        {
            var shape = new asd.PolygonShape();

            if (radius.Length != 4)
            {
                throw new ArgumentException("4 radius values required");
            }

            for (int i = 0; i < 4; i++)
            {
                if (radius[i] == 0)
                {
                    shape.AddVertex(rect.Vertexes[i]);
                }
                else
                {
                    // 半径の分だけ中心方向に寄せる
                    var r      = radius[i];
                    var x      = 1 - ((i & 0b01) ^ ((i & 0b10) >> 1)) * 2; // 0, 3 のとき 1、 1, 2 のとき -1
                    var y      = 1 - (i & 0b10);                           // 0, 1 のとき 1、 2, 3 のとき -1
                    var center = rect.Vertexes[i] + r * new asd.Vector2DF(x, y);

                    for (int c = 0; c < cornerDivision; c++)
                    {
                        var offset = new asd.Vector2DF(r, 0.0f);
                        offset.Degree = (180.0f + 90.0f * i) + c * 90.0f / cornerDivision;
                        shape.AddVertex(center + offset);
                    }
                }
            }
            return(shape);
        }
    public void Run()
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("GeometryObject2D_PolygonShape_Textured", 640, 480, new asd.EngineOption());

        // テクスチャとして図形に合成する画像を読み込む。
        var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png");

        // 図形描画オブジェクトのインスタンスを生成する。
        var geometryObj = new asd.GeometryObject2D();

        // 図形描画オブジェクトのインスタンスをエンジンに追加する。
        asd.Engine.AddObject2D(geometryObj);

        // 多角形の図形クラスのインスタンスを生成する。
        var polygon = new asd.PolygonShape();

        // 多角形を構成する頂点を追加していく。(星形になるようにする。)
        for (int i = 0; i < 10; i++)
        {
            asd.Vector2DF vec = new asd.Vector2DF(1, 0);
            vec.Degree = i * 36;

            if (i % 2 == 0)
            {
                vec.Length = 200;
            }
            else
            {
                vec.Length = 75;
            }

            polygon.AddVertex(vec + new asd.Vector2DF(320, 240));
        }

        // 多角形を描画する図形として設定し、合成するテクスチャも設定する。
        geometryObj.Shape   = polygon;
        geometryObj.Texture = texture;

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();

            Recorder.TakeScreenShot("GeometryObject2D_PolygonShape_Textured", 30);
        }

        // Altseedを終了する。
        asd.Engine.Terminate();
    }
Пример #3
0
    public void Run()
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("GeometryObject2D_PolygonShape", 640, 480, new asd.EngineOption());

        // 図形描画オブジェクトのインスタンスを生成する。
        var geometryObj = new asd.GeometryObject2D();

        // 図形描画オブジェクトのインスタンスをエンジンに追加する。
        asd.Engine.AddObject2D(geometryObj);

        // 多角形の図形クラスのインスタンスを生成する。
        var polygon = new asd.PolygonShape();

        // 多角形を構成する頂点を追加していく。(星形になるようにする。)
        for (int i = 0; i < 10; i++)
        {
            asd.Vector2DF vec = new asd.Vector2DF(1, 0);
            vec.Degree = i * 36;

            if (i % 2 == 0)
            {
                vec.Length = 200;
            }
            else
            {
                vec.Length = 75;
            }

            polygon.AddVertex(vec + new asd.Vector2DF(320, 240));
        }

        // 多角形を描画する図形として設定する。
        geometryObj.Shape = polygon;

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();

            Recorder.TakeScreenShot("GeometryObject2D_PolygonShape", 30);
        }

        // Altseedの終了処理をする。
        asd.Engine.Terminate();
    }
    public void Run()
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("GeometryObject2D_PolygonShape_Textured", 640, 480, new asd.EngineOption());

        // テクスチャとして図形に合成する画像を読み込む。
        var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png");

        // 図形描画オブジェクトのインスタンスを生成する。
        var geometryObj = new asd.GeometryObject2D();

        // 図形描画オブジェクトのインスタンスをエンジンに追加する。
        asd.Engine.AddObject2D(geometryObj);

        // 多角形の図形クラスのインスタンスを生成する。
        var polygon = new asd.PolygonShape();

        // 多角形を構成する頂点を追加していく。(星形になるようにする。)
        for (int i = 0; i < 10; ++i)
        {
            asd.Vector2DF vec = new asd.Vector2DF(1, 0);
            vec.Degree = i * 36;
            vec.Length = (i % 2 == 0) ? 200 : 75;
            polygon.AddVertex(vec + new asd.Vector2DF(320, 240));

        }

        // 多角形を描画する図形として設定し、合成するテクスチャも設定する。
        geometryObj.Shape = polygon;
        geometryObj.Texture = texture;

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();

            Recorder.TakeScreenShot("GeometryObject2D_PolygonShape_Textured", 30);
        }

        // Altseedを終了する。
        asd.Engine.Terminate();
    }
    public void Run()
    {
        // Altseedを初期化する。
        asd.Engine.Initialize("GeometryObject2D_PolygonShape", 640, 480, new asd.EngineOption());

        // 図形描画オブジェクトのインスタンスを生成する。
        var geometryObj = new asd.GeometryObject2D();

        // 図形描画オブジェクトのインスタンスをエンジンに追加する。
        asd.Engine.AddObject2D(geometryObj);

        // 多角形の図形クラスのインスタンスを生成する。
        var polygon = new asd.PolygonShape();

        // 多角形を構成する頂点を追加していく。(星形になるようにする。)
        for (int i = 0; i < 10; ++i)
        {
            asd.Vector2DF vec = new asd.Vector2DF(1, 0);
            vec.Degree = i * 36;
            vec.Length = (i % 2 == 0) ? 200 : 75;
            polygon.AddVertex(vec + new asd.Vector2DF(320, 240));
        }

        // 多角形を描画する図形として設定する。
        geometryObj.Shape = polygon;

        // Altseedのウインドウが閉じられていないか確認する。
        while (asd.Engine.DoEvents())
        {
            // Altseedを更新する。
            asd.Engine.Update();

            Recorder.TakeScreenShot("GeometryObject2D_PolygonShape", 30);
        }

        // Altseedの終了処理をする。
        asd.Engine.Terminate();
    }
Пример #6
0
        protected override void OnStart()
        {
            var scene = new asd.Scene();
            var layer = new asd.Layer2D();
            var texture = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png");
            var geometryObj1 = new asd.GeometryObject2D();
            var geometryObj2 = new asd.GeometryObject2D();
            var geometryObj3 = new asd.GeometryObject2D();
            var geometryObj4 = new asd.GeometryObject2D();
            var geometryObj5 = new asd.GeometryObject2D();
            var geometryObj6 = new asd.GeometryObject2D();

            layer.AddObject(geometryObj1);
            layer.AddObject(geometryObj2);
            layer.AddObject(geometryObj3);
            layer.AddObject(geometryObj4);
            layer.AddObject(geometryObj5);
            layer.AddObject(geometryObj6);

            scene.AddLayer(layer);
            asd.Engine.ChangeScene(scene);

            {
                var circle = new asd.CircleShape();
                circle.OuterDiameter = 100.0f;
                circle.InnerDiameter = 10.0f;
                circle.NumberOfCorners = 96;
                circle.Position = new asd.Vector2DF(100, 50);

                geometryObj1.Shape = circle;
                geometryObj1.Texture = texture;
                geometryObj1.Position = new asd.Vector2DF(0, 0);
            }

            {
                var arc = new asd.ArcShape();
                arc.OuterDiameter = 100;
                arc.InnerDiameter = 10;
                arc.NumberOfCorners = 96;
                arc.Position = new asd.Vector2DF(300, 50);
                arc.StartingCorner = 90;
                arc.EndingCorner = 5;

                geometryObj2.Shape = arc;
                geometryObj2.Texture = texture;
                geometryObj2.Position = new asd.Vector2DF(0, 0);
            }

            {
                var line = new asd.LineShape();
                line.StartingPosition = new asd.Vector2DF(410, 50);
                line.EndingPosition = new asd.Vector2DF(630, 50);
                line.Thickness = 5.0f;

                geometryObj3.Shape = line;
                geometryObj3.Position = new asd.Vector2DF(0, 0);
            }

            {
                var rect = new asd.RectangleShape();
                rect.DrawingArea = new asd.RectF(10, 110, 300, 200);
                rect.UV = new asd.RectF(0.0f, 0.0f, 0.5f, 0.5f);

                geometryObj4.Shape = rect;
                geometryObj4.Texture = texture;
                geometryObj4.Position = new asd.Vector2DF(0, 0);
            }

            {
                var triangle = new asd.TriangleShape();
                triangle.SetPointByIndex(new asd.Vector2DF(320, 350), 0);
                triangle.SetPointByIndex(new asd.Vector2DF(100, 450), 1);
                triangle.SetPointByIndex(new asd.Vector2DF(540, 450), 2);

                triangle.SetUVByIndex(new asd.Vector2DF(0.5f, 0.2f), 0);
                triangle.SetUVByIndex(new asd.Vector2DF(0.1f, 0.5f), 1);
                triangle.SetUVByIndex(new asd.Vector2DF(0.9f, 0.7f), 2);

                geometryObj5.Shape = triangle;
                geometryObj5.Texture = texture;
                geometryObj5.Position = new asd.Vector2DF(0, 0);
            }

            {
                var polygon = new asd.PolygonShape();

                for (int i = 0; i < 10; ++i)
                {
                    asd.Vector2DF vec = new asd.Vector2DF(1, 0);
                    vec.Degree = i * 36;
                    vec.Length = (i % 2 == 0) ? 100 : 55;
                    polygon.AddVertex(vec + new asd.Vector2DF(500, 250));

                }

                geometryObj6.Shape = polygon;
                geometryObj6.Texture = texture;
                geometryObj6.Position = new asd.Vector2DF(0, 0);
            }
        }
Пример #7
0
        protected override void OnStart()
        {
            var scene        = new asd.Scene();
            var layer        = new asd.Layer2D();
            var texture      = asd.Engine.Graphics.CreateTexture2D("Data/Texture/Sample1.png");
            var geometryObj1 = new asd.GeometryObject2D();
            var geometryObj2 = new asd.GeometryObject2D();
            var geometryObj3 = new asd.GeometryObject2D();
            var geometryObj4 = new asd.GeometryObject2D();
            var geometryObj5 = new asd.GeometryObject2D();
            var geometryObj6 = new asd.GeometryObject2D();

            layer.AddObject(geometryObj1);
            layer.AddObject(geometryObj2);
            layer.AddObject(geometryObj3);
            layer.AddObject(geometryObj4);
            layer.AddObject(geometryObj5);
            layer.AddObject(geometryObj6);

            scene.AddLayer(layer);
            asd.Engine.ChangeScene(scene);

            {
                var circle = new asd.CircleShape();
                circle.OuterDiameter   = 100.0f;
                circle.InnerDiameter   = 10.0f;
                circle.NumberOfCorners = 96;
                circle.Position        = new asd.Vector2DF(100, 50);

                geometryObj1.Shape    = circle;
                geometryObj1.Texture  = texture;
                geometryObj1.Position = new asd.Vector2DF(0, 0);
            }

            {
                var arc = new asd.ArcShape();
                arc.OuterDiameter   = 100;
                arc.InnerDiameter   = 10;
                arc.NumberOfCorners = 96;
                arc.Position        = new asd.Vector2DF(300, 50);
                arc.StartingCorner  = 90;
                arc.EndingCorner    = 5;

                geometryObj2.Shape    = arc;
                geometryObj2.Texture  = texture;
                geometryObj2.Position = new asd.Vector2DF(0, 0);
            }

            {
                var line = new asd.LineShape();
                line.StartingPosition = new asd.Vector2DF(410, 50);
                line.EndingPosition   = new asd.Vector2DF(630, 50);
                line.Thickness        = 5.0f;

                geometryObj3.Shape    = line;
                geometryObj3.Position = new asd.Vector2DF(0, 0);
            }

            {
                var rect = new asd.RectangleShape();
                rect.DrawingArea = new asd.RectF(10, 110, 300, 200);
                rect.UV          = new asd.RectF(0.0f, 0.0f, 0.5f, 0.5f);

                geometryObj4.Shape    = rect;
                geometryObj4.Texture  = texture;
                geometryObj4.Position = new asd.Vector2DF(0, 0);
            }

            {
                var triangle = new asd.TriangleShape();
                triangle.SetPointByIndex(new asd.Vector2DF(320, 350), 0);
                triangle.SetPointByIndex(new asd.Vector2DF(100, 450), 1);
                triangle.SetPointByIndex(new asd.Vector2DF(540, 450), 2);

                triangle.SetUVByIndex(new asd.Vector2DF(0.5f, 0.2f), 0);
                triangle.SetUVByIndex(new asd.Vector2DF(0.1f, 0.5f), 1);
                triangle.SetUVByIndex(new asd.Vector2DF(0.9f, 0.7f), 2);

                geometryObj5.Shape    = triangle;
                geometryObj5.Texture  = texture;
                geometryObj5.Position = new asd.Vector2DF(0, 0);
            }

            {
                var polygon = new asd.PolygonShape();

                for (int i = 0; i < 10; ++i)
                {
                    asd.Vector2DF vec = new asd.Vector2DF(1, 0);
                    vec.Degree = i * 36;
                    vec.Length = (i % 2 == 0) ? 100 : 55;
                    polygon.AddVertex(vec + new asd.Vector2DF(500, 250));
                }

                geometryObj6.Shape    = polygon;
                geometryObj6.Texture  = texture;
                geometryObj6.Position = new asd.Vector2DF(0, 0);
            }
        }