public void Add(GameObject go)
        {
            // containers
            VisitToCreateLightmap();
            VisitToCreateMesh_r(go);
            VisitToCreateMaterial_r(go);
            VisitToCreateTexture(containerTable.GetEnumerable <MaterialContainer>());

            // game object
            VisitToCreateGameObjectNode_r(go);

            // nodes - for component
            VisitToCreateNode_r <Camera, CameraNode>(go);
            VisitToCreateNode_r <Light, LightNode>(go);
            VisitToCreateRenderNode_r(go);
            VisitToCreateScriptNode_r(go);

            // script variable에서 참조하는 객체

            foreach (var node in graphNodeTable.GetEnumerable <ScriptNode>())
            {
                foreach (var val in node.VariableEnumerable)
                {
                    Material mtl = val.GetMaterial();
                    if (mtl && !containerTable.Contains <MaterialContainer>(mtl.GetInstanceID().ToString()))
                    {
                        var c = new MaterialContainer(mtl);
                        containerTable.Add(c.InstanceId, c);
                    }

                    Texture tex = val.GetTexture();
                    if (tex && !containerTable.Contains <TextureContainer>(tex.GetInstanceID().ToString()))
                    {
                        var c = new TextureContainer(tex);
                        containerTable.Add(c.InstanceId, c);
                    }
                }
            }
            // 새로운 material이 추가되면 연관된 texture가 생겼을지 모른다
            VisitToCreateTexture(containerTable.GetEnumerable <MaterialContainer>());
        }
Beispiel #2
0
        public void BuildHierarchy(INodeTable <string> table)
        {
            // TODO 부모 없는 모다 찾아서 붙이기
            var parentlist = new List <GameObjectNode>();

            foreach (var n in table.GetEnumerable <GameObjectNode>())
            {
                if (n.ParentObject == null)
                {
                    parentlist.Add(n);
                }
            }
            Children = parentlist.ToArray();
        }