decentraland / builder Goto Github PK
View Code? Open in Web Editor NEW๐ Build scenes for Decentraland
Home Page: https://builder.decentraland.org
License: Other
๐ Build scenes for Decentraland
Home Page: https://builder.decentraland.org
License: Other
We need to kickstart a new Create React App
Create a test case system to easily start the application in a specific state
The topbar should include a button that duplicates the current selected item
Redux state
{
wallet: {
/*(...)*/
},
camera: {
zoom: number,
origin: Vector2,
rotation: Vector4
// position => caculated on the fly
},
scene: {
[sceneId]: {
id: string,
metrics: {
triangles: number,
materials: number
},
tree: SimplifiedNode // what we send to the client
}
},
project: { // current project from URL
[projectId]: {
id: string,
title: string,
description: string,
ownerEmail: string,
parcels: {x:number, y:number}[],
scene_id: string
}
},
ui: {
sidebarVisible: boolean,
viewport: 'preview' | 'editor',
modal: (...)
},
editor: {
mode: 'move' | 'rotate' | 'scale'
selectedEntity: string // instance of asset
},
category: {
[name]: {
name: string,
assets: string[] // assetId
}
},
assetPack: {
[assetPackId]: {
id: string, // id=title-version?
title: string,
assets: string[]
}
},
asset: AssetDescriptor & { id: string, assetPackId: string }[]
}
Endpoint responses
/api/assetPacks
returns AssetPack[]
type AssetPack = {
// Asset pack manifest version (1 by default)
version: number
// Asset pack title
title: string
assets: AssetDescriptor[]
}
type AssetResource = {
// Asset display name
name: string
// Resource URL (content server)
url: string
thumbnail: string
}
type AssetDescriptor = AssetResource & {
id: string
// Tag list
tags: string[]
category: string
variations: AssetResource[]
}
Notes
TODO
window
sagas?client
? module that hooks the events and fires actions. The other modules listen to the actions and don't use window
The topbar should include a button that deletes the current selected item
There should be a palette where decorative items packs can be displayed based on their category and searched based on their tags (may be name as well?).
Later
The assetpack manifest should contain an asset as follows:
{
"id": "abc-def-fgh",
"name": "Test",
"thumbnail": "<direct content server url>",
"url": "Tree/Tree_StarterPack.gltf",
"tags": ["test"],
"category": "test",
"variations": [],
"mappings": {
"Tree/Tree_StarterPack.gltf': 'https://content.decentraland.today/contents/QmdmNp5MuRxkNAAsyFd7z3nFGYcPaeZQRjFDm4AphE7K4V',
"Tree/texture.png": '<content server url>'
}
}
All model dependencies must be listed in the dependencies field of the asset pack
The mappings sent to the client should be defined as follows:
{
'<assetpack-uuid>/Tree/Tree_StarterPack.gltf': 'https://content.decentraland.today/contents/QmdmNp5MuRxkNAAsyFd7z3nFGYcPaeZQRjFDm4AphE7K4V'
}
Where the asetpack id servers as a namespace to avoid conflicts with assets that share the same name
We should change the basic editor camera to look up from above. No need for complex rotation features for this one.
We should support project creation templates for:
Depends on #60
We should optimize the mappings sent to the editor, we are sending all of them when only a few are needed.
We should optimize the js code generation, creating randomly named variables is good enough but we can use an array and be sure that we will never have naming collisions. Also we should only use ES5 syntax.
We need a set of buttons to toggle between the different list view modes. These modes are already implemented by #30
Using a custom save file
We need a modal that can display all the active shortcuts. This modal should be displayed by clicking a button at the bottom-right of the editor viewport.
Depends on #17
The client should expose a way to consult material/triangle/etc usage on demand.
Edit:
We need to investigate the possibility of adding an option to allow the user to edit the scene size. Say you pick a 2x3 scene but decide you want it to be 2x2 later, you need to redo the entire scene.
We need a route for the project creation page, with a navbar and a footer.
We need to inform the user when the limit is hit
There should be a modal reducer for all modals in the app:
Already available on decentraland-dapps
Depends on #17
The play mode should place the user in first person view (similar to the CLI).
There should be a button to toggle/display colliders
category: {
[name]: {
name: string,
assets: string[] // assetId
}
},
assetPack: {
[assetPackId]: {
id: string, // id=title-version?
title: string,
assets: string[]
}
},
asset: AssetDescriptor & { id: string, assetPackId: string }[]
We require:
The initial layout with initial background colors is enough
The business logic domain for the current opened project:
Projects should be saved to localstorage and displayed in the home page for users to continue work without exporting/re-importing data.
The Editor view should load a preview instance (first person mode).
Projects should be deployable to a LAND or Estate. There should be a button in the top toolbar for this.
Categories can be derived from already existing state and will make filtering/searching easier
We need to disable:
We need the client to report the simplified node that was changed together with a path to that specific node. Then, we can store the reference to previous redux states to perform time travel undo/redo.
The editor domain as seen in #29
We need to be able to move stuff with a translation gizmo
The gizmos should affect the client entities and report back the state changes for the builder to update its internal representation of the scene. Only the client side hooks should be implemented for this issue.
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.