Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }