CreatorAppDev
description: 鍒涘缓妯″瀷绛
Creator app for Paraworld
Title |
Creator app for Paraworld |
Author(s) |
Andy, LiXizhi |
Date |
2008/1/5, revised 2008.6.15 LiXizhi |
File |
script/kids/3DMapSystemUI/Creator/app_main.lua |
Description
- Map3DSystem.App.Commands.Call("Creation.NormalModel", objParams); where objParams is the object parameters to be created. for more information, please see object_editor
show the creator panel for this category of object
show the creator panel for this category of object
- Map3DSystem.App.Commands.Call("Creation.NormalCharacter");
show the creator panel for this category of object
- Map3DSystem.App.Commands.Call("Creation.BuildingComponents");
whenever the selection changed, we need to call following command to update panels.
- Map3DSystem.App.Commands.Call("Creation.UpdatePanels");
show or hide the object bounding box. if params is nil, it will toggle display
- Map3DSystem.App.Commands.Call("Creation.ShowOBB", true);
show or hide the graphics report. if params is nil, it will toggle display
- Map3DSystem.App.Commands.Call("Creation.ShowReport", true);
modify page
show or hide the modify panel. Modify panel is valid for both character and static model. And they share the same mcml page.
- show the modify panel: Map3DSystem.App.Commands.Call("Creation.Modify");
- hide the modify panel: Map3DSystem.App.Commands.Call("Creation.Modify", {bShow=false});
property page
Each scene object may have zero or several property pages, depending on the type of the scene object and applications installed.
Normal character has
CharPropertyPage defined in
CreatorApp. It can be invoked by
- Map3DSystem.App.Commands.Call("Creation.CharProperty");
Object with replaceable textures(r2) has
ObjTexPropertyPage defined in
CreatorApp. It can be invoked by
- Map3DSystem.App.Commands.Call("Creation.ObjTexProperty");
To automatically invoke the appropriate property or modify page(whichever is important) of the currently selected or context menu object. Call below.
- Map3DSystem.App.Commands.Call("Creation.DefaultProperty"); -- for selected object
- Map3DSystem.App.Commands.Call("Creation.DefaultProperty", {target="contextmenu"}); -- for context menu object
- Map3DSystem.App.Commands.Call("Creation.DefaultProperty", {target=""}); -- hide all property page
Above function can be invoked by other applications, since it does not rely on any scene object hook.
db registration insert script
INSERT INTO apps VALUES (NULL, 'Creator_GUID', 'Creator', '1.0.0', 'http://www.paraengine.com/apps/Creator_v1.zip', 'YourCompany', 'enUS', 'script/kids/3DMapSystemUI/Creator/IP.xml', '', 'script/kids/3DMapSystemUI/Creator/app_main.lua', 'Creator.MSGProc', 1);
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/app_main.lua");
Member Functions
Creator.OnConnection
requires
create class
local Creator = {};
commonlib.setfield("Map3DSystem.App.Creator", Creator);
"selection" or "contextmenu". where to get the object in concern.
i.e. local obj =
Map3DSystem.obj.GetObjectParams(
Map3DSystem.App.Creator.target);
Creator.target = "selection";
event handlers
OnConnection method is the obvious point to place your UI (menus, mainbars, tool buttons) through which the user will communicate to the app.
This method is also the place to put your validation code if you are licensing the add-in. You would normally do this before putting up the UI.
If the user is not a valid user, you would not want to put the UI into the IDE.
- param app : the object representing the current application in the IDE.
- param connectMode : type of ConnectMode.
syntax
function Creator.OnConnection(app, connectMode)
parameters
app |
the object representing the current application in the IDE. |
connectMode |
|
Creator.OnDisconnection
Receives notification that the Add-in is being unloaded.
syntax
function Creator.OnDisconnection(app, disconnectMode)
parameters
Creator.OnQueryStatus
This is called when the command's availability is updated
When the user clicks a command (menu or mainbar button), the
QueryStatus event is fired.
The
QueryStatus event returns the current status of the specified named command, whether it is enabled, disabled,
or hidden in the
CommandStatus parameter, which is passed to the msg by reference (or returned in the event handler).
- param commandName : The name of the command to determine state for. Usually in the string format "Category.SubCate.Name".
- param statusWanted : what status of the command is queried. it is of type CommandStatusWanted
- return __ : returns according to statusWanted. it may return an integer by adding values in CommandStatus.
syntax
function Creator.OnQueryStatus(app, commandName, statusWanted)
parameters
app |
|
commandName |
The name of the command to determine state for. Usually in the string format "Category.SubCate.Name". |
statusWanted |
|
return |
returns according to statusWanted. it may return an integer by adding values in CommandStatus. |
Creator.OnExec
This is called when the command is invoked.The Exec is fired after the
QueryStatus event is fired, assuming that the return to the statusOption parameter of
QueryStatus is supported and enabled.
This is the event where you place the actual code for handling the response to the user click on the command.
- param commandName : The name of the command to determine state for. Usually in the string format "Category.SubCate.Name".
syntax
function Creator.OnExec(app, commandName, params)
parameters
app |
|
commandName |
The name of the command to determine state for. Usually in the string format "Category.SubCate.Name". |
params |
|
Creator.OnRenderBox
Change and render the 3D world with mcml data that is usually retrieved from the current user's profile page for this application.
syntax
function Creator.OnRenderBox(mcmlData)
parameters
Creator.Navigate
called when the user wants to nagivate to the 3D world location relavent to this application
syntax
function Creator.Navigate()
Creator.GotoHomepage
called when user clicks to check out the homepage of this application. Homepage usually includes:
developer info, support, developer worlds information, app global news, app updates, all community user rating, active users, trade, currency transfer, etc.
syntax
function Creator.GotoHomepage()
Creator.DoQuickAction
called when user clicks the quick action for this application.
syntax
function Creator.DoQuickAction()
Creator.Hook_SceneObjectSelected
"scene" object window hook. we will show object page accordingly.
syntax
function Creator.Hook_SceneObjectSelected(nCode, appName, msg)
parameters
Creator.ShowDefaultObjectPage
show modify or property panel, whichever is more important to the currently selected object
- param target : nil or "" or "selection" or "contextmenu". if nil, it default to "selection". It specifies where to get the object in concern. if "", all panels are hidden.
syntax
function Creator.ShowDefaultObjectPage(target)
parameters
|
target | nil or "" or "selection" or "contextmenu". if nil, it default to "selection". It specifies where to get the object in concern.
if "", all panels are hidden. |
Creator.OnWorldClosed
called whenever a world is being closed.
syntax
function Creator.OnWorldClosed()
Creator.MSGProc
client world database function helpers.
all related messages
APPS can be invoked in many ways:
Through app Manager
mainbar or menu command or buttons
Command Line
3D World installed apps
syntax
function Creator.MSGProc(window, msg)
parameters
character property page code behind file
Title |
character property page code behind file |
Author(s) |
LiXizhi |
Date |
2008/6/14 |
File |
script/kids/3DMapSystemUI/Creator/CharPropertyPage.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/CharPropertyPage.lua");
Map3DSystem.App.Creator.CharPropertyPage.UpdatePanelUI()
Map3DSystem.App.Creator.CharPropertyPage.OnAssignAIClick(1, "contextmenu")
Member Functions
CharPropertyPage.DS_Func_NPC
NPC data source.
local dsNPC = {
{Title="鎴戣瀛︿細璇磋瘽", Icon="Texture/3DMapSystem/AppIcons/chat_64.dds", SubTitle="瀛﹁璇? 鐪熶汉閰嶉煶"},
{Title="闅忔満璧板姩", Icon="Texture/3DMapSystem/AppIcons/Environment_64.dds", SubTitle="鍦ㄥ懆鍥撮殢鏈鸿蛋鍔?},
{Title="鎴戞槸璺熷眮铏?, Icon="Texture/3DMapSystem/AppIcons/People_64.dds", SubTitle="鑷姩璺熼殢闄勮繎鐨勭帺瀹?},
{Title="鎴戞槸瀵兼父", Icon="Texture/3DMapSystem/AppIcons/NewWorld_64.dds", SubTitle="鍗忓姪鐜╁鐨勫娓?},
{Title="鏈ㄥご浜?, Icon="Texture/3DMapSystem/AppIcons/Pet_64.dds", SubTitle="鎴愪负鍘熷湴涓嶅姩鐨勪汉鐗?},
}
data source function for official app.
syntax
function CharPropertyPage.DS_Func_NPC(index)
parameters
CharPropertyPage.OnInit
init
syntax
function CharPropertyPage.OnInit()
CharPropertyPage.UpdatePanelUI
update UI
syntax
function CharPropertyPage.UpdatePanelUI()
CharPropertyPage.OnClose
close panel
syntax
function CharPropertyPage.OnClose()
CharPropertyPage.OnSwitchToObject
take control of the character
syntax
function CharPropertyPage.OnSwitchToObject()
CharPropertyPage.OnChangeCharacterName
whenever the user pressed the change name button
syntax
function CharPropertyPage.OnChangeCharacterName()
CharPropertyPage.OnChangeCharacterSkin
change to the next skin
syntax
function CharPropertyPage.OnChangeCharacterSkin()
CharPropertyPage.OnSaveCharacterProperty
save character to local world db
syntax
function CharPropertyPage.OnSaveCharacterProperty()
CharPropertyPage.OnDeleteCharacter
delete it.
syntax
function CharPropertyPage.OnDeleteCharacter()
CharPropertyPage.OnClickNPLTemplate
user clicks the NPC template.
syntax
function CharPropertyPage.OnClickNPLTemplate(index)
parameters
CharPropertyPage.OnAssignAIClick
called when one of the AI buttons is clicked. see dsNPC table for meaning of the index.
- param nIndex : behavior type
- param target : it can be "selection" or "contextmenu" or nil. if nil it is the target set by Map3DSystem.App.Creator.target
syntax
function CharPropertyPage.OnAssignAIClick(nIndex, target)
parameters
nIndex |
behavior type |
target |
|
creator application main window
Title |
creator application main window |
Author(s) |
WangTian |
Date |
2008/5/26 |
File |
script/kids/3DMapSystemUI/Creator/Main.lua |
Description
Creator application window is upgraded to the new aura look, including:
show the window on the side instead of bottom to utilize more screen space
show the items in grid view form
fit to window size automaticly
categories are arranged on the top and left(/right) side of the grid view
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/Main.lua");
Member Functions
Map3DSystem.UI.Creator.ShowMainWnd3
Show the creator main window
syntax
function Map3DSystem.UI.Creator.ShowMainWnd3(bShow)
parameters
Map3DSystem.UI.Creator.ShowMainWnd
Show the creator main window
syntax
function Map3DSystem.UI.Creator.ShowMainWnd(bShow)
parameters
Map3DSystem.UI.Creator.DestroyMainWnd
destory the main window, usually called when the world is closed
syntax
function Map3DSystem.UI.Creator.DestroyMainWnd()
Map3DSystem.UI.Creator.OnSize
change the main window size, usually called on resolution change
syntax
function Map3DSystem.UI.Creator.OnSize(width, height)
parameters
Map3DSystem.UI.Creator.MSGProc
Message Processor of Creator main control
On receive WM_SIZE message it will update the
CreationTabGrid control
syntax
function Map3DSystem.UI.Creator.MSGProc(window, msg)
parameters
Map3DSystem.UI.Creator.OnDeactivate
exit BCS mode and clear miniscenegraph
this function is also called when creator desktop is switched off. -- lxz 2008.6.15
syntax
function Map3DSystem.UI.Creator.OnDeactivate()
Map3DSystem.UI.Creator.SwitchCategory
- param index : 1 normal model 2 BCS 3 normal character
syntax
function Map3DSystem.UI.Creator.SwitchCategory(index)
parameters
|
index | 1 normal model
2 BCS
3 normal character |
Map3DSystem.UI.Creator.OnGridItemClick
user clicks an icon in the creation panel.
syntax
function Map3DSystem.UI.Creator.OnGridItemClick(level1index, level2index, itemindex)
parameters
level1index |
|
level2index |
|
itemindex |
|
Map3DSystem.UI.Creator.GetObjParamsFromAsset
[[
@Updated by LXZ 2008.2.8: this function is also used by the asset app to create preview model.
get the objParams from an asset description table and its category.
- param category : the asset category name. such as "BCS_buildingcomponents", "NM_normalmodel", "NC_normalcharacter", "CCS_customizablecharacter", the prefix decides the category. Known category is "BCS_", "NC_","NM_", "CCS_"
- param item : the asset description table. asset = { ["filename"] = "character/v1/01human/long/long.x", ["Reserved1"] = "0.3", ["text"] = "demo char", ["Reserved3"] = "1", ["Reserved2"] = "1.2", }
- return __ : objParams table is created. it may return nil.
]]
syntax
function Map3DSystem.UI.Creator.GetObjParamsFromAsset(category, item)
parameters
category |
the asset category name. such as "BCS_buildingcomponents", "NM_normalmodel", "NC_normalcharacter", "CCS_customizablecharacter", the prefix decides the category. Known category is "BCS_", "NC_","NM_", "CCS_" |
item |
|
|
return | objParams table is created. it may return nil.
]] |
object modification page code behind file
Title |
object modification page code behind file |
Author(s) |
LiXizhi |
Date |
2008/6/11 |
File |
script/kids/3DMapSystemUI/Creator/ObjModifyPage.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/ObjModifyPage.lua");
-- call below to load window
Map3DSystem.App.Commands.Call("File.MCMLWindowFrame", {
url="script/kids/3DMapSystemUI/Creator/ObjModifyPage.html", name="ObjModifyPage",
app_key=Map3DSystem.App.AppKeys["Creator"],
isShowTitleBar = false,
isShowToolboxBar = false,
isShowStatusBar = false,
initialWidth = 200,
alignment = "Left",
});
Map3DSystem.App.Creator.ObjModifyPage.UpdatePanelUI()
Member Functions
ObjModifyPage.OnInit
syntax
function ObjModifyPage.OnInit()
ObjModifyPage.UpdatePanelUI
update the tranlation rotation scaling shift reset and canvas UI according to the current selected object
syntax
function ObjModifyPage.UpdatePanelUI()
ObjModifyPage.OnTranslationClick
Event handler: on object translation
syntax
function ObjModifyPage.OnTranslationClick()
ObjModifyPage.OnRotationClick
Event handler: on object rotation
syntax
function ObjModifyPage.OnRotationClick()
ObjModifyPage.OnClose
close panel
syntax
function ObjModifyPage.OnClose()
object texture property page code behind file
Title |
object texture property page code behind file |
Author(s) |
LiXizhi |
Date |
2008/6/15 |
File |
script/kids/3DMapSystemUI/Creator/ObjTexPropertyPage.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/ObjTexPropertyPage.lua");
Map3DSystem.App.Creator.ObjTexPropertyPage.UpdatePanelUI()
Member Functions
ObjTexPropertyPage.DS_Func_Tex
NPC data source.
local dsTex = {
{Title="鎴戣瀛︿細璇磋瘽", Icon="Texture/3DMapSystem/AppIcons/chat_64.dds", SubTitle="瀛﹁璇? 鐪熶汉閰嶉煶"},
}
data source function for official app.
syntax
function ObjTexPropertyPage.DS_Func_Tex(index)
parameters
ObjTexPropertyPage.UpdatePanelUI
update UI
syntax
function ObjTexPropertyPage.UpdatePanelUI()
ObjTexPropertyPage.OnInit
init
syntax
function ObjTexPropertyPage.OnInit()
ObjTexPropertyPage.OnClose
close panel
syntax
function ObjTexPropertyPage.OnClose()
ObjTexPropertyPage.OnClickTexTemplate
user clicks the NPC template.
syntax
function ObjTexPropertyPage.OnClickTexTemplate(index)
parameters
ObjTexPropertyPage.OnChangeFileUrl
user changes the file url.
syntax
function ObjTexPropertyPage.OnChangeFileUrl(sCtrlName, filename)
parameters
ObjTexPropertyPage.OnOpenFileForModelTexture
open file for model texture
syntax
function ObjTexPropertyPage.OnOpenFileForModelTexture()
ObjTexPropertyPage.OnClickNavTo
use web page texture
syntax
function ObjTexPropertyPage.OnClickNavTo()
ObjTexPropertyPage.OnUndoModelTexture
force using the default replaceable texture for the given model.
syntax
function ObjTexPropertyPage.OnUndoModelTexture()
ObjTexPropertyPage.OnEditModelTexture
let the user painter by himself.
syntax
function ObjTexPropertyPage.OnEditModelTexture()
ObjTexPropertyPage.OnEndEditingTexture
when the user saves an owner draw image
syntax
function ObjTexPropertyPage.OnEndEditingTexture()
ObjTexPropertyPage.OnSaveUserDrawing
when the user saves an owner draw image
syntax
function ObjTexPropertyPage.OnSaveUserDrawing()
Popup Obj modify window
Title |
Popup Obj modify window |
Author(s) |
LiXizhi |
Date |
2008/6/14 |
File |
script/kids/3DMapSystemUI/Creator/PopupObjModWnd.lua |
Description
The UI is on mcml page
PopupObjModPage.html
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/PopupObjModWnd.lua");
Map3DSystem.UI.Creator.PopupModWnd.ShowPopupEdit(obj_params)
Member Functions
PopupModWnd.ShowPopupEdit
show a top level popup window for a mouse cursor 3D mesh object
PopupModWnd.Name = "PopupEdit";
function(bIsCancel) or string, -- function to call when edit window closes.
PopupEditor_onclose = nil;
- param obj :_params: a valid object params. More info see objeditor.lua
- param x :,y: position at which to display the window
- param onclose : function(bIsCancel) or string, -- function to call when edit window closes.
syntax
function PopupModWnd.ShowPopupEdit(obj_params, x, y, onclose)
parameters
obj |
_params: a valid object params. More info see objeditor.lua |
params |
|
x |
|
y |
|
onclose |
function(bIsCancel) or string, -- function to call when edit window closes. |
Title |
Portal3DCanvas |
Author(s) |
Leio |
Date |
2008/12/11 |
File |
script/kids/3DMapSystemUI/Creator/Portal3DCanvas.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/Portal3DCanvas.lua");
Title |
Portal3DCanvasView |
Author(s) |
Leio |
Date |
2008/12/29 |
File |
script/kids/3DMapSystemUI/Creator/Portal3DCanvasView.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/Portal3DCanvasView.lua");
Title |
PortalCanvas |
Author(s) |
Leio |
Date |
2008/12/11 |
File |
script/kids/3DMapSystemUI/Creator/PortalCanvas.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/PortalCanvas.lua");
Title |
PortalCanvasView |
Author(s) |
Leio |
Date |
2008/12/29 |
File |
script/kids/3DMapSystemUI/Creator/PortalCanvasView.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/PortalCanvasView.lua");
Title |
PortalMetasView |
Author(s) |
Leio |
Date |
2009/1/4 |
File |
script/kids/3DMapSystemUI/Creator/PortalMetasView.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/PortalMetasView.lua");
Title |
PortalPage code behind file |
Author(s) |
LiXizhi |
Date |
2008/9/11 |
File |
script/kids/3DMapSystemUI/Creator/PortalPage.lua |
Description
create and modify a portal node in the scene.
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/PortalPage.lua");
Map3DSystem.App.Creator.PortalPage.UpdatePanelUI()
Member Functions
PortalPage.OnCreatePortal
create a default portal at current location
syntax
function PortalPage.OnCreatePortal(name, values)
parameters
PortalPage.OnUpdatePortalPoints
update points
syntax
function PortalPage.OnUpdatePortalPoints(name, values)
parameters
Title |
PortalSystemPage code behind file |
Author(s) |
LiXizhi |
Date |
2008/9/11 |
File |
script/kids/3DMapSystemUI/Creator/PortalSystemPage.lua |
Description
for testing only
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/PortalSystemPage.lua");
Member Functions
PortalSystemPage.NewZoneNode
create a new zone node
syntax
function PortalSystemPage.NewZoneNode(params)
parameters
Title |
StaticObjPage code behind file |
Author(s) |
Leio |
Date |
2008/12/30 |
File |
script/kids/3DMapSystemUI/Creator/StaticObjPage.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/StaticObjPage.lua");
Title |
ZoneListPage code behind file |
Author(s) |
Leio |
Date |
2008/12/11 |
File |
script/kids/3DMapSystemUI/Creator/ZoneListPage.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/ZoneListPage.lua");
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/ZoneNode.lua");
ZonePage code behind file
Title |
ZonePage code behind file |
Author(s) |
LiXizhi |
Date |
2008/9/26 |
File |
script/kids/3DMapSystemUI/Creator/ZonePage.lua |
Description
for testing only
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/ZonePage.lua");
Map3DSystem.App.Creator.ZonePage.UpdatePanelUI()
Member Functions
ZonePage.OnUpdateZonePlanes
update points
syntax
function ZonePage.OnUpdateZonePlanes(name, values)
parameters
Title |
ZoneTemplatePage |
Author(s) |
Leio |
Date |
2008/12/29 |
File |
script/kids/3DMapSystemUI/Creator/ZoneTemplatePage.lua |
Description
Sample Code
NPL.load("(gl)script/kids/3DMapSystemUI/Creator/ZoneTemplatePage.lua");