示例#1
0
		public override void OnHandleMove(pb_Transform transform)
		{
			pb_Transform delta = (transform - handleTransformOrigin);

			if( global )
			{				
				mTransform.SetTRS(handleTransformOrigin);

				Transform[] parents = new Transform[pb_Selection.gameObjects.Count];

				for(int i = 0; i < pb_Selection.gameObjects.Count; i++)
				{
					GameObject go = pb_Selection.gameObjects[i];
					go.transform.SetTRS(selectionTransformOrigin[i]);
					parents[i] = go.transform.parent;
					go.transform.parent = mTransform;
				}

				mTransform.SetTRS(transform);

				for(int i = 0; i < pb_Selection.gameObjects.Count; i++)
				{
					pb_Selection.gameObjects[i].transform.parent = parents[i];
				}
			}
			else
			{
				for(int i = 0; i < pb_Selection.gameObjects.Count; i++)
				{
					GameObject go = pb_Selection.gameObjects[i];
					go.transform.SetTRS( selectionTransformOrigin[i] + delta );
				}
			}
		}
示例#2
0
		public override void OnHandleBegin(pb_Transform transform)
		{
			handleTransformOrigin = transform;
			CacheSelectionTransforms();

			List<IUndo> undoGroup = pb_Selection.gameObjects.Select(x => (IUndo) new UndoTransform(x.transform)).ToList();
			Undo.RegisterStates(undoGroup, handle.GetTool().ToString() + " Tool");
		}
示例#3
0
		/**
		 * Deserialization constructor.
		 */
		public pb_SceneNode(SerializationInfo info, StreamingContext context)
		{
			name 		= (string) info.GetValue("name", typeof(string));
			transform 	= (pb_Transform) info.GetValue("transform", typeof(pb_Transform));
			children 	= (List<pb_SceneNode>) info.GetValue("children", typeof(List<pb_SceneNode>));
			metadata 	= (pb_MetaData) info.GetValue("metadata", typeof(pb_MetaData));

			if( metadata.assetType == AssetType.Instance)
				components 	= (List<pb_ISerializable>) info.GetValue("components", typeof(List<pb_ISerializable>));
		}
示例#4
0
        /**
         * Deserialization constructor.
         */
        public pb_SceneNode(SerializationInfo info, StreamingContext context)
        {
            name      = (string)info.GetValue("name", typeof(string));
            transform = (pb_Transform)info.GetValue("transform", typeof(pb_Transform));
            children  = (List <pb_SceneNode>)info.GetValue("children", typeof(List <pb_SceneNode>));
            metadata  = (pb_MetaData)info.GetValue("metadata", typeof(pb_MetaData));

            if (metadata.AssetType == AssetType.Instance)
            {
                components = (List <pb_ISerializable>)info.GetValue("components", typeof(List <pb_ISerializable>));
            }
        }
示例#5
0
        /**
         * Recursively build a scene graph using `root` as the root node.
         */
        public pb_SceneNode(GameObject root)
        {
            name = root.name;

            components = new List <pb_ISerializable>();

            pb_MetaDataComponent metadata_component = root.GetComponent <pb_MetaDataComponent>();

            if (metadata_component == null)
            {
                metadata_component = root.AddComponent <pb_MetaDataComponent>();
            }

            metadata = metadata_component.metadata;

            if (metadata.AssetType == AssetType.Instance)
            {
                foreach (Component c in root.GetComponents <Component>())
                {
                    if (c == null ||
                        c is Transform ||
                        c.GetType().GetCustomAttributes(true).Any(x => x is pb_JsonIgnoreAttribute))
                    {
                        continue;
                    }

                    components.Add(pb_Serialization.CreateSerializableObject <Component>(c));
                }
            }

            // avoid calling constructor which automatically rebuilds the matrix
            transform = new pb_Transform();
            transform.SetTRS(root.transform);

            children = new List <pb_SceneNode>();

            foreach (Transform t in root.transform)
            {
                if (!t.gameObject.activeSelf)
                {
                    continue;
                }

                children.Add(new pb_SceneNode(t.gameObject));
            }
        }
示例#6
0
		/**
		 * Called any time a handle is moved.  OnHandleBegin will always be called prior, and OnHandleFinish will be called
		 * post.
		 */
		public virtual void OnHandleMove(pb_Transform transform) {}
示例#7
0
		/**
		 *	`OnHandleBegin` is called at the start of a handle interaction.  `transform` is the handle's transform
		 *	prior to any movement.
		 */
		public virtual void OnHandleBegin(pb_Transform transform) {}
示例#8
0
		/**
		 * Set a UnityEngine.Transform with a Runtime.pb_Transform.
		 */
		public static void SetTRS(this Transform transform, pb_Transform pbTransform)
		{
			transform.position = pbTransform.position;
			transform.localRotation = pbTransform.rotation;
			transform.localScale = pbTransform.scale;
		}
示例#9
0
		/**
		 * Recursively build a scene graph using `root` as the root node.
		 */
		public pb_SceneNode(GameObject root)
		{
			name = root.name;

			components = new List<pb_ISerializable>();
			
			pb_MetaDataComponent metadata_component = root.GetComponent<pb_MetaDataComponent>();

			if( metadata_component == null )
				metadata_component = root.AddComponent<pb_MetaDataComponent>();

			metadata = metadata_component.metadata;

			if( metadata.assetType == AssetType.Instance )
			{
				foreach(Component c in root.GetComponents<Component>())
				{
					if( c == null ||
						c is Transform ||
						c.GetType().GetCustomAttributes(true).Any(x => x is pb_JsonIgnoreAttribute))
						continue;

					components.Add( pb_Serialization.CreateSerializableObject<Component>(c) );
				}
			}
			
			// avoid calling constructor which automatically rebuilds the matrix
			transform = new pb_Transform();
			transform.SetTRS(root.transform);

			children = new List<pb_SceneNode>();

			foreach(Transform t in root.transform)
			{
				if(!t.gameObject.activeSelf)
					continue;

				children.Add( new pb_SceneNode(t.gameObject) );
			}
		}
示例#10
0
		/**
		 * Store the transform of each selected gameObject in selectionTransformOrigin array.
		 */
		void CacheSelectionTransforms()
		{
			int count = pb_Selection.gameObjects.Count;
			selectionTransformOrigin = new pb_Transform[count];
			for(int i = 0; i < count; i++)
			{
				selectionTransformOrigin[i] = new pb_Transform(pb_Selection.gameObjects[i].transform);
			}
		}