-
Notifications
You must be signed in to change notification settings - Fork 80
/
Copy pathETMonoEntity.cs
106 lines (93 loc) · 4.2 KB
/
ETMonoEntity.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
using System;
using UnityEngine;
using UnityGameFramework.Runtime;
using Game;
using GameFramework;
namespace ET
{
[DisallowMultipleComponent]
public sealed class ETMonoEntity : AEntity
{
private UGFEntity m_UGFEntity;
private long m_EntityEventTypeLongHashCode;
private IUGFEntityEvent m_EntityEvent;
public bool IsShow { get; private set; }
public UGFEntity UGFEntity => m_UGFEntity;
public void OnReload()
{
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnReload(m_UGFEntity);
}
protected override void OnShow(object userData)
{
ETMonoEntityData entityData = (ETMonoEntityData)userData;
if (entityData.ParentEntity == null)
{
throw new GameFrameworkException("ETMonoEntityData ParentEntity is null!");
}
if (m_UGFEntity == default || m_EntityEventTypeLongHashCode != entityData.EntityEventTypeLongHashCode || entityData.ParentEntity != m_UGFEntity.Parent)
{
UGFEntityDispose();
m_EntityEventTypeLongHashCode = entityData.EntityEventTypeLongHashCode;
m_UGFEntity = entityData.ParentEntity.AddChild<UGFEntity, long, ETMonoEntity>(m_EntityEventTypeLongHashCode, this, true);
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnInit(m_UGFEntity, entityData.UserData);
}
base.OnShow(userData);
IsShow = true;
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnShow(m_UGFEntity, entityData.UserData);
entityData.Release();
}
private void OnDestroy()
{
UGFEntityDispose();
}
private void UGFEntityDispose()
{
if (m_UGFEntity != default && !m_UGFEntity.IsDisposed)
{
UGFEntity ugfEntity = m_UGFEntity;
m_UGFEntity = default;
ugfEntity.Dispose();
}
}
protected override void OnHide(bool isShutdown, object userData)
{
IsShow = false;
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnHide(m_UGFEntity, isShutdown, userData);
if (isShutdown)
{
UGFEntityDispose();
}
base.OnHide(isShutdown, userData);
}
protected override void OnAttached(EntityLogic childEntity, Transform parentTransform, object userData)
{
base.OnAttached(childEntity, parentTransform, userData);
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnAttached(m_UGFEntity, childEntity, parentTransform, userData);
}
protected override void OnDetached(EntityLogic childEntity, object userData)
{
base.OnDetached(childEntity, userData);
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnDetached(m_UGFEntity, childEntity, userData);
}
protected override void OnAttachTo(EntityLogic parentEntity, Transform parentTransform, object userData)
{
base.OnAttachTo(parentEntity, parentTransform, userData);
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnAttachTo(m_UGFEntity, parentEntity, parentTransform, userData);
}
protected override void OnDetachFrom(EntityLogic parentEntity, object userData)
{
base.OnDetachFrom(parentEntity, userData);
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnDetachFrom(m_UGFEntity, parentEntity, userData);
}
protected override void OnUpdate(float elapseSeconds, float realElapseSeconds)
{
base.OnUpdate(elapseSeconds, realElapseSeconds);
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnUpdate(m_UGFEntity, elapseSeconds, realElapseSeconds);
}
protected override void OnRecycle()
{
base.OnRecycle();
UGFEventComponent.Instance.GetEntityEvent(m_EntityEventTypeLongHashCode).OnRecycle(m_UGFEntity);
}
}
}