当前位置: 首页>>代码示例>>C#>>正文


C# pb_Object.CenterPivot方法代码示例

本文整理汇总了C#中pb_Object.CenterPivot方法的典型用法代码示例。如果您正苦于以下问题:C# pb_Object.CenterPivot方法的具体用法?C# pb_Object.CenterPivot怎么用?C# pb_Object.CenterPivot使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在pb_Object的用法示例。


在下文中一共展示了pb_Object.CenterPivot方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: CombineObjects

	/**
	 *	\brief Given an array of "donors", this method returns a merged #pb_Object.
	 */
	 public static bool CombineObjects(pb_Object[] pbs, out pb_Object combined)
	 {
	 	combined = null;

	 	if(pbs.Length < 1) return false;

	 	List<Vector3> v = new List<Vector3>();
	 	List<pb_Face> f = new List<pb_Face>();
	 	List<pb_IntArray> s = new List<pb_IntArray>();

	 	foreach(pb_Object pb in pbs)
	 	{
	 		int vertexCount = v.Count;

	 		// Vertices
	 		{
		 		v.AddRange(pb.VerticesInWorldSpace());
			}

			// Faces
		 	{
		 		pb_Face[] faces = new pb_Face[pb.faces.Length];
		 		for(int i = 0; i < faces.Length; i++)
		 		{
		 			faces[i] = new pb_Face(pb.faces[i]);
		 			faces[i].ShiftIndices(vertexCount);
		 			faces[i].RebuildCaches();
		 		}

		 		f.AddRange(faces);
	 		}

	 		// Shared Indices
	 		{
		 		pb_IntArray[] si = pb.GetSharedIndices();
		 		for(int i = 0; i < si.Length; i++)
		 		{
		 			for(int n = 0; n < si[i].Length; n++)
		 				si[i][n] += vertexCount;
		 		}

		 		s.AddRange(si);
		 	}
	 	}

	 	combined = pb_Object.CreateInstanceWithVerticesFacesSharedIndices(v.ToArray(), f.ToArray(), s.ToArray());
	 	
	 	combined.CenterPivot(new int[1]{0});

	 	return true;
	 }
开发者ID:BasmanovDaniil,项目名称:RoyalDefenestrator,代码行数:54,代码来源:pbMeshOps.cs

示例2: SetPreviewObject

	private void SetPreviewObject(pb_Object pb, int[] indicesToCenterPivotOn)
	{
		pb.isSelectable = false;

		initPreview = false;
		bool prevTransform = false;

		if(previewObject != null)
		{
			prevTransform = true;
			RegisterPreviewObjectTransform();
		}
		
		DestroyPreviewObject();

		previewObject = pb;
		previewObject.SetName("Preview");
		previewObject.SetFaceMaterial(previewObject.faces, previewMat);

		if(pb_Preferences_Internal.GetBool(pb_Constant.pbForceGridPivot))
			previewObject.CenterPivot(indicesToCenterPivotOn == null ? new int[1]{0} : indicesToCenterPivotOn);

		if(prevTransform)
		{
			previewObject.transform.position = m_pos;
			previewObject.transform.rotation = m_rot;
			previewObject.transform.localScale = m_scale;
		}
		else
		{
			pb_Editor_Utility.ScreenCenter(previewObject.gameObject);
		}

		if(pbUtil.SharedSnapEnabled)
			pb.transform.position = pbUtil.SnapValue(pb.transform.position, pbUtil.SharedSnapValue);
		else
		if(pb_Preferences_Internal.GetBool(pb_Constant.pbForceVertexPivot))
			pb.transform.position = pbUtil.SnapValue(pb.transform.position, 1f);
			
		Selection.activeTransform = pb.transform;
	}
开发者ID:BasmanovDaniil,项目名称:RoyalDefenestrator,代码行数:41,代码来源:pb_Geometry_Interface.cs

示例3: SetPreviewObject

		private void SetPreviewObject(pb_Object pb, int[] indicesToCenterPivotOn)
		{		
			pb.isSelectable = false;

			initPreview = false;
			bool prevTransform = false;
			
			if(previewObject != null)
			{
				prevTransform = true;
				RegisterPreviewObjectTransform();
			}
			
			DestroyPreviewObject();
			
			previewObject = pb.gameObject;

			if(pb_Preferences_Internal.GetBool(pb_Constant.pbForceGridPivot))
				pb.CenterPivot(indicesToCenterPivotOn == null ? new int[1]{0} : indicesToCenterPivotOn);

			if(prevTransform)
			{
				previewObject.transform.position = m_pos;
				previewObject.transform.rotation = m_rot;
				previewObject.transform.localScale = m_scale;
			}
			else
			{
				pb_Editor_Utility.ScreenCenter(previewObject.gameObject);
			}

			if(pb_ProGrids_Interface.SnapEnabled())
				pb.transform.position = pbUtil.SnapValue(pb.transform.position, pb_ProGrids_Interface.SnapValue());
			else
			if(pb_Preferences_Internal.GetBool(pb_Constant.pbForceVertexPivot))
				pb.transform.position = pbUtil.SnapValue(pb.transform.position, 1f);

			// Remove pb_Object
			Mesh m = pbUtil.DeepCopyMesh( pb.msh );
			
			GameObject.DestroyImmediate(pb.msh);
			GameObject.DestroyImmediate(pb);

			if(previewObject.GetComponent<pb_Entity>())
				GameObject.DestroyImmediate(previewObject.GetComponent<pb_Entity>());

			HideFlags flags = HideFlags.DontSave;

			m.hideFlags = flags;
			previewMat.hideFlags = flags;
			previewObject.hideFlags = flags;

			previewObject.GetComponent<MeshFilter>().sharedMesh = m;
			previewObject.GetComponent<MeshRenderer>().sharedMaterial = previewMat;

			Selection.activeTransform = previewObject.transform;
		}
开发者ID:itubeasts,项目名称:I-eaT-U,代码行数:57,代码来源:pb_Geometry_Interface.cs

示例4: SetPivotAndSnapWithPref

	/**
	 * If EditorPrefs say to set pivot to corner and ProGrids or PB pref says snap to grid, do it.
	 * @param indicesToCenterPivot If any values are passed here, the pivot is set to an average of all vertices at indices.  If null, the first vertex is used as the pivot.
	 */
	public static void SetPivotAndSnapWithPref(pb_Object pb, int[] indicesToCenterPivot)
	{
		if(pb_Preferences_Internal.GetBool(pb_Constant.pbForceGridPivot))
			pb.CenterPivot( indicesToCenterPivot == null ? new int[1]{0} : indicesToCenterPivot );
		else
			pb.CenterPivot(indicesToCenterPivot == null ? pb.uniqueIndices : indicesToCenterPivot );

		if(pbUtil.SharedSnapEnabled)
			pb.transform.position = pbUtil.SnapValue(pb.transform.position, pbUtil.SharedSnapValue);
		else
		if(pb_Preferences_Internal.GetBool(pb_Constant.pbForceVertexPivot))
			pb.transform.position = pbUtil.SnapValue(pb.transform.position, 1f);
	}
开发者ID:BasmanovDaniil,项目名称:RoyalDefenestrator,代码行数:17,代码来源:pb_Editor_Utility.cs

示例5: CombineObjects

	/**
	 *	\brief Given an array of "donors", this method returns a merged #pb_Object.
	 */
	 public static bool CombineObjects(pb_Object[] pbs, out pb_Object combined)
	 {
	 	combined = null;

	 	if(pbs.Length < 1) return false;

	 	List<Vector3> v = new List<Vector3>();
	 	List<Vector2> u = new List<Vector2>();
	 	List<Color> c = new List<Color>();
	 	List<pb_Face> f = new List<pb_Face>();
	 	List<pb_IntArray> s = new List<pb_IntArray>();
	 	List<pb_IntArray> suv = new List<pb_IntArray>();

	 	foreach(pb_Object pb in pbs)
	 	{
	 		int vertexCount = v.Count;

	 		// Vertices
	 		v.AddRange(pb.VerticesInWorldSpace());

	 		// UVs
	 		u.AddRange(pb.uv);

	 		// Colors
	 		c.AddRange(pb.colors);

			// Faces
	 		pb_Face[] faces = new pb_Face[pb.faces.Length];
	 		for(int i = 0; i < faces.Length; i++)
	 		{
	 			faces[i] = new pb_Face(pb.faces[i]);
	 			faces[i].manualUV = true;
	 			faces[i].ShiftIndices(vertexCount);
	 			faces[i].RebuildCaches();
	 		}
	 		f.AddRange(faces);

	 		// Shared Indices
	 		pb_IntArray[] si = pb.GetSharedIndices();
	 		for(int i = 0; i < si.Length; i++)
	 		{
	 			for(int n = 0; n < si[i].Length; n++)
	 				si[i][n] += vertexCount;
	 		}
	 		s.AddRange(si);

	 		// Shared Indices UV
	 		{
		 		pb_IntArray[] si_uv = pb.GetSharedIndicesUV();
		 		for(int i = 0; i < si_uv.Length; i++)
		 		{
		 			for(int n = 0; n < si_uv[i].Length; n++)
		 				si_uv[i][n] += vertexCount;
		 		}

		 		suv.AddRange(si_uv);
		 	}
	 	}

		GameObject go = (GameObject)GameObject.Instantiate(pbs[0].gameObject);
	 	go.transform.position = Vector3.zero;
	 	go.transform.localRotation = Quaternion.identity;
	 	go.transform.localScale = Vector3.one;

	 	// Destroy the children
	 	foreach(Transform t in go.transform)
	 		GameObject.DestroyImmediate(t.gameObject);

	 	if(go.GetComponent<pb_Object>()) GameObject.DestroyImmediate(go.GetComponent<pb_Object>());
	 	if(go.GetComponent<pb_Entity>()) GameObject.DestroyImmediate(go.GetComponent<pb_Entity>());

	 	combined = go.AddComponent<pb_Object>();

		combined.SetVertices(v.ToArray());
		combined.SetUV(u.ToArray());
		combined.SetColors(c.ToArray());
		combined.SetFaces(f.ToArray());

		combined.SetSharedIndices( s.ToArray() ?? pb_IntArrayUtility.ExtractSharedIndices(v.ToArray()) );
		combined.SetSharedIndicesUV( suv.ToArray() ?? new pb_IntArray[0] {});

		combined.ToMesh();

		combined.GetComponent<pb_Entity>().SetEntity( pbs[0].GetComponent<pb_Entity>().entityType );
	 	
	 	combined.CenterPivot( pbs[0].transform.position );

		combined.Refresh();

		// refresh donors since deleting the children of the instantiated object could cause them to lose references
		foreach(pb_Object pb in pbs)
			pb.Verify();

	 	return true;
	 }
开发者ID:itubeasts,项目名称:I-eaT-U,代码行数:98,代码来源:pbMeshOps.cs


注:本文中的pb_Object.CenterPivot方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。