public override void Convert(Node unrealNode, SceneBuilder builder, Node parentUnrealNode, GameObject parentGameObject)
        {
            var nodeAsT = unrealNode as T;

            if (nodeAsT == null)
            {
                // FIXME:
                throw new System.Exception("Unexpected node type");
            }

            CreateComponent(builder, nodeAsT, parentUnrealNode, parentGameObject);
        }
        public override void Convert(Node unrealNode, SceneBuilder builder, Node parentUnrealNode, GameObject parentGameObject)
        {
            var nodeAsT = unrealNode as T;

            if (nodeAsT == null)
            {
                // FIXME:
                throw new System.Exception("Unexpected node type");
            }

            var gameObject = CreateGameObject(builder, nodeAsT);

            if (null == gameObject)
            {
                return;
            }

            foreach (var childNode in unrealNode.Children)
            {
                var converter = builder.FindConverterForUnrealNode(childNode);
                converter?.Convert(childNode, builder, unrealNode, gameObject);
            }
        }
 protected virtual GameObject CreateGameObject(SceneBuilder builder, T unrealNode)
 {
     return(new GameObject(unrealNode.Name));
 }
        public static void OutputFromMap(T3D.Map.Map map, string sceneDestination)
        {
            var converter = new SceneBuilder(map);

            converter.OutputScene(sceneDestination);
        }
 protected abstract void CreateComponent(SceneBuilder builder, T unrealNode, Node parentUnrealNode, GameObject parentGameObject);