/// <summary> /// <see cref="ShapeNode"/>の新しいインスタンスを生成します。 /// </summary> /// <exception cref="InvalidOperationException">Graphics機能が初期化されていない。</exception> protected ShapeNode() { if (!Engine.Config.EnabledCoreModules.HasFlag(CoreModules.Graphics)) { throw new InvalidOperationException("Graphics機能が初期化されていません。"); } _RenderedPolygon = RenderedPolygon.Create(); }
internal TransformNodeInfo(TransformNode transformNode) { _TransformNode = transformNode; _SizeBoxLines = new RenderedPolygon[4]; for (int i = 0; i < _SizeBoxLines.Length; i++) { _SizeBoxLines[i] = RenderedPolygon.Create(); } _PositionBox = RenderedPolygon.Create(); }
private void SetPoint(RenderedPolygon renderedPolygon, Vector2F point, float size, Color color) { Span <Vector2F> points = stackalloc Vector2F[4]; points[0] = point + new Vector2F(-1f, -1f) * size / 2f; points[1] = point + new Vector2F(1f, -1f) * size / 2f; points[2] = point + new Vector2F(1f, 1f) * size / 2f; points[3] = point + new Vector2F(-1f, 1f) * size / 2f; Engine.Vector2FArrayCache.FromSpan(points); renderedPolygon.CreateVertexesByVector2F(Engine.Vector2FArrayCache); renderedPolygon.OverwriteVertexesColor(color); renderedPolygon.SetDefaultIndexBuffer(); }
private void SetPoint(RenderedPolygon renderedPolygon, Vector2F point, float size, Color color) { Span <Vector2F> points = stackalloc Vector2F[4]; points[0] = point + new Vector2F(-1f, -1f) * size / 2f; points[1] = point + new Vector2F(1f, -1f) * size / 2f; points[2] = point + new Vector2F(1f, 1f) * size / 2f; points[3] = point + new Vector2F(-1f, 1f) * size / 2f; var array = Vector2FArray.Create(points); renderedPolygon.CreateVertexesByVector2F(array); renderedPolygon.OverwriteVertexesColor(color); }
public AnchorTransformerNodeInfo(AnchorTransformerNode transformerNode) : base(transformerNode) { _SizeBoxLines = new RenderedPolygon[4]; for (int i = 0; i < _SizeBoxLines.Length; i++) { _SizeBoxLines[i] = RenderedPolygon.Create(); } _AnchorLines = new RenderedPolygon[4]; for (int i = 0; i < _AnchorLines.Length; i++) { _AnchorLines[i] = RenderedPolygon.Create(); } _PositionBox = RenderedPolygon.Create(); }
private void SetLine(RenderedPolygon renderedPolygon, Vector2F point1, Vector2F point2, Color color) { Span <Vector2F> positions = stackalloc Vector2F[4]; var vec = point2 - point1; var side = new Vector2F(vec.Y, -vec.X).Normal; positions[0] = point1 - side; positions[1] = point1 + side; positions[2] = point2 + side; positions[3] = point2 - side; Engine.Vector2FArrayCache.FromSpan(positions); renderedPolygon.CreateVertexesByVector2F(Engine.Vector2FArrayCache); renderedPolygon.OverwriteVertexesColor(color); renderedPolygon.SetDefaultIndexBuffer(); }
//internal void Update() //{ // var origin = _TransformNode.Position; // UpdateSizeBox(origin); // UpdatePivot(); // UpdateMargin(origin); // UpdateAnchors(); //} //private void UpdateSizeBox(Vector2F origin) //{ // var points = new Vector2F[4]; // points[0] = origin + new Vector2F(); // points[1] = origin + new Vector2F(_TransformNode.Size.X, 0); // points[2] = origin + _TransformNode.Size; // points[3] = origin + new Vector2F(0, _TransformNode.Size.Y); // for (int i = 0; i < points.Length; i++) // { // var point1 = points[i]; // var point2 = points[(i + 1) % points.Length]; // SetLine(_SizeBoxLines[i], point1, point2, new Color(255, 128, 0)); // } //} //private void UpdatePivot() //{ // SetPoint(_PivotBox, _TransformNode.Position, 5f, new Color(255, 128, 0)); //} //private void UpdateMargin(Vector2F origin) //{ // var ancestorSize = GetAncestorSize(); // SetLine(_LeftTop, // ancestorSize * _TransformNode.AnchorMin, // origin, new Color(255, 100, 100)); // SetLine(_RightBottom, // ancestorSize * _TransformNode.AnchorMax, // origin + _TransformNode.Size, new Color(100, 100, 255)); //} //private void UpdateAnchors() //{ // var ancestorSize = GetAncestorSize(); // SetPoint(_AnchorMin, ancestorSize * _TransformNode.AnchorMin, 4, new Color(255, 0, 0)); // SetPoint(_AnchorMax, ancestorSize * _TransformNode.AnchorMax, 4, new Color(0, 0, 255)); //} private void SetLine(RenderedPolygon renderedPolygon, Vector2F point1, Vector2F point2, Color color) { Span <Vector2F> positions = stackalloc Vector2F[4]; var vec = point2 - point1; var side = new Vector2F(vec.Y, -vec.X).Normal; positions[0] = point1 - side; positions[1] = point1 + side; positions[2] = point2 + side; positions[3] = point2 - side; var array = Vector2FArray.Create(positions); renderedPolygon.CreateVertexesByVector2F(array); renderedPolygon.OverwriteVertexesColor(color); }
internal TransformNodeInfo(TransformNode transformNode) { _TransformNode = transformNode; _SizeBoxLines = new RenderedPolygon[4]; for (int i = 0; i < _SizeBoxLines.Length; i++) { _SizeBoxLines[i] = RenderedPolygon.Create(); } _PivotBox = RenderedPolygon.Create(); _LeftTop = RenderedPolygon.Create(); _RightBottom = RenderedPolygon.Create(); _AnchorMin = RenderedPolygon.Create(); _AnchorMax = RenderedPolygon.Create(); }