summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/map/map_editor.js
blob: 754172bb677a6ca1515c089429ba51d5cea39b59 (plain)
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
var editor = new function (){

	var base = this;

	var cube = null
	var cx, cy
	
	base.init = function(){
		map.on("mousedown", base.mousedown)
		map.on("mousemove", base.mousemove)
		map.on("mousedrag", base.mousedrag)
		map.on("mouseup", base.mouseup)
		map.on("mousewheel", base.mousewheel)
		document.getElementById("export").addEventListener("keydown", base.stopPropagation)
		document.getElementById("export").addEventListener("mousedown", base.stopPropagation)
		document.getElementById("export").addEventListener("mousemove", base.stopPropagation)
		document.getElementById("export").addEventListener("mouseup", base.stopPropagation)
		window.addEventListener('keydown', base.keydown)
	}
	
	base.mousedown = function(e,x,y) {
		if (! e.shiftKey) return
		cx = x
		cy = y
		cube = new MX.BoxDimensions({
			x: cx,
			y: -10,
			z: cy,
			width: 1,
			height: 1,
			depth: 1,
			borderWidth: 1,
			borderColor: "#000",
			color: "#fff"
		})
		cube.persisted = false
		scene.add( cube );
	}
	
	base.mousemove = function(e,x,y) {
	}
	
	base.mousedrag = function(e,dx,dy) {
		if (! cube) return
		cube.x = cx + dx/2
		cube.z = cy + dy/2
		cube.setWidth( abs(dx) )
		cube.setDepth( abs(dy) )
		cube.setHeight( max( cube.width, cube.depth ) )
		cube.update()
	}
	
	base.mouseup = function(e){
		cube = null
	}
	
	base.mousewheel = function(e,x,z,delta){
		if (! e.shiftKey) return;

		scene.inner.children.some(function(s){
			if (s.contains(-x, null, z)) {
				s.y += delta * 1000
				s.persisted = false
				console.log(s.id)
				return true
			}
			return false
		})

	}
	
	base.stopPropagation = function(e){ e.stopPropagation() }
	
	base.exportObjects = function(){
		var s = scene.inner.children
							.filter(function(s){ return ! s.persisted })
							.map(function(s){ return s.toString() })
							.join("\n\n")
		document.getElementById("export").value = s
	}
	
	base.exportCamera = function(){
		var s = scene.camera.toString()
		document.getElementById("export").value = s
		console.log(s)
	}

	base.keydown = function(e){
		switch (e.keyCode) {

			case 67: // c
				base.exportCamera()
				break;

			case 86: // v
				base.exportObjects()
				break;

		}
	}

}