-
Notifications
You must be signed in to change notification settings - Fork 5
/
TODO
59 lines (48 loc) · 2.89 KB
/
TODO
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
pyMCWorldGen Todo list:
========
Layers:
DSLayerMask2d:
allow override values for ANY block coordinate (somehow do this using a "pull from input" design just like other paths)
cache chunk heights, we're going to need them when other filters request them.
move block height rendering code to a filter instead.
DSLayerMask3d: make it (dependent on diamondsquare3D)
Filters:
Add layer masking to all filters that can be masked.
CacheMaskFilter:
make this. It reads the initial input only once and caches it for later retrieval.
TranslateFilter: make it. It translates a layer by a certain number of blocks (in the x, z AND y direction.)
ArithmeticMaskFilter: make it. It scales and shifts all elements of a LayerMask2d ( Mask * Scale + Shift ), or perhaps blends two mask filters.....
BlockOverwriteFilter:
make it.
it blends two chunks together either based on either an "air block" ID or a LayerMask3d (pending.)
inputs: base chunk, overwrite chunk, air block (air blocks in overwrite chunk won't replace blocks in the base chunk.)
ProfilerFilter: make it. It profiles the amount of time the filter took to run either .getChunk() or .getChunkHeights(). Might have to be a hack...
VerificationFilter: make it. It makes sure that the filter output is compliant, then acts as a passthrough.
LayeredTerrainFilter: make it. It takes a list of layermasks and blockID's and creates layered terrain from them.
Operator Overloading:
Layers should be able to operator overload and return an arithmetic filter of some kind... right? Hmm, not block data.
LayerMasks should have operator overloading, but not Layers.
Ask togos if you can blatantly steal some of his ideas (ridge function etc.)
LandmarkGenerators:
Landmark:
Design a landmark-drawing API so users can get fresh with landmarks too:
Schematic loading API
Line-drawing API
Box API
Sphere-drawing API
Anything else we might need!
LinearCaveLandmark: make it. It makes caves using a line drawing algorithm.
OvularCaveLandmark: make it. It makes caves by drawing ovals of air.
Graphs:
Make them. these are aggregate layers which generate entire map chunks. Basically a layer, but given a fancy name and contains a
fuckton of filters. I probably want these in a separate folder.
Diamondsquare:
diamondsquare3D: make it.
Testing:
Write unit tests for saveutils
Write unit tests for individual filters that make more sense. Write each test in order of precedence, beginning with tests that are isolated from other components.
Copy the old unittests to integration tests
===========================================
Ideas:
SchematicFilter: load from a pymclevel schematic
Some sort of iconic building (probably a SchematicFilter, maybe like the arch from ico/SOTC