Survivalcraft API 1.8.2.3
v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemCellChangeQueue.cs
浏览该文件的文档.
1
using
Engine
;
2
using
GameEntitySystem
;
3
using
TemplatesDatabase
;
4
5
namespace
Game
{
6
public
class
SubsystemCellChangeQueue
:
Subsystem
,
IUpdateable
{
7
struct
CellChange
{
8
public
int
RequiredValue
;
9
10
public
int
Value
;
11
}
12
13
public
SubsystemTime
m_subsystemTime
;
14
15
public
SubsystemTerrain
m_subsystemTerrain
;
16
17
Dictionary<Point3, CellChange>
m_toChange
=
new
();
18
19
UpdateOrder
IUpdateable.UpdateOrder
=>
UpdateOrder
.Default;
20
21
public
override
void
Load
(
ValuesDictionary
valuesDictionary) {
22
m_subsystemTime
=
Project
.FindSubsystem<
SubsystemTime
>(
true
);
23
m_subsystemTerrain
=
Project
.FindSubsystem<
SubsystemTerrain
>(
true
);
24
}
25
26
public
void
QueueCellChange
(
int
x,
int
y,
int
z,
int
value,
bool
applyImmediately =
false
) {
27
if
(applyImmediately) {
28
m_subsystemTerrain
.ChangeCell(x, y, z, value);
29
}
30
else
{
31
m_toChange
[
new
Point3
(x, y, z)] =
new
CellChange
{ Value = value, RequiredValue =
m_subsystemTerrain
.Terrain.GetCellValue(x, y, z) };
32
}
33
if
(
m_toChange
.Count >= 10000) {
34
ApplyCellChanges
();
35
}
36
}
37
38
void
IUpdateable
.
Update
(
float
dt) {
39
if
(
m_subsystemTime
.PeriodicGameTimeEvent(20.0, 0.0)) {
40
ApplyCellChanges
();
41
}
42
}
43
44
void
ApplyCellChanges
() {
45
foreach
(KeyValuePair<Point3, CellChange> item
in
m_toChange
) {
46
Point3
key = item.Key;
47
if
(
Terrain
.
ReplaceLight
(
m_subsystemTerrain
.Terrain.GetCellValue(key.
X
, key.
Y
, key.
Z
), 0)
48
==
Terrain
.
ReplaceLight
(item.Value.RequiredValue, 0)) {
49
m_subsystemTerrain
.ChangeCell(key.
X
, key.
Y
, key.
Z
, item.Value.Value);
50
}
51
}
52
m_toChange
.Clear();
53
}
54
}
55
}
Game.SubsystemCellChangeQueue
定义
SubsystemCellChangeQueue.cs:6
Game.SubsystemCellChangeQueue.m_subsystemTime
SubsystemTime m_subsystemTime
定义
SubsystemCellChangeQueue.cs:13
Game.SubsystemCellChangeQueue.m_toChange
Dictionary< Point3, CellChange > m_toChange
定义
SubsystemCellChangeQueue.cs:17
Game.SubsystemCellChangeQueue.UpdateOrder
UpdateOrder IUpdateable. UpdateOrder
定义
SubsystemCellChangeQueue.cs:19
Game.SubsystemCellChangeQueue.QueueCellChange
void QueueCellChange(int x, int y, int z, int value, bool applyImmediately=false)
定义
SubsystemCellChangeQueue.cs:26
Game.SubsystemCellChangeQueue.Load
override void Load(ValuesDictionary valuesDictionary)
定义
SubsystemCellChangeQueue.cs:21
Game.SubsystemCellChangeQueue.ApplyCellChanges
void ApplyCellChanges()
定义
SubsystemCellChangeQueue.cs:44
Game.SubsystemCellChangeQueue.m_subsystemTerrain
SubsystemTerrain m_subsystemTerrain
定义
SubsystemCellChangeQueue.cs:15
Game.SubsystemTerrain
定义
SubsystemTerrain.cs:6
Game.SubsystemTime
定义
SubsystemTime.cs:6
Game.Terrain
定义
Terrain.cs:5
Game.Terrain.ReplaceLight
static int ReplaceLight(int value, int light)
定义
Terrain.cs:329
GameEntitySystem.Subsystem
定义
Subsystem.cs:5
GameEntitySystem.Subsystem.ValuesDictionary
ValuesDictionary ValuesDictionary
定义
Subsystem.cs:12
GameEntitySystem.Subsystem.Project
Project Project
定义
Subsystem.cs:10
Game.IUpdateable
定义
IUpdateable.cs:2
Game.IUpdateable.UpdateOrder
UpdateOrder UpdateOrder
定义
IUpdateable.cs:3
Game.IUpdateable.Update
void Update(float dt)
Engine
定义
BaseSound.cs:10
GameEntitySystem
定义
Component.cs:6
Game
定义
ContentFileBridge.cs:4
TemplatesDatabase
定义
Database.cs:6
Engine.Point3
定义
Point3.cs:2
Engine.Point3.Y
int Y
定义
Point3.cs:5
Engine.Point3.X
int X
定义
Point3.cs:3
Engine.Point3.Z
int Z
定义
Point3.cs:7
Game.SubsystemCellChangeQueue.CellChange
定义
SubsystemCellChangeQueue.cs:7
Game.SubsystemCellChangeQueue.CellChange.Value
int Value
定义
SubsystemCellChangeQueue.cs:10
Game.SubsystemCellChangeQueue.CellChange.RequiredValue
int RequiredValue
定义
SubsystemCellChangeQueue.cs:8
SurvivalcraftApi 1.8.2.3
Survivalcraft.Windows
Subsystem
SubsystemCellChangeQueue.cs
制作者
1.16.1