diff --git a/src/config.js b/src/config.js index ccc630671..93459b844 100644 --- a/src/config.js +++ b/src/config.js @@ -57,6 +57,7 @@ import MediaFrameNode from "./editor/nodes/MediaFrameNode"; import MediaFrameNodeEditor from "./ui/properties/MediaFrameNodeEditor"; import SketchfabSource from "./ui/assets/sources/SketchfabSource"; +import IcosaSource from "./ui/assets/sources/IcosaSource"; import BingImagesSource from "./ui/assets/sources/BingImagesSource"; import BingVideosSource from "./ui/assets/sources/BingVideosSource"; import TenorSource from "./ui/assets/sources/TenorSource"; @@ -107,6 +108,7 @@ export function createEditor(api, settings) { editor.registerSource(new ArchitectureKitSource(api)); editor.registerSource(new RockKitSource(api)); editor.registerSource(new SketchfabSource(api)); + editor.registerSource(new IcosaSource(api)); editor.registerSource(new BingImagesSource(api)); editor.registerSource(new BingVideosSource(api)); editor.registerSource(new HubsSoundPackSource(editor)); diff --git a/src/editor/nodes/ModelNode.js b/src/editor/nodes/ModelNode.js index 289c13b5c..90c657511 100644 --- a/src/editor/nodes/ModelNode.js +++ b/src/editor/nodes/ModelNode.js @@ -270,7 +270,7 @@ export default class ModelNode extends EditorNodeMixin(Model) { getAttribution() { // Sketchfab models use an extra object inside the asset object - // Blender exporters add a copyright property to the asset object + // Blender & Icosa Gallery exporters add a copyright property to the asset object const name = this.name.replace(/\.[^/.]+$/, ""); const assetDef = this.gltfJson.asset; const attributions = {}; diff --git a/src/ui/assets/sources/IcosaSource.js b/src/ui/assets/sources/IcosaSource.js new file mode 100644 index 000000000..b8c89f116 --- /dev/null +++ b/src/ui/assets/sources/IcosaSource.js @@ -0,0 +1,34 @@ +import ModelMediaSource from "../ModelMediaSource"; +import { TransformPivot } from "../../../editor/controls/SpokeControls"; + +export default class IcosaSource extends ModelMediaSource { + constructor(api) { + super(api); + this.id = "icosa"; + this.name = "Icosa Gallery"; + this.tags = [ + { label: "Animals & Pets", value: "animals" }, + { label: "Architecture", value: "architecture" }, + { label: "Art", value: "art" }, + { label: "Culture", value: "culture" }, + { label: "Events", value: "events" }, + { label: "Food", value: "food" }, + { label: "History", value: "history" }, + { label: "Home", value: "home" }, + { label: "Miscellaneous", value: "miscellaneous" }, + { label: "Nature", value: "nature" }, + { label: "Objects", value: "objects" }, + { label: "People", value: "people" }, + { label: "Places", value: "places" }, + { label: "Science", value: "science" }, + { label: "Sports", value: "sports" }, + { label: "Tech", value: "tech" }, + { label: "Transport", value: "transport" }, + { label: "Travel", value: "travel" } + ]; + + this.searchLegalCopy = "Search by Icosa"; + this.privacyPolicyUrl = "https://icosa.gallery/privacy-policy"; + this.transformPivot = TransformPivot.Bottom; + } +} \ No newline at end of file diff --git a/src/ui/landing/LandingPage.js b/src/ui/landing/LandingPage.js index 3dbaa5918..38a691828 100644 --- a/src/ui/landing/LandingPage.js +++ b/src/ui/landing/LandingPage.js @@ -128,7 +128,8 @@ export default class LandingPage extends Component {
Explore images, videos, and 3D models from around the web, all without opening up a new tab. With - media integrations from Sketchfab, you'll be on your way to creating a scene in no time. + media integrations from Sketchfab and Icosa Gallery, you'll be on your way to creating a scene in no + time.