Giter Site home page Giter Site logo

dcl-hackathon-2019's People

Contributors

mr-highball avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

bravesoftdz

dcl-hackathon-2019's Issues

image service demo

ultimately, the spray-service will be used for interactions in the scene (persisting spray positions, user limits, description, etc...) but as a proof of concept, just use the image service. this won't allow for other players to see images posted by other players, but will still allow for external images to be rendered in game.

  • simple wizard to choose to paste an image url
    • maybe just a "start" button in the bottom right corner
  • a UI indicator showing an image is ready to be placed in world
  • wire up global primary key to fire ray
    • this will use the hitFirst() method to get an entity's normal vector
  • spawn a simple static plane with some image as a representation of a "spray"
  • on pointer click of the spray, show a image box
    • default with some "loading..." text
    • when user click again, hide the UI

fetch sprays action

need to implement a "fetch" method which returns a list of player owned sprays for this parcel.
requires #3 & #13

  • implement DoInitialize() to setup the action name
  • authenticate request with auth service
  • call fetch oublic controller method with request
  • return response as json to web caller

create spray public method

need a public method that handles the creation of spray

  • check against user spray limit
    • is this stored at the db per user, or just a simple config?
  • call to image service with the url
    • need to construct an image request with the auth info/url
  • save down the details to spray table (strings, requester info, etc...)
  • return a TCreateSprayResponse

fetch all sprays for player public method

public method to fetch for a given player, all their available sprays and return a list of them

  • define this... how do we handle estates? are sprays only locked to a parcel? does something need to change with auth service?

dto's for spray controller's "fetch single" action

need the transfer objects for the spray controller's fetchSingle action

  • TFetchSingleSprayRequest
    • authentication
    • spray token
  • TFetchSingleSprayResponse
    • spray metadata (name, description, etc...)
    • image-service -> TImageResponse dto

save the constructed image

in the registration controller, after the call to ConstructDCLImageJSON() a call to a image controller needs to be made to save the json

  • update the signature of ConstructDCLImageJSON to return the image response
  • call image service Update() method with command object

UI component for displaying created sprays

needs to be a scroll enabled list that populates the player's created sprays when they walk into a parcel with sprays enabled.

as a user...

  • list displays when player enters parcel
  • sprays are shown with the "friendly name" as the caption
  • when selected that particular spray is activated ready for putting in the scene

implementation details...

  • expose a clear method
  • expose a method to populate list
    • inputs are display text, spray token
  • on selection trigger a callback to pass back to listener that gives the spray token

fetch and populate player sprays on enter of parcel

need to fetch the data from the backend in order to render the spray list to the player.
requires #10 & #12

  • authenticate against auth service to get a token
  • call to spray-service/fetch
  • call clear method of spray list
  • populate spray list with returned results

fetch image action

need a new action inside of the image controller to return a completed registered image to the caller

TImageController = class(TBaseController)

  • implement image request inside of image service dto
    • contains auth info and id of image
  • implement image response inside of image service dto here
  • Fetch action defined with error checking and returning response
    • authenticate user
  • Fetch public method defined / implemented
    • check only completed images

build simple scene

need to build a simple scene to view the sprays in. this could just be a builder scene since the core mechanics should work on any model, or this could simply be a large billboard where people can post different images

  • make the builder scene
  • position billboard in correct place and size

define spray table

need to define the spray table inside of the DoInitialize() method of the spray controller

  • create an InitSprayTable method and call this in DoInit
  • ensure the following fields of the spray table
    • id (pri key int)
    • token (user facing id)
    • imageToken (token used to search inside of image service)
    • url
    • name
    • description
    • world position (x,y,z)

delete spray action

implement web facing action to delete a spray

  • ensure action is in DoInitialize() of spray controller
  • call against auth service to validate user is the same who created
  • call public delete method and return a TDeleteSprayRequest #16

3D component for hold spray info

a 3D component needs to be defined to "place" in the world. This component needs to have some 3D representation defined and shown to the player in-game, but also have interactions such as clicking.

below needs to be worked out once spray service is more finalized

  • constructor should take a model path
    • this will be the model to render in-game when placed by the user
  • need to have these properties exposed
    • spray name
    • spray description
    • spray token
    • OnInteract callback (when player triggers spray)
  • when clicked (probably with primary button & onClick) need to
    • triggers the OnInteract callback if defined and passes necessary rendering info

image construction optimize

inside of the image construction logic, I believe if the predominant color is found first, and drawn as an entire layer, then all other colors are draw on top, we should gain some performance in dcl. the idea is that less square will need to be drawn since only one rect for primary color will be used (background).
anyway, not necessary for completion but jotting down so I don't forget.

status controller dto's

need to define the data transfer objects for the status controller

  • fetch status request
  • fetch status response dto
    • enums defined in #2

fetch single spray public method

implement public method that fetches the actual draw commands from the image service

  • call status action of image service to check status
  • if the image isn't ready yet then return back the response with some type of in progress property (need to define in the dto)

create spray action

implement a web facing action for creating a spray

  • ensure action is initialized in DoInitAction()
  • auth against service
  • call to create spray public method #20
  • return TCreateSprayResponse

UI component for creating a spray

need a button that when clicked, starts a wizard for adding a new spray for a player.

as a user...

  • see a button somewhere inside a spray enabled parcel that says something along the lines of "Create Spray..."
    • when clicked starts the wizard process
  • first step of the wizard asks for the url of the image to use
  • second step of the wizard asks for the name of a spray
  • third step of the wizard asks for a fixed size description shown to other players

implementation details...

  • expose a callback on this component which triggers when a successful wizard has been finished
    • data given will be name, description, url

implement status methods inside of status controller

need to implement various status related methods and types inside of the image controller. this is done here rather than the registration controller since the registration's job is to begin the process and move on

TStatusController = class(TBaseController)

  • declare enums for status types
  • UpdateStatus(ID, Status) needs to check existence of ID

requires #6

  • Status action fetches the status of an image
  • fetch public method

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.