Merge branch 'main' of github.com:specklesystems/speckle-server into alessandro/web-2495-create-id-resolver-and-add-user-to-workspace
This commit is contained in:
@@ -61,6 +61,7 @@
|
||||
v-model:automation-name="automationName"
|
||||
:preselected-project="preselectedProject"
|
||||
:is-test-automation="isTestAutomation"
|
||||
:workspace-id="workspaceId"
|
||||
/>
|
||||
<AutomateAutomationCreateDialogSelectFunctionStep
|
||||
v-if="isTestAutomation"
|
||||
|
||||
+2
@@ -12,6 +12,7 @@
|
||||
:allow-unset="false"
|
||||
validate-on-value-update
|
||||
owned-only
|
||||
:workspace-id="workspaceId"
|
||||
/>
|
||||
<FormSelectModels
|
||||
v-if="project?.id"
|
||||
@@ -51,6 +52,7 @@ import type {
|
||||
const props = defineProps<{
|
||||
preselectedProject?: Optional<FormSelectProjects_ProjectFragment>
|
||||
isTestAutomation: boolean
|
||||
workspaceId?: string
|
||||
}>()
|
||||
const project = defineModel<Optional<FormSelectProjects_ProjectFragment>>('project', {
|
||||
required: true
|
||||
|
||||
@@ -133,6 +133,12 @@ const props = defineProps({
|
||||
ownedOnly: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
},
|
||||
/**
|
||||
* Whether to only return projects within a specific workspace
|
||||
*/
|
||||
workspaceId: {
|
||||
type: String as PropType<Optional<string>>
|
||||
}
|
||||
})
|
||||
|
||||
@@ -155,10 +161,11 @@ const invokeSearch = async (search: string) => {
|
||||
if (!isLoggedIn.value) return []
|
||||
const results = await apollo.query({
|
||||
query: searchProjectsQuery,
|
||||
variables: {
|
||||
variables: computed(() => ({
|
||||
search: search.trim().length ? search : null,
|
||||
onlyWithRoles: props.ownedOnly ? [Roles.Stream.Owner] : null
|
||||
}
|
||||
onlyWithRoles: props.ownedOnly ? [Roles.Stream.Owner] : null,
|
||||
...(props.workspaceId && { workspaceId: props.workspaceId })
|
||||
})).value
|
||||
})
|
||||
return results.data.activeUser?.projects.items || []
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ const documents = {
|
||||
"\n query DeveloperSettingsAccessTokens {\n activeUser {\n id\n apiTokens {\n id\n name\n lastUsed\n lastChars\n createdAt\n scopes\n }\n }\n }\n": types.DeveloperSettingsAccessTokensDocument,
|
||||
"\n query DeveloperSettingsApplications {\n activeUser {\n createdApps {\n id\n secret\n name\n description\n redirectUrl\n scopes {\n name\n description\n }\n }\n id\n }\n }\n": types.DeveloperSettingsApplicationsDocument,
|
||||
"\n query DeveloperSettingsAuthorizedApps {\n activeUser {\n id\n authorizedApps {\n id\n description\n name\n author {\n id\n name\n avatar\n }\n }\n }\n }\n": types.DeveloperSettingsAuthorizedAppsDocument,
|
||||
"\n query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {\n activeUser {\n projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n": types.SearchProjectsDocument,
|
||||
"\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n": types.SearchProjectsDocument,
|
||||
"\n query SearchProjectModels($search: String, $projectId: String!) {\n project(id: $projectId) {\n id\n models(limit: 10, filter: { search: $search }) {\n totalCount\n items {\n ...FormSelectModels_Model\n }\n }\n }\n }\n": types.SearchProjectModelsDocument,
|
||||
"\n query ActiveUserGendoLimits {\n activeUser {\n id\n gendoAICredits {\n used\n limit\n resetDate\n }\n }\n }\n": types.ActiveUserGendoLimitsDocument,
|
||||
"\n mutation requestGendoAIRender($input: GendoAIRenderInput!) {\n versionMutations {\n requestGendoAIRender(input: $input)\n }\n }\n": types.RequestGendoAiRenderDocument,
|
||||
@@ -1118,7 +1118,7 @@ export function graphql(source: "\n query DeveloperSettingsAuthorizedApps {\n
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
export function graphql(source: "\n query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {\n activeUser {\n projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"): (typeof documents)["\n query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {\n activeUser {\n projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"];
|
||||
export function graphql(source: "\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"): (typeof documents)["\n query SearchProjects(\n $search: String\n $onlyWithRoles: [String!] = null\n $workspaceId: ID\n ) {\n activeUser {\n projects(\n limit: 10\n filter: {\n search: $search\n onlyWithRoles: $onlyWithRoles\n workspaceId: $workspaceId\n }\n ) {\n totalCount\n items {\n ...FormSelectProjects_Project\n }\n }\n }\n }\n"];
|
||||
/**
|
||||
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
|
||||
*/
|
||||
|
||||
@@ -5266,6 +5266,7 @@ export type DeveloperSettingsAuthorizedAppsQuery = { __typename?: 'Query', activ
|
||||
export type SearchProjectsQueryVariables = Exact<{
|
||||
search?: InputMaybe<Scalars['String']['input']>;
|
||||
onlyWithRoles?: InputMaybe<Array<Scalars['String']['input']> | Scalars['String']['input']>;
|
||||
workspaceId?: InputMaybe<Scalars['ID']['input']>;
|
||||
}>;
|
||||
|
||||
|
||||
@@ -6727,7 +6728,7 @@ export const RevokeAppAccessDocument = {"kind":"Document","definitions":[{"kind"
|
||||
export const DeveloperSettingsAccessTokensDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"DeveloperSettingsAccessTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"apiTokens"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"lastUsed"}},{"kind":"Field","name":{"kind":"Name","value":"lastChars"}},{"kind":"Field","name":{"kind":"Name","value":"createdAt"}},{"kind":"Field","name":{"kind":"Name","value":"scopes"}}]}}]}}]}}]} as unknown as DocumentNode<DeveloperSettingsAccessTokensQuery, DeveloperSettingsAccessTokensQueryVariables>;
|
||||
export const DeveloperSettingsApplicationsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"DeveloperSettingsApplications"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"createdApps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"secret"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"redirectUrl"}},{"kind":"Field","name":{"kind":"Name","value":"scopes"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"description"}}]}}]}},{"kind":"Field","name":{"kind":"Name","value":"id"}}]}}]}}]} as unknown as DocumentNode<DeveloperSettingsApplicationsQuery, DeveloperSettingsApplicationsQueryVariables>;
|
||||
export const DeveloperSettingsAuthorizedAppsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"DeveloperSettingsAuthorizedApps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"authorizedApps"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"description"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"author"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}},{"kind":"Field","name":{"kind":"Name","value":"avatar"}}]}}]}}]}}]}}]} as unknown as DocumentNode<DeveloperSettingsAuthorizedAppsQuery, DeveloperSettingsAuthorizedAppsQueryVariables>;
|
||||
export const SearchProjectsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProjects"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},"defaultValue":{"kind":"NullValue"}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"onlyWithRoles"},"value":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectProjects_Project"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectProjects_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode<SearchProjectsQuery, SearchProjectsQueryVariables>;
|
||||
export const SearchProjectsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProjects"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}},"defaultValue":{"kind":"NullValue"}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"ID"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"projects"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"onlyWithRoles"},"value":{"kind":"Variable","name":{"kind":"Name","value":"onlyWithRoles"}}},{"kind":"ObjectField","name":{"kind":"Name","value":"workspaceId"},"value":{"kind":"Variable","name":{"kind":"Name","value":"workspaceId"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectProjects_Project"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectProjects_Project"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Project"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode<SearchProjectsQuery, SearchProjectsQueryVariables>;
|
||||
export const SearchProjectModelsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"SearchProjectModels"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"search"}},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"project"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"id"},"value":{"kind":"Variable","name":{"kind":"Name","value":"projectId"}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"models"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"limit"},"value":{"kind":"IntValue","value":"10"}},{"kind":"Argument","name":{"kind":"Name","value":"filter"},"value":{"kind":"ObjectValue","fields":[{"kind":"ObjectField","name":{"kind":"Name","value":"search"},"value":{"kind":"Variable","name":{"kind":"Name","value":"search"}}}]}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"totalCount"}},{"kind":"Field","name":{"kind":"Name","value":"items"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"FragmentSpread","name":{"kind":"Name","value":"FormSelectModels_Model"}}]}}]}}]}}]}},{"kind":"FragmentDefinition","name":{"kind":"Name","value":"FormSelectModels_Model"},"typeCondition":{"kind":"NamedType","name":{"kind":"Name","value":"Model"}},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"name"}}]}}]} as unknown as DocumentNode<SearchProjectModelsQuery, SearchProjectModelsQueryVariables>;
|
||||
export const ActiveUserGendoLimitsDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"query","name":{"kind":"Name","value":"ActiveUserGendoLimits"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"activeUser"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"id"}},{"kind":"Field","name":{"kind":"Name","value":"gendoAICredits"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"used"}},{"kind":"Field","name":{"kind":"Name","value":"limit"}},{"kind":"Field","name":{"kind":"Name","value":"resetDate"}}]}}]}}]}}]} as unknown as DocumentNode<ActiveUserGendoLimitsQuery, ActiveUserGendoLimitsQueryVariables>;
|
||||
export const RequestGendoAiRenderDocument = {"kind":"Document","definitions":[{"kind":"OperationDefinition","operation":"mutation","name":{"kind":"Name","value":"requestGendoAIRender"},"variableDefinitions":[{"kind":"VariableDefinition","variable":{"kind":"Variable","name":{"kind":"Name","value":"input"}},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"GendoAIRenderInput"}}}}],"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"versionMutations"},"selectionSet":{"kind":"SelectionSet","selections":[{"kind":"Field","name":{"kind":"Name","value":"requestGendoAIRender"},"arguments":[{"kind":"Argument","name":{"kind":"Name","value":"input"},"value":{"kind":"Variable","name":{"kind":"Name","value":"input"}}}]}]}}]}}]} as unknown as DocumentNode<RequestGendoAiRenderMutation, RequestGendoAiRenderMutationVariables>;
|
||||
|
||||
@@ -1,9 +1,20 @@
|
||||
import { graphql } from '~~/lib/common/generated/gql'
|
||||
|
||||
export const searchProjectsQuery = graphql(`
|
||||
query SearchProjects($search: String, $onlyWithRoles: [String!] = null) {
|
||||
query SearchProjects(
|
||||
$search: String
|
||||
$onlyWithRoles: [String!] = null
|
||||
$workspaceId: ID
|
||||
) {
|
||||
activeUser {
|
||||
projects(limit: 10, filter: { search: $search, onlyWithRoles: $onlyWithRoles }) {
|
||||
projects(
|
||||
limit: 10
|
||||
filter: {
|
||||
search: $search
|
||||
onlyWithRoles: $onlyWithRoles
|
||||
workspaceId: $workspaceId
|
||||
}
|
||||
) {
|
||||
totalCount
|
||||
items {
|
||||
...FormSelectProjects_Project
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
<AutomateAutomationCreateDialog
|
||||
v-model:open="showNewAutomationDialog"
|
||||
:preselected-function="fn"
|
||||
:workspace-id="fnWorkspaceId"
|
||||
/>
|
||||
<AutomateFunctionEditDialog
|
||||
v-if="editModel"
|
||||
@@ -93,6 +94,7 @@ const showEditDialog = ref(false)
|
||||
const showNewAutomationDialog = ref(false)
|
||||
|
||||
const fn = computed(() => result.value?.automateFunction)
|
||||
const fnWorkspaceId = computed(() => fn.value?.workspaceIds?.at(0))
|
||||
const isOwner = computed(
|
||||
() =>
|
||||
!!(
|
||||
@@ -114,8 +116,6 @@ const editModel = computed((): Optional<FunctionDetailsFormValues> => {
|
||||
const func = fn.value
|
||||
if (!func) return undefined
|
||||
|
||||
const workspaceId = func.workspaceIds?.at(0)
|
||||
|
||||
return {
|
||||
name: func.name,
|
||||
description: func.description,
|
||||
@@ -125,7 +125,7 @@ const editModel = computed((): Optional<FunctionDetailsFormValues> => {
|
||||
),
|
||||
tags: func.tags,
|
||||
workspace: activeUserWorkspaces.value.find(
|
||||
(workspace) => workspace.id === workspaceId
|
||||
(workspace) => workspace.id === fnWorkspaceId.value
|
||||
)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -113,7 +113,7 @@ const getStream = () => {
|
||||
// prettier-ignore
|
||||
// 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8?c=%5B-7.66134,10.82932,6.41935,-0.07739,-13.88552,1.8697,0,1%5D'
|
||||
// Revit sample house (good for bim-like stuff with many display meshes)
|
||||
// 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8'
|
||||
'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8'
|
||||
// 'https://latest.speckle.systems/streams/c1faab5c62/commits/ab1a1ab2b6'
|
||||
// 'https://app.speckle.systems/streams/da9e320dad/commits/5388ef24b8'
|
||||
// 'https://latest.speckle.systems/streams/58b5648c4d/commits/60371ecb2d'
|
||||
@@ -469,7 +469,7 @@ const getStream = () => {
|
||||
// 'https://app.speckle.systems/projects/e89b61b65c/models/2a0995f124'
|
||||
|
||||
// 'https://latest.speckle.systems/projects/3fe1880c36/models/65bb4287a8'
|
||||
'https://latest.speckle.systems/projects/db06488e1c/models/21f3930771'
|
||||
// 'https://latest.speckle.systems/projects/db06488e1c/models/21f3930771'
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import {
|
||||
DoubleSide,
|
||||
OrthographicCamera,
|
||||
PerspectiveCamera,
|
||||
Plane,
|
||||
Scene,
|
||||
WebGLRenderer
|
||||
} from 'three'
|
||||
@@ -40,6 +41,12 @@ export class BasitPass extends BaseGPass {
|
||||
return 'BASIT'
|
||||
}
|
||||
|
||||
public setClippingPlanes(planes: Plane[]) {
|
||||
for (const k in this.materialMap) {
|
||||
this.materialMap[k][2].clippingPlanes = planes
|
||||
}
|
||||
}
|
||||
|
||||
protected buildMaterials() {
|
||||
const batches: MeshBatch[] = this.speckleRenderer.batcher.getBatches(
|
||||
undefined,
|
||||
|
||||
@@ -30,7 +30,8 @@ export class ArcticViewPipeline extends ProgressivePipeline {
|
||||
ObjectLayers.STREAM_CONTENT_LINE,
|
||||
ObjectLayers.STREAM_CONTENT_POINT,
|
||||
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
|
||||
ObjectLayers.STREAM_CONTENT_TEXT
|
||||
ObjectLayers.STREAM_CONTENT_TEXT,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
viewportPass.setVisibility(ObjectVisibility.OPAQUE)
|
||||
viewportPass.options = { minIntensity: 0.75 }
|
||||
@@ -72,11 +73,7 @@ export class ArcticViewPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
stencilPass,
|
||||
|
||||
@@ -12,7 +12,7 @@ export class BasitPipeline extends Pipeline {
|
||||
super(speckleRenderer)
|
||||
|
||||
const basitPass = new BasitPass(tree, speckleRenderer)
|
||||
basitPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
|
||||
basitPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH, ObjectLayers.PROPS])
|
||||
basitPass.setClearColor(0x000000, 0)
|
||||
basitPass.setClearFlags(ClearFlags.COLOR)
|
||||
basitPass.outputTarget = null
|
||||
@@ -34,11 +34,7 @@ export class BasitPipeline extends Pipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.passList.push(
|
||||
stencilPass,
|
||||
|
||||
@@ -27,7 +27,8 @@ export class DefaultPipeline extends ProgressivePipeline {
|
||||
ObjectLayers.STREAM_CONTENT_LINE,
|
||||
ObjectLayers.STREAM_CONTENT_POINT,
|
||||
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
|
||||
ObjectLayers.STREAM_CONTENT_TEXT
|
||||
ObjectLayers.STREAM_CONTENT_TEXT,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
opaqueColorPass.setVisibility(ObjectVisibility.OPAQUE)
|
||||
|
||||
@@ -63,11 +64,7 @@ export class DefaultPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
stencilPass,
|
||||
|
||||
@@ -49,7 +49,8 @@ export class EdgesPipeline extends ProgressivePipeline {
|
||||
ObjectLayers.STREAM_CONTENT_LINE,
|
||||
ObjectLayers.STREAM_CONTENT_POINT,
|
||||
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
|
||||
ObjectLayers.STREAM_CONTENT_TEXT
|
||||
ObjectLayers.STREAM_CONTENT_TEXT,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
opaqueColorPass.setVisibility(ObjectVisibility.OPAQUE)
|
||||
|
||||
@@ -103,11 +104,7 @@ export class EdgesPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
depthPassDynamic,
|
||||
|
||||
@@ -79,6 +79,9 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
|
||||
blendPassDynamic.setTexture('tEdges', edgesPassDynamic.outputTarget?.texture)
|
||||
blendPassDynamic.accumulationFrames = this.accumulationFrameCount
|
||||
|
||||
const postBlendGeometryPass = new GeometryPass()
|
||||
postBlendGeometryPass.setLayers([ObjectLayers.PROPS])
|
||||
|
||||
const stencilPass = new StencilPass()
|
||||
stencilPass.setVisibility(ObjectVisibility.STENCIL)
|
||||
stencilPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
|
||||
@@ -89,11 +92,7 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
depthPassNormalDynamic,
|
||||
@@ -101,8 +100,9 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
|
||||
stencilPass,
|
||||
opaqueColorPass,
|
||||
transparentColorPass,
|
||||
stencilMaskPass,
|
||||
blendPassDynamic,
|
||||
postBlendGeometryPass,
|
||||
stencilMaskPass,
|
||||
overlayPass
|
||||
)
|
||||
this.progressiveStage.push(
|
||||
@@ -113,16 +113,18 @@ export class MRTEdgesPipeline extends ProgressivePipeline {
|
||||
stencilPass,
|
||||
opaqueColorPass,
|
||||
transparentColorPass,
|
||||
stencilMaskPass,
|
||||
blendPass,
|
||||
postBlendGeometryPass,
|
||||
stencilMaskPass,
|
||||
overlayPass
|
||||
)
|
||||
this.passthroughStage.push(
|
||||
stencilPass,
|
||||
opaqueColorPass,
|
||||
transparentColorPass,
|
||||
stencilMaskPass,
|
||||
blendPass,
|
||||
postBlendGeometryPass,
|
||||
stencilMaskPass,
|
||||
overlayPass
|
||||
)
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ export class MRTPenViewPipeline extends ProgressivePipeline {
|
||||
return +a.material.colorWrite - +b.material.colorWrite
|
||||
}
|
||||
})()
|
||||
geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
|
||||
geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH, ObjectLayers.PROPS])
|
||||
|
||||
const stencilMaskPass = new StencilMaskPass()
|
||||
stencilMaskPass.setVisibility(ObjectVisibility.STENCIL)
|
||||
@@ -104,11 +104,7 @@ export class MRTPenViewPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
const outputPass = new OutputPass()
|
||||
outputPass.setTexture('tDiffuse', taaPass.outputTarget?.texture)
|
||||
|
||||
@@ -36,7 +36,8 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
|
||||
ObjectLayers.STREAM_CONTENT_LINE,
|
||||
ObjectLayers.STREAM_CONTENT_POINT,
|
||||
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
|
||||
ObjectLayers.STREAM_CONTENT_TEXT
|
||||
ObjectLayers.STREAM_CONTENT_TEXT,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
viewportPass.options = {
|
||||
matcapTexture: {
|
||||
@@ -71,6 +72,9 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
|
||||
blendPassDynamic.setTexture('tEdges', edgesPassDynamic.outputTarget?.texture)
|
||||
blendPassDynamic.accumulationFrames = this.accumulationFrameCount
|
||||
|
||||
const postBlendGeometryPass = new GeometryPass()
|
||||
postBlendGeometryPass.setLayers([ObjectLayers.PROPS])
|
||||
|
||||
const stencilPass = new StencilPass()
|
||||
stencilPass.setVisibility(ObjectVisibility.STENCIL)
|
||||
stencilPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
|
||||
@@ -81,11 +85,7 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
depthPassNormalDynamic,
|
||||
@@ -93,8 +93,9 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
|
||||
stencilPass,
|
||||
shadowcatcherPass,
|
||||
viewportPass,
|
||||
stencilMaskPass,
|
||||
blendPassDynamic,
|
||||
postBlendGeometryPass,
|
||||
stencilMaskPass,
|
||||
overlayPass
|
||||
)
|
||||
this.progressiveStage.push(
|
||||
@@ -104,16 +105,18 @@ export class MRTShadedViewPipeline extends ProgressivePipeline {
|
||||
stencilPass,
|
||||
shadowcatcherPass,
|
||||
viewportPass,
|
||||
stencilMaskPass,
|
||||
blendPass,
|
||||
postBlendGeometryPass,
|
||||
stencilMaskPass,
|
||||
overlayPass
|
||||
)
|
||||
this.passthroughStage.push(
|
||||
stencilPass,
|
||||
shadowcatcherPass,
|
||||
viewportPass,
|
||||
stencilMaskPass,
|
||||
blendPass,
|
||||
stencilMaskPass,
|
||||
postBlendGeometryPass,
|
||||
overlayPass
|
||||
)
|
||||
|
||||
|
||||
@@ -110,7 +110,7 @@ export class PenViewPipeline extends ProgressivePipeline {
|
||||
return +a.material.colorWrite - +b.material.colorWrite
|
||||
}
|
||||
})()
|
||||
geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH])
|
||||
geometryPass.setLayers([ObjectLayers.STREAM_CONTENT_MESH, ObjectLayers.PROPS])
|
||||
|
||||
const stencilMaskPass = new StencilMaskPass()
|
||||
stencilMaskPass.setVisibility(ObjectVisibility.STENCIL)
|
||||
|
||||
@@ -46,7 +46,8 @@ export class ShadedViewPipeline extends ProgressivePipeline {
|
||||
ObjectLayers.STREAM_CONTENT_LINE,
|
||||
ObjectLayers.STREAM_CONTENT_POINT,
|
||||
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
|
||||
ObjectLayers.STREAM_CONTENT_TEXT
|
||||
ObjectLayers.STREAM_CONTENT_TEXT,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
viewportPass.options = {
|
||||
matcapTexture: {
|
||||
@@ -91,11 +92,7 @@ export class ShadedViewPipeline extends ProgressivePipeline {
|
||||
stencilMaskPass.setClearFlags(ClearFlags.DEPTH)
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
depthPassDynamic,
|
||||
|
||||
@@ -39,7 +39,8 @@ export class TAAPipeline extends ProgressivePipeline {
|
||||
ObjectLayers.STREAM_CONTENT_LINE,
|
||||
ObjectLayers.STREAM_CONTENT_POINT,
|
||||
ObjectLayers.STREAM_CONTENT_POINT_CLOUD,
|
||||
ObjectLayers.STREAM_CONTENT_TEXT
|
||||
ObjectLayers.STREAM_CONTENT_TEXT,
|
||||
ObjectLayers.PROPS
|
||||
])
|
||||
opaqueColorPass.setVisibility(ObjectVisibility.OPAQUE)
|
||||
|
||||
@@ -131,11 +132,7 @@ export class TAAPipeline extends ProgressivePipeline {
|
||||
jitteredStencilMaskPass.outputTarget = renderTarget
|
||||
|
||||
const overlayPass = new GeometryPass()
|
||||
overlayPass.setLayers([
|
||||
ObjectLayers.PROPS,
|
||||
ObjectLayers.OVERLAY,
|
||||
ObjectLayers.MEASUREMENTS
|
||||
])
|
||||
overlayPass.setLayers([ObjectLayers.OVERLAY, ObjectLayers.MEASUREMENTS])
|
||||
|
||||
this.dynamicStage.push(
|
||||
stencilPass,
|
||||
|
||||
Reference in New Issue
Block a user