GameObject GetGameObject(CooSceneObject obj) { GameObject gameObject = new GameObject(); gameObject.Name = obj.name ?? string.Empty; gameObject.Transform = new(obj.position, obj.rotation, obj.scale); return(gameObject); }
public static Coocoo3DScene FromScene(Scene saveScene) { Coocoo3DScene scene = new Coocoo3DScene(); scene.objects = new List <CooSceneObject>(); foreach (var obj in saveScene.gameObjects) { var renderer = obj.GetComponent <MMDRendererComponent>(); var animationState = obj.GetComponent <AnimationStateComponent>(); if (renderer != null) { CooSceneObject sceneObject = new CooSceneObject(obj); sceneObject.type = "mmdModel"; sceneObject.path = renderer.meshPath; sceneObject.properties = new Dictionary <string, string>(); sceneObject.properties.Add("motion", animationState.motionPath); sceneObject.materials = new Dictionary <string, _cooMaterial>(); sceneObject.skinning = renderer.skinning; sceneObject.enableIK = renderer.enableIK; foreach (var material in renderer.Materials) { sceneObject.materials[material.Name] = Mat2Mat(material); } scene.objects.Add(sceneObject); } var meshRenderer = obj.GetComponent <MeshRendererComponent>(); if (meshRenderer != null) { CooSceneObject sceneObject = new CooSceneObject(obj); sceneObject.type = "model"; sceneObject.path = meshRenderer.meshPath; sceneObject.materials = new Dictionary <string, _cooMaterial>(); foreach (var material in meshRenderer.Materials) { sceneObject.materials[material.Name] = Mat2Mat(material); } scene.objects.Add(sceneObject); } var visual = obj.GetComponent <VisualComponent>(); if (visual != null) { CooSceneObject decalObject = new CooSceneObject(obj); if (visual.UIShowType == Caprice.Display.UIShowType.Decal) { decalObject.type = "decal"; } if (visual.UIShowType == Caprice.Display.UIShowType.Light) { decalObject.type = "lighting"; } if (visual.UIShowType == Caprice.Display.UIShowType.Particle) { decalObject.type = "particle"; } decalObject.visual = new CooSceneObjectVisual(Mat2Mat(visual.material)); scene.objects.Add(decalObject); } } return(scene); }