diff --git a/defaults/meta3d-bs-most/.gitignore b/defaults/meta3d-bs-most/.gitignore new file mode 100755 index 000000000..cfcb9275b --- /dev/null +++ b/defaults/meta3d-bs-most/.gitignore @@ -0,0 +1,15 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +lib/bs/ +lib/js/src/ +reference/ +node_modules/ +mine/ + +npm-debug + + +.bsb.lock \ No newline at end of file diff --git a/defaults/meta3d-bs-most/.npmignore b/defaults/meta3d-bs-most/.npmignore new file mode 100755 index 000000000..30b317c44 --- /dev/null +++ b/defaults/meta3d-bs-most/.npmignore @@ -0,0 +1,29 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +test/ + +.github/ + +donate/ + +lib/bs/ + +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/defaults/meta3d-bs-most/bsconfig.json b/defaults/meta3d-bs-most/bsconfig.json new file mode 100755 index 000000000..97014dd0f --- /dev/null +++ b/defaults/meta3d-bs-most/bsconfig.json @@ -0,0 +1,29 @@ +{ + "name": "meta3d-bs-most", + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "bsc-flags": [ + "-bs-no-version-header", + "-bs-super-errors" + ], + "package-specs": [ + "commonjs", + "es6-global" + ], + "bs-dev-dependencies": [], + "bs-dependencies": [ + "meta3d-type", + "meta3d-commonlib" + ], + "refmt": 3, + "namespace": true, + "suffix": ".bs.js", + "warnings": { + "number": "-0-1-2-3-4-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-K", + "error": "+5+6" + } +} \ No newline at end of file diff --git a/defaults/meta3d-bs-most/lib/es6_global/src/most.bs.js b/defaults/meta3d-bs-most/lib/es6_global/src/most.bs.js new file mode 100644 index 000000000..5993ca838 --- /dev/null +++ b/defaults/meta3d-bs-most/lib/es6_global/src/most.bs.js @@ -0,0 +1,53 @@ + + +import * as Most from "most"; +import * as Curry from "../../../../../node_modules/rescript/lib/es6/curry.js"; + +function subscribe(arg1, obj) { + return obj.subscribe(arg1); +} + +function unfold(f) { + return function (param) { + return Most.unfold((function (x) { + var match = Curry._1(f, x); + if (match !== undefined) { + return { + value: match[0], + seed: match[1] + }; + } else { + return { + done: true + }; + } + }), param); + }; +} + +function fromList(list) { + return unfold(function (curList) { + if (curList) { + return [ + curList.hd, + curList.tl + ]; + } + + })(list); +} + +function concat(arg1, obj) { + return obj.concat(arg1); +} + +var Subject = {}; + +export { + subscribe , + unfold , + fromList , + concat , + Subject , +} +/* most Not a pure module */ diff --git a/defaults/meta3d-bs-most/package.json b/defaults/meta3d-bs-most/package.json new file mode 100755 index 000000000..f8c6e96c0 --- /dev/null +++ b/defaults/meta3d-bs-most/package.json @@ -0,0 +1,26 @@ +{ + "name": "meta3d-bs-most", + "version": "0.20.0", + "scripts": { + "watch": "rescript clean && rescript build -w", + "webpack": "webpack --config webpack.config.js" + }, + "dependencies": { + "meta3d-type": "^0.20.0", + "most": "1.7.0", + "most-subject": "^5.3.0", + "rescript": "^10.0.1" + }, + "devDependencies": { + "@babel/core": "^7.10.4", + "@babel/preset-env": "^7.10.4", + "clean-webpack-plugin": "^4.0.0", + "cross-env": "^7.0.3", + "cz-customizable": "^6.3.0", + "gentype": "^3.48.0", + "gulp": "^4.0.2", + "meta3d-tool-publish": "^0.20.0", + "webpack": "^5.62.1", + "webpack-cli": "^4.9.1" + } +} diff --git a/defaults/meta3d-bs-most/src/most.res b/defaults/meta3d-bs-most/src/most.res new file mode 100755 index 000000000..08efb7808 --- /dev/null +++ b/defaults/meta3d-bs-most/src/most.res @@ -0,0 +1,498 @@ +@genType.import(("most", "Stream")) +type stream<'a> + +/* observes a stream */ +@module("most") +external observe: ('a => unit, stream<'a>) => Js.Promise.t = + "observe" + +@module("most") +external forEach: ('a => unit, stream<'a>) => Js.Promise.t = + "forEach" + +/* Reduce a stream, returning a promise for the ultimate result. */ +@module("most") +external reduce: ( + ('accum, 'a) => 'b, + 'b, + stream<'a>, +) => Js.Promise.t<'b> = "reduce" + +/* Start consuming events from stream. + This can be useful in some cases where you don't want or need to process the terminal events + --e.g. when all processing has been done via upstream side-effects. + Most times, however, you'll use observe to consume and process terminal events. */ +@module("most") +external drain: stream<'a> => Js.Promise.t = "drain" + +/* Draft ES Observable compatible subscribe. + Start consuming events from stream by providing an observer object. */ +type observer<'a> = {"next": 'a => unit, "error": Js.Exn.t => unit, "complete": unit => unit} + +type subscription = {"unsubscribe": unit => unit} + +@bs.send.pipe(: stream<'a>) +external subscribe: observer<'a> => subscription = "subscribe" + +/* ** + * Stream creation + * */ +/* Creates an already ended stream with no events */ +@module("most") external empty: unit => stream = "empty" + +/* Creates a stream containing only x */ +@module("most") external just: 'a => stream<'a> = "just" + +/* Creates a stream from an array */ +@module("most") external from: array<'a> => stream<'a> = "from" + +/* The JavaScript version of `unfold` is hard to type safely. + * It takes an object of the shape { seed, value, done } + * where done is a boolean whether to complete the stream. + * When `done` is true, `seed` and `value` are ignored. + * There are often times when we may complete a stream after + * exhausting our data source (e.g. the `fromList` function), + * so we need a way of saying we're done without providing + * a `value` or a `seed`. + * We expose an unsafe `_unfold` here, and then below a more + * typesafe version along with some types to go along with it. + */ +@module("most") +external _unfold: ('a => Js.t<'b>, 'a) => stream<'c> = "unfold" + +external unsafeCast: Js.t<'a> => Js.t<'b> = "%identity" + +/* Creates a stream from a generating function and a seed */ +let unfold = (f: 'a => option<('b, 'a)>): ('a => stream<'b>) => + _unfold(x => + switch f(x) { + | None => unsafeCast({"_done": true}) + | Some((value, seed)) => unsafeCast({"value": value, "seed": seed}) + } + ) + +/* Creates a stream from a Reason list */ +let fromList = list => unfold(curList => + switch curList { + | list{} => None + | list{x, ...rest} => Some((x, rest)) + } + , list) + +/* Creates a stream from a promise that completes once the promise resolves */ +@module("most") +external fromPromise: Js.Promise.t<'a> => stream<'a> = "fromPromise" + +/* Create an infinite stream containing events that arrive every period milliseconds, + and whose value is undefined. */ +@module("most") external periodic: int => stream = "periodic" + +/* Create a stream that contains no events and never ends */ +@module("most") external never: unit => stream<'a> = "never" + +/* Build an infinite stream by computing successive items iteratively. + Conceptually, the stream will contain: [initial, f(initial), f(f(initial)), ...] */ +@module("most") +external iterate: ('a => 'a, 'a) => stream<'a> = "iterate" + +/* Same as `iterate`, but the function may return a promise. + This allows one to build asynchronous streams of future values */ +@module("most") +external iteratePromise: ( + 'a => Js.Promise.t<'a>, + 'a, +) => stream<'a> = "iterate" + +/* Create a stream of events from a DOM EventTarget */ +@module("most") +external fromEvent: ( + string, + Dom.eventTarget, + bool, +) => stream = "fromEvent" + +/* Concatenates two streams together */ +@bs.send.pipe(: stream<'a>) +external concat: stream< + 'a, +> => stream<'a> = "concat" + +/* Appends an element to the start of a stream */ +@module("most") +external startWith: ( + 'a, + stream<'a>, +) => stream<'a> = "startWith" + +/* ** + * Error handling + * */ +/* Recover from a stream failure by calling a function to create a new stream. */ +@module("most") +external recoverWith: ( + Js.Exn.t => stream<'a>, + stream<'a>, +) => stream<'a> = "recoverWith" + +/* Create a stream in the error state. */ +@module("most") +external throwError: Js.Exn.t => stream = "throwError" + +/* ** + * Transforming + * */ +/* Create a new stream by applying f to each event of the input stream. */ +@module("most") +external map: ( + 'a => 'b, + stream<'a>, +) => stream<'b> = "map" + +/* Create a new stream by replacing each event of the input stream with x */ +@module("most") +external constant: ( + 'a, + stream<'b>, +) => stream<'a> = "constant" + +/* Create a new stream containing incrementally accumulated results, starting with the provided initial value. */ +@module("most") +external scan: ( + ('accum, 'a) => 'b, + 'accum, + stream<'a>, +) => stream<'b> = "scan" + +/* Transform each event in stream into a stream, and then merge it into the resulting stream. */ +@module("most") +external flatMap: ( + 'a => stream<'b>, + stream<'a>, +) => stream<'b> = "flatMap" + +/* Replace the end signal with a new stream returned by f. */ +@module("most") +external continueWith: ( + 'a => stream<'b>, + stream<'a>, +) => stream<'b> = "continueWith" + +/* Transform each event in stream into a stream, and then concatenate it onto the end of the resulting stream. */ +@module("most") +external concatMap: ( + 'a => stream<'b>, + stream<'a>, +) => stream<'b> = "concatMap" + +/* Apply the latest function in a stream of functions to the latest value in stream */ +@module("most") +external ap: ( + stream<'a => 'b>, + stream<'a>, +) => stream<'b> = "ap" + +/* Materialize event timestamps, transforming Stream into Stream<{ time:number, value:X }> */ +@module("most") +external timestamp: stream< + 'a, +> => stream<{ + "time": int, + "value": 'a, +}> = "timestamp" + +/* Perform a side-effect for each event in stream. */ +@module("most") +external tap: ( + 'a => unit, + stream<'a>, +) => stream<'a> = "tap" + +/* ** + * Filtering + * */ +/* Create a stream containing only events for which the predicate returns true. */ +@module("most") +external filter: ( + 'a => bool, + stream<'a>, +) => stream<'a> = "filter" + +/* Create a new stream with adjacent repeated events removed. */ +@module("most") +external skipRepeats: stream< + 'a, +> => stream<'a> = "skipRepeats" + +/* Create a new stream with adjacent repeated events removed, using the provided comparison function */ +@module("most") +external skipRepeatsWith: ( + ('a, 'a) => bool, + stream<'a>, +) => stream<'a> = "skipRepeatsWith" + +/* ** + * Slicing + * */ +/* Create a new stream containing only events where start <= index < end, + where index is the ordinal index of an event in stream. + If stream contains fewer than start events, the returned stream will be empty. */ +@module("most") +external slice: ( + int, + int, + stream<'a>, +) => stream<'a> = "slice" + +/* Create a new stream containing at most n events from stream. + If stream contains fewer than n events, the returned stream will be effectively equivalent to stream. */ +@module("most") +external take: ( + int, + stream<'a>, +) => stream<'a> = "take" + +/* Create a new stream that omits the first n events from stream. + If stream contains fewer than n events, the returned stream will be empty. */ +@module("most") +external skip: ( + int, + stream<'a>, +) => stream<'a> = "skip" + +/* Create a new stream containing all events until predicate returns false. */ +@module("most") +external takeWhile: ( + 'a => bool, + stream<'a>, +) => stream<'a> = "takeWhile" + +/* Create a new stream containing all events after predicate returns false. */ +@module("most") +external skipWhile: ( + 'a => bool, + stream<'a>, +) => stream<'a> = "skipWhile" + +/* Create a new stream containing all events before and including when the predicate returns true. */ +@module("most") +external skipAfter: ( + 'a => bool, + stream<'a>, +) => stream<'a> = "skipAfter" + +/* Create a new stream containing all events until endSignal emits an event. */ +@module("most") +external until: ( + stream<'b>, + stream<'a>, +) => stream<'a> = "until" + +/* Create a new stream containing all events after startSignal emits its first event. */ +@module("most") +external since: ( + stream<'b>, + stream<'a>, +) => stream<'a> = "since" + +/* Create a new stream containing only events that occur during a dynamic time window. */ +@module("most") +external during: ( + stream>, + stream<'a>, +) => stream<'a> = "during" + +/* ** + * Combining + * */ +/* Create a new stream containing events from stream1 and stream2. */ +@module("most") +external merge: ( + stream<'a>, + stream<'a>, +) => stream<'a> = "merge" + +/* Array form of merge. Create a new stream containing all events from all streams in the array. */ +@module("most") +external mergeArray: array< + stream<'a>, +> => stream<'a> = "mergeArray" + +/* Create a new stream that emits the set of latest event values from all input streams + whenever a new event arrives on any input stream. */ +@module("most") +external combine: ( + ('a, 'b) => 'c, + stream<'a>, + stream<'b>, +) => stream<'c> = "combine" + +/* Array form of combine. Create a new stream that emits the set of latest event values + from all input streams whenever a new event arrives on any input stream. */ +/* NOTE: This is not included yet due to the variadic callback requirement... */ +/* external combineArray : (array 'a => 'b) => array (stream 'a) => stream 'a = "combineArray" [@@bs.module "most"]; */ +/* Create a new stream by combining sampled values from many input streams. */ +@module("most") +external sample1: ( + 'a => 'b, + stream<'sample>, + stream<'a>, +) => stream<'b> = "sample" + +@module("most") +external sample2: ( + ('a, 'a) => 'b, + stream<'sample>, + stream<'a>, + stream<'a>, +) => stream<'b> = "sample" + +@module("most") +external sample3: ( + ('a, 'a, 'a) => 'b, + stream<'sample>, + stream<'a>, + stream<'a>, + stream<'a>, +) => stream<'b> = "sample" + +@module("most") +external sample4: ( + ('a, 'a, 'a, 'a) => 'b, + stream<'sample>, + stream<'a>, + stream<'a>, + stream<'a>, + stream<'a>, +) => stream<'b> = "sample" + +@module("most") +external sample5: ( + ('a, 'a, 'a, 'a, 'a) => 'b, + stream<'sample>, + stream<'a>, + stream<'a>, + stream<'a>, + stream<'a>, + stream<'a>, +) => stream<'b> = "sample" + +@module("most") +external sample6: ( + ('a, 'a, 'a, 'a, 'a, 'a) => 'b, + stream<'sample>, + stream<'a>, + stream<'a>, + stream<'a>, + stream<'a>, + stream<'a>, + stream<'a>, +) => stream<'b> = "sample" + +/* When an event arrives on asampler, emit the latest event value from a stream of values. */ +@module("most") +external sampleWith: ( + stream<'sample>, + stream<'a>, +) => stream<'a> = "sample1" + +@module("most") +external zip: ( + ('a, 'b) => 'c, + stream<'a>, + stream<'b>, +) => stream<'c> = "zip" + +/* ** + * Combining higher-order streams + * */ +/* Given a higher-order stream, return a new stream that adopts the behavior of + (ie emits the events of) the most recent inner stream. */ +@module("most") +external switchLatest: stream< + stream<'a>, +> => stream<'a> = "switchLatest" + +/* Given a higher-order stream, return a new stream that merges all the inner streams as they arrive. */ +@module("most") +external join: stream< + stream<'a>, +> => stream<'a> = "join" + +/* Given a higher-order stream, return a new stream that merges inner streams as they arrive + up to the specified concurrency. Once concurrency number of streams are being merged, + newly arriving streams will be merged after an existing one ends. */ +@module("most") +external mergeConcurrently: ( + int, + stream>, +) => stream<'a> = "mergeConcurrently" + +/* ** + * Awaiting promises + * */ +/* Given a stream of promises, ie Stream>, + return a new stream containing the fulfillment values, ie Stream. + Event times may be delayed. However, event order is always preserved, + regardless of promise fulfillment order. + To create a stream that merges promises in fulfillment order, + use `flatMap(fromPromise, stream)`. + If a promise rejects, the stream will be in an error state + with the rejected promise's reason as its error. + See recoverWith for error recovery. */ +@module("most") +external awaitPromises: stream< + Js.Promise.t<'a>, +> => stream<'a> = "awaitPromises" + +/* ** + * Rate limiting streams + */ +/* Wait for a burst of events to subside and emit only the last event in the burst. + If the stream ends while there is a pending debounced event (e.g. via `until`), + the pending event will be emitted just before the stream ends. */ +@module("most") +external debounce: ( + int, + stream<'a>, +) => stream<'a> = "debounce" + +/* Limit the rate of events to at most one per throttlePeriod. */ +@module("most") +external throttle: ( + int, + stream<'a>, +) => stream<'a> = "throttle" + +/* ** + * Delaying streams + * */ +/* Timeshift a stream by a delay time in milliseconds. */ +@module("most") +external delay: ( + int, + stream<'a>, +) => stream<'a> = "delay" + +/* ** + * Sharing streams + * */ +/* Returns a stream equivalent to the original, but which can be shared more efficiently among multiple consumers. */ +@module("most") +external multicast: stream< + 'a, +> => stream<'a> = "multicast" + +/* ** + * Subjects! + * */ +module Subject = { + type t<'a> + @module("most-subject") external make: unit => t<'a> = "async" + external asStream: t<'a> => stream<'a> = "%identity" + @module("most-subject") external next: ('a, t<'a>) => t<'a> = "next" + @module("most-subject") + external error: (Js.Exn.t, t<'a>) => t = "error" + @send external complete: t<'a> => t<'a> = "complete" + @module("most-subject") + external completeWith: ('a, t<'a>) => t<'a> = "complete" +} diff --git a/defaults/meta3d-type/src/Index.res b/defaults/meta3d-type/src/Index.res index 86d29c461..ca8c328a8 100755 --- a/defaults/meta3d-type/src/Index.res +++ b/defaults/meta3d-type/src/Index.res @@ -39,7 +39,7 @@ and extensionLifeAsyncEventHandler<'extensionService> = ( ) => Js.Promise.t and extensionLife<'extensionService> = { onRegister: Js.Nullable.t>, - onRestore: Js.Nullable.t<(state, state) => state>, + onRestore: Js.Nullable.t<(state, state) => state>, onDeepCopy: Js.Nullable.t state>, onStart: Js.Nullable.t<(state, 'extensionService, startConfigData) => unit>, onInit: Js.Nullable.t>, @@ -81,6 +81,10 @@ type api = { getExtensionService: 'extensionService. (. state, extensionProtocolName) => 'extensionService, getExtensionState: 'extensionState. (. state, extensionProtocolName) => 'extensionState, setExtensionState: 'extensionState. (. state, extensionProtocolName, 'extensionState) => state, + getPackageService: 'packageService. ( + . state, + packageProtocolName, + ) => Js.Nullable.t<'packageService>, registerContribute: 'getContributeFunc. ( . state, contributeProtocolName, diff --git a/defaults/meta3d-type/src/Index.ts b/defaults/meta3d-type/src/Index.ts index efc3154d3..d3f5b0897 100755 --- a/defaults/meta3d-type/src/Index.ts +++ b/defaults/meta3d-type/src/Index.ts @@ -25,6 +25,7 @@ export type api = { getExtensionService(state: state, extensionProtocolName: extensionProtocolName): extensionService, getExtensionState(state: state, extensionProtocolName: extensionProtocolName): extensionState, setExtensionState(state: state, extensionProtocolName: extensionProtocolName, extensionState: extensionState): state + getPackageService(state: state, packageProtocolName: packageProtocolName): nullable, registerContribute(state: state, contributeProtocolName: contributeProtocolName, getContributeFunc: getContributeFunc): state, getContribute(state: state, contributeProtocolName: contributeProtocolName): contribute, getAllContributesByType(state: state, contributeType: contributeType): Array, @@ -60,7 +61,7 @@ export type startConfigData = [canvasData, configData] export type extensionLife = { onRegister?: extensionLifeEventHandler, onRestore?: (currentState: state, targetState: state) => state, - onDeepCopy?: (state:state) => state, + onDeepCopy?: (state: state) => state, onStart?: (state: state, extensionService: extensionService, configData: startConfigData) => void, onInit?: extensionLifeAsyncEventHandler, onUpdate?: extensionLifeAsyncEventHandler, diff --git a/defaults/meta3d/lib/es6_global/src/ExtensionManager.bs.js b/defaults/meta3d/lib/es6_global/src/ExtensionManager.bs.js index 30c18cdf4..13a3d21da 100644 --- a/defaults/meta3d/lib/es6_global/src/ExtensionManager.bs.js +++ b/defaults/meta3d/lib/es6_global/src/ExtensionManager.bs.js @@ -6,6 +6,7 @@ import * as Js_string from "../../../../../node_modules/rescript/lib/es6/js_stri import * as Log$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/log/Log.bs.js"; import * as Tuple2$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/tuple/Tuple2.bs.js"; import * as ArraySt$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/ArraySt.bs.js"; +import * as OptionSt$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/OptionSt.bs.js"; import * as Exception$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/Exception.bs.js"; import * as NullableSt$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/NullableSt.bs.js"; import * as ImmutableHashMap$Meta3dCommonlib from "../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/hash_map/ImmutableHashMap.bs.js"; @@ -92,6 +93,10 @@ function initExtension(state, extensionProtocolName, data) { return _invokeAsyncLifeOtherHander(state, extensionProtocolName, data, ImmutableHashMap$Meta3dCommonlib.getExn(state.extensionLifeMap, extensionProtocolName).onInit); } +function getPackageService(state, protocolName) { + return OptionSt$Meta3dCommonlib.toNullable(ImmutableHashMap$Meta3dCommonlib.get(state.extensionServiceMap, protocolName)); +} + function _decideContributeType(contribute) { if (!(contribute.actionName == null) && !(contribute.handler == null)) { return /* Action */3; @@ -186,6 +191,7 @@ function buildAPI(param) { return ImmutableHashMap$Meta3dCommonlib.getExn(state.extensionStateMap, protocolName); }), setExtensionState: setExtensionState, + getPackageService: getPackageService, registerContribute: registerContribute, getContribute: getContributeExn, getAllContributesByType: getAllContributesByType, @@ -211,6 +217,7 @@ export { startExtension , updateExtension , initExtension , + getPackageService , _decideContributeType , _checkIsRegister , restore , diff --git a/defaults/meta3d/lib/es6_global/src/Main.bs.js b/defaults/meta3d/lib/es6_global/src/Main.bs.js index 1c5abd264..04e144755 100644 --- a/defaults/meta3d/lib/es6_global/src/Main.bs.js +++ b/defaults/meta3d/lib/es6_global/src/Main.bs.js @@ -19,6 +19,8 @@ var setExtensionState = ExtensionManager$Meta3d.setExtensionState; var getExtensionState = ExtensionManager$Meta3d.getExtensionStateExn; +var getPackageService = ExtensionManager$Meta3d.getPackageService; + var registerContribute = ExtensionManager$Meta3d.registerContribute; var getContribute = ExtensionManager$Meta3d.getContributeExn; @@ -90,6 +92,7 @@ export { getExtensionService , setExtensionState , getExtensionState , + getPackageService , registerContribute , getContribute , startExtension , diff --git a/defaults/meta3d/lib/es6_global/src/app_and_package/PackageManager.bs.js b/defaults/meta3d/lib/es6_global/src/app_and_package/PackageManager.bs.js index cb2cc96cb..ebe269f7f 100644 --- a/defaults/meta3d/lib/es6_global/src/app_and_package/PackageManager.bs.js +++ b/defaults/meta3d/lib/es6_global/src/app_and_package/PackageManager.bs.js @@ -4,8 +4,10 @@ import * as Caml_array from "../../../../../../node_modules/rescript/lib/es6/cam import * as Log$Meta3dCommonlib from "../../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/log/Log.bs.js"; import * as ManagerUtils$Meta3d from "./ManagerUtils.bs.js"; import * as ArraySt$Meta3dCommonlib from "../../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/ArraySt.bs.js"; +import * as OptionSt$Meta3dCommonlib from "../../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/OptionSt.bs.js"; import * as BinaryFileOperator$Meta3d from "../file/BinaryFileOperator.bs.js"; import * as Exception$Meta3dCommonlib from "../../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/Exception.bs.js"; +import * as ImmutableHashMap$Meta3dCommonlib from "../../../../../../node_modules/meta3d-commonlib/lib/es6_global/src/structure/hash_map/ImmutableHashMap.bs.js"; function convertAllFileData(allExtensionFileData, allContributeFileData, entryExtensionNames) { return [ @@ -79,11 +81,16 @@ function getAllExtensionAndContributeFileDataOfPackage(packageBinaryFile) { return ManagerUtils$Meta3d.parse2(BinaryFileOperator$Meta3d.load(packageBinaryFile)); } +function getPackageService(state, protocolName) { + return OptionSt$Meta3dCommonlib.toNullable(ImmutableHashMap$Meta3dCommonlib.get(state.extensionServiceMap, protocolName)); +} + export { convertAllFileData , generate , _getEntryExtensionProtocolName , load , getAllExtensionAndContributeFileDataOfPackage , + getPackageService , } /* ManagerUtils-Meta3d Not a pure module */ diff --git a/defaults/meta3d/lib/js/src/ExtensionManager.bs.js b/defaults/meta3d/lib/js/src/ExtensionManager.bs.js index 4495aae8b..f2cf67bfa 100644 --- a/defaults/meta3d/lib/js/src/ExtensionManager.bs.js +++ b/defaults/meta3d/lib/js/src/ExtensionManager.bs.js @@ -6,6 +6,7 @@ var Js_string = require("rescript/lib/js/js_string.js"); var Log$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/log/Log.bs.js"); var Tuple2$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/tuple/Tuple2.bs.js"); var ArraySt$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/ArraySt.bs.js"); +var OptionSt$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/OptionSt.bs.js"); var Exception$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/Exception.bs.js"); var NullableSt$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/NullableSt.bs.js"); var ImmutableHashMap$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/hash_map/ImmutableHashMap.bs.js"); @@ -92,6 +93,10 @@ function initExtension(state, extensionProtocolName, data) { return _invokeAsyncLifeOtherHander(state, extensionProtocolName, data, ImmutableHashMap$Meta3dCommonlib.getExn(state.extensionLifeMap, extensionProtocolName).onInit); } +function getPackageService(state, protocolName) { + return OptionSt$Meta3dCommonlib.toNullable(ImmutableHashMap$Meta3dCommonlib.get(state.extensionServiceMap, protocolName)); +} + function _decideContributeType(contribute) { if (!(contribute.actionName == null) && !(contribute.handler == null)) { return /* Action */3; @@ -186,6 +191,7 @@ function buildAPI(param) { return ImmutableHashMap$Meta3dCommonlib.getExn(state.extensionStateMap, protocolName); }), setExtensionState: setExtensionState, + getPackageService: getPackageService, registerContribute: registerContribute, getContribute: getContributeExn, getAllContributesByType: getAllContributesByType, @@ -210,6 +216,7 @@ exports._invokeAsyncLifeOtherHander = _invokeAsyncLifeOtherHander; exports.startExtension = startExtension; exports.updateExtension = updateExtension; exports.initExtension = initExtension; +exports.getPackageService = getPackageService; exports._decideContributeType = _decideContributeType; exports._checkIsRegister = _checkIsRegister; exports.restore = restore; diff --git a/defaults/meta3d/lib/js/src/Main.bs.js b/defaults/meta3d/lib/js/src/Main.bs.js index 432266ad5..c657a65b4 100644 --- a/defaults/meta3d/lib/js/src/Main.bs.js +++ b/defaults/meta3d/lib/js/src/Main.bs.js @@ -19,6 +19,8 @@ var setExtensionState = ExtensionManager$Meta3d.setExtensionState; var getExtensionState = ExtensionManager$Meta3d.getExtensionStateExn; +var getPackageService = ExtensionManager$Meta3d.getPackageService; + var registerContribute = ExtensionManager$Meta3d.registerContribute; var getContribute = ExtensionManager$Meta3d.getContributeExn; @@ -89,6 +91,7 @@ exports.updateExtension = updateExtension; exports.getExtensionService = getExtensionService; exports.setExtensionState = setExtensionState; exports.getExtensionState = getExtensionState; +exports.getPackageService = getPackageService; exports.registerContribute = registerContribute; exports.getContribute = getContribute; exports.startExtension = startExtension; diff --git a/defaults/meta3d/lib/js/src/app_and_package/PackageManager.bs.js b/defaults/meta3d/lib/js/src/app_and_package/PackageManager.bs.js index 396051f84..1225b5646 100644 --- a/defaults/meta3d/lib/js/src/app_and_package/PackageManager.bs.js +++ b/defaults/meta3d/lib/js/src/app_and_package/PackageManager.bs.js @@ -4,8 +4,10 @@ var Caml_array = require("rescript/lib/js/caml_array.js"); var Log$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/log/Log.bs.js"); var ManagerUtils$Meta3d = require("./ManagerUtils.bs.js"); var ArraySt$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/ArraySt.bs.js"); +var OptionSt$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/OptionSt.bs.js"); var BinaryFileOperator$Meta3d = require("../file/BinaryFileOperator.bs.js"); var Exception$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/Exception.bs.js"); +var ImmutableHashMap$Meta3dCommonlib = require("meta3d-commonlib/lib/js/src/structure/hash_map/ImmutableHashMap.bs.js"); function convertAllFileData(allExtensionFileData, allContributeFileData, entryExtensionNames) { return [ @@ -79,9 +81,14 @@ function getAllExtensionAndContributeFileDataOfPackage(packageBinaryFile) { return ManagerUtils$Meta3d.parse2(BinaryFileOperator$Meta3d.load(packageBinaryFile)); } +function getPackageService(state, protocolName) { + return OptionSt$Meta3dCommonlib.toNullable(ImmutableHashMap$Meta3dCommonlib.get(state.extensionServiceMap, protocolName)); +} + exports.convertAllFileData = convertAllFileData; exports.generate = generate; exports._getEntryExtensionProtocolName = _getEntryExtensionProtocolName; exports.load = load; exports.getAllExtensionAndContributeFileDataOfPackage = getAllExtensionAndContributeFileDataOfPackage; +exports.getPackageService = getPackageService; /* ManagerUtils-Meta3d Not a pure module */ diff --git a/defaults/meta3d/src/ExtensionManager.res b/defaults/meta3d/src/ExtensionManager.res index c217b0973..3f4c27416 100755 --- a/defaults/meta3d/src/ExtensionManager.res +++ b/defaults/meta3d/src/ExtensionManager.res @@ -124,6 +124,12 @@ let initExtension = (state, extensionProtocolName, data) => { ) } +let getPackageService = (state, protocolName: packageProtocolName) => { + state.extensionServiceMap + ->Meta3dCommonlib.ImmutableHashMap.get(protocolName) + ->Meta3dCommonlib.OptionSt.toNullable +} + let _decideContributeType = (contribute: contribute) => { open Meta3dType.ContributeType @@ -180,10 +186,7 @@ let restore = (currentState, targetState) => { (. targetState, (extensionProtocolName, {onRestore})) => { onRestore ->Meta3dCommonlib.NullableSt.map((. handler) => { - handler( - currentState, - targetState - ) + handler(currentState, targetState) }) ->Meta3dCommonlib.NullableSt.getWithDefault(targetState) }, @@ -197,7 +200,7 @@ let deepCopy = state => { ->Meta3dCommonlib.ArraySt.reduceOneParam((. state, (extensionProtocolName, {onDeepCopy})) => { onDeepCopy ->Meta3dCommonlib.NullableSt.map((. handler) => { - handler(state) + handler(state) }) ->Meta3dCommonlib.NullableSt.getWithDefault(state) }, state) @@ -291,6 +294,8 @@ and buildAPI = (): api => { (. state, protocolName, extensionState) => setExtensionState(state, protocolName, extensionState) )->Obj.magic, + getPackageService: (. state, protocolName: packageProtocolName) => + getPackageService(state, (protocolName: packageProtocolName))->Obj.magic, registerContribute: ( (. state, contributeProtocolName, getContribute) => registerContribute(state, contributeProtocolName, getContribute) diff --git a/defaults/meta3d/src/Main.d.ts b/defaults/meta3d/src/Main.d.ts index f174e6b39..023be31c9 100755 --- a/defaults/meta3d/src/Main.d.ts +++ b/defaults/meta3d/src/Main.d.ts @@ -44,6 +44,11 @@ export function getExtensionState( extensionProtocolName: extensionProtocolName, ): extensionState +export function getPackageService( + state: state, + packageProtocolName: packageProtocolName +): nullable + export function registerContribute(state: state, contributeProtocolName: contributeProtocolName, getContributeFunc: getContribute ): state diff --git a/defaults/meta3d/src/Main.res b/defaults/meta3d/src/Main.res index 550a54320..4b2817930 100755 --- a/defaults/meta3d/src/Main.res +++ b/defaults/meta3d/src/Main.res @@ -10,6 +10,8 @@ let setExtensionState = ExtensionManager.setExtensionState let getExtensionState = ExtensionManager.getExtensionStateExn +let getPackageService = ExtensionManager.getPackageService + let registerContribute = ExtensionManager.registerContribute let getContribute = ExtensionManager.getContributeExn diff --git a/defaults/meta3d/src/app_and_package/PackageManager.res b/defaults/meta3d/src/app_and_package/PackageManager.res index e33664ff4..90f93e7ab 100755 --- a/defaults/meta3d/src/app_and_package/PackageManager.res +++ b/defaults/meta3d/src/app_and_package/PackageManager.res @@ -168,3 +168,12 @@ let getAllExtensionAndContributeFileDataOfPackage = (packageBinaryFile: ArrayBuf ) => { packageBinaryFile->BinaryFileOperator.load->ManagerUtils.parse2 } + +let getPackageService = ( + state: Meta3dType.Index.state, + protocolName: Meta3dType.Index.packageProtocolName, +) => { + state.extensionServiceMap + ->Meta3dCommonlib.ImmutableHashMap.get(protocolName) + ->Meta3dCommonlib.OptionSt.toNullable +} diff --git a/doc/0.21.0.org b/doc/0.21.0.org index 46653c4a6..313f96327 100644 --- a/doc/0.21.0.org +++ b/doc/0.21.0.org @@ -136,7 +136,8 @@ package's protocol is package role(whole for editor/whole for publish) -** TODO demo1: ui control: Scene Tree(header+Tree) +# ** TODO demo1: ui control: Scene Tree(header+Tree) +** TODO demo1: ui control: Controller @@ -163,7 +164,7 @@ TODO each package should get each data through package service: shouldn't directly get each data through pipeline! but can get self data through pipeline! -TODO api: add getPackageService +TODO new api: getPackageService(protocol)=>nullable # two kind render package implement: # SceneViewThreeRender @@ -222,15 +223,23 @@ TODO packages + actions(contributes) + uiControls(contributes) + uiControlInputs + +# **** TODO run test: visual, visual run, run app with only editor-whole pacakge +**** DONE run test: visual with only editor-whole pacakge + + + + **** TODO run test: Scene View -**** TODO run test: SceneTree+Scene View+ *Game View +# **** TODO run test: SceneTree+Scene View+ *Game View +**** TODO run test: Controller+Scene View+ *Game View -**** TODO run test: publish(Menu) +**** TODO run test: publish(Button) # **** TODO ap assemble: diff --git a/lerna.json b/lerna.json index c3d353595..8919049b3 100755 --- a/lerna.json +++ b/lerna.json @@ -12,6 +12,10 @@ "packages/editor-whole/sceneview-render/protocols/contribute_protocols/*", "packages/editor-whole/sceneview-render/extensions/*", "packages/editor-whole/sceneview-render/contributes/*", + "packages/editor-whole/ui/protocols/extension_protocols/*", + "packages/editor-whole/ui/protocols/contribute_protocols/*", + "packages/editor-whole/ui/extensions/*", + "packages/editor-whole/ui/contributes/*", "packages/engine-scene/protocols/extension_protocols/*", "packages/engine-scene/protocols/contribute_protocols/*", "packages/engine-scene/extensions/*", diff --git a/package.json b/package.json index 236bf84b4..56409f23b 100755 --- a/package.json +++ b/package.json @@ -51,6 +51,10 @@ "packages/editor-whole/sceneview-render/protocols/contribute_protocols/*", "packages/editor-whole/sceneview-render/extensions/*", "packages/editor-whole/sceneview-render/contributes/*", + "packages/editor-whole/ui/protocols/extension_protocols/*", + "packages/editor-whole/ui/protocols/contribute_protocols/*", + "packages/editor-whole/ui/extensions/*", + "packages/editor-whole/ui/contributes/*", "packages/engine-scene/protocols/extension_protocols/*", "packages/engine-scene/protocols/contribute_protocols/*", "packages/engine-scene/extensions/*", diff --git a/utils/meta3d-ui-control-view-utils/.gitignore b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/.gitignore similarity index 100% rename from utils/meta3d-ui-control-view-utils/.gitignore rename to packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/.gitignore diff --git a/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/gulpfile.js b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/gulpfile.js new file mode 100755 index 000000000..332c4cb8a --- /dev/null +++ b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/gulpfile.js @@ -0,0 +1,25 @@ +var gulp = require("gulp"); +var path = require("path"); +var publish = require("meta3d-tool-publish") + +gulp.task("publish_local_env", function (done) { + publish.publishExtension( + "local", + path.join(__dirname, "package.json"), + path.join(__dirname, "dist/static/js", "main.js") + ).then(() => { + done() + }) +}); + +gulp.task("publish_production_env", function (done) { + publish.publishExtension( + "production", + path.join(__dirname, "package.json"), + path.join(__dirname, "dist/static/js", "main.js") + ).then(() => { + done() + }) +}); + + diff --git a/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/package.json b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/package.json new file mode 100755 index 000000000..7482fb3fb --- /dev/null +++ b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/package.json @@ -0,0 +1,30 @@ +{ + "name": "meta3d-editor-webgl1-three-engine-whole", + "version": "0.20.0", + "publisher": "0xf63e1991A343814EdE505D7cfC368615EAe75307", + "protocol": { + "name": "meta3d-editor-whole-protocol" + }, + "scripts": { + "watch": "tsc -w -noEmit", + "webpack": "webpack --config webpack.config.js", + "meta3d:publish_dev": "cross-env NODE_ENV=development npm run webpack && gulp publish_local_env", + "meta3d:publish_pro": "cross-env NODE_ENV=production npm run webpack && gulp publish_production_env" + }, + "dependencies": { + "meta3d-editor-whole-protocol": "^0.20.0", + "meta3d-type": "^0.20.0" + }, + "devDependencies": { + "clean-webpack-plugin": "^4.0.0", + "cross-env": "^7.0.3", + "cz-customizable": "^6.3.0", + "gulp": "^4.0.2", + "meta3d-tool-publish": "^0.20.0", + "source-map-loader": "^3.0.0", + "ts-loader": "^9.2.6", + "typescript": "^4.2.3", + "webpack": "^5.62.1", + "webpack-cli": "^4.9.1" + } +} diff --git a/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/src/Main.ts b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/src/Main.ts new file mode 100755 index 000000000..caf3acc97 --- /dev/null +++ b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/src/Main.ts @@ -0,0 +1,85 @@ +import { getExtensionService as getExtensionServiceMeta3D, createExtensionState as createExtensionStateMeta3D, getExtensionLife as getLifeMeta3D, state as meta3dState, api } from "meta3d-type" +import { state } from "meta3d-editor-whole-protocol/src/state/StateType" +import { service } from "meta3d-editor-whole-protocol/src/service/ServiceType" + +export let getExtensionService: getExtensionServiceMeta3D< + service +> = (api) => { + return { + scene: {}, + ui: { + registerElement: (meta3dState, elementContribute) => { + console.log("registerElement") + + return meta3dState + } + }, + event: {}, + prepare: (meta3dState: meta3dState, isDebug, ecsConfig, gl, canvas) => { + console.log("prepare") + + return meta3dState + }, + init: (meta3dState, initData) => { + console.log("init: ", initData) + + return Promise.resolve(meta3dState) + }, + update: (meta3dState, updateData) => { + console.log("update") + + return Promise.resolve(meta3dState) + }, + render: (meta3dState) => { + console.log("render") + + return Promise.resolve(meta3dState) + }, + loadScene: (meta3dState, sceneGLB) => { + throw new Error("not implement") + }, + addToInitFuncs: (meta3dState, func) => { + throw new Error("not implement") + }, + addToUpdateFuncs: (meta3dState, func) => { + throw new Error("not implement") + }, + addToRenderFuncs: (meta3dState, func) => { + throw new Error("not implement") + }, + getPluggablePackageService: (meta3dState, packageProtocolName) => { + // TODO check packageProtocolName shouldn't be ui, engine-scene, core, ... + throw new Error("not implement") + }, + run: (meta3dState: meta3dState, configData) => { + console.log("run") + }, + } +} + +export let createExtensionState: createExtensionStateMeta3D< + state +> = () => { + return { + canvas: null + } +} + +export let getExtensionLife: getLifeMeta3D = (api, extensionProtocolName) => { + return { + onRegister: (meta3dState, service) => { + return meta3dState + }, + onStart: (meta3dState, service, configData) => { + service.run(meta3dState, configData) + }, + onInit: (meta3dState, service, data) => { + return new Promise((resolve) => { + resolve(service.init(meta3dState, data)) + }) + }, + onUpdate: (meta3dState, service, data) => { + return service.update(meta3dState, data) + } + } +} diff --git a/utils/meta3d-ui-control-view-utils/tsconfig.json b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/tsconfig.json similarity index 95% rename from utils/meta3d-ui-control-view-utils/tsconfig.json rename to packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/tsconfig.json index 35222fb79..e48efd849 100755 --- a/utils/meta3d-ui-control-view-utils/tsconfig.json +++ b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/tsconfig.json @@ -16,7 +16,7 @@ "ESNext", ], "types": [], - "strict": true + // "strict": true }, "include": [ "./src" diff --git a/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/webpack.config.js b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/webpack.config.js new file mode 100755 index 000000000..2d861b4c6 --- /dev/null +++ b/packages/editor-whole/extensions/meta3d-editor-webgl1-three-engine-whole/webpack.config.js @@ -0,0 +1,64 @@ +const path = require('path'); +const { CleanWebpackPlugin } = require('clean-webpack-plugin'); + +module.exports = { + entry: "./src/Main.ts", + mode: process.env.NODE_ENV.trim() == 'production' ? 'production' : 'development', + output: { + path: path.resolve(__dirname, 'dist'), + filename: 'static/js/[name].js', + library: { + name: 'Extension', + type: 'window', + }, + }, + + // Enable sourcemaps for debugging webpack's output. + // devtool: "source-map", + + resolve: { + extensions: ['.ts', '.tsx', '.Extensionjs', '.jsx', '.scss'], + modules: ['node_modules'] + }, + + module: { + rules: [ + // All files with a '.ts' or '.tsx' extension will be handled by 'awesome-typescript-loader'. + { + test: /\.tsx?$/, + exclude: /node_modules/, + use: "ts-loader" + }, + // All output '.js' files will have any sourcemaps re-processed by 'source-map-loader'. + { + enforce: 'pre', + test: /\.js$/, + loader: "source-map-loader" + }, + ] + }, + plugins: [ + /** + * All files inside webpack's output.path directory will be removed once, but the + * directory itself will not be. If using webpack 4+'s default configuration, + * everything under /dist/ will be removed. + * Use cleanOnceBeforeBuildPatterns to override this behavior. + * + * During rebuilds, all webpack assets that are not used anymore + * will be removed automatically. + * + * See `Options and Defaults` for information + */ + new CleanWebpackPlugin(), + // new HtmlWebpackPlugin({ + // template: './user.html', + // filename: 'user.html', + // }), + ], + // When importing a module whose path matches one of the following, just + // assume a corresponding global variable exists and use that instead. + // This is important because it allows us to avoid bundling all of our + // dependencies, which allows browsers to cache those libraries between builds. + externals: { + } +}; \ No newline at end of file diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/bsconfig.json b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/bsconfig.json new file mode 100755 index 000000000..619e58d1e --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/bsconfig.json @@ -0,0 +1,41 @@ +{ + "name": "meta3d-editor-whole-protocol", + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "bsc-flags": [ + "-bs-no-version-header", + "-bs-super-errors" + ], + "bs-dev-dependencies": [], + "bs-dependencies": [ + "meta3d-type", + "meta3d-commonlib-type", + "meta3d-ui-protocol" + ], + "package-specs": [ + "commonjs", + "es6-global" + ], + "gentypeconfig": { + "language": "typescript", + "shims": { + "Js": "Js" + }, + "module": "es6", + "importPath": "relative", + "debug": { + "all": false + }, + "exportInterfaces": false + }, + "suffix": ".bs.js", + "namespace": true, + "warnings": { + "number": "-0-1-2-3-4-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-K", + "error": "+5+6" + } +} \ No newline at end of file diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.bsbuild b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.bsbuild new file mode 100644 index 000000000..cb65d045a --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.bsbuild @@ -0,0 +1,5 @@ +1 +ServiceType +src/service +1 +0 diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.bsdeps b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.bsdeps new file mode 100644 index 000000000..468d4725e --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.bsdeps @@ -0,0 +1,9 @@ +10.1.4 +/Users/yang/Github/Meta3D/node_modules/meta3d-editor-whole-protocol +1 -bs-package-output commonjs:lib/js:.bs.js -bs-package-output es6-global:lib/es6_global:.bs.js +bsconfig.json 0x1.9530ccdp+30 +src 0x1.952c04f4p+30 +src/service 0x1.9530c61p+30 +src/state 0x1.952c04f4p+30 +=== +/Users/yang/Github/Meta3D/node_modules/rescript/darwin/rescript.exe 0x1.92f29018p+30 diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.compiler.log b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.compiler.log new file mode 100644 index 000000000..09fccf19b --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.compiler.log @@ -0,0 +1,2 @@ +#Start(1699493948557) +#Done(1699493948625) diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.ninja_log b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.ninja_log new file mode 100644 index 000000000..cd5bb1be3 --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/.ninja_log @@ -0,0 +1,8 @@ +# ninja log v6 +1 22 1699493948577699868 src/service/ServiceType.ast 785165cefc5839bb +2 26 1699493948580391932 Meta3dEditorWholeProtocol.cmi 27dde7c45547adb8 +22 36 1699493948593063736 src/service/ServiceType.d 702d225c4edca7ca +36 68 1699493948624131111 src/service/ServiceType-Meta3dEditorWholeProtocol.cmj 5cc5f04adbcd4c97 +36 68 1699493948624131111 src/service/ServiceType-Meta3dEditorWholeProtocol.cmi 5cc5f04adbcd4c97 +36 68 1699493948624131111 ../es6_global/src/service/ServiceType.bs.js 5cc5f04adbcd4c97 +36 68 1699493948624131111 ../js/src/service/ServiceType.bs.js 5cc5f04adbcd4c97 diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmi b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmi new file mode 100644 index 000000000..94cb2b84e Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmi differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmj b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmj new file mode 100644 index 000000000..6977e97a3 Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmj differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmt b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmt new file mode 100644 index 000000000..bd92ce2de Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.cmt differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.mlmap b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.mlmap new file mode 100644 index 000000000..81855c247 --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/Meta3dEditorWholeProtocol.mlmap @@ -0,0 +1,2 @@ +C¬¢bËbʲ+l.pk +ServiceType diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/build.ninja b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/build.ninja new file mode 100644 index 000000000..314165d16 --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/build.ninja @@ -0,0 +1,20 @@ +rescript = 1 +g_finger := /Users/yang/Github/Meta3D/node_modules/meta3d-type/lib/ocaml/install.stamp +g_finger := /Users/yang/Github/Meta3D/node_modules/meta3d-commonlib-type/lib/ocaml/install.stamp +g_finger := /Users/yang/Github/Meta3D/node_modules/meta3d-ui-protocol/lib/ocaml/install.stamp +rule astj + command = /Users/yang/Github/Meta3D/node_modules/rescript/darwin/bsc.exe -w a -bs-v 10.1.4 -bs-no-version-header -bs-super-errors -absname -bs-ast -o $out $i +o src/service/ServiceType.ast : astj ../../src/service/ServiceType.res +rule deps + command = /Users/yang/Github/Meta3D/node_modules/rescript/darwin/bsb_helper.exe -hash 488b31d19a59b9bfde0bdcf1bc5cc8ef -bs-ns Meta3dEditorWholeProtocol $in + restat = 1 +o src/service/ServiceType.d : deps src/service/ServiceType.ast +rule mij + command = /Users/yang/Github/Meta3D/node_modules/rescript/darwin/bsc.exe -bs-ns Meta3dEditorWholeProtocol -I . -I src/state -I src/service -I src -I /Users/yang/Github/Meta3D/node_modules/meta3d-type/lib/ocaml -I /Users/yang/Github/Meta3D/node_modules/meta3d-commonlib-type/lib/ocaml -I /Users/yang/Github/Meta3D/node_modules/meta3d-ui-protocol/lib/ocaml -bs-no-version-header -bs-super-errors -w a -bs-gentype -bs-package-name meta3d-editor-whole-protocol -bs-package-output commonjs:lib/js/$in_d:.bs.js -bs-package-output es6-global:lib/es6_global/$in_d:.bs.js -bs-v $g_finger $i + dyndep = 1 + restat = 1 +o src/service/ServiceType-Meta3dEditorWholeProtocol.cmj src/service/ServiceType-Meta3dEditorWholeProtocol.cmi ../es6_global/src/service/ServiceType.bs.js ../js/src/service/ServiceType.bs.js : mij src/service/ServiceType.ast +rule build_package + command = /Users/yang/Github/Meta3D/node_modules/rescript/darwin/bsc.exe -w -49 -color always -no-alias-deps $i + restat = 1 +o Meta3dEditorWholeProtocol.cmi : build_package Meta3dEditorWholeProtocol.mlmap diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/install.ninja b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/install.ninja new file mode 100644 index 000000000..3a26a7077 --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/install.ninja @@ -0,0 +1,13 @@ +rescript = 1 +rule cp + command = cp $i $out +rule touch + command = touch $out +o ServiceType-Meta3dEditorWholeProtocol.cmi : cp ../bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmi +o ServiceType-Meta3dEditorWholeProtocol.cmj : cp ../bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmj +o ServiceType-Meta3dEditorWholeProtocol.cmt : cp ../bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmt +o ServiceType.res : cp ../../src/service/ServiceType.res +o Meta3dEditorWholeProtocol.cmi : cp ../bs/Meta3dEditorWholeProtocol.cmi +o Meta3dEditorWholeProtocol.cmj : cp ../bs/Meta3dEditorWholeProtocol.cmj +o Meta3dEditorWholeProtocol.cmt : cp ../bs/Meta3dEditorWholeProtocol.cmt +build install.stamp : touch ServiceType-Meta3dEditorWholeProtocol.cmi ServiceType-Meta3dEditorWholeProtocol.cmj Meta3dEditorWholeProtocol.cmi Meta3dEditorWholeProtocol.cmj diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmi b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmi new file mode 100644 index 000000000..ccbf41aaf Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmi differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmj b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmj new file mode 100644 index 000000000..ed6f5349a Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmj differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmt b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmt new file mode 100644 index 000000000..ce538c132 Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType-Meta3dEditorWholeProtocol.cmt differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType.ast b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType.ast new file mode 100644 index 000000000..f5a1b522b Binary files /dev/null and b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType.ast differ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType.d b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType.d new file mode 100644 index 000000000..2a8f0bffc --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/bs/src/service/ServiceType.d @@ -0,0 +1 @@ +src/service/ServiceType-Meta3dEditorWholeProtocol.cmj : Meta3dEditorWholeProtocol.cmi diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/es6_global/src/service/ServiceType.bs.js b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/es6_global/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/es6_global/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/js/src/service/ServiceType.bs.js b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/js/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/lib/js/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.res b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.res new file mode 100644 index 000000000..1faed4254 --- /dev/null +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.res @@ -0,0 +1,8 @@ +type ui = { + registerElement: 'elementState. ( + Meta3dType.Index.state, + Meta3dUiProtocol.ElementContributeType.elementContribute<'elementState>, + ) => Meta3dType.Index.state, +} + +type service = {ui: ui} diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.ts b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.ts index 51d748fee..a36663441 100755 --- a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.ts +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/service/ServiceType.ts @@ -1,26 +1,46 @@ -import { state as meta3dState, packageProtocolName } from "meta3d-type" -import { ecsConfig, scene } from "meta3d-engine-scene-protocol/src/service/ServiceType" +import { state as meta3dState, packageProtocolName, canvasData } from "meta3d-type" +// import { ecsConfig, scene } from "meta3d-engine-scene-protocol/src/service/ServiceType" import { webgl1Context } from "meta3d-webgl1-protocol/src/service/ServiceType" import { nullable } from "meta3d-commonlib-ts/src/nullable"; type addToFuncs = (meta3dState: meta3dState, func: (meta3dState: meta3dState) => Promise) => Promise -type ui = any +type ui = { + registerElement: any +} type event = any +type ecsConfig = any + +export type configData = [canvasData, { isDebug: boolean, clearColor: [number, number, number, number], skinName: nullable }] + + +export type initTarget = "visual" | "visualRun" + +type initData = { + target: initTarget, + isDebug: boolean, + canvas: HTMLCanvasElement +} + +export type updateData = { clearColor: [number, number, number, number], time: number, skinName: nullable } + export type service = { - scene: scene, + // scene: scene, + scene: any, ui: ui, - event:event, - init: (meta3dState: meta3dState) => Promise, - update: (meta3dState: meta3dState) => Promise, + event: event, + // initForVisual: (meta3dState: meta3dState, initData: initData) => Promise, + // initForVisualRun: (meta3dState: meta3dState, initData: initData) => Promise, + init: (meta3dState: meta3dState, initData: initData) => Promise, + update: (meta3dState: meta3dState, updateData: updateData) => Promise, render: (meta3dState: meta3dState) => Promise, prepare: (meta3dState: meta3dState, isDebug: boolean, ecsConfig: ecsConfig, gl: nullable, canvas: HTMLCanvasElement) => meta3dState, loadScene: (meta3dState: meta3dState, sceneGLB: ArrayBuffer) => Promise, addToInitFuncs: addToFuncs, addToUpdateFuncs: addToFuncs, addToRenderFuncs: addToFuncs, - // TODO check packageProtocolName shouldn't be ui, engine-scene, core, ... getPluggablePackageService: (meta3dState: meta3dState, packageProtocolName: packageProtocolName) => nullable, + run: (meta3dState: meta3dState, [canvasData, configData]: configData) => void, } \ No newline at end of file diff --git a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/state/StateType.ts b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/state/StateType.ts index fbf42fc00..bde02dac1 100755 --- a/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/state/StateType.ts +++ b/packages/editor-whole/protocols/extension_protocols/meta3d-editor-whole-protocol/src/state/StateType.ts @@ -1,7 +1,5 @@ import { nullable } from "meta3d-commonlib-ts/src/nullable" -import { gameObject } from "meta3d-gameobject-protocol/src/Index" export type state = { canvas: nullable, - arcballCameraControllerGameObject: nullable } \ No newline at end of file diff --git a/packages/editor-whole/sceneview-render/protocols/extension_protocols/meta3d-editor-sceneview-render-protocol/src/state/StateType.ts b/packages/editor-whole/sceneview-render/protocols/extension_protocols/meta3d-editor-sceneview-render-protocol/src/state/StateType.ts index b639f2171..5239967f5 100755 --- a/packages/editor-whole/sceneview-render/protocols/extension_protocols/meta3d-editor-sceneview-render-protocol/src/state/StateType.ts +++ b/packages/editor-whole/sceneview-render/protocols/extension_protocols/meta3d-editor-sceneview-render-protocol/src/state/StateType.ts @@ -1,4 +1,5 @@ import { nullable } from "meta3d-commonlib-ts/src/nullable" +import { gameObject } from "meta3d-gameobject-protocol/src/Index" export type viewRect = { x: number, @@ -9,5 +10,6 @@ export type viewRect = { export type state = { // canvas:nullable - viewRect: nullable + viewRect: nullable, + arcballCameraControllerGameObject: nullable } \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/.gitignore b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/.gitignore new file mode 100755 index 000000000..a70c87221 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/.gitignore @@ -0,0 +1,26 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +lib/bs/ + +lib/ocaml/ + +lib/es6_global/test/ +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/.npmignore b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/.npmignore new file mode 100755 index 000000000..30b317c44 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/.npmignore @@ -0,0 +1,29 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +test/ + +.github/ + +donate/ + +lib/bs/ + +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/bsconfig.json b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/bsconfig.json new file mode 100755 index 000000000..4cf8f8dd7 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/bsconfig.json @@ -0,0 +1,41 @@ +{ + "name": "meta3d-imgui-renderer-protocol", + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "bsc-flags": [ + "-bs-no-version-header", + "-bs-super-errors" + ], + "bs-dev-dependencies": [], + "bs-dependencies": [ + "meta3d-type", + "meta3d-commonlib-type", + "meta3d-webgl1-protocol" + ], + "package-specs": [ + "commonjs", + "es6-global" + ], + "gentypeconfig": { + "language": "typescript", + "shims": { + "Js": "Js" + }, + "module": "es6", + "importPath": "relative", + "debug": { + "all": false + }, + "exportInterfaces": false + }, + "suffix": ".bs.js", + "namespace": true, + "warnings": { + "number": "-0-1-2-3-4-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-K", + "error": "+5+6" + } +} \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/gulpfile.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/gulpfile.js new file mode 100755 index 000000000..dcc512e79 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/gulpfile.js @@ -0,0 +1,25 @@ +var gulp = require("gulp"); +var path = require("path"); +var publish = require("meta3d-tool-publish-protocol") + +gulp.task("publish_local_env", function (done) { + publish.publishExtensionProtocol( + "local", + path.join(__dirname, "package.json"), + path.join(__dirname, "icon.png") + ).then(() => { + done() + }) +}); + +gulp.task("publish_production_env", function (done) { + publish.publishExtensionProtocol( + "production", + path.join(__dirname, "package.json"), + path.join(__dirname, "icon.png") + ).then(() => { + done() + }) +}); + + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/icon.png b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/icon.png new file mode 100755 index 000000000..89145783a Binary files /dev/null and b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/icon.png differ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/es6_global/src/service/ServiceType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/es6_global/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/es6_global/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/es6_global/src/state/StateType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/es6_global/src/state/StateType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/es6_global/src/state/StateType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/js/src/service/ServiceType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/js/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/js/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/js/src/state/StateType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/js/src/state/StateType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/lib/js/src/state/StateType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/package.json b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/package.json new file mode 100755 index 000000000..983795071 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/package.json @@ -0,0 +1,18 @@ +{ + "name": "meta3d-imgui-renderer-protocol", + "version": "0.20.0", + "publisher": "0xf63e1991A343814EdE505D7cfC368615EAe75307", + "displayName": "renderer protocol", + "author": "Wonder", + "license": "MIT", + "scripts": { + "watch": "rescript clean && rescript build -w", + "buildAll:ci": "rescript clean && rescript build", + "meta3d:publish_dev": "yarn buildAll:ci && gulp publish_local_env", + "meta3d:publish_pro": "yarn buildAll:ci && gulp publish_production_env" + }, + "keywords": [], + "devDependencies": { + "rescript": "^10.0.1" + } +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/service/ServiceType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/service/ServiceType.res new file mode 100755 index 000000000..5c759167b --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/service/ServiceType.res @@ -0,0 +1,143 @@ +type rect = { + x: float, + y: float, + width: float, + height: float, +} + +type time = float + +type color = (float, float, float) + +type clearColor = (float, float, float, float) + +type label = string + +type size = (int, int) + +type pos = (int, int) + +type style = string + +type texture = Meta3dWebgl1Protocol.ServiceType.texture + +type context = Meta3dWebgl1Protocol.ServiceType.webgl1Context + +type imageSrc = string + +type imguiImplTexture + +type menuLabel = string + +type menuAllLabels = array<(menuLabel, array)> + +type selectItemMap = Meta3dCommonlibType.ImmutableHashMapType.t + +type sceneTreeNodeLabel = string + +/* ! TODO like this +// type rec sceneTreeData = array<(sceneTreeNodeLabel, imguiImplTexture, sceneTreeData)> + +type sceneTreeData = + | ScriptEventFunctionNode(nodeId, scriptEventFunctionNodeData) + | ScriptAttributeNode(nodeId, scriptAttributeNodeData) + | TextureNode(nodeId, textureNodeData) + | CubemapNode(nodeId, cubemapNodeData) + | MaterialNode(nodeId, materialNodeData) + | WDBNode(nodeId, wdbNodeData) + | AssetBundleNode(nodeId, assetBundleNodeData) + | IMGUIExecFuncDataNode(nodeId, imguiExecFuncDataNodeData) + | IMGUISkinNode(nodeId, imguiSkinNodeData) + | IMGUICustomControlNode(nodeId, imguiCustomControlNodeData) + | FntNode(nodeId, fntNodeData) + | FolderNode( + nodeId, + folderNodeData, + UIStateAssetType.uiState(array(sceneTreeData)), + ); + */ +type sceneTreeData + +type index = int + +type sceneTreeIndexData = array + +type sceneTreeDragData = { + source: sceneTreeIndexData, + target: sceneTreeIndexData, +} + +type sceneTreeReturnData = ( + bool, + bool, + bool, + Js.Nullable.t, + Js.Nullable.t, +) + +type inspectorReturnData = ( + Js.Nullable.t, + Js.Nullable.t<(float, float, float)>, + Js.Nullable.t<(float, float, float)>, + Js.Nullable.t<(float, float, float)>, +) + +// @genType +type service = { + init: (. StateType.state, bool, bool, Dom.htmlCanvasElement) => Js.Promise.t, + render: unit => unit, + setStyle: (. StateType.state, style) => StateType.state, + beforeExec: (. StateType.state, time) => StateType.state, + afterExec: unit => unit, + clear: (. clearColor) => unit, + beginWindow: (. label) => unit, + endWindow: unit => unit, + beginChild: (. label) => unit, + endChild: unit => unit, + setNextWindowRect: (. rect) => unit, + addFBOTexture: (. Js.Null.t, rect) => unit, + getWindowBarHeight: unit => float, + button: (. label, size) => bool, + setCursorPos: (. pos) => unit, + loadImage: (. imageSrc) => Js.Promise.t, + asset: ( + . { + "loadGlbTexture": imguiImplTexture, + "removeAssetTexture": imguiImplTexture, + "glbTexture": imguiImplTexture, + }, + array<(string, string)>, + label, + rect, + ) => (bool, bool, Js.Nullable.t), + handleDragDropTarget: 'data. (. string) => Js.Nullable.t<'data>, + menu: (. menuAllLabels, string, rect) => Js.Nullable.t, + sceneTree: ( + . sceneTreeData, + Js.Nullable.t, + { + "addCubeTexture": imguiImplTexture, + "disposeTexture": imguiImplTexture, + "cloneTexture": imguiImplTexture, + // "cameraIconTexture": imguiImplTexture, + // "meshIconTexture": imguiImplTexture, + // "lightIconTexture": imguiImplTexture, + }, + string, + rect, + ) => sceneTreeReturnData, + inspector: ( + . string, + (float, float, float), + (float, float, float), + (float, float, float), + string, + rect, + ) => inspectorReturnData, + runStopButton: ( + . bool, + {"runTexture": imguiImplTexture, "stopTexture": imguiImplTexture}, + size, + ) => (bool, bool), + getContext: unit => context, +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/service/ServiceType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/service/ServiceType.ts new file mode 100755 index 000000000..afc95b882 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/service/ServiceType.ts @@ -0,0 +1,158 @@ +import type { state as StateType_state } from '../../src/state/StateType'; +import type { texture as webgl1Texture } from 'meta3d-webgl1-protocol/src/service/ServiceType'; +import { nullable, strictNullable } from 'meta3d-commonlib-ts/src/nullable'; +import { name } from 'meta3d-gameobject-protocol'; +import { localPosition, localEulerAngles, localScale } from 'meta3d-component-transform-protocol'; + +// tslint:disable-next-line:interface-over-type-literal +export type rect = { + readonly x: number; + readonly y: number; + readonly width: number; + readonly height: number +}; + +// tslint:disable-next-line:interface-over-type-literal +export type time = number; + +// tslint:disable-next-line:interface-over-type-literal +export type clearColor = [number, number, number, number]; + +// tslint:disable-next-line:interface-over-type-literal +export type label = string; + +// tslint:disable-next-line:interface-over-type-literal +export type size = [number, number]; + +// tslint:disable-next-line:interface-over-type-literal +export type pos = [number, number]; + +export type style = string + +export type texture = webgl1Texture + +// export type context = webgl1Context +export type context = any + +export type imageSrc = string + +export type imguiImplTexture = any + +export type menuLabel = string + +export type menuAllLabels = Array<[menuLabel, Array]> + +type sceneTreeNodeLabel = string + +export type sceneTreeData = Array<[sceneTreeNodeLabel, imguiImplTexture, sceneTreeData]> + +// export type level = number + +type index = number + +// export type sceneTreeIndexData = [level, index] +export type sceneTreeIndexData = Array + +export type sceneTreeDragData = { + source: sceneTreeIndexData, + target: sceneTreeIndexData +} + +export type sceneTreeReturnData = [boolean, boolean, boolean, nullable, nullable] + +export type sceneTreeFunc = (sceneTreeData: sceneTreeData, + lastSceneTreeSelectedData: nullable, + textures: { + "addCubeTexture": imguiImplTexture, + "disposeTexture": imguiImplTexture, + "cloneTexture": imguiImplTexture + }, windowName: string, rect: rect) => sceneTreeReturnData + +export type assetFunc = ( + textures: { + "loadGlbTexture": imguiImplTexture, + "removeAssetTexture": imguiImplTexture, + "glbTexture": imguiImplTexture, + // "cameraIconTexture": imguiImplTexture, + // "meshIconTexture": imguiImplTexture, + // "lightIconTexture": imguiImplTexture, + }, + glbs: Array<[string, string]>, + label: label, + rect: rect, +) => [boolean, boolean, nullable] + + +export type getValueFunc = () => T + +export type setValueFunc = (value: T) => void + +export type inspectorFunc = ( + // [ + // getGameObjectNameFunc, setGameObjectNameFunc, + // getLocalPositionXFunc, setLocalPositionXFunc, + // getLocalPositionYFunc, setLocalPositionYFunc, + // getLocalPositionZFunc, setLocalPositionZFunc, + // getLocalEulerXFunc, setLocalEulerXFunc, + // getLocalEulerYFunc, setLocalEulerYFunc, + // getLocalEulerZFunc, setLocalEulerZFunc, + // getLocalScaleXFunc, setLocalScaleXFunc, + // getLocalScaleYFunc, setLocalScaleYFunc, + // getLocalScaleZFunc, setLocalScaleZFunc, + // ]: [getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // ], + + gameObjectName: name, + localPosition: localPosition, + localEulerAngles: localEulerAngles, + localScale: localScale, + windowName: string, + rect: rect, +) => [nullable, nullable, nullable, nullable] + +export type ref = { + content: T +} + +// tslint:disable-next-line:interface-over-type-literal +export type service = { + readonly init: (_1: StateType_state, _2: boolean, _3: boolean, _4: HTMLCanvasElement) => Promise; + readonly render: () => void; + readonly setStyle: (_1: StateType_state, _2: style) => StateType_state; + readonly beforeExec: (_1: StateType_state, _2: time) => StateType_state; + readonly afterExec: () => void; + readonly clear: (_1: clearColor) => void; + readonly beginWindow: (_1: label) => void; + readonly endWindow: () => void; + readonly beginChild: (_1: label) => void; + readonly endChild: () => void; + readonly setNextWindowRect: (_1: rect) => void; + readonly addFBOTexture: (_1: strictNullable, _2: rect) => void; + readonly getWindowBarHeight: () => number; + readonly button: (_1: label, _2: size) => boolean; + readonly setCursorPos: (_1: pos) => void + readonly loadImage: (_1: imageSrc) => Promise; + readonly asset: assetFunc; + readonly handleDragDropTarget: (type: string) => nullable; + readonly menu: (allLabels: menuAllLabels, windowName: string, rect: rect) => nullable; + readonly sceneTree: sceneTreeFunc; + readonly inspector: inspectorFunc; + readonly runStopButton: ( + isRunState: boolean, + textures: { + "runTexture": imguiImplTexture, + "stopTexture": imguiImplTexture, + }, + size: size + ) => [boolean, boolean]; + readonly getContext: () => context +}; diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/state/StateType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/state/StateType.res new file mode 100755 index 000000000..67e317838 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/state/StateType.res @@ -0,0 +1,4 @@ +type state = { + isDebug: bool, + style: string, +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/state/StateType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/state/StateType.ts new file mode 100755 index 000000000..da918468c --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-imgui-renderer-protocol/src/state/StateType.ts @@ -0,0 +1,4 @@ +export type state = { + isDebug: boolean, + style: string +} \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/.gitignore b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/.gitignore new file mode 100755 index 000000000..a70c87221 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/.gitignore @@ -0,0 +1,26 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +lib/bs/ + +lib/ocaml/ + +lib/es6_global/test/ +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/.npmignore b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/.npmignore new file mode 100755 index 000000000..30b317c44 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/.npmignore @@ -0,0 +1,29 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +test/ + +.github/ + +donate/ + +lib/bs/ + +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/bsconfig.json b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/bsconfig.json new file mode 100755 index 000000000..bcf186803 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/bsconfig.json @@ -0,0 +1,41 @@ +{ + "name": "meta3d-ui-protocol", + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "bsc-flags": [ + "-bs-no-version-header", + "-bs-super-errors" + ], + "bs-dev-dependencies": [], + "bs-dependencies": [ + "meta3d-type", + "meta3d-commonlib-type", + "meta3d-imgui-renderer-protocol" + ], + "package-specs": [ + "commonjs", + "es6-global" + ], + "gentypeconfig": { + "language": "typescript", + "shims": { + "Js": "Js" + }, + "module": "es6", + "importPath": "relative", + "debug": { + "all": false + }, + "exportInterfaces": false + }, + "suffix": ".bs.js", + "namespace": true, + "warnings": { + "number": "-0-1-2-3-4-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-K", + "error": "+5+6" + } +} \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/gulpfile.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/gulpfile.js new file mode 100755 index 000000000..dcc512e79 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/gulpfile.js @@ -0,0 +1,25 @@ +var gulp = require("gulp"); +var path = require("path"); +var publish = require("meta3d-tool-publish-protocol") + +gulp.task("publish_local_env", function (done) { + publish.publishExtensionProtocol( + "local", + path.join(__dirname, "package.json"), + path.join(__dirname, "icon.png") + ).then(() => { + done() + }) +}); + +gulp.task("publish_production_env", function (done) { + publish.publishExtensionProtocol( + "production", + path.join(__dirname, "package.json"), + path.join(__dirname, "icon.png") + ).then(() => { + done() + }) +}); + + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/icon.png b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/icon.png new file mode 100755 index 000000000..89145783a Binary files /dev/null and b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/icon.png differ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/ElementContributeType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/ElementContributeType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/ElementContributeType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/SkinContributeType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/SkinContributeType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/SkinContributeType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/UIControlContributeType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/UIControlContributeType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/contribute/UIControlContributeType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/service/ServiceType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/state/StateType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/state/StateType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/es6_global/src/state/StateType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/ElementContributeType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/ElementContributeType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/ElementContributeType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/SkinContributeType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/SkinContributeType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/SkinContributeType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/UIControlContributeType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/UIControlContributeType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/contribute/UIControlContributeType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/service/ServiceType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/state/StateType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/state/StateType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/lib/js/src/state/StateType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/package.json b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/package.json new file mode 100755 index 000000000..eb32d05de --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/package.json @@ -0,0 +1,18 @@ +{ + "name": "meta3d-ui-protocol", + "version": "0.20.0", + "publisher": "0xf63e1991A343814EdE505D7cfC368615EAe75307", + "displayName": "ui protocol", + "author": "Wonder", + "license": "MIT", + "scripts": { + "watch": "rescript clean && rescript build -w", + "buildAll:ci": "rescript clean && rescript build", + "meta3d:publish_dev": "yarn buildAll:ci && gulp publish_local_env", + "meta3d:publish_pro": "yarn buildAll:ci && gulp publish_production_env" + }, + "keywords": [], + "devDependencies": { + "rescript": "^10.0.1" + } +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/ElementContributeType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/ElementContributeType.res new file mode 100755 index 000000000..1ea1f566c --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/ElementContributeType.res @@ -0,0 +1,45 @@ +type elementState + +type elementName = string + +type elementFunc<'elementState> = ( + . Meta3dType.Index.state, + 'elementState, +) => Js.Promise.t + +type execOrder = int + +// type handler = { +// actionName: string, +// updatedElementStateFieldName: string, +// } + +// type reducers = { +// role: string, +// handlers: array, +// } + +// type uiControlState + +// type uiControlName = string + +// type uiControlStates = Meta3dCommonlibType.ImmutableHashMapType.t + +type elementContribute<'elementState> = { + elementName: elementName, + execOrder: execOrder, + elementFunc: elementFunc<'elementState>, + elementState: 'elementState, + // uiControlStates: uiControlStates, + // reducers: Js.Nullable.t, +} + +// type getElementContribute<'dependentExtensionProtocolNameMap, 'elementState> = ( +// Meta3dType.Index.api, +// 'dependentExtensionProtocolNameMap, +// ) => elementContribute<'elementState> + +// type reducerFunc<'elementState, 'action> = ('elementState, 'action) => 'elementState + +// type reducerData<'elementState, 'action> = (elementName, reducerFunc<'elementState, 'action>) +// type reducerData = (elementName, reducers) diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/ElementContributeType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/ElementContributeType.ts new file mode 100755 index 000000000..396205892 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/ElementContributeType.ts @@ -0,0 +1,37 @@ +import { state as meta3dState, api } from "meta3d-type/src/Index" +import { nullable } from "meta3d-commonlib-ts/src/nullable"; +// import type { Map } from "immutable"; + +export type elementName = string + +export type elementFunc = (_1: meta3dState, elementState: elementState) => Promise; + + +// type handler = { +// actionName: string, +// updatedElementStateFieldName: string, +// } + +// type reducers = { +// role: string, +// handlers: Array, +// } + +// type uiControlName = string + +// type uiControlState = any + +export type elementContribute = { + elementName: elementName, + execOrder: number, + elementFunc: elementFunc, + elementState: elementState, + // uiControlStates: Map, + // reducers: nullable +} + +// export type getElementContribute = (api: api, dependentExtensionProtocolNameMap: dependentExtensionProtocolNameMap) => elementContribute; + +// export type reducerFunc = (elementState: elementState, action: action) => elementState + +// export type reducerData = [elementName, reducerFunc] \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/SkinContributeType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/SkinContributeType.res new file mode 100755 index 000000000..fabeb5b25 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/SkinContributeType.res @@ -0,0 +1,6 @@ +type skinName = string + +type skinContribute<'skin> = { + skinName: skinName, + skin: 'skin +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/SkinContributeType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/SkinContributeType.ts new file mode 100755 index 000000000..25464680b --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/SkinContributeType.ts @@ -0,0 +1,5 @@ +// tslint:disable-next-line:interface-over-type-literal +export type skinName = string; + +// tslint:disable-next-line:interface-over-type-literal +export type skinContribute = { readonly skinName: skinName; readonly skin: skin }; \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/UIControlContributeType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/UIControlContributeType.res new file mode 100755 index 000000000..952991d34 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/UIControlContributeType.res @@ -0,0 +1,27 @@ +type uiControlName = string + +type uiControlFunc<'inputData, 'outputData> = ( + . Meta3dType.Index.state, + 'inputData, +) => Js.Promise.t<(Meta3dType.Index.state, 'outputData)> + +// type uiControlContribute<'uiControlState, 'inputData, 'outputData> = { +// uiControlName: uiControlName, +// createStateFunc: unit => 'uiControlState, +// func: uiControlFunc<'inputData, 'outputData>, +// } + +type init = Meta3dType.Index.state => Js.Promise.t + +type uiControlContribute<'inputData, 'outputData> = { + uiControlName: uiControlName, + func: uiControlFunc<'inputData, 'outputData>, + init: init, +} + +// type skinName = string + +// type getUIControlContribute<'inputData, 'outputData> = skinName => uiControlContribute< +// 'inputData, +// 'outputData, +// > diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/UIControlContributeType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/UIControlContributeType.ts new file mode 100755 index 000000000..31d154b34 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/contribute/UIControlContributeType.ts @@ -0,0 +1,29 @@ +import type { state as Meta3dType_Index_state } from 'meta3d-type/src/Index'; + +// tslint:disable-next-line:interface-over-type-literal +export type uiControlName = string; + +// tslint:disable-next-line:interface-over-type-literal +export type uiControlFunc = (_1: Meta3dType_Index_state, _2: inputData) => Promise<[Meta3dType_Index_state, outputData]>; + +// tslint:disable-next-line:interface-over-type-literal +// export type uiControlContribute = { +// uiControlName: uiControlName; +// createStateFunc: () => uiControlState; +// func: uiControlFunc +// }; + +export type init = (meta3dState: Meta3dType_Index_state) => Promise + +export type uiControlContribute = { + uiControlName: uiControlName; + func: uiControlFunc + init: init, +}; + + +// tslint:disable-next-line:interface-over-type-literal +// export type skinName = string; + +// // tslint:disable-next-line:interface-over-type-literal +// export type getUIControlContribute = (_1: skinName) => uiControlContribute; diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/service/ServiceType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/service/ServiceType.res new file mode 100755 index 000000000..d1e5525ee --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/service/ServiceType.res @@ -0,0 +1,193 @@ +type uiExtensionProtocolName = Meta3dType.Index.extensionProtocolName + +type imguiRendererExtensionProtocolName = Meta3dType.Index.extensionProtocolName + +// type text = string + +type time = float + +// type elementStateField + +type updateElementStateFunc = StateType.elementState => StateType.elementState + +type clearColor = (float, float, float, float) + +type texture = Meta3dImguiRendererProtocol.ServiceType.texture + +type isDebug = bool + +type service = { + registerElement: 'elementState. ( + StateType.state, + ElementContributeType.elementContribute<'elementState>, + ) => StateType.state, + registerSkin: ( + StateType.state, + SkinContributeType.skinContribute, + ) => StateType.state, + registerUIControl: ( + StateType.state, + UIControlContributeType.uiControlContribute, + ) => StateType.state, + render: ( + Meta3dType.Index.state, + (uiExtensionProtocolName, imguiRendererExtensionProtocolName), + // StateType.ioData, + time, + ) => Js.Promise.t, + show: (StateType.state, ElementContributeType.elementName) => StateType.state, + hide: (StateType.state, ElementContributeType.elementName) => StateType.state, + isStateChange: (StateType.state, ElementContributeType.elementName) => bool, + getElementState: 'elementState. ( + StateType.state, + ElementContributeType.elementName, + ) => Js.Nullable.t<'elementState>, + // dispatch: 'action. ( + // StateType.state, + // string, + // string, + // updateElementStateFunc, + // ) => StateType.state, + updateElementState: (StateType.state, updateElementStateFunc) => StateType.state, + // getIOData: StateType.state => StateType.ioData, + getSkin: 'skin. ( + StateType.state, + SkinContributeType.skinName, + ) => Js.Nullable.t>, + getUIControlFunc: 'inputData 'outputData. ( + StateType.state, + UIControlContributeType.uiControlName, + ) => UIControlContributeType.uiControlFunc<'inputData, 'outputData>, + // updateUIControlName: ( + // Meta3dType.Index.state, + // uiExtensionProtocolName, + // (UIControlContributeType.uiControlName, UIControlContributeType.uiControlName), + // ) => Meta3dType.Index.state, + getUIControlState: 'uiControlState. ( + StateType.state, + UIControlContributeType.uiControlName, + ) => Js.Nullable.t<'uiControlState>, + setUIControlState: 'uiControlState. ( + StateType.state, + UIControlContributeType.uiControlName, + 'uiControlState, + ) => StateType.state, + setStyle: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.style, + ) => Meta3dType.Index.state, + beginWindow: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.label, + ) => Meta3dType.Index.state, + endWindow: Meta3dType.Index.state => Meta3dType.Index.state, + beginChild: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.label, + ) => Meta3dType.Index.state, + endChild: Meta3dType.Index.state => Meta3dType.Index.state, + setNextWindowRect: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.rect, + ) => Meta3dType.Index.state, + addFBOTexture: ( + Meta3dType.Index.state, + Js.Null.t, + Meta3dImguiRendererProtocol.ServiceType.rect, + ) => Meta3dType.Index.state, + getFBOTexture: (StateType.state, StateType.textureID) => Js.Nullable.t, + setFBOTexture: (StateType.state, StateType.textureID, texture) => StateType.state, + getWindowBarHeight: Meta3dType.Index.state => float, + getContext: Meta3dType.Index.state => Meta3dImguiRendererProtocol.ServiceType.context, + button: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.label, + Meta3dImguiRendererProtocol.ServiceType.size, + ) => (Meta3dType.Index.state, bool), + setCursorPos: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.pos, + ) => Meta3dType.Index.state, + loadImage: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.imageSrc, + ) => Js.Promise.t, + asset: ( + Meta3dType.Index.state, + { + "loadGlbTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + "removeAssetTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + "glbTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + }, + array<(string, string)>, + Meta3dImguiRendererProtocol.ServiceType.label, + Meta3dImguiRendererProtocol.ServiceType.rect, + ) => (Meta3dType.Index.state, (bool, bool, Js.Nullable.t)), + handleDragDropTarget: 'data. ( + Meta3dType.Index.state, + string, + ) => (Meta3dType.Index.state, Js.Nullable.t<'data>), + menu: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.menuAllLabels, + string, + Meta3dImguiRendererProtocol.ServiceType.rect, + ) => (Meta3dType.Index.state, Js.Nullable.t), + sceneTree: ( + Meta3dType.Index.state, + Meta3dImguiRendererProtocol.ServiceType.sceneTreeData, + Js.Nullable.t, + { + "addCubeTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + "disposeTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + "cloneTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + // "cameraIconTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + // "meshIconTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + // "lightIconTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + }, + string, + Meta3dImguiRendererProtocol.ServiceType.rect, + ) => (Meta3dType.Index.state, Meta3dImguiRendererProtocol.ServiceType.sceneTreeReturnData), + inspector: ( + Meta3dType.Index.state, + string, + (float, float, float), + (float, float, float), + (float, float, float), + string, + Meta3dImguiRendererProtocol.ServiceType.rect, + ) => (Meta3dType.Index.state, Meta3dImguiRendererProtocol.ServiceType.inspectorReturnData), + runStopButton: ( + Meta3dType.Index.state, + bool, + { + "runTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + "stopTexture": Meta3dImguiRendererProtocol.ServiceType.imguiImplTexture, + }, + Meta3dImguiRendererProtocol.ServiceType.size, + ) => (Meta3dType.Index.state, (bool, bool)), + // prepare: ( + // StateType.state, + // array< + // UIControlContributeType.uiControlContribute< + // StateType.uiControlState, + // StateType.inputData, + // StateType.outputData, + // >, + // >, + // ) => StateType.state, + init: ( + Meta3dType.Index.state, + (Meta3dType.Index.api, imguiRendererExtensionProtocolName), + bool, + bool, + Dom.htmlCanvasElement, + ) => Js.Promise.t, + clear: ( + Meta3dType.Index.state, + (Meta3dType.Index.api, imguiRendererExtensionProtocolName), + clearColor, + ) => Meta3dType.Index.state, + getCurrentElementState: StateType.state => Js.Nullable.t, + setCurrentElementState: (StateType.state, StateType.elementState) => StateType.state, +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/service/ServiceType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/service/ServiceType.ts new file mode 100755 index 000000000..15a77e182 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/service/ServiceType.ts @@ -0,0 +1,236 @@ +import { api, extensionProtocolName, state as meta3dState } from "meta3d-type/src/Index" +import { elementContribute, elementName } from "../contribute/ElementContributeType" +import { state, textureID, elementState } from "../state/StateType" +import { skinContribute, skinName } from "../contribute/SkinContributeType" +import { uiControlContribute, uiControlFunc, uiControlName } from "../contribute/UIControlContributeType" +import { style, label, pos, size, rect, texture as imguiTexture, context, imguiImplTexture, imageSrc, menuAllLabels, menuLabel, sceneTreeData, sceneTreeIndexData, sceneTreeReturnData, getValueFunc, setValueFunc } from "meta3d-imgui-renderer-protocol/src/service/ServiceType" +import { nullable, strictNullable } from "meta3d-commonlib-ts/src/nullable" +import { name } from "meta3d-gameobject-protocol" +import { localEulerAngles, localPosition, localScale } from "meta3d-component-transform-protocol" + +export type uiExtensionProtocolName = extensionProtocolName + +export type imguiRendererExtensionProtocolName = extensionProtocolName + +type time = number + +// type elementStateField = any + +type updateElementStateFunc = (elementState: elementState) => elementState + +type clearColor = [number, number, number, number] + +export type texture = imguiTexture + +export type isDebug = boolean + +export type service = { + readonly registerElement: < elementState> ( + state: state, + elementContribute: elementContribute + ) => state; + readonly registerSkin: ( + state: state, + skinContribute: skinContribute + ) => state; + readonly registerUIControl: ( + state: state, + uiControlContribute: uiControlContribute + ) => state; + readonly getSkin: ( + state: state, + skinName: skinName + ) => nullable>; + readonly getUIControlFunc: < inputData, outputData> ( + state: state, + uiControlName: uiControlName + ) => uiControlFunc; + // readonly updateUIControlName: ( + // meta3dState: meta3dState, + // [api, uiExtensionProtocolName]: [api, uiExtensionProtocolName], + // [oldUIControlName, newUIControlName]: [uiControlName, uiControlName] + // ) => meta3dState; + readonly getUIControlState: ( + state: state, + uiControlName: uiControlName, + ) => nullable; + readonly setUIControlState: ( + state: state, + uiControlName: uiControlName, + uiControlState: uiControlState + ) => state; + // readonly prepare: ( + // meta3dState: meta3dState, + // allUIControlContributes: Array> + // ) => Promise; + readonly init: ( + meta3dState: meta3dState, + [api, imguiRendererExtensionProtocolName]: [api, imguiRendererExtensionProtocolName], + isInitEvent: boolean, + isDebug: boolean, + canvas: HTMLCanvasElement + ) => Promise; + readonly clear: ( + meta3dState: meta3dState, + [api, imguiRendererExtensionProtocolName]: [api, imguiRendererExtensionProtocolName], + clearColor: clearColor + ) => meta3dState; + readonly render: ( + meta3dState: meta3dState, + [uiExtensionProtocolName, imguiRendererExtensionProtocolName]: [uiExtensionProtocolName, imguiRendererExtensionProtocolName], + time: time + ) => Promise; + readonly getCurrentElementState: ( + state: state + ) => nullable; + readonly show: ( + state: state, + elementName: elementName + ) => state; + readonly hide: ( + state: state, + elementName: elementName + ) => state; + readonly isStateChange: ( + state: state, + elementName: elementName + ) => boolean; + readonly getElementState: ( + state: state, + elementName: elementName + ) => nullable; + // readonly dispatch: ( + // state: state, + // actionName: string, + // role: string, + // updateElementStateFieldFunc: updateElementStateFieldFunc + // ) => state; + readonly updateElementState: ( + state: state, + updateElementStateFunc: updateElementStateFunc + ) => state; + readonly setStyle: ( + meta3dState: meta3dState, + style: style + ) => meta3dState; + readonly beginWindow: ( + meta3dState: meta3dState, + label: label + ) => meta3dState; + readonly endWindow: ( + meta3dState: meta3dState + ) => meta3dState; + readonly beginChild: ( + meta3dState: meta3dState, + label: label + ) => meta3dState; + readonly endChild: ( + meta3dState: meta3dState + ) => meta3dState; + readonly setNextWindowRect: ( + meta3dState: meta3dState, + rect: rect + ) => meta3dState; + readonly addFBOTexture: ( + meta3dState: meta3dState, + texture: strictNullable, + rect: rect + ) => meta3dState; + readonly getFBOTexture: ( + state: state, + textureID: textureID, + ) => nullable; + readonly setFBOTexture: ( + state: state, + textureID: textureID, + texture: texture + ) => state; + readonly getWindowBarHeight: ( + meta3dState: meta3dState + ) => number; + readonly getContext: ( + meta3dState: meta3dState + ) => context; + readonly button: ( + meta3dState: meta3dState, + label: label, + size: size + ) => [meta3dState, boolean]; + readonly setCursorPos: ( + meta3dState: meta3dState, + pos: pos + ) => meta3dState; + readonly loadImage: ( + meta3dState: meta3dState, + _1: imageSrc + ) => Promise; + readonly asset: ( + meta3dState: meta3dState, + textures: { "loadGlbTexture": imguiImplTexture, "removeAssetTexture": imguiImplTexture, "glbTexture": imguiImplTexture }, + glbs: Array<[string, string]>, + label: label, + rect: rect, + ) => [meta3dState, [boolean, boolean, nullable]]; + readonly menu: ( + meta3dState: meta3dState, + allLabels: menuAllLabels, + windowName: string, + rect: rect, + ) => [meta3dState, nullable]; + readonly sceneTree: ( + meta3dState: meta3dState, + sceneTreeData: sceneTreeData, + lastSceneTreeSelectedData: nullable, + textures: { + "addCubeTexture": imguiImplTexture, + "disposeTexture": imguiImplTexture, + "cloneTexture": imguiImplTexture, + // "cameraIconTexture": imguiImplTexture, + // "meshIconTexture": imguiImplTexture, + // "lightIconTexture": imguiImplTexture, + }, windowName: string, rect: rect) => [meta3dState, sceneTreeReturnData]; + readonly inspector: ( + meta3dState: meta3dState, + // [ + // getGameObjectNameFunc, setGameObjectNameFunc, + // getLocalPositionXFunc, setLocalPositionXFunc, + // getLocalPositionYFunc, setLocalPositionYFunc, + // getLocalPositionZFunc, setLocalPositionZFunc, + // getLocalEulerXFunc, setLocalEulerXFunc, + // getLocalEulerYFunc, setLocalEulerYFunc, + // getLocalEulerZFunc, setLocalEulerZFunc, + // getLocalScaleXFunc, setLocalScaleXFunc, + // getLocalScaleYFunc, setLocalScaleYFunc, + // getLocalScaleZFunc, setLocalScaleZFunc, + // ]: [getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // getValueFunc, setValueFunc, + // ], + gameObjectName: name, + localPosition: localPosition, + localEulerAngles: localEulerAngles, + localScale: localScale, + windowName: string, + rect: rect, + ) => [meta3dState, [nullable, nullable, nullable, nullable]]; + readonly runStopButton: ( + meta3dState: meta3dState, + isRunState: boolean, + textures: { + "runTexture": imguiImplTexture, + "stopTexture": imguiImplTexture, + }, + size: size + ) => [meta3dState, [boolean, boolean]]; + readonly handleDragDropTarget: ( + meta3dState: meta3dState, + type: string + ) => [meta3dState, nullable], +}; diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/state/StateType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/state/StateType.res new file mode 100755 index 000000000..eee3ac37e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/state/StateType.res @@ -0,0 +1,55 @@ +type elementState + +type dependentExtensionProtocolNameMap + +type inputData + +type outputData + +type uiControlState + +type skin + +type textureID = string + +type state = { + elementFuncMap: Meta3dCommonlibType.ImmutableHashMapType.t< + ElementContributeType.elementName, + ElementContributeType.elementFunc, + >, + elementStateMap: Meta3dCommonlibType.ImmutableHashMapType.t< + ElementContributeType.elementName, + elementState, + >, + elementExecOrderMap: Meta3dCommonlibType.ImmutableHashMapType.t< + ElementContributeType.elementName, + ElementContributeType.execOrder, + >, + // elementUIControlStatesMap: Meta3dCommonlibType.ImmutableHashMapType.t< + // ElementContributeType.elementName, + // ElementContributeType.uiControlStates, + // >, + isShowMap: Meta3dCommonlibType.ImmutableHashMapType.t, + isStateChangeMap: Meta3dCommonlibType.ImmutableHashMapType.t< + ElementContributeType.elementName, + bool, + >, + skinContributeMap: Meta3dCommonlibType.ImmutableHashMapType.t< + SkinContributeType.skinName, + SkinContributeType.skinContribute, + >, + uiControlContributeMap: Meta3dCommonlibType.ImmutableHashMapType.t< + UIControlContributeType.uiControlName, + UIControlContributeType.uiControlContribute, + >, + uiControlStateMap: Meta3dCommonlibType.ImmutableHashMapType.t< + UIControlContributeType.uiControlName, + uiControlState, + >, + // reducers: array, + currentElementName: option, + fboTextureMap: Meta3dCommonlibType.ImmutableHashMapType.t< + textureID, + Meta3dImguiRendererProtocol.ServiceType.texture, + >, +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/state/StateType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/state/StateType.ts new file mode 100755 index 000000000..8fca60b36 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-ui-protocol/src/state/StateType.ts @@ -0,0 +1,11 @@ +export type elementState = any + +export type textureID = string + +// export type uiControlState = any + +export type inputData = any + +export type outputData = any + +export abstract class state { protected opaque!: any }; /* simulate opaque types */ \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/.gitignore b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/.gitignore new file mode 100755 index 000000000..a70c87221 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/.gitignore @@ -0,0 +1,26 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +lib/bs/ + +lib/ocaml/ + +lib/es6_global/test/ +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/.npmignore b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/.npmignore new file mode 100755 index 000000000..30b317c44 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/.npmignore @@ -0,0 +1,29 @@ +.DS_Store +.merlin +.idea/ +.vscode/ +jest_0/ +reference/ +node_modules/ +mine/ + +test/ + +.github/ + +donate/ + +lib/bs/ + +lib/js/test/ + +coverage + +dist/ + +npm-debug + +.bsb.lock + +yarn.lock + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/bsconfig.json b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/bsconfig.json new file mode 100755 index 000000000..869a6e7a4 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/bsconfig.json @@ -0,0 +1,38 @@ +{ + "name": "meta3d-webgl1-protocol", + "sources": [ + { + "dir": "src", + "subdirs": true + } + ], + "bsc-flags": [ + "-bs-no-version-header", + "-bs-super-errors" + ], + "bs-dev-dependencies": [], + "bs-dependencies": [ + ], + "package-specs": [ + "commonjs", + "es6-global" + ], + "gentypeconfig": { + "language": "typescript", + "shims": { + "Js": "Js" + }, + "module": "es6", + "importPath": "relative", + "debug": { + "all": false + }, + "exportInterfaces": false + }, + "suffix": ".bs.js", + "namespace": true, + "warnings": { + "number": "-0-1-2-3-4-7-8-9-10-11-12-13-14-15-16-17-18-19-20-21-22-23-24-25-26-27-28-29-30-31-32-33-34-35-36-37-38-39-40-41-42-43-44-45-46-47-48-49-50-51-52-53-54-55-56-57-58-59-60-61-62-K", + "error": "+5+6" + } +} \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/gulpfile.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/gulpfile.js new file mode 100755 index 000000000..dcc512e79 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/gulpfile.js @@ -0,0 +1,25 @@ +var gulp = require("gulp"); +var path = require("path"); +var publish = require("meta3d-tool-publish-protocol") + +gulp.task("publish_local_env", function (done) { + publish.publishExtensionProtocol( + "local", + path.join(__dirname, "package.json"), + path.join(__dirname, "icon.png") + ).then(() => { + done() + }) +}); + +gulp.task("publish_production_env", function (done) { + publish.publishExtensionProtocol( + "production", + path.join(__dirname, "package.json"), + path.join(__dirname, "icon.png") + ).then(() => { + done() + }) +}); + + diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/icon.png b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/icon.png new file mode 100755 index 000000000..89145783a Binary files /dev/null and b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/icon.png differ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/es6_global/src/service/ServiceType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/es6_global/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/es6_global/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/es6_global/src/state/StateType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/es6_global/src/state/StateType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/es6_global/src/state/StateType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/js/src/service/ServiceType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/js/src/service/ServiceType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/js/src/service/ServiceType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/js/src/state/StateType.bs.js b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/js/src/state/StateType.bs.js new file mode 100644 index 000000000..ae1b9f17e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/lib/js/src/state/StateType.bs.js @@ -0,0 +1 @@ +/* This output is empty. Its source's type definitions, externals and/or unused code got optimized away. */ diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/package.json b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/package.json new file mode 100755 index 000000000..efe529466 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/package.json @@ -0,0 +1,18 @@ +{ + "name": "meta3d-webgl1-protocol", + "version": "0.20.0", + "publisher": "0xf63e1991A343814EdE505D7cfC368615EAe75307", + "displayName": "webgl1 protocol", + "author": "Wonder", + "license": "MIT", + "scripts": { + "watch": "rescript clean && rescript build -w", + "buildAll:ci": "rescript clean && rescript build", + "meta3d:publish_dev": "yarn buildAll:ci && gulp publish_local_env", + "meta3d:publish_pro": "yarn buildAll:ci && gulp publish_production_env" + }, + "keywords": [], + "devDependencies": { + "rescript": "^10.0.1" + } +} diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/service/ServiceType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/service/ServiceType.res new file mode 100755 index 000000000..067ba304e --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/service/ServiceType.res @@ -0,0 +1,177 @@ +open Js.Typed_array + +type webgl1Context + +type program + +type buffer + +type renderBuffer + +type attributeLocation = int + +type uniformLocation + +type glenum = int + +type glint = int + +type glsizei = int + +type shader + +type texture + +type fbo + +type extension + +type vaoExtension + +type hex + +type arrayBufferView = { + buffer: Js.Typed_array.ArrayBuffer.t, + byteLength: int, + byteOffset: int, +} + +type contextConfigJsObj = { + "alpha": bool, + "depth": bool, + "stencil": bool, + "failIfMajorPerformanceCaveat": bool, + "powerPreference": string, + "antialias": bool, + "premultipliedAlpha": bool, + "preserveDrawingBuffer": bool, + "desynchronized": bool, +} + +type canvas = Dom.htmlCanvasElement + +// @genType +type service = { + getContext: (. canvas, contextConfigJsObj) => webgl1Context, + createProgram: (. webgl1Context) => program, + linkProgram: (. program, webgl1Context) => unit, + useProgram: (. program, webgl1Context) => unit, + uniformMatrix4fv: (. uniformLocation, Float32Array.t, webgl1Context) => unit, + uniform1i: (. uniformLocation, int, webgl1Context) => unit, + uniform1f: (. uniformLocation, float, webgl1Context) => unit, + uniform3f: (. uniformLocation, float, float, float, webgl1Context) => unit, + getAttribLocation: (. program, string, webgl1Context) => attributeLocation, + getUniformLocation: (. program, string, webgl1Context) => uniformLocation, + shaderSource: (. shader, string, webgl1Context) => unit, + compileShader: (. shader, webgl1Context) => unit, + createShader: (. int, webgl1Context) => shader, + getParameter: (. int, webgl1Context) => int, + getLinkStatus: (. webgl1Context) => int, + getShaderParameter: (. shader, int, webgl1Context) => bool, + getProgramParameter: (. program, int, webgl1Context) => bool, + getShaderInfoLog: (. shader, webgl1Context) => string, + getProgramInfoLog: (. program, webgl1Context) => string, + attachShader: (. program, shader, webgl1Context) => unit, + deleteShader: (. shader, webgl1Context) => unit, + bindAttribLocation: (. program, int, string, webgl1Context) => unit, + getCompileStatus: (. webgl1Context) => int, + getVertexShader: (. webgl1Context) => int, + getFragmentShader: (. webgl1Context) => int, + createBuffer: (. webgl1Context) => buffer, + bindBuffer: (. int, buffer, webgl1Context) => unit, + bufferFloat32Data: (. int, Float32Array.t, int, webgl1Context) => unit, + bufferUint16Data: (. int, Uint16Array.t, int, webgl1Context) => unit, + bufferUint32Data: (. int, Uint32Array.t, int, webgl1Context) => unit, + getArrayBuffer: (. webgl1Context) => int, + getElementArrayBuffer: (. webgl1Context) => int, + getStaticDraw: (. webgl1Context) => int, + getDynamicDraw: (. webgl1Context) => int, + disableVertexAttribArray: (. int, webgl1Context) => unit, + vertexAttribPointer: (. attributeLocation, int, int, bool, int, int, webgl1Context) => unit, + enableVertexAttribArray: (. attributeLocation, webgl1Context) => unit, + getExtension: (. string, webgl1Context) => unit, + drawElements: (. int, int, int, int, webgl1Context) => unit, + clearColor: (. float, float, float, float, webgl1Context) => unit, + clear: (. int, webgl1Context) => unit, + getColorBufferBit: (. webgl1Context) => int, + getDepthBufferBit: (. webgl1Context) => int, + getStencilBufferBit: (. webgl1Context) => int, + viewport: (. int, int, int, int, webgl1Context) => unit, + scissor: (. int, int, int, int, webgl1Context) => unit, + enable: (. int, webgl1Context) => unit, + disable: (. int, webgl1Context) => unit, + getFloat: (. webgl1Context) => int, + getDepthTest: (. webgl1Context) => int, + getStencilTest: (. webgl1Context) => int, + getScissorTest: (. webgl1Context) => int, + getBlend: (. webgl1Context) => int, + getCullFace: (. webgl1Context) => int, + getFrontAndBack: (. webgl1Context) => int, + getBack: (. webgl1Context) => int, + getFront: (. webgl1Context) => int, + getCurrentProgram: (. webgl1Context) => int, + getBindingElementArrayBuffer: (. webgl1Context) => int, + getBindingArrayBuffer: (. webgl1Context) => int, + getSrcAlpha: (. webgl1Context) => int, + getOneMinusSrcAlpha: (. webgl1Context) => int, + isEnabled: (. int, webgl1Context) => bool, + bindVertexArrayOES: (. Js.Null.t, webgl1Context) => unit, + blendFunc: (. int, int, webgl1Context) => unit, + getTriangles: (. webgl1Context) => int, + getTriangleFan: (. webgl1Context) => int, + getUnsignedByte: (. webgl1Context) => glenum, + getUnsignedInt: (. webgl1Context) => glenum, + getUnsignedShort: (. webgl1Context) => glenum, + bindTexture: (. glenum, Js.Null.t, webgl1Context) => unit, + createTexture: (. webgl1Context) => Js.Null.t, + texImage2D: ( + . glenum, + glint, + glint, + glsizei, + glsizei, + glint, + glenum, + glenum, + Js.Null.t, + webgl1Context, + ) => unit, + texParameteri: (. glenum, glenum, glint, webgl1Context) => unit, + getTexture2DType: (. webgl1Context) => int, + getRGBAType: (. webgl1Context) => int, + getDrawingBufferWidth: (. webgl1Context) => int, + getDrawingBufferHeight: (. webgl1Context) => int, + getTextureMinFilterType: (. webgl1Context) => int, + getLinearType: (. webgl1Context) => int, + getTextureWrapSType: (. webgl1Context) => int, + getTextureWrapTType: (. webgl1Context) => int, + getClampToEdgeType: (. webgl1Context) => int, + getFrameBufferType: (. webgl1Context) => int, + getRenderBufferType: (. webgl1Context) => int, + getColorAttachment0: (. webgl1Context) => int, + getDepthAttachment: (. webgl1Context) => int, + getDepthComponent16: (. webgl1Context) => glenum, + createFramebuffer: (. webgl1Context) => Js.Null.t, + bindFramebuffer: (. glenum, Js.Null.t, webgl1Context) => unit, + framebufferTexture2D: ( + . glenum, + glenum, + glenum, + Js.Null.t, + glint, + webgl1Context, + ) => unit, + createRenderbuffer: (. webgl1Context) => renderBuffer, + bindRenderbuffer: (. glenum, renderBuffer, webgl1Context) => unit, + renderbufferStorage: (. glenum, glenum, int, int, webgl1Context) => unit, + framebufferRenderbuffer: (. glenum, glenum, glenum, renderBuffer, webgl1Context) => unit, +} + +external parameterIntToNullableProgram: int => Js.Nullable.t = "%identity" + +external parameterIntToBuffer: int => buffer = "%identity" + +// external parameterIntToNullableTexture : int => Js.Null.t = +// "%identity" + +// external intToHex : int => hex = "%identity" diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/service/ServiceType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/service/ServiceType.ts new file mode 100755 index 000000000..6db6026f1 --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/service/ServiceType.ts @@ -0,0 +1,171 @@ +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +// export abstract class webgl1Context { protected opaque!: any }; /* simulate opaque types */ + +export type webgl1Context = WebGLRenderingContext + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class program { protected opaque!: any }; /* simulate opaque types */ + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class buffer { protected opaque!: any }; /* simulate opaque types */ + +export abstract class renderBuffer { protected opaque!: any }; /* simulate opaque types */ + +// tslint:disable-next-line:interface-over-type-literal +export type attributeLocation = number; + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class uniformLocation { protected opaque!: any }; /* simulate opaque types */ + + +export type glenum = number; + +// tslint:disable-next-line:interface-over-type-literal +export type glint = number; + +// tslint:disable-next-line:interface-over-type-literal +export type glsizei = number; + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class shader { protected opaque!: any }; /* simulate opaque types */ + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class texture { protected opaque!: any }; /* simulate opaque types */ + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class fbo { protected opaque!: any }; /* simulate opaque types */ + + +// tslint:disable-next-line:max-classes-per-file +// tslint:disable-next-line:class-name +export abstract class extension { protected opaque!: any }; /* simulate opaque types */ + + +// tslint:disable-next-line:interface-over-type-literal +export type arrayBufferView = { + readonly buffer: ArrayBuffer; + readonly byteLength: number; + readonly byteOffset: number +}; + +// tslint:disable-next-line:interface-over-type-literal +export type contextConfigJsObj = { + readonly alpha: boolean; + readonly depth: boolean; + readonly stencil: boolean; + readonly failIfMajorPerformanceCaveat: boolean; + readonly powerPreference: string; + readonly antialias: boolean; + readonly premultipliedAlpha: boolean; + readonly preserveDrawingBuffer: boolean + readonly desynchronized: boolean +}; + +// tslint:disable-next-line:interface-over-type-literal +export type canvas = HTMLCanvasElement; + +// tslint:disable-next-line:interface-over-type-literal +export type service = { + readonly getContext: (_1: canvas, _2: contextConfigJsObj) => webgl1Context; + readonly createProgram: (_1: webgl1Context) => program; + readonly linkProgram: (_1: program, _2: webgl1Context) => void; + readonly useProgram: (_1: program, _2: webgl1Context) => void; + readonly uniformMatrix4fv: (_1: uniformLocation, _2: Float32Array, _3: webgl1Context) => void; + readonly uniform1i: (_1: uniformLocation, _2: number, _3: webgl1Context) => void; + readonly uniform1f: (_1: uniformLocation, _2: number, _3: webgl1Context) => void; + readonly uniform3f: (_1: uniformLocation, _2: number, _3: number, _4: number, _5: webgl1Context) => void; + readonly getAttribLocation: (_1: program, _2: string, _3: webgl1Context) => attributeLocation; + readonly getUniformLocation: (_1: program, _2: string, _3: webgl1Context) => uniformLocation; + readonly shaderSource: (_1: shader, _2: string, _3: webgl1Context) => void; + readonly compileShader: (_1: shader, _2: webgl1Context) => void; + readonly createShader: (_1: number, _2: webgl1Context) => shader; + readonly getParameter: (_1: number, _2: webgl1Context) => number; + readonly getLinkStatus: (_1: webgl1Context) => number; + readonly getShaderParameter: (_1: shader, _2: number, _3: webgl1Context) => boolean; + readonly getProgramParameter: (_1: program, _2: number, _3: webgl1Context) => boolean; + readonly getShaderInfoLog: (_1: shader, _2: webgl1Context) => string; + readonly getProgramInfoLog: (_1: program, _2: webgl1Context) => string; + readonly attachShader: (_1: program, _2: shader, _3: webgl1Context) => void; + readonly deleteShader: (_1: shader, _2: webgl1Context) => void; + readonly bindAttribLocation: (_1: program, _2: number, _3: string, _4: webgl1Context) => void; + readonly getCompileStatus: (_1: webgl1Context) => number; + readonly getVertexShader: (_1: webgl1Context) => number; + readonly getFragmentShader: (_1: webgl1Context) => number; + readonly createBuffer: (_1: webgl1Context) => buffer; + readonly bindBuffer: (_1: number, _2: buffer, _3: webgl1Context) => void; + readonly bufferFloat32Data: (_1: number, _2: Float32Array, _3: number, _4: webgl1Context) => void; + readonly bufferUint16Data: (_1: number, _2: Uint16Array, _3: number, _4: webgl1Context) => void; + readonly bufferUint32Data: (_1: number, _2: Uint32Array, _3: number, _4: webgl1Context) => void; + readonly getArrayBuffer: (_1: webgl1Context) => number; + readonly getElementArrayBuffer: (_1: webgl1Context) => number; + readonly getStaticDraw: (_1: webgl1Context) => number; + readonly getDynamicDraw: (_1: webgl1Context) => number; + readonly disableVertexAttribArray: (_1: number, _2: webgl1Context) => void; + readonly vertexAttribPointer: (_1: attributeLocation, _2: number, _3: number, _4: boolean, _5: number, _6: number, _7: webgl1Context) => void; + readonly enableVertexAttribArray: (_1: attributeLocation, _2: webgl1Context) => void; + readonly getExtension: (_1: string, _2: webgl1Context) => void; + readonly drawElements: (_1: number, _2: number, _3: number, _4: number, _5: webgl1Context) => void; + readonly clearColor: (_1: number, _2: number, _3: number, _4: number, _5: webgl1Context) => void; + readonly clear: (_1: number, _2: webgl1Context) => void; + readonly getColorBufferBit: (_1: webgl1Context) => number; + readonly getDepthBufferBit: (_1: webgl1Context) => number; + readonly getStencilBufferBit: (_1: webgl1Context) => number; + readonly viewport: (_1: number, _2: number, _3: number, _4: number, _5: webgl1Context) => void; + readonly scissor: (_1: number, _2: number, _3: number, _4: number, _5: webgl1Context) => void; + readonly enable: (_1: number, _2: webgl1Context) => void; + readonly disable: (_1: number, _2: webgl1Context) => void; + readonly getFloat: (_1: webgl1Context) => number; + readonly getDepthTest: (_1: webgl1Context) => number; + readonly getStencilTest: (_1: webgl1Context) => number; + readonly getScissorTest: (_1: webgl1Context) => number; + readonly getBlend: (_1: webgl1Context) => number; + readonly getCullFace: (_1: webgl1Context) => number; + readonly getFrontAndBack: (_1: webgl1Context) => number; + readonly getBack: (_1: webgl1Context) => number; + readonly getFront: (_1: webgl1Context) => number; + readonly getCurrentProgram: (_1: webgl1Context) => number; + readonly getBindingElementArrayBuffer: (_1: webgl1Context) => number; + readonly getBindingArrayBuffer: (_1: webgl1Context) => number; + readonly getSrcAlpha: (_1: webgl1Context) => number; + readonly getOneMinusSrcAlpha: (_1: webgl1Context) => number; + readonly isEnabled: (_1: number, _2: webgl1Context) => boolean; + readonly bindVertexArrayOES: (_1: (null | buffer), _2: webgl1Context) => void; + readonly blendFunc: (_1: number, _2: number, _3: webgl1Context) => void; + readonly getTriangles: (_1: webgl1Context) => number; + readonly getTriangleFan: (_1: webgl1Context) => number; + readonly getUnsignedByte: (_1: webgl1Context) => glenum; + readonly getUnsignedInt: (_1: webgl1Context) => glenum; + readonly getUnsignedShort: (_1: webgl1Context) => glenum; + readonly bindTexture: (_1: glenum, _2: (null | texture), _3: webgl1Context) => void; + readonly createTexture: (_1: webgl1Context) => (null | texture); + readonly texImage2D: (_1: glenum, _2: glint, _3: glint, _4: glsizei, _5: glsizei, _6: glint, _7: glenum, _8: glenum, _9: (null | arrayBufferView), _10: webgl1Context) => void; + readonly texParameteri: (_1: glenum, _2: glenum, _3: glint, _4: webgl1Context) => void; + readonly getTexture2DType: (_1: webgl1Context) => number; + readonly getRGBAType: (_1: webgl1Context) => number; + readonly getDrawingBufferWidth: (_1: webgl1Context) => number; + readonly getDrawingBufferHeight: (_1: webgl1Context) => number; + readonly getTextureMinFilterType: (_1: webgl1Context) => number; + readonly getLinearType: (_1: webgl1Context) => number; + readonly getTextureWrapSType: (_1: webgl1Context) => number; + readonly getTextureWrapTType: (_1: webgl1Context) => number; + readonly getClampToEdgeType: (_1: webgl1Context) => number; + readonly getFrameBufferType: (_1: webgl1Context) => number; + readonly getRenderBufferType: (_1: webgl1Context) => number; + readonly getColorAttachment0: (_1: webgl1Context) => number; + readonly getDepthAttachment: (_1: webgl1Context) => number; + readonly getDepthComponent16: (_1: webgl1Context) => glenum; + readonly createFramebuffer: (_1: webgl1Context) => (null | fbo); + readonly bindFramebuffer: (_1: glenum, _2: (null | fbo), _3: webgl1Context) => void; + readonly framebufferTexture2D: (_1: glenum, _2: glenum, _3: glenum, _4: (null | texture), _5: glint, _6: webgl1Context) => void; + readonly createRenderbuffer: (_1: webgl1Context) => renderBuffer; + readonly bindRenderbuffer: (_1: glenum, _2: renderBuffer, _3: webgl1Context) => void; + readonly renderbufferStorage: (_1: glenum, _2: glenum, _3: number, _4: number, _5: webgl1Context) => void; + readonly framebufferRenderbuffer: (_1: glenum, _2: glenum, _3: glenum, _4: renderBuffer, _5: webgl1Context) => void +}; diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/state/StateType.res b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/state/StateType.res new file mode 100755 index 000000000..74c1f60da --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/state/StateType.res @@ -0,0 +1 @@ +type state = unit \ No newline at end of file diff --git a/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/state/StateType.ts b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/state/StateType.ts new file mode 100755 index 000000000..e9780de7b --- /dev/null +++ b/packages/editor-whole/ui/protocols/extension_protocols/meta3d-webgl1-protocol/src/state/StateType.ts @@ -0,0 +1 @@ +export type state = null diff --git a/platform/assemble-space/bsconfig.json b/platform/assemble-space/bsconfig.json index cbc477349..058538d2f 100755 --- a/platform/assemble-space/bsconfig.json +++ b/platform/assemble-space/bsconfig.json @@ -35,8 +35,7 @@ "meta3d", "meta3d-type", "meta3d-bs-most", - "meta3d-bs-most-protocol", - "meta3d-ui-protocol", + "meta3d-editor-whole-protocol", "frontend-utils" ], "refmt": 3, diff --git a/platform/assemble-space/package.json b/platform/assemble-space/package.json index f9a62bad0..ca18dfa16 100755 --- a/platform/assemble-space/package.json +++ b/platform/assemble-space/package.json @@ -26,6 +26,7 @@ "dependencies": { "antd": "^4.21.0", "remporium": "^0.0.1", + "meta3d-bs-most": "^0.20.0", "rescript": "^10.0.1" } -} +} \ No newline at end of file diff --git a/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/element_visual/components/ElementVisual.res b/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/element_visual/components/ElementVisual.res index 0d0bf6b38..80db155f0 100755 --- a/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/element_visual/components/ElementVisual.res +++ b/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/element_visual/components/ElementVisual.res @@ -8,22 +8,23 @@ type elementAssembleData = | Loaded(FrontendUtils.BackendCloudbaseType.elementAssembleData) module Method = { - let _getVisualExtensionName = () => "meta3d-element-assemble-visual" + // let _getVisualExtensionName = () => "meta3d-element-assemble-visual" - let _getVisualExtensionProtocolName = () => "meta3d-element-assemble-visual-protocol" + // let _getVisualExtensionProtocolName = () => "meta3d-element-assemble-visual-protocol" - let getAndSetNewestVisualExtension = (service, dispatch, isDebug) => { - ElementVisualUtils.getAndSetNewestVisualExtension( - service, - dispatch, - extension => FrontendUtils.ElementAssembleStoreType.SetVisualExtension(extension), - (_getVisualExtensionProtocolName(), _getVisualExtensionName()), - isDebug, - ) - } + // let getAndSetNewestVisualExtension = (service, dispatch, isDebug) => { + // ElementVisualUtils.getAndSetNewestVisualExtension( + // service, + // dispatch, + // extension => FrontendUtils.ElementAssembleStoreType.SetVisualExtension(extension), + // (_getVisualExtensionProtocolName(), _getVisualExtensionName()), + // isDebug, + // ) + // } let _getInitData = (service: FrontendUtils.AssembleSpaceType.service, isDebug) => { { + "target": "visual", "isDebug": isDebug, "canvas": service.dom.querySelector("#ui-visual-canvas")->Meta3dCommonlib.OptionSt.getExn, }->Obj.magic @@ -38,23 +39,31 @@ module Method = { } let _updateElementContribute = (meta3dState, service, elementContribute) => { - let meta3dUIExtensionProtocolName = ElementVisualUtils.getUIExtensionProtocolName() + // let meta3dUIExtensionProtocolName = ElementVisualUtils.getUIExtensionProtocolName() - let uiState: Meta3dUiProtocol.StateType.state = service.meta3d.getExtensionState(. - meta3dState, - meta3dUIExtensionProtocolName, - ) + // let uiState: Meta3dUiProtocol.StateType.state = service.meta3d.getExtensionState(. + // meta3dState, + // meta3dUIExtensionProtocolName, + // ) + + // // let meta3dState = service.meta3d.registerContribute(meta3dState, elementContribute) - // let meta3dState = service.meta3d.registerContribute(meta3dState, elementContribute) + // let uiState = ( + // service.meta3d.getExtensionService(. + // meta3dState, + // meta3dUIExtensionProtocolName, + // ): Meta3dUiProtocol.ServiceType.service + // ).registerElement(uiState, elementContribute) - let uiState = ( - service.meta3d.getExtensionService(. + // service.meta3d.setExtensionState(. meta3dState, meta3dUIExtensionProtocolName, uiState) + + let editorWholePackageService: Meta3dEditorWholeProtocol.ServiceType.service = + service.meta3d.getPackageService(. meta3dState, - meta3dUIExtensionProtocolName, - ): Meta3dUiProtocol.ServiceType.service - ).registerElement(uiState, elementContribute) + ElementVisualUtils.getEditorWholePackageProtocolName(), + )->Meta3dCommonlib.NullableSt.getExn - service.meta3d.setExtensionState(. meta3dState, meta3dUIExtensionProtocolName, uiState) + editorWholePackageService.ui.registerElement(meta3dState, elementContribute) } let rec _loop = ( @@ -90,12 +99,12 @@ module Method = { service.meta3d.updateExtension(. meta3dState, - _getVisualExtensionProtocolName(), + ElementVisualUtils.getEditorWholePackageProtocolName(), _getUpdateData(clearColor, skinName, time), ) ->Js.Promise.then_(meta3dState => { loopFrameID.current = - service.other.requestAnimationOtherFrame(. time => { + service.other.requestAnimationOtherFrame(time => { _loop(service, loopFrameID, apInspectorData, time, meta3dState) })->Some @@ -107,12 +116,14 @@ module Method = { let _generateApp = ( service, ((selectPackages, allPackagesStoredInApp), selectedExtensions, selectedContributes), - visualExtension, ) => { + // visualExtension, + AppUtils.generateApp( service, (selectPackages, allPackagesStoredInApp), - selectedExtensions->Meta3dCommonlib.ArraySt.push(visualExtension), + // selectedExtensions->Meta3dCommonlib.ArraySt.push(visualExtension), + selectedExtensions, selectedContributes, Js.Nullable.null, ) @@ -122,7 +133,7 @@ module Method = { service, loopFrameID: React.ref>, (selectedPackages, selectedExtensions, selectedContributes, storedPackageIdsInApp), - visualExtension, + // visualExtension, {isDebug} as apInspectorData: FrontendUtils.ApAssembleStoreType.apInspectorData, ) => { let (meta3dState, _, _) = service.meta3d.loadApp(. @@ -133,13 +144,13 @@ module Method = { selectedExtensions->Meta3dCommonlib.ListSt.toArray, selectedContributes->Meta3dCommonlib.ListSt.toArray, ), - visualExtension, + // visualExtension, ), ) service.meta3d.initExtension(. meta3dState, - _getVisualExtensionProtocolName(), + ElementVisualUtils.getEditorWholePackageProtocolName(), _getInitData(service, isDebug), ) ->Js.Promise.then_(meta3dState => { @@ -162,12 +173,11 @@ module Method = { }, _) } - let isLoaded = (visualExtension, elementAssembleData) => { - visualExtension->Meta3dCommonlib.OptionSt.isSome && - switch elementAssembleData { - | Loading => false - | _ => true - } + let isLoaded = elementAssembleData => { + switch elementAssembleData { + | Loading => false + | _ => true + } } let _getElementContributeName = () => "meta3d-element-assemble-element" @@ -415,7 +425,7 @@ module Method = { canvasData, selectedUIControls, selectedUIControlInspectorData, - visualExtension, + // visualExtension, elementContribute, // elementInspectorData, } = elementAssembleState @@ -435,7 +445,7 @@ module Method = { canvasData, selectedUIControls, selectedUIControlInspectorData, - visualExtension, + // visualExtension, // elementContribute, elementContribute, // elementInspectorData, @@ -461,7 +471,7 @@ let make = (~service: service, ~account: option) => { canvasData, selectedUIControls, selectedUIControlInspectorData, - visualExtension, + // visualExtension, // elementContribute, elementContribute, // elementInspectorData, @@ -473,15 +483,15 @@ let make = (~service: service, ~account: option) => { // let {elementStateFields} = elementInspectorData - service.react.useEffectOnce(() => { - switch visualExtension { - | Some(_) => () - | None => - Method.getAndSetNewestVisualExtension(service, dispatch, apInspectorData.isDebug)->ignore - } + // service.react.useEffectOnce(() => { + // switch visualExtension { + // | Some(_) => () + // | None => + // Method.getAndSetNewestVisualExtension(service, dispatch, apInspectorData.isDebug)->ignore + // } - ((), None) - }) + // ((), None) + // }) service.react.useEffect1(. () => { Method.getAndSetElementAssembleData( @@ -542,18 +552,27 @@ let make = (~service: service, ~account: option) => { None } : { - switch visualExtension { - | Some(visualExtension) => FrontendUtils.ErrorUtils.showCatchedErrorMessage(() => { - Method.startApp( - service, - loopFrameID, - (selectedPackages, selectedExtensions, selectedContributes, storedPackageIdsInApp), - visualExtension, - apInspectorData, - )->ignore - }, 5->Some) - | _ => () - } + // switch visualExtension { + // | Some(visualExtension) => FrontendUtils.ErrorUtils.showCatchedErrorMessage(() => { + // Method.startApp( + // service, + // loopFrameID, + // (selectedPackages, selectedExtensions, selectedContributes, storedPackageIdsInApp), + // visualExtension, + // apInspectorData, + // )->ignore + // }, 5->Some) + // | _ => () + // } + FrontendUtils.ErrorUtils.showCatchedErrorMessage(() => { + Method.startApp( + service, + loopFrameID, + (selectedPackages, selectedExtensions, selectedContributes, storedPackageIdsInApp), + // visualExtension, + apInspectorData, + )->ignore + }, 5->Some) ( () => { @@ -561,12 +580,12 @@ let make = (~service: service, ~account: option) => { } )->Some } - }, [visualExtension]) + + // }, [visualExtension]) + }, []) <> - {!Method.isLoaded(visualExtension, elementAssembleData) - ?

{React.string(`loading...`)}

- : React.null} + {!Method.isLoaded(elementAssembleData) ?

{React.string(`loading...`)}

: React.null} "meta3d-element-assemble-visual-run-protocol" + // let _getVisualExtensionProtocolName = () => "meta3d-element-assemble-visual-run-protocol" let _getInitData = (service: FrontendUtils.AssembleSpaceType.service, isDebug) => { { + "target": "visualRun", "isDebug": isDebug, "canvas": service.dom.querySelector("#ui-visual-run-canvas")->Meta3dCommonlib.OptionSt.getExn, }->Obj.magic @@ -36,12 +37,12 @@ module Method = { ) => { service.meta3d.updateExtension(. meta3dState, - _getVisualExtensionProtocolName(), + ElementVisualUtils.getEditorWholePackageProtocolName(), _getUpdateData(clearColor, skinName, time), ) ->Js.Promise.then_(meta3dState => { loopFrameID.current = - service.other.requestAnimationOtherFrame(. time => { + service.other.requestAnimationOtherFrame(time => { _loop(service, loopFrameID, apInspectorData, time, meta3dState) })->Some @@ -65,7 +66,7 @@ module Method = { service.meta3d.initExtension(. meta3dState, - _getVisualExtensionProtocolName(), + ElementVisualUtils.getEditorWholePackageProtocolName(), _getInitData(service, isDebug), ) ->Js.Promise.then_(meta3dState => { diff --git a/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/run_element_visual_controller/components/RunElementVisualController.res b/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/run_element_visual_controller/components/RunElementVisualController.res index 3a9eec6d7..1f6235b54 100755 --- a/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/run_element_visual_controller/components/RunElementVisualController.res +++ b/platform/assemble-space/src/external_layer/ui/assemble_space/components/element_assemble/run_element_visual_controller/components/RunElementVisualController.res @@ -3,18 +3,18 @@ open FrontendUtils.Antd open FrontendUtils.AssembleSpaceType module Method = { - let _getVisualExtensionProtocolName = () => "meta3d-element-assemble-visual-run-protocol" + // let _getVisualExtensionProtocolName = () => "meta3d-element-assemble-visual-run-protocol" - let _getVisualExtensionName = () => "meta3d-element-assemble-visual-run" + // let _getVisualExtensionName = () => "meta3d-element-assemble-visual-run" - let getAndSetNewestVisualExtension = (service, dispatch) => { - ElementVisualUtils.getAndSetNewestVisualExtension( - service, - dispatch, - extension => FrontendUtils.ElementAssembleStoreType.SetRunVisualExtension(extension), - (_getVisualExtensionProtocolName(), _getVisualExtensionName()), - ) - } + // let getAndSetNewestVisualExtension = (service, dispatch) => { + // ElementVisualUtils.getAndSetNewestVisualExtension( + // service, + // dispatch, + // extension => FrontendUtils.ElementAssembleStoreType.SetRunVisualExtension(extension), + // (_getVisualExtensionProtocolName(), _getVisualExtensionName()), + // ) + // } let _saveToLocalStorage = (service, appBinaryFile) => { service.storage.initForElementVisualApp()->service.storage.setElementVisualApp(. @@ -35,7 +35,7 @@ module Method = { (canvasData, apInspectorData), ( (selectedPackages, selectedExtensions, selectedContributes, storedPackageIdsInApp), - (runVisualExtension, elementContribute), + elementContribute, ), ) => { ElementVisualUtils.generateApp( @@ -45,7 +45,7 @@ module Method = { selectedExtensions->Meta3dCommonlib.ListSt.toArray, selectedContributes->Meta3dCommonlib.ListSt.toArray, ), - (runVisualExtension, elementContribute), + elementContribute, ) ->_saveToLocalStorage(service, _) ->Meta3dBsMost.Most.tap( @@ -77,7 +77,11 @@ module Method = { selectedContributes, storedPackageIdsInApp, } = apAssembleState - let {canvasData, runVisualExtension, elementContribute} = elementAssembleState + let { + canvasData, + // runVisualExtension, + elementContribute, + } = elementAssembleState ( ( @@ -87,7 +91,11 @@ module Method = { selectedContributes, storedPackageIdsInApp, ), - (canvasData, runVisualExtension, elementContribute), + ( + canvasData, + // runVisualExtension, + elementContribute, + ), ) } } @@ -104,22 +112,26 @@ let make = (~service: service) => { selectedContributes, storedPackageIdsInApp, ), - (canvasData, runVisualExtension, elementContribute), + ( + canvasData, + // runVisualExtension, + elementContribute, + ), ) = service.react.useSelector(. Method.useSelector) - service.react.useEffect1(. () => { - switch runVisualExtension { - | Some(_) => () - | None => - Method.getAndSetNewestVisualExtension(service, dispatch, apInspectorData.isDebug)->ignore - } + // service.react.useEffect1(. () => { + // switch runVisualExtension { + // | Some(_) => () + // | None => + // Method.getAndSetNewestVisualExtension(service, dispatch, apInspectorData.isDebug)->ignore + // } - None - }, []) + // None + // }, []) { - switch (runVisualExtension, elementContribute) { - | (Some(runVisualExtension), Some(elementContribute)) => + switch elementContribute { + | Some(elementContribute) =>