Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
DragHostWidget.cs
浏览该文件的文档.
1
using
Engine
;
2
3
namespace
Game
{
4
public
class
DragHostWidget
:
ContainerWidget
{
5
public
Widget
m_dragWidget
;
6
7
public
object
m_dragData
;
8
9
public
Action
m_dragEndedHandler
;
10
11
public
Vector2
m_dragPosition
;
12
13
public
bool
IsDragInProgress
=>
m_dragWidget
!=
null
;
14
15
public
DragHostWidget
() =>
IsHitTestVisible
=
false
;
16
17
public
void
BeginDrag
(
Widget
dragWidget,
object
dragData, Action dragEndedHandler) {
18
if
(
m_dragWidget
==
null
) {
19
m_dragWidget
= dragWidget;
20
m_dragData
= dragData;
21
m_dragEndedHandler
= dragEndedHandler;
22
Children
.Add(
m_dragWidget
);
23
UpdateDragPosition
();
24
}
25
}
26
27
public
void
EndDrag
() {
28
if
(
m_dragWidget
!=
null
) {
29
Children
.Remove(
m_dragWidget
);
30
m_dragWidget
=
null
;
31
m_dragData
=
null
;
32
if
(
m_dragEndedHandler
!=
null
) {
33
m_dragEndedHandler
();
34
m_dragEndedHandler
=
null
;
35
}
36
}
37
}
38
39
public
override
void
Update
() {
40
if
(
m_dragWidget
!=
null
) {
41
UpdateDragPosition
();
42
IDragTargetWidget
dragTargetWidget =
HitTestGlobal
(
m_dragPosition
, w => w is
IDragTargetWidget
) as
IDragTargetWidget
;
43
if
(
Input
.Drag.HasValue) {
44
dragTargetWidget?.
DragOver
(
m_dragWidget
,
m_dragData
);
45
}
46
else
{
47
try
{
48
dragTargetWidget?.
DragDrop
(
m_dragWidget
,
m_dragData
);
49
}
50
finally
{
51
EndDrag
();
52
}
53
}
54
}
55
}
56
57
public
override
void
ArrangeOverride
() {
58
foreach
(
Widget
child
in
Children
) {
59
Vector2
parentDesiredSize = child.
ParentDesiredSize
;
60
parentDesiredSize.X =
MathUtils
.
Min
(parentDesiredSize.
X
,
ActualSize
.X);
61
parentDesiredSize.Y =
MathUtils
.
Min
(parentDesiredSize.
Y
,
ActualSize
.Y);
62
child.
Arrange
(
ScreenToWidget
(
m_dragPosition
) - 0.5f * parentDesiredSize, parentDesiredSize);
63
}
64
}
65
66
public
virtual
void
UpdateDragPosition
() {
67
if
(
Input
.Drag.HasValue) {
68
m_dragPosition
=
Input
.Drag.Value;
69
m_dragPosition.X = Math.Clamp(
m_dragPosition
.X,
GlobalBounds
.Min.X,
GlobalBounds
.Max.X - 1f);
70
m_dragPosition.Y = Math.Clamp(
m_dragPosition
.Y,
GlobalBounds
.Min.Y,
GlobalBounds
.Max.Y - 1f);
71
}
72
}
73
}
74
}
Engine.MathUtils
定义
MathUtils.cs:2
Engine.MathUtils.Min
static int Min(int x1, int x2)
定义
MathUtils.cs:7
Game.ContainerWidget.ContainerWidget
ContainerWidget()
定义
ContainerWidget.cs:20
Game.ContainerWidget.Children
readonly WidgetsList Children
定义
ContainerWidget.cs:5
Game.DragHostWidget.m_dragEndedHandler
Action m_dragEndedHandler
定义
DragHostWidget.cs:9
Game.DragHostWidget.m_dragWidget
Widget m_dragWidget
定义
DragHostWidget.cs:5
Game.DragHostWidget.IsDragInProgress
bool IsDragInProgress
定义
DragHostWidget.cs:13
Game.DragHostWidget.ArrangeOverride
override void ArrangeOverride()
定义
DragHostWidget.cs:57
Game.DragHostWidget.BeginDrag
void BeginDrag(Widget dragWidget, object dragData, Action dragEndedHandler)
定义
DragHostWidget.cs:17
Game.DragHostWidget.EndDrag
void EndDrag()
定义
DragHostWidget.cs:27
Game.DragHostWidget.m_dragData
object m_dragData
定义
DragHostWidget.cs:7
Game.DragHostWidget.Update
override void Update()
定义
DragHostWidget.cs:39
Game.DragHostWidget.m_dragPosition
Vector2 m_dragPosition
定义
DragHostWidget.cs:11
Game.DragHostWidget.DragHostWidget
DragHostWidget()
定义
DragHostWidget.cs:15
Game.DragHostWidget.UpdateDragPosition
virtual void UpdateDragPosition()
定义
DragHostWidget.cs:66
Game.Widget
定义
Widget.cs:10
Game.Widget.ParentDesiredSize
Vector2 ParentDesiredSize
定义
Widget.cs:454
Game.Widget.Arrange
virtual void Arrange(Vector2 position, Vector2 parentActualSize)
定义
Widget.cs:650
Game.Widget.HitTestGlobal
virtual Widget HitTestGlobal(Vector2 point, Func< Widget, bool > predicate=null)
定义
Widget.cs:696
Game.Widget.Input
WidgetInput Input
定义
Widget.cs:296
Game.Widget.GlobalBounds
BoundingRectangle GlobalBounds
定义
Widget.cs:342
Game.Widget.IsHitTestVisible
virtual bool IsHitTestVisible
定义
Widget.cs:380
Game.Widget.ActualSize
Vector2 ActualSize
定义
Widget.cs:447
Game.Widget.ScreenToWidget
virtual Vector2 ScreenToWidget(Vector2 p)
定义
Widget.cs:698
Game.IDragTargetWidget
定义
IDragTargetWidget.cs:2
Game.IDragTargetWidget.DragOver
void DragOver(Widget dragWidget, object data)
Game.IDragTargetWidget.DragDrop
void DragDrop(Widget dragWidget, object data)
Engine
定义
BaseSound.cs:10
Game
定义
ContentFileBridge.cs:4
Engine.Vector2
定义
Vector2.cs:2
Engine.Vector2.Y
float Y
定义
Vector2.cs:5
Engine.Vector2.X
float X
定义
Vector2.cs:3
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Widget
DragHostWidget.cs
制作者
1.16.1