awaytools / awaybuilder Goto Github PK
View Code? Open in Web Editor NEWLicense: Other
License: Other
In the original logicly interface we inherited, the interface panel on the left could be slide away by clicking a button positioned down the right hand side of the panel that moved the panel off the left and allowed more room for the 3d view area. It would be good to re-inplement this in the Away Builder interface for the tree panle, also considering a similar button for the properties panel that will live in a similar way on the right side of the interface.
Steps to Reproduce
Expected result
The SubMesh has the new diffuse texture applied to its material
Actual result
The new diffuse texture is applied to all submeshes
Adding a 32x32 preview icon of a texture in the dropdown menus for the properties panel (perhaps even the texture icons in the document tree?) so that there is some indication of the texture you are selecting besides the name. For materials dropdown on meshes, the same approach can be used only in this case, the material (not being a texture itself) should use the diffuse texture icon as its icon if it is a texture material, or a solid 32x32 block of colour if it is a colour material.
Zoom slider and buttons should update and be influenced by zoom in 3D view
We need to add icons for each item in the tree component.
In the shadow method dropdown, if there is a light selected you should include an option to "add a new shadow method"
On mac the application takes more than 10% of CPU even if no file is loaded. And window dragging isn't smooth. This is not true for Quentin's prototype, so must be a set up problem..
Steps to reproduce:
runtime error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at away3d.materials.passes::CompiledPass/addPassesFromMethods()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/materials/passes/CompiledPass.as:349]
at away3d.materials.passes::SuperShaderPass/addPassesFromMethods()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/materials/passes/SuperShaderPass.as:196]
at away3d.materials.passes::CompiledPass/invalidateShaderProgram()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/materials/passes/CompiledPass.as:342]
at away3d.materials::MaterialBase/invalidatePasses()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/materials/MaterialBase.as:446]
at away3d.materials::MaterialBase/removeOwner()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/materials/MaterialBase.as:392]
at away3d.entities::Mesh/set material()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/entities/Mesh.as:165]
at away3d.entities::Mesh/dispose()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/entities/Mesh.as:214]
at away3d.library::AssetLibraryBundle/removeAllAssets()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/library/AssetLibraryBundle.as:399]
at away3d.library::AssetLibrary$/removeAllAssets()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/away3d-core-fp11/src/away3d/library/AssetLibrary.as:209]
at awaybuilder.controller.document::NewDocumentCommand/execute()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/controller/document/NewDocumentCommand.as:27]
at org.robotlegs.base::CommandMap/execute()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:182]
at org.robotlegs.base::CommandMap/routeEventToCommand()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:232]
at Function/()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:98]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.robotlegs.mvcs::Command/dispatch()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/mvcs/Command.as:57]
at awaybuilder.controller.document::ReplaceDocumentCommand/execute()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/controller/document/ReplaceDocumentCommand.as:24]
at org.robotlegs.base::CommandMap/execute()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:182]
at org.robotlegs.base::CommandMap/routeEventToCommand()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:232]
at Function/()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/CommandMap.as:98]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.robotlegs.mvcs::Actor/dispatch()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/mvcs/Actor.as:98]
at awaybuilder.desktop.model::FileSystemDocumentService/file_open_selectHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-desktop/src/awaybuilder/desktop/model/FileSystemDocumentService.as:154]
Ability to select and modify multiple objects in a scene
The focus interaction moves the focus and distance of the camera so that it cetrally displays the selected object at a suitable distance for the size of the object.
This can work on any object container or group of (selected) objects, and on the root object container (ie the scene)
when a file is initially loaded, the focus interaction will be called on the scene so that the file contents are displayed centrally and at a suitable size
currently clicking on a container containing a mesh will select the mesh (albeit without the bounding box).
this needs to change so that clicking on a container containing a mesh (or anything else) will select the container and display the bounding box and gizmo for that container.
Currently, all gizmos do nothing when clicked by the mouse. They need to react as each gizmo should to click and drag movements, altering the transform properties of the selected 3d object
Steps to reproduce
Expected result
A new material is created that is a copy of the Default material without the default texture (ie a color material)
Actual result
A new material is created that is a copy of the currently selected material in the dropdown
this bug occurs for both Directional lights and points lights
Steps to reproduce
Error Stacktrace
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at awaybuilder.view.components.controls::DragableNumericStepper/childUpOutside()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/components/controls/DragableNumericStepper.as:233]
Steps to reproduce:
Expected result
A new material called "Material 1", Material 2"... etc is created with the default checkerboard texture
Actual result
A new material called ""Default(copy)" is created
We need a way to centralize keyboard events in the application.
What I propose: catch keyboard events in some mediator, and send them via robotlegs. Then any mediator can catch them and perform actions on view.
Steps to reproduce
We need to add the option for importing file types other than AWD and displaying them in the interface. Perhaps this should belong inside an "import..." item in the file menu, then list the different file types we can succefully import. Clicking each one of the options would open a file browser window that can only select files with the correct extension for importing
referencing the fix for issue #32, we will also need a way to select containers and meshes contained within a heirarchy. This is already possible in the left-hand nav, but for it to work in the view the proposition is to have a double-click 'enter into' a container similar to the flash pro double click on a movieclip containing sub-clips
several things will be needed for this - a breadcrumb in the view to show where you are currently viewing, a disabling and greying out (maybe half-alpha?) of objects in the scene that are not part of the current active container view.
Steps to reproduce:
open onkba/onkba.awd
click on Bip01 in the library panel
click the delete button
Expected result
entire Bip01should disappear in the library and the view
Actual result
Bip01 stays exactly the same, or some (but not all) of the tree disappears. In the latter case, tree is unusable after this point
Steps to reproduce
Expected results
Both lights are removed from the lightpicker and are no longer visible in the view
Actual results
Both lights are removed from the lightpicker but remain visible in the view
Steps to reproduce
Expected result
the position gizmo should appear
Actual result
nothing appears, although the properties panel indicates the object is selected
When trying to move very small objects on stage (ie when zoomed in) with the position gizmo, the position exhibits a quantisation, moving in steps rather than smoothly. Same problem can be seen when scaling with the scale gizmo
Also, this function must be extended to be able remove any Object
Currently the tree root nodes are the root content data of the AWD file. In order to make navigating data types easier, i would propose we have root nodes that group the acutal root data nodes of the file. eg all root mesh and obejctcontainer3d nodes are grouped inside a root node in the tree called "scene". All material nodes are grouped inside a root node called "materials" etc. These groupings don't need to exist in the file data, they are purely for convenience when navigating the data inside the tree interface
Where applicable, selection of objects in view should be mirrored by selection of objects in tree and vice versa.
Eg. a mesh item selected in the view should appear selected in the tree.
We can potentially add further helpful synchronicity between tree and view for other object types. Perhaps when you select a material in the tree, the meshes that use that material in the view get selected? or when you select a geometry, the meshes that use that geometry are selected? possibly a 4.1 beta feature
Steps to reproduce:
runtime error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at awaybuilder.view.mediators::CoreEditorMediator/eventDispatcher_itemsSelectHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/mediators/CoreEditorMediator.as:725]
at org.robotlegs.base::EventMap/routeEventToListener()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:181]
at Function/()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:107]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.robotlegs.mvcs::Mediator/dispatch()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/mvcs/Mediator.as:89]
at awaybuilder.view.mediators::LibraryPanelMediator/view_treeChangeHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/mediators/LibraryPanelMediator.as:140]
at org.robotlegs.base::EventMap/routeEventToListener()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:181]
at Function/()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:107]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:13160]
at awaybuilder.view.components::LibraryPanel/mouseUpHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/components/LibraryPanel.mxml:144]
clear() called on executing NewDocumentCommand
3D Mouse events from the orientation cube are not firing due to an incompatibility with the mouseeventmanager and multiple views.
As a shortcut to using the import menu, dragging and dropping a compatible file will ahve the same effect as importing from the file menu. The only difference will be in a popup that asks whether the use want to merge the file with the existing library, or create and open a new library. this is to avoid anyone accidentally dragging and dropping a file into an open project, and also allows a quick way of previewing individual awd files without just automatically merging them into one
For the import option in the file menu, it is possible to import a 3d model that will automatically merge with your existing scene, or an image file that will be added to your available textures.
With a 3d file, the options should include obj, 3ds, collada (dae), md2, md5 and AWD
With an image, the options should include jpg, png and atf
The last option will automatically create an ATFTexture object for use in the library. .png and .jpg files will automatically create BitmapTexture objects
when starting the app for the first time, the zoom of the view is not set to the zoom of the zoom control, so that on first adjustment, the zoom will 'snap'.
can we make sure the starting zoom of the view and zoom control match
To recreate:
Expected results:
You should be able to zoom into the object as you would without having panned and rotated.
Actual result:
The zoom distance is limited so you cannot get as close to the object
Steps to reproduce
Expected result
Material of the floor to switch from texture to white color
Actual result
Material of everything in the scene switches to white color
Example: in Mesh properties, we have a dropdown menu for each submesh mateiral.
this has a shortcut button to edit the submesh, but it should also have an 'add new' button alongside so that it is easy to create a new material to be used by the mesh should that be required. Adding a material in this way should introduce a new material object to the document tree on the left, as well as automatically linking the mateiral to the submesh it has been added under.
For other properties such as geometry, texture, animator etc, this functionality should be replicated.
update to the empty container placeholder graphic - something mor unobtrusive like a 6-point wire cross. Still needs to be selectable
Steps to reproduce
Error Stack
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at awaybuilder.model.vo.scene::AssetVO/equals()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/model/vo/scene/AssetVO.as:19]
at awaybuilder.view.components.editors.renderers::SubmeshItemRenderer/set data()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/components/editors/renderers/SubmeshItemRenderer.mxml:32]
at spark.components::SkinnableDataContainer/updateRenderer()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/SkinnableDataContainer.as:614]
at spark.components.supportClasses::ListBase/updateRenderer()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as:1114]
at spark.components::DataGroup/setUpItemRenderer()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/DataGroup.as:1165]
at spark.components::DataGroup/getVirtualElementAt()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/DataGroup.as:1557]
at spark.layouts::VerticalLayout/updateDisplayListVirtual()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as:1840]
at spark.layouts::VerticalLayout/updateDisplayList()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as:2138]
at spark.components.supportClasses::GroupBase/updateDisplayList()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as:1302]
at spark.components::DataGroup/updateDisplayList()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/spark/src/spark/components/DataGroup.as:1494]
at mx.core::UIComponent/validateDisplayList()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:9007]
at mx.managers::LayoutManager/validateClient()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/managers/LayoutManager.as:1041]
at mx.core::UIComponent/validateNow()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:8085]
at awaybuilder.view.mediators::PropertiesPanelMediator/eventDispatcher_itemsSelectHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/mediators/PropertiesPanelMediator.as:570]
at org.robotlegs.base::EventMap/routeEventToListener()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:181]
at Function/()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:107]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at org.robotlegs.mvcs::Mediator/dispatch()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/mvcs/Mediator.as:89]
at awaybuilder.view.mediators::PropertiesPanelMediator/view_showParentMeshHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/mediators/PropertiesPanelMediator.as:261]
at org.robotlegs.base::EventMap/routeEventToListener()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:181]
at Function/()[/Development/Projects/Robotlegs/robotlegs-framework/src/org/robotlegs/base/EventMap.as:107]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at mx.core::UIComponent/dispatchEvent()[/Users/justinmclean/Documents/ApacheFlexSDK/frameworks/projects/framework/src/mx/core/UIComponent.as:13160]
at awaybuilder.view.components.editors::MaterialPropertiesEditor/editParentObjectButton_clickHandler()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/components/editors/MaterialPropertiesEditor.mxml:316]
at awaybuilder.view.components.editors::MaterialPropertiesEditor/__editParentObjectButton_click()[/Users/robbateman/Documents/Adobe Flash Builder 4.7/AwayBuilder/awaybuilder-core/src/awaybuilder/view/components/editors/MaterialPropertiesEditor.mxml:568]
when viewing the orientation grid or the bounding box of a mesh, any horizontal lines rendered by the wireframe disappear. This is especially noticeable when the app in initially started. Presumably a problem in the wireframe renderer?
Hello, Richard,
To continue development we need another .awd file with all types of items in it, to test tree UI component, its parsing etc.
Right now some of the assets are embeded inside app itself to show bear file,
but we need to remove them, and to do that we need to have them inside .awd (or defined by external links in it)
Also we need an example of parsing that file, to see all possible options..
Could you please provide a file and parsing example? Thanks
rather than use two different property panel setups for texture materials and color materials, we can have a single panel with a radiobutton at the top that selects material type (that can in future be extended to include things like single pass texture material, multipass texure material etc)
the current radio button would have an option for tetxure material and an option for colr material mode. When the mode is switched, the properties panel needs to update to either remove the panel elements that aren't associated with the texture type, or grey them out (whichever makes more sense) Currently these properties are:
color (only applicable for color materials)
texture (only applicable for texture materials)
Create new materials from the panel on the left
The current motion is simply to turn the camera left and right, which doesn't sit well with switching back and forth between pan mode and rotate mode for the view
Desired functionality should be rotate of hovercontroller on click and drag for rotate mode (as is currently), and movement of target position of hovercontroller left/right/up/down for pan mode
i was thinking it would be good to spend some time properly integrating the packages etc so that they are more like one codebase eg only have one events package for each project, one controllers package etc. If we want to create a separation between quentin and mike's code, we could potentially have a separate library project that would allow the same package structures while keeping codebases seaparated for easier maintenance - but i'll let you decide what would be the best solution
Delete, copy and paste in the toolbar (and menu) should act like any other delete, copy and paste function. Once a selected item is copied, it is retained in a "clipboard" and pasted as a new item in the document every time the paste command is called. The delete toolbar item is fairly self explanatory, however, when a texture or object that can be shared across object properties is deleted, it will be necessary to nullify (or replace with the default) all those objects that are affected.
With any Widget, the object needs to be always rendered over the top of the object it is controlling, regardless of depth. For this, an update to the depthrender needs to take account of the zOffset property on entity objects, so that this depth value is added and depth order can be controlled
Steps to reproduce
Expected result
the submesh of the polarbear has a material selection of "Default" that has a greyed out arrow for going into
Actual result
the submesh of the polarbear has a material selection of "Default" that has an active arrow for going into. when clicked, the properties panel of the default material can be viewed
gizmos to be rendered over the top of all content so that they cannot be obscured
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.