public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var lightIndex = ((KHR_lights_punctualExtension)extension).lightIndex; var lights = (KHR_lights_punctualExtension)importer.root.Extensions[ExtensionName]; var l = gameObject.AddComponent <Light>(); var light = lights.lights[lightIndex]; l.type = light.type; l.color = light.color; l.intensity = light.intensity; var type = light.type; if (type == LightType.Directional) { } else if (type == LightType.Point) { l.range = light.range; } else if (type == LightType.Spot) { l.range = light.range; l.spotAngle = light.outerConeAngle * 2 * 180 / (float)Math.PI; } }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var physicBody = (Sein_physicBodyExtension)extension; var rigidBody = gameObject.AddComponent <SeinRigidBody>(); rigidBody.mass = physicBody.rigidBody.mass; rigidBody.restitution = physicBody.rigidBody.restitution; rigidBody.friction = physicBody.rigidBody.friction; rigidBody.unControl = physicBody.rigidBody.unControl; rigidBody.physicStatic = physicBody.rigidBody.physicStatic; rigidBody.sleeping = physicBody.rigidBody.sleeping; foreach (var c in physicBody.colliders) { if (c is SphereCollider) { var collider = gameObject.AddComponent <SphereCollider>(); collider.center = ((SphereCollider)c).center; collider.radius = ((SphereCollider)c).radius; collider.isTrigger = c.isTrigger; } else if (c is BoxCollider) { var collider = gameObject.AddComponent <BoxCollider>(); collider.center = ((BoxCollider)c).center; collider.size = ((BoxCollider)c).size; collider.isTrigger = c.isTrigger; } } UnityEngine.Object.DestroyImmediate(physicBody.go); }
private void LoadAtlas(Sein_atlasExtension.Atlas atlas, EditorImporter importer, string basePath, int i) { var json = JObject.FromObject(atlas.json); var imageId = (int)json["meta"]["image"]["index"]; json["meta"]["image"] = importer.root.Images[imageId].Uri; var dest = Path.Combine(basePath, (string)json["name"]); if (Directory.Exists(dest)) { int index = 1; while (true) { if (!Directory.Exists(dest + "-" + index)) { dest += "-" + index; break; } index += 1; } } Directory.CreateDirectory(dest); AssetDatabase.Refresh(); var destInUnity = "Assets" + dest.Replace(Application.dataPath, ""); var seinAtlas = ScriptableObject.CreateInstance <SeinAtlas>(); AssetDatabase.CreateAsset(seinAtlas, Path.Combine(destInUnity, (string)json["name"] + ".asset")); seinAtlas.Import(json, importer.gltfDirectoryPath); IMPORTED_ATLASES[i] = seinAtlas; }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var test = (Sein_testExtension)extension; var testComponent = gameObject.AddComponent <SeinTest>(); testComponent.rotateSpeed = test.rotateSpeed; }
public static void Import(string extensionName, EditorImporter importer, Texture2D texture, GLTF.Schema.Texture gltfTex, Extension extension) { if (Name2Extensions.ContainsKey(extensionName)) { Name2Extensions[extensionName].Import(importer, texture, gltfTex, extension); } }
public override void Import(EditorImporter importer, UnityEngine.Material material, GLTF.Schema.Material gltfMat, Extension extension) { if (material.HasProperty("unlit")) { material.SetInt("unlit", 1); } }
public static void Import(string extensionName, EditorImporter importer, UnityEngine.Mesh mesh, GLTF.Schema.Mesh gltfMesh, Extension extension) { if (Name2Extensions.ContainsKey(extensionName)) { Name2Extensions[extensionName].Import(importer, mesh, gltfMesh, extension); } }
public static void Import(string extensionName, EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { if (Name2Extensions.ContainsKey(extensionName)) { Name2Extensions[extensionName].Import(importer, gameObject, gltfNode, extension); } }
public static void Import(string extensionName, EditorImporter importer, Extension extension) { if (Name2Extensions.ContainsKey(extensionName)) { Name2Extensions[extensionName].Import(importer, extension); } }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var source = (Sein_audioListenerExtension)extension; var audioSource = gameObject.AddComponent <SeinAudioListener>(); audioSource.rotatable = source.rotatable; }
public override void Import(EditorImporter importer, UnityEngine.Material material, GLTF.Schema.Material gltfMat, Extension extension) { var mat = (Sein_customMaterialExtension)extension; var className = "Sein/" + mat.className; var shader = Shader.Find(className); var alphaMode = gltfMat.AlphaMode; if (alphaMode == AlphaMode.BLEND) { mat.transparent = true; } else if (alphaMode == AlphaMode.MASK) { mat.transparent = true; } if (shader == null) { shader = Shader.Find(className.Replace("Material", "")); } if (shader == null) { mat.material = material; mat.isComponent = true; return; } material.shader = shader; if (material.HasProperty("cloneForInst")) { material.SetInt("cloneForInst", 1); } material.SetInt("_Mode", (int)alphaMode); material.SetFloat("_Cutoff", (float)gltfMat.AlphaCutoff); WriteUiforms(importer, material, mat.uniformsTexture); WriteUiforms(importer, material, mat.uniformsCubeTexture); WriteUiforms(importer, material, mat.uniformsFloat); WriteUiforms(importer, material, mat.uniformsFloatVec2); WriteUiforms(importer, material, mat.uniformsFloatVec3); WriteUiforms(importer, material, mat.uniformsFloatVec4); WriteUiforms(importer, material, mat.uniformsColor); WriteUiforms(importer, material, mat.uniformsFloatMat2); WriteUiforms(importer, material, mat.uniformsFloatMat3); WriteUiforms(importer, material, mat.uniformsFloatMat4); WriteUiforms(importer, material, mat.uniformsInt); WriteUiforms(importer, material, mat.uniformsIntVec2); WriteUiforms(importer, material, mat.uniformsIntVec3); WriteUiforms(importer, material, mat.uniformsIntVec4); }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var mr = gameObject.GetComponent <Renderer>(); var r = (Sein_rendererExtension)extension; if (mr != null) { mr.shadowCastingMode = r.castShadows ? UnityEngine.Rendering.ShadowCastingMode.On : UnityEngine.Rendering.ShadowCastingMode.Off; mr.receiveShadows = r.receiveShadows; } }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var n = (Sein_nodeExtension)extension; var seinNode = gameObject.AddComponent <SeinNode>(); seinNode.selfType = n.selfType; seinNode.className = n.className; seinNode.tag = n.tag; seinNode.layer = n.layer; seinNode.persistent = n.persistent; seinNode.emitComponentsDestroy = n.emitComponentsDestroy; seinNode.updateOnEverTick = n.updateOnEverTick; seinNode.isStatic = n.isStatic; seinNode.skipThisNode = n.skipThisNode; }
private IEnumerator LoadClips(EditorImporter importer, Sein_audioClipsExtension extension) { var clips = extension.clips; var basePath = Path.Combine(importer.importDirectoryPath, "audios"); Directory.CreateDirectory(basePath); int i = 0; foreach (var clip in clips) { LoadClip(clip, importer.gltfDirectoryPath, basePath, i); importer.SetProgress("AUDIO", (i + 1), clips.Count); i += 1; yield return(null); } }
private IEnumerator LoadAtlases(EditorImporter importer, Sein_atlasExtension extension) { var atlases = extension.atlases; var basePath = Path.Combine(importer.importDirectoryPath, "atlases"); Directory.CreateDirectory(basePath); IMPORTED_ATLASES = new SeinAtlas[atlases.Count]; int i = 0; foreach (var atlas in atlases) { LoadAtlas(atlas, importer, basePath, i); importer.SetProgress("ATLAS", (i + 1), atlases.Count); i += 1; yield return(null); } }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var source = (Sein_audioSourceExtension)extension; var audioSource = gameObject.AddComponent <SeinAudioSource>(); audioSource.defaultClip = source.defaultClip; audioSource.needAutoPlay = source.needAutoPlay; audioSource.isSpaceAudio = source.isSpaceAudio; audioSource.autoPlayOptions = source.autoPlayOptions; audioSource.spaceOptions = source.spaceOptions; audioSource.clips = new SeinAudioOneClip[source.clips.Count]; for (int i = 0; i < source.clips.Count; i += 1) { var clip = new SeinAudioOneClip(); clip.name = source.clips[i].Key; clip.clip = Sein_audioClipsExtensionFactory.IMPORTED_CLIPS[source.clips[i].Value]; audioSource.clips[i] = clip; } }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var globalEx = (Sein_spriteExtension)importer.root.Extensions[ExtensionName]; var sp = globalEx.sprites[((Sein_spriteExtension)extension).index]; var ex = (Sein_spriteExtension)extension; var sprite = gameObject.AddComponent <SeinSprite>(); sprite.width = sp.width; sprite.height = sp.height; sprite.Generate(); sprite.isBillboard = sp.isBillboard; sprite.frustumTest = sp.frustumTest; sprite.frameName = sp.frameName; sprite.atlas = Sein_atlasExtensionFactory.IMPORTED_ATLASES[sp.atlasId]; if (sp.materialId != null) { sprite.material = importer.assetCache.MaterialCache[sp.materialId.Id].UnityMaterial; } sprite.SetFrame(sprite.atlas, sprite.frameName); }
public virtual void Import(EditorImporter importer, UnityEngine.Material material, GLTF.Schema.Material gltfMat, Extension extension) { }
public override void Import(EditorImporter importer, Extension extension) { importer.taskManager.addTask(LoadAtlases(importer, (Sein_atlasExtension)extension)); }
public override void Import(EditorImporter importer, Extension extension) { importer.taskManager.addTask(LoadClips(importer, (Sein_audioClipsExtension)extension)); }
/* * @todo: import entry */ public virtual void Import(EditorImporter importer, Extension extension) { }
private void WriteUiforms <TValue>(EditorImporter importer, UnityEngine.Material material, SeinMaterialUniform <TValue>[] uniforms) { foreach (SeinMaterialUniform <TValue> uniform in uniforms) { var name = uniform.name; switch (uniform.type) { case (ESeinMaterialUniformType.FLOAT): material.SetFloat(name, (uniform as SeinMaterialUniformFloat).value); break; case (ESeinMaterialUniformType.INT): material.SetInt(name, (uniform as SeinMaterialUniformInt).value); break; case (ESeinMaterialUniformType.SAMPLER_2D): var tex = importer.GetTexture((uniform as SeinMaterialUniformTexture).id.Id); material.SetTexture(name, tex); break; // todo: support cubemap case (ESeinMaterialUniformType.SAMPLER_CUBE): break; case (ESeinMaterialUniformType.FLOAT_VEC2): var fv2 = (uniform as SeinMaterialUniformFloatVec2).value; material.SetFloatArray(name, new List <float> { fv2.x, fv2.y }); break; case (ESeinMaterialUniformType.FLOAT_VEC3): var fv3 = (uniform as SeinMaterialUniformFloatVec3).value; material.SetFloatArray(name, new List <float> { fv3.x, fv3.y, fv3.z }); break; case (ESeinMaterialUniformType.FLOAT_VEC4): if (uniform.GetType() == typeof(SeinMaterialUniformColor)) { material.SetColor(name, (uniform as SeinMaterialUniformColor).value); } material.SetVector(name, (uniform as SeinMaterialUniformFloatVec4).value); break; case (ESeinMaterialUniformType.FLOAT_MAT2): material.SetMatrix(name, (uniform as SeinMaterialUniformFloatMat2).value); break; case (ESeinMaterialUniformType.FLOAT_MAT3): material.SetMatrix(name, (uniform as SeinMaterialUniformFloatMat3).value); break; case (ESeinMaterialUniformType.FLOAT_MAT4): material.SetMatrix(name, (uniform as SeinMaterialUniformFloatMat4).value); break; default: break; } } }
public virtual void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var seinAnimator = (Sein_animatorExtension)extension; var id = ""; for (var i = 0; i < seinAnimator.modelAnimations.Length; i += 1) { var prefix = (seinAnimator.prefixes != null && seinAnimator.prefixes.Length > i) ? seinAnimator.prefixes[i] : seinAnimator.prefix; var name = seinAnimator.modelAnimations[i]; if (prefix != null && prefix.Length > 0) { id += prefix + "@" + name; } else { id += name; } } AnimatorController controller; if (IMPORTED_CONTROLLERS.ContainsKey(id)) { controller = IMPORTED_CONTROLLERS[id]; } else { var controllerName = seinAnimator.name != null && seinAnimator.name != "" ? seinAnimator.name : gameObject.name; var controllerPath = Path.Combine(new string[] { importer.importDirectoryPath, "animations", controllerName + ".controller" }); if (File.Exists(controllerPath)) { int index = 1; while (true) { controllerPath = Path.Combine(new string[] { importer.importDirectoryPath, "animations", controllerName + "-" + index + ".controller" }); if (!File.Exists(controllerPath)) { break; } } } controller = AnimatorController.CreateAnimatorControllerAtPath(GLTFUtils.getPathProjectFromAbsolute(controllerPath)); for (var i = 0; i < seinAnimator.modelAnimations.Length; i += 1) { var prefix = (seinAnimator.prefixes != null && seinAnimator.prefixes.Length > i) ? seinAnimator.prefixes[i] : seinAnimator.prefix; var name = seinAnimator.modelAnimations[i]; if (prefix != null && prefix.Length > 0) { name = prefix + "@" + name; } if (!IMPORTED_CLIPS.ContainsKey(name)) { continue; } controller.AddMotion((Motion)IMPORTED_CLIPS[name]); } } var animator = gameObject.AddComponent <Animator>(); animator.runtimeAnimatorController = controller; }
public GlTFImporter(EditorImporter.ProgressCallback progressCallback, EditorImporter.RefreshWindow finishCallback) { _importer = new EditorImporter(progressCallback, finishCallback); _unzippedFiles = new List <string>(); }
public override void Import(EditorImporter importer, Extension extension) { }
public virtual void Import(EditorImporter importer, UnityEngine.Mesh mesh, GLTF.Schema.Mesh gltfMesh, Extension extension) { }
public virtual void Import(EditorImporter importer, Texture2D texture, GLTF.Schema.Texture gltfTex, Extension extension) { }
public override void Import(EditorImporter importer, GameObject gameObject, Node gltfNode, Extension extension) { var seinAnimator = (Sein_animatorExtension)extension; var id = ""; for (var i = 0; i < seinAnimator.modelAnimations.Length; i += 1) { var prefix = (seinAnimator.prefixes != null && seinAnimator.prefixes.Length > i) ? seinAnimator.prefixes[i] : seinAnimator.prefix; var name = seinAnimator.modelAnimations[i]; if (prefix != null && prefix.Length > 0) { id += prefix + "@" + name; } else { id += name; } } AnimatorController controller; if (IMPORTED_CONTROLLERS.ContainsKey(id)) { controller = IMPORTED_CONTROLLERS[id]; } else { var controllerName = seinAnimator.name != null && seinAnimator.name != "" ? seinAnimator.name : gameObject.name; var controllerPath = Path.Combine(new string[] { importer.importDirectoryPath, "animations", controllerName + ".controller" }); if (File.Exists(controllerPath)) { int index = 1; while (true) { controllerPath = Path.Combine(new string[] { importer.importDirectoryPath, "animations", controllerName + "-" + index + ".controller" }); if (!File.Exists(controllerPath)) { break; } } } controller = AnimatorController.CreateAnimatorControllerAtPath(GLTFUtils.getPathProjectFromAbsolute(controllerPath)); for (var i = 0; i < seinAnimator.modelAnimations.Length; i += 1) { var prefix = (seinAnimator.prefixes != null && seinAnimator.prefixes.Length > i) ? seinAnimator.prefixes[i] : seinAnimator.prefix; var name = seinAnimator.modelAnimations[i]; if (prefix != null && prefix.Length > 0) { name = prefix + "@" + name; } if (!IMPORTED_CLIPS.ContainsKey(name)) { continue; } var clip = IMPORTED_CLIPS[name]; controller.AddMotion((Motion)clip); var nodePath = AnimationUtility.CalculateTransformPath(gameObject.transform, importer.sceneObject.transform); var temp = new List <Temp>(); foreach (var binding in AnimationUtility.GetCurveBindings(clip)) { var path = binding.path; var realPath = path.Substring(nodePath.Length); var propertyName = binding.propertyName; var type = binding.type; var curve = AnimationUtility.GetEditorCurve(clip, binding); temp.Add(new Temp { path = realPath, propertyName = propertyName, type = type, curve = curve }); } clip.ClearCurves(); foreach (var binding in temp) { clip.SetCurve(binding.path, binding.type, binding.propertyName, binding.curve); } } } var animator = gameObject.AddComponent <Animator>(); animator.runtimeAnimatorController = controller; }