@@ -8,12 +8,13 @@ import { importFile } from "meta3d-file-ts-utils/src/ImportFileUtils"
88import { getLanguageTextData , getLanguageTextVariableData } from "meta3d-language-utils/src/Main"
99import { languageKey , languageVariableKey } from "meta3d-language-utils/src/Type"
1010import { model } from "meta3d-action-mod-unit-publish-to-game-protocol/src/UnitType"
11+ import { processTripoZip } from "bone_converter/src/tool/upload_pipeline"
1112
1213let _loadFBX = ( api : api ) : Promise < [ boolean , nullable < fbxName > , nullable < fbxData > ] > => {
1314 return new Promise ( ( resolve , reject ) => {
1415 importFile ( ( file : any , result : any ) => {
15- if ( ! file . name . includes ( ".fbx" ) ) {
16- reject ( new Error ( "文件后缀名应该是.fbx " ) )
16+ if ( ! / \. ( f b x | z i p ) $ / i . test ( file . name ) ) {
17+ reject ( new Error ( "文件后缀名应该是.fbx或.zip " ) )
1718 }
1819
1920 // resolve([true, api.nullable.return(file.name.slice(0, -3)), api.nullable.return(result as ArrayBuffer)])
@@ -84,6 +85,51 @@ export let getContribute: getContributeMeta3D<actionContribute<uiData, state>> =
8485 return meta3dState
8586 }
8687
88+ if ( fbxName && fbxData && / \. z i p $ / i. test ( fbxName ) ) {
89+ return processTripoZip ( fbxData ) . then ( ( { fbxName : tripoFbxName , fbxData : tripoFbxData , report, warnings } ) => {
90+ console . log ( "processTripoZip" , tripoFbxName , report , warnings )
91+
92+ let key = actionParams && actionParams . length > 0 ? actionParams [ 0 ] : null
93+ let initState = api . action . getActionState < initState > ( meta3dState , initActionName )
94+
95+ switch ( key ) {
96+ case "lod1" :
97+ if ( tripoFbxData . byteLength > 3 * 1024 * 1024 ) {
98+ api . message . warn ( getLanguageTextVariableData ( api , meta3dState , initState . languageTextDataByVariable , languageVariableKey . LimitFileSize ) ( 3 ) )
99+ return meta3dState
100+ }
101+ break
102+ case "lod2" :
103+ if ( tripoFbxData . byteLength > 1.5 * 1024 * 1024 ) {
104+ api . message . warn ( getLanguageTextVariableData ( api , meta3dState , initState . languageTextDataByVariable , languageVariableKey . LimitFileSize ) ( 1.5 ) )
105+ return meta3dState
106+ }
107+ break
108+ default :
109+ throw new Error ( "error" )
110+ }
111+
112+ return new Promise < meta3dState > ( ( resolve , reject ) => {
113+ let eventSourcingService = api . nullable . getExn ( api . getPackageService < editorWholeService > ( meta3dState , "meta3d-editor-whole-protocol" ) ) . event ( meta3dState ) . eventSourcing ( meta3dState )
114+
115+
116+ resolve ( eventSourcingService . addEvent < inputData > ( meta3dState , {
117+ name : eventName ,
118+ isOnlyRead : true ,
119+ inputData : [
120+ uiData ,
121+ tripoFbxName ,
122+ tripoFbxData ,
123+ actionParams
124+ ]
125+ } ) )
126+ } )
127+ } ) . catch ( ( error ) => {
128+ api . message . error ( error )
129+ return meta3dState
130+ } )
131+ }
132+
87133 return new Promise < meta3dState > ( ( resolve , reject ) => {
88134 let eventSourcingService = api . nullable . getExn ( api . getPackageService < editorWholeService > ( meta3dState , "meta3d-editor-whole-protocol" ) ) . event ( meta3dState ) . eventSourcing ( meta3dState )
89135
0 commit comments