-
Notifications
You must be signed in to change notification settings - Fork 0
/
Terrain.ms
153 lines (107 loc) · 4.11 KB
/
Terrain.ms
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
---- ecouteurs terrain ------------------
TERRAIN_ECOUTEUR_deleted = undefined
TERRAIN_ECOUTEUR_topo = undefined
TERRAIN_ECOUTEUR_transf = undefined
gc light:true
global TERRAIN_ECOUTEUR_deleted, TERRAIN_ECOUTEUR_topo, TERRAIN_ECOUTEUR_transf
---- ecouteurs terrain ------------------
--------------- debugger ---------
(
filein "$userScripts\\cp-Urba\\modules\\Commun\\Urba - Debug.ms"
)
plugin geometry Urba_terrain
name:"Terrain"
classID:#(528514,174852)
category:"CP | Urba"
invisible:false
extends:editable_poly
replaceUI:true
version:0
(
------------ DEBUG -------------------------------------------------------------------------------------------------------------------------
fn debug _txt var: param: =
try if true do ::debuger _txt prefix:"Terrain " var:var param:param
catch ()
------------ DEBUG -------------------------------------------------------------------------------------------------------------------------
--------------- Membres ----------------------------------------------------------------------------------------------------------------------
----- la structure centrale du plugin -------------------
include "$userScripts\\cp-Urba\\modules\\Terrain\\Terrain - core.ms"
local core = str_terrain_node_core ()
---- Actualisations -----------------
fn actualiser = core.actualiser ()
fn initialiser = core.initialiser this
---- Divers -----------------
fn aCommecalque _node = findItem this.calques_nodes _node != 0
fn aCommeRelief _node = findItem this.reliefs_nodes _node != 0
fn set_transform _mtrx = this.transformation = _mtrx
---- Mutations -----------------
fn ajouter_relief _node aActualiser:true =(
format "\n"
-- debug " ### ajouter_relief ###"
if appendIfUnique this.reliefs_nodes _node and aActualiser do (
this.rollout_global.actualiser ()
actualiser ()
)
)
fn supprimer_relief _id=(
deleteItem this.reliefs_nodes _id
actualiser ()
)
fn ajouter_calque _node aActualiser:true =(
format "\n"
-- debug " ### ajouter_calque ###"
if appendIfUnique this.calques_nodes _node and aActualiser do (
append this.calques_operations ( #addition as string )
this.rollout_global.actualiser ()
actualiser ()
)
)
fn supprimer_calque _id =(
deleteItem this.calques_nodes _id
deleteItem this.calques_operations _id
actualiser ()
)
fn set_calque_mode _id_calque _mode =(
if _id_calque <= this.calques_operations.count do
if _mode == #addition or _mode == #soustraction or _mode == #intersection do (
this.calques_operations[ _id_calque ] = _mode
this.rollout_global.actualiser ()
actualiser ()
)
)
---------------- Parameters et rollouts -------------------------------------------------------------------------------------------------------------
include "$userScripts\\cp-Urba\\modules\\Terrain\\divers\\Terrain - Parameters et rollouts.ms"
include "$userScripts\\cp-Urba\\modules\\Commun\\Urba - rollout - A propos.ms"
--------------- Creation ----------------------------------------------------------------------------------------------------------------------
tool create (
on mousePoint click do (
nodeTM.translation = worldPoint--- [0,0,0]
set_transform nodeTM
actualiser ()
initialiser ()
#stop
)
)
--------------- Evenements ----------------------------------------------------------------------------------------------------------------------
on load do (
debug "load du plugin"
initialiser ()
)
on clone _original do (
initialiser ()
)
on create do (
debug "creation du plugin"
--- on verifie les noueds présent pour adapter la grille monde-----
local terrains_presents = for nd_terrain in geometry where classof nd_terrain == Urba_terrain collect nd_terrain
if terrains_presents.count>0 do (
grille_monde_resolution = terrains_presents[1].grille_monde_resolution
grille_monde_position = terrains_presents[1].grille_monde_position
)
initialiser ()
)
on update do (
-- debug "update du plugin"
-- initialiser ()
)
)