Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Ablesons
three.js
提交
2d05e450
T
three.js
项目概览
Ablesons
/
three.js
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
three.js
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2d05e450
编写于
1月 07, 2015
作者:
M
Mr.doob
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Editor: Reworking scripting.
上级
1bd90693
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
119 addition
and
8929 deletion
+119
-8929
editor/index.html
editor/index.html
+0
-1
editor/js/Editor.js
editor/js/Editor.js
+4
-1
editor/js/Sidebar.Script.Editor.js
editor/js/Sidebar.Script.Editor.js
+0
-68
editor/js/Sidebar.Script.js
editor/js/Sidebar.Script.js
+71
-3
editor/js/Sidebar.js
editor/js/Sidebar.js
+1
-1
editor/js/libs/app.js
editor/js/libs/app.js
+6
-5
editor/js/libs/codemirror/codemirror.css
editor/js/libs/codemirror/codemirror.css
+0
-301
editor/js/libs/codemirror/codemirror.js
editor/js/libs/codemirror/codemirror.js
+0
-7831
editor/js/libs/codemirror/modes/javascript.js
editor/js/libs/codemirror/modes/javascript.js
+0
-686
editor/js/libs/ui.editor.js
editor/js/libs/ui.editor.js
+37
-32
未找到文件。
editor/index.html
浏览文件 @
2d05e450
...
...
@@ -77,7 +77,6 @@
<script
src=
"js/Sidebar.Geometry.TorusKnotGeometry.js"
></script>
<script
src=
"js/Sidebar.Material.js"
></script>
<script
src=
"js/Sidebar.Script.js"
></script>
<script
src=
"js/Sidebar.Script.Editor.js"
></script>
<script
src=
"js/Toolbar.js"
></script>
<script
src=
"js/Viewport.js"
></script>
<script
src=
"js/Viewport.Info.js"
></script>
...
...
editor/js/Editor.js
浏览文件 @
2d05e450
...
...
@@ -49,6 +49,9 @@ var Editor = function () {
helperRemoved
:
new
SIGNALS
.
Signal
(),
materialChanged
:
new
SIGNALS
.
Signal
(),
scriptChanged
:
new
SIGNALS
.
Signal
(),
fogTypeChanged
:
new
SIGNALS
.
Signal
(),
fogColorChanged
:
new
SIGNALS
.
Signal
(),
fogParametersChanged
:
new
SIGNALS
.
Signal
(),
...
...
@@ -384,7 +387,7 @@ Editor.prototype = {
this
.
camera
.
aspect
=
camera
.
aspect
;
this
.
camera
.
near
=
camera
.
near
;
this
.
camera
.
far
=
camera
.
far
;
this
.
setScene
(
loader
.
parse
(
json
.
scene
)
);
this
.
scripts
=
json
.
scripts
;
...
...
editor/js/Sidebar.Script.Editor.js
已删除
100644 → 0
浏览文件 @
1bd90693
/**
* @author mrdoob / http://mrdoob.com/
*/
Sidebar
.
Script
.
Editor
=
function
(
editor
)
{
var
signals
=
editor
.
signals
;
var
timeout
;
var
scriptSource
=
new
UI
.
TextArea
(
'
javascript
'
).
setWidth
(
'
240px
'
).
setHeight
(
'
180px
'
).
setFontSize
(
'
12px
'
);
scriptSource
.
onKeyUp
(
function
()
{
clearTimeout
(
timeout
);
timeout
=
setTimeout
(
function
()
{
var
object
=
editor
.
selected
;
var
source
=
scriptSource
.
getValue
();
try
{
var
script
=
new
Function
(
'
scene
'
,
'
time
'
,
source
).
bind
(
object
.
clone
()
);
script
(
new
THREE
.
Scene
(),
0
);
scriptSource
.
dom
.
classList
.
add
(
'
success
'
);
scriptSource
.
dom
.
classList
.
remove
(
'
fail
'
);
}
catch
(
error
)
{
scriptSource
.
dom
.
classList
.
remove
(
'
success
'
);
scriptSource
.
dom
.
classList
.
add
(
'
fail
'
);
return
;
}
editor
.
scripts
[
object
.
uuid
]
=
source
;
editor
.
signals
.
objectChanged
.
dispatch
(
object
);
},
500
);
}
);
signals
.
objectSelected
.
add
(
function
(
object
)
{
if
(
object
!==
null
)
{
var
script
=
editor
.
scripts
[
object
.
uuid
];
if
(
script
!==
undefined
)
{
scriptSource
.
setValue
(
script
);
}
else
{
scriptSource
.
setValue
(
''
);
}
}
}
);
return
scriptSource
;
}
editor/js/Sidebar.Script.js
浏览文件 @
2d05e450
...
...
@@ -18,15 +18,67 @@ Sidebar.Script = function ( editor ) {
container
.
addStatic
(
new
UI
.
Text
(
'
Script
'
).
setTextTransform
(
'
uppercase
'
)
);
container
.
add
(
new
UI
.
Break
()
);
var
source
=
new
Sidebar
.
Script
.
Editor
(
editor
);
container
.
add
(
source
);
var
scripts
=
new
UI
.
Panel
();
container
.
add
(
scripts
);
//
var
scriptEvent
=
new
UI
.
Select
();
scriptEvent
.
setOptions
(
{
'
init
'
:
'
init
'
,
'
keydown
'
:
'
keydown
'
,
'
keyup
'
:
'
keyup
'
,
'
update
'
:
'
update
'
}
);
container
.
add
(
scriptEvent
);
var
addButton
=
new
UI
.
Button
(
'
Add
'
);
addButton
.
onClick
(
function
()
{
var
script
=
new
UI
.
ScriptEditor
();
script
.
onChange
(
function
()
{
signals
.
scriptChanged
.
dispatch
();
}
);
scripts
.
add
(
script
);
}
);
container
.
add
(
addButton
);
// signals
signals
.
objectSelected
.
add
(
function
(
object
)
{
scripts
.
clear
();
if
(
object
!==
null
)
{
container
.
setDisplay
(
'
block
'
);
var
sources
=
editor
.
scripts
[
object
.
uuid
];
if
(
sources
!==
undefined
)
{
for
(
var
i
=
0
;
i
<
sources
.
length
;
i
++
)
{
var
source
=
sources
[
i
];
var
script
=
new
UI
.
ScriptEditor
();
script
.
setValue
(
source
);
script
.
onChange
(
function
()
{
signals
.
scriptChanged
.
dispatch
();
}
);
scripts
.
add
(
script
);
}
}
}
else
{
container
.
setDisplay
(
'
none
'
);
...
...
@@ -35,6 +87,22 @@ Sidebar.Script = function ( editor ) {
}
);
signals
.
scriptChanged
.
add
(
function
()
{
var
array
=
[];
var
object
=
editor
.
selected
;
for
(
var
i
=
0
;
i
<
scripts
.
children
.
length
;
i
++
)
{
var
script
=
scripts
.
children
[
i
];
array
.
push
(
script
.
getValue
()
);
}
editor
.
scripts
[
object
.
uuid
]
=
array
;
}
);
return
container
;
}
}
;
editor/js/Sidebar.js
浏览文件 @
2d05e450
...
...
@@ -13,7 +13,7 @@ var Sidebar = function ( editor ) {
container
.
add
(
new
Sidebar
.
Geometry
(
editor
)
);
container
.
add
(
new
Sidebar
.
Material
(
editor
)
);
container
.
add
(
new
Sidebar
.
Animation
(
editor
)
);
//
container.add( new Sidebar.Script( editor ) );
container
.
add
(
new
Sidebar
.
Script
(
editor
)
);
return
container
;
...
...
editor/js/libs/app.js
浏览文件 @
2d05e450
...
...
@@ -12,7 +12,7 @@ var APP = {
var
scripts
=
{
update
:
[]
};
this
.
dom
=
undefined
;
this
.
load
=
function
(
json
)
{
...
...
@@ -28,14 +28,15 @@ var APP = {
for
(
var
uuid
in
json
.
scripts
)
{
var
source
=
json
.
scripts
[
uuid
];
var
object
=
scene
.
getObjectByProperty
(
'
uuid
'
,
uuid
,
true
);
var
sources
=
json
.
scripts
[
uuid
];
var
script
=
(
new
Function
(
'
scene
'
,
'
time
'
,
source
).
bind
(
object
)
)();
for
(
var
i
=
0
;
i
<
sources
.
length
;
i
++
)
{
if
(
script
.
update
!==
undefined
)
{
var
source
=
sources
[
i
];
scripts
.
update
.
push
(
script
.
update
);
var
script
=
(
new
Function
(
'
scene
'
,
'
time
'
,
source
).
bind
(
object
)
);
scripts
.
update
.
push
(
script
);
}
...
...
editor/js/libs/codemirror/codemirror.css
已删除
100644 → 0
浏览文件 @
1bd90693
/* BASICS */
.CodeMirror
{
/* Set height, width, borders, and global font properties here */
font-family
:
monospace
;
height
:
300px
;
}
.CodeMirror-scroll
{
/* Set scrolling behaviour here */
overflow
:
auto
;
}
/* PADDING */
.CodeMirror-lines
{
padding
:
4px
0
;
/* Vertical padding around content */
}
.CodeMirror
pre
{
padding
:
0
4px
;
/* Horizontal padding of content */
}
.CodeMirror-scrollbar-filler
,
.CodeMirror-gutter-filler
{
background-color
:
white
;
/* The little square between H and V scrollbars */
}
/* GUTTER */
.CodeMirror-gutters
{
border-right
:
1px
solid
#ddd
;
background-color
:
#f7f7f7
;
white-space
:
nowrap
;
}
.CodeMirror-linenumbers
{}
.CodeMirror-linenumber
{
padding
:
0
3px
0
5px
;
min-width
:
20px
;
text-align
:
right
;
color
:
#999
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
.CodeMirror-guttermarker
{
color
:
black
;
}
.CodeMirror-guttermarker-subtle
{
color
:
#999
;
}
/* CURSOR */
.CodeMirror
div
.CodeMirror-cursor
{
border-left
:
1px
solid
black
;
}
/* Shown when moving in bi-directional text */
.CodeMirror
div
.CodeMirror-secondarycursor
{
border-left
:
1px
solid
silver
;
}
.CodeMirror.cm-keymap-fat-cursor
div
.CodeMirror-cursor
{
width
:
auto
;
border
:
0
;
background
:
#7e7
;
}
.cm-animate-fat-cursor
{
width
:
auto
;
border
:
0
;
-webkit-animation
:
blink
1.06s
steps
(
1
)
infinite
;
-moz-animation
:
blink
1.06s
steps
(
1
)
infinite
;
animation
:
blink
1.06s
steps
(
1
)
infinite
;
}
@-moz-keyframes
blink
{
0
%
{
background
:
#7e7
;
}
50
%
{
background
:
none
;
}
100
%
{
background
:
#7e7
;
}
}
@-webkit-keyframes
blink
{
0
%
{
background
:
#7e7
;
}
50
%
{
background
:
none
;
}
100
%
{
background
:
#7e7
;
}
}
@keyframes
blink
{
0
%
{
background
:
#7e7
;
}
50
%
{
background
:
none
;
}
100
%
{
background
:
#7e7
;
}
}
/* Can style cursor different in overwrite (non-insert) mode */
div
.CodeMirror-overwrite
div
.CodeMirror-cursor
{}
.cm-tab
{
display
:
inline-block
;
}
.CodeMirror-ruler
{
border-left
:
1px
solid
#ccc
;
position
:
absolute
;
}
/* DEFAULT THEME */
.cm-s-default
.cm-keyword
{
color
:
#708
;}
.cm-s-default
.cm-atom
{
color
:
#219
;}
.cm-s-default
.cm-number
{
color
:
#164
;}
.cm-s-default
.cm-def
{
color
:
#00f
;}
.cm-s-default
.cm-variable
,
.cm-s-default
.cm-punctuation
,
.cm-s-default
.cm-property
,
.cm-s-default
.cm-operator
{}
.cm-s-default
.cm-variable-2
{
color
:
#05a
;}
.cm-s-default
.cm-variable-3
{
color
:
#085
;}
.cm-s-default
.cm-comment
{
color
:
#a50
;}
.cm-s-default
.cm-string
{
color
:
#a11
;}
.cm-s-default
.cm-string-2
{
color
:
#f50
;}
.cm-s-default
.cm-meta
{
color
:
#555
;}
.cm-s-default
.cm-qualifier
{
color
:
#555
;}
.cm-s-default
.cm-builtin
{
color
:
#30a
;}
.cm-s-default
.cm-bracket
{
color
:
#997
;}
.cm-s-default
.cm-tag
{
color
:
#170
;}
.cm-s-default
.cm-attribute
{
color
:
#00c
;}
.cm-s-default
.cm-header
{
color
:
blue
;}
.cm-s-default
.cm-quote
{
color
:
#090
;}
.cm-s-default
.cm-hr
{
color
:
#999
;}
.cm-s-default
.cm-link
{
color
:
#00c
;}
.cm-negative
{
color
:
#d44
;}
.cm-positive
{
color
:
#292
;}
.cm-header
,
.cm-strong
{
font-weight
:
bold
;}
.cm-em
{
font-style
:
italic
;}
.cm-link
{
text-decoration
:
underline
;}
.cm-s-default
.cm-error
{
color
:
#f00
;}
.cm-invalidchar
{
color
:
#f00
;}
/* Default styles for common addons */
div
.CodeMirror
span
.CodeMirror-matchingbracket
{
color
:
#0f0
;}
div
.CodeMirror
span
.CodeMirror-nonmatchingbracket
{
color
:
#f22
;}
.CodeMirror-matchingtag
{
background
:
rgba
(
255
,
150
,
0
,
.3
);
}
.CodeMirror-activeline-background
{
background
:
#e8f2ff
;}
/* STOP */
/* The rest of this file contains styles related to the mechanics of
the editor. You probably shouldn't touch them. */
.CodeMirror
{
line-height
:
1
;
position
:
relative
;
overflow
:
hidden
;
background
:
white
;
color
:
black
;
}
.CodeMirror-scroll
{
/* 30px is the magic margin used to hide the element's real scrollbars */
/* See overflow: hidden in .CodeMirror */
margin-bottom
:
-30px
;
margin-right
:
-30px
;
padding-bottom
:
30px
;
height
:
100%
;
outline
:
none
;
/* Prevent dragging from highlighting the element */
position
:
relative
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
.CodeMirror-sizer
{
position
:
relative
;
border-right
:
30px
solid
transparent
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
}
/* The fake, visible scrollbars. Used to force redraw during scrolling
before actuall scrolling happens, thus preventing shaking and
flickering artifacts. */
.CodeMirror-vscrollbar
,
.CodeMirror-hscrollbar
,
.CodeMirror-scrollbar-filler
,
.CodeMirror-gutter-filler
{
position
:
absolute
;
z-index
:
6
;
display
:
none
;
}
.CodeMirror-vscrollbar
{
right
:
0
;
top
:
0
;
overflow-x
:
hidden
;
overflow-y
:
scroll
;
}
.CodeMirror-hscrollbar
{
bottom
:
0
;
left
:
0
;
overflow-y
:
hidden
;
overflow-x
:
scroll
;
}
.CodeMirror-scrollbar-filler
{
right
:
0
;
bottom
:
0
;
}
.CodeMirror-gutter-filler
{
left
:
0
;
bottom
:
0
;
}
.CodeMirror-gutters
{
position
:
absolute
;
left
:
0
;
top
:
0
;
padding-bottom
:
30px
;
z-index
:
3
;
}
.CodeMirror-gutter
{
white-space
:
normal
;
height
:
100%
;
-moz-box-sizing
:
content-box
;
box-sizing
:
content-box
;
padding-bottom
:
30px
;
margin-bottom
:
-32px
;
display
:
inline-block
;
/* Hack to make IE7 behave */
*
zoom
:
1
;
*
display
:
inline
;
}
.CodeMirror-gutter-elt
{
position
:
absolute
;
cursor
:
default
;
z-index
:
4
;
}
.CodeMirror-lines
{
cursor
:
text
;
}
.CodeMirror
pre
{
/* Reset some styles that the rest of the page might have set */
-moz-border-radius
:
0
;
-webkit-border-radius
:
0
;
border-radius
:
0
;
border-width
:
0
;
background
:
transparent
;
font-family
:
inherit
;
font-size
:
inherit
;
margin
:
0
;
white-space
:
pre
;
word-wrap
:
normal
;
line-height
:
inherit
;
color
:
inherit
;
z-index
:
2
;
position
:
relative
;
overflow
:
visible
;
}
.CodeMirror-wrap
pre
{
word-wrap
:
break-word
;
white-space
:
pre-wrap
;
word-break
:
normal
;
}
.CodeMirror-linebackground
{
position
:
absolute
;
left
:
0
;
right
:
0
;
top
:
0
;
bottom
:
0
;
z-index
:
0
;
}
.CodeMirror-linewidget
{
position
:
relative
;
z-index
:
2
;
overflow
:
auto
;
}
.CodeMirror-widget
{}
.CodeMirror-wrap
.CodeMirror-scroll
{
overflow-x
:
hidden
;
}
.CodeMirror-measure
{
position
:
absolute
;
width
:
100%
;
height
:
0
;
overflow
:
hidden
;
visibility
:
hidden
;
}
.CodeMirror-measure
pre
{
position
:
static
;
}
.CodeMirror
div
.CodeMirror-cursor
{
position
:
absolute
;
border-right
:
none
;
width
:
0
;
}
div
.CodeMirror-cursors
{
visibility
:
hidden
;
position
:
relative
;
z-index
:
1
;
}
.CodeMirror-focused
div
.CodeMirror-cursors
{
visibility
:
visible
;
}
.CodeMirror-selected
{
background
:
#d9d9d9
;
}
.CodeMirror-focused
.CodeMirror-selected
{
background
:
#d7d4f0
;
}
.CodeMirror-crosshair
{
cursor
:
crosshair
;
}
.cm-searching
{
background
:
#ffa
;
background
:
rgba
(
255
,
255
,
0
,
.4
);
}
/* IE7 hack to prevent it from returning funny offsetTops on the spans */
.CodeMirror
span
{
*
vertical-align
:
text-bottom
;
}
/* Used to force a border model for a node */
.cm-force-border
{
padding-right
:
.1px
;
}
@media
print
{
/* Hide the cursor when printing */
.CodeMirror
div
.CodeMirror-cursors
{
visibility
:
hidden
;
}
}
editor/js/libs/codemirror/codemirror.js
已删除
100644 → 0
浏览文件 @
1bd90693
此差异已折叠。
点击以展开。
editor/js/libs/codemirror/modes/javascript.js
已删除
100644 → 0
浏览文件 @
1bd90693
此差异已折叠。
点击以展开。
editor/js/libs/ui.editor.js
浏览文件 @
2d05e450
...
...
@@ -2,73 +2,78 @@
* @author mrdoob / http://mrdoob.com/
*/
UI
.
CodeEditor
=
function
(
mode
)
{
UI
.
ScriptEditor
=
function
(
)
{
UI
.
Element
.
call
(
this
);
UI
.
Panel
.
call
(
this
);
var
scope
=
this
;
var
dom
=
document
.
createElement
(
'
div
'
);
dom
.
className
=
'
CodeEditor
'
;
var
timeout
;
var
editor
=
CodeMirror
(
dom
,
{
mode
:
mode
,
indentWithTabs
:
true
,
lineWrapping
:
true
,
matchBrackets
:
true
}
);
editor
.
onKeyUp
(
'
keyup
'
,
function
()
{
var
textarea
=
new
UI
.
TextArea
();
textarea
.
setWidth
(
'
240px
'
);
textarea
.
setHeight
(
'
100px
'
);
textarea
.
onKeyUp
(
function
()
{
if
(
scope
.
onKeyUpCallback
!==
undefined
)
{
clearTimeout
(
timeout
);
scope
.
onKeyUpCallback
();
timeout
=
setTimeout
(
function
()
{
}
var
object
=
editor
.
selected
;
var
source
=
scope
.
getValue
();
});
try
{
this
.
dom
=
dom
;
this
.
editor
=
editor
;
var
script
=
new
Function
(
'
scene
'
,
'
time
'
,
source
).
bind
(
object
.
clone
()
)
;
script
(
new
THREE
.
Scene
(),
0
)
;
return
this
;
textarea
.
dom
.
classList
.
add
(
'
success
'
);
textarea
.
dom
.
classList
.
remove
(
'
fail
'
);
};
}
catch
(
error
)
{
UI
.
CodeEditor
.
prototype
=
Object
.
create
(
UI
.
Element
.
prototype
);
UI
.
CodeEditor
.
prototype
.
constructor
=
UI
.
CodeEditor
;
textarea
.
dom
.
classList
.
remove
(
'
success
'
);
textarea
.
dom
.
classList
.
add
(
'
fail
'
)
;
UI
.
CodeEditor
.
prototype
.
setWidth
=
function
(
value
)
{
return
;
UI
.
Element
.
prototype
.
setWidth
.
call
(
this
,
value
);
}
this
.
editor
.
setSize
(
this
.
dom
.
style
.
width
,
this
.
dom
.
style
.
height
);
if
(
scope
.
onChangeCallback
!==
undefined
)
{
return
this
;
scope
.
onChangeCallback
()
;
};
}
UI
.
CodeEditor
.
prototype
.
setHeight
=
function
(
value
)
{
},
500
);
UI
.
Element
.
prototype
.
setHeight
.
call
(
this
,
value
);
}
);
this
.
add
(
textarea
);
this
.
editor
.
setSize
(
this
.
dom
.
style
.
width
,
this
.
dom
.
style
.
height
);
return
this
;
this
.
textarea
=
textarea
;
};
UI
.
CodeEditor
.
prototype
.
getValue
=
function
()
{
UI
.
ScriptEditor
.
prototype
=
Object
.
create
(
UI
.
Panel
.
prototype
);
UI
.
ScriptEditor
.
prototype
.
constructor
=
UI
.
ScriptEditor
;
UI
.
ScriptEditor
.
prototype
.
getValue
=
function
()
{
return
this
.
editor
.
getValue
();
return
this
.
textarea
.
getValue
();
};
UI
.
Code
Editor
.
prototype
.
setValue
=
function
(
value
)
{
UI
.
Script
Editor
.
prototype
.
setValue
=
function
(
value
)
{
this
.
editor
.
setValue
(
value
);
this
.
textarea
.
setValue
(
value
);
return
this
;
};
UI
.
CodeEditor
.
prototype
.
onKeyUp
=
function
(
callback
)
{
UI
.
ScriptEditor
.
prototype
.
onChange
=
function
(
callback
)
{
this
.
on
KeyUp
Callback
=
callback
;
this
.
on
Change
Callback
=
callback
;
return
this
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录