Exemplo n.º 1
0
        private void MayAttachVisualModel(EntityModel entity, GameObject gameObject)
        {
            var meshRendererComponent = gameObject.GetComponent <MeshRenderer>();
            var meshFilterComponent   = gameObject.GetComponent <MeshFilter>();

            if (meshFilterComponent == null || meshRendererComponent == null)
            {
                return;
            }

            entity.Id       = gameObject.name;
            entity.IsStatic = gameObject.isStatic;

            var componentModel = new EntityComponentModel {
                Id = "VisualModel"
            };
            var meshReferenceItem = new EntityComponentDataItemModel
            {
                Key = "MeshReference"
            };

            componentModel.Data.Add(meshReferenceItem);
            entity.Components.Add(componentModel);

            var exportsModel = _exportType != ModelExportType.No;
            var path         = AssetDatabase.GetAssetPath(meshFilterComponent.sharedMesh ?? meshFilterComponent.mesh);

            if (!string.IsNullOrEmpty(path) && exportsModel)
            {
                if (_exportType == ModelExportType.OriginalModelFile)
                {
                    meshReferenceItem.Value = _filePathExporter.ExportAssetToModels(path);
                }
                else
                {
                    meshReferenceItem.Value = ConvertModelToPmeshAndSaveToFolder(meshFilterComponent.sharedMesh ?? meshFilterComponent.mesh,
                                                                                 meshRendererComponent.material,
                                                                                 path);
                }
            }

            var texture          = meshRendererComponent.sharedMaterial.mainTexture;
            var textureAssetPath = AssetDatabase.GetAssetPath(texture);

            if (!string.IsNullOrEmpty(textureAssetPath) && exportsModel)
            {
                _filePathExporter.ExportAssetToModels(textureAssetPath);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a new instance of an <see cref="EntityComponent"/>.
        /// </summary>
        public static EntityComponent GetComponent(Entity parent, EntityComponentModel dataModel)
        {
            EnsureComponentCreatorsAreLoaded();

            var parameters = new EntityComponentDataCreationStruct
            {
                Parent = parent,
                Data = dataModel.Data,
                Name = dataModel.Id
            };

            Type componentType;
            if (_componentsByType.TryGetValue(dataModel.Id.ToLowerInvariant(), out componentType))
            {
                return (EntityComponent)Activator.CreateInstance(componentType, parameters);
            }

            // fallback entity component:
            return new DataStorageEntityComponent(parameters);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates a new instance of an <see cref="EntityComponent"/>.
        /// </summary>
        public static EntityComponent GetComponent(Entity parent, EntityComponentModel dataModel)
        {
            EnsureComponentCreatorsAreLoaded();

            var parameters = new EntityComponentDataCreationStruct
            {
                Parent = parent,
                Data   = dataModel.Data,
                Name   = dataModel.Id
            };

            Type componentType;

            if (_componentsByType.TryGetValue(dataModel.Id.ToLowerInvariant(), out componentType))
            {
                return((EntityComponent)Activator.CreateInstance(componentType, parameters));
            }

            // fallback entity component:
            return(new DataStorageEntityComponent(parameters));
        }