public static GameObject CreateMeshInstance(MeshInstanceData meshInstanceData) { Debug.LogFormat("Mesh Instance - Token:{0}, Name:{1} Parent:{2}, Mesh:{3}", meshInstanceData.entityToken, meshInstanceData.displayName, meshInstanceData.entityParentToken, meshInstanceData.originalMesh); var transform = MarshalData.GetXFormFromUnmanagedArray(meshInstanceData.xform); // Find mesh prefab Object meshPrefabObj = PackageMapper.GetObjectFromToken(meshInstanceData.originalMesh); // Create a new game object GameObject meshInst = Object.Instantiate(meshPrefabObj as GameObject); // Remove the "(Clone)" string from name that Unity automatically adds when instantiating // and apply the actual display name of the instance meshInst.name = meshInstanceData.displayName; // Find instance parent Object parentObj = PackageMapper.GetObjectFromToken(meshInstanceData.entityParentToken); SceneTransmissionProtocolUtilities.UpdateObjectHierarchy(meshInst, parentObj as GameObject, transform); // Add token store PackageMapper.AddUniqueTokenStore(meshInst, meshInstanceData.entityToken); return(meshInst); }
public static GameObject CreateCamera(CameraData cameraData) { CameraProjectionType camType = (CameraProjectionType)cameraData.type; Debug.LogFormat("Camera - Token:{0}, Name:{1}, Projection Type:{2}, VerticalFov:{3}, AspectRatio:{4}, HorizontalMag:{5}, NearClip:{6}, FarClip:{7}", cameraData.entityToken, cameraData.displayName, camType, cameraData.verticalFov, cameraData.aspectRatio, cameraData.horizontalMag, cameraData.nearClip, cameraData.farClip); // Get transformation data var transform = MarshalData.GetXFormFromUnmanagedArray(cameraData.xform); // Create a new game object GameObject cameraInst = new GameObject(cameraData.displayName); // Set transformation SceneTransmissionProtocolUtilities.UpdateObjectHierarchy(cameraInst, null, transform); // Add camera component Camera camera = cameraInst.AddComponent <Camera>(); SetCameraData(camera, cameraData); // Add token store PackageMapper.AddUniqueTokenStore(cameraInst, cameraData.entityToken); return(cameraInst); }
public static bool UpdateMeshInstance(MeshInstanceData meshInstanceData) { Debug.LogFormat("Mesh Instance Update - Token:{0}, Parent:{1}, Mesh:{2}", meshInstanceData.entityToken, meshInstanceData.entityParentToken, meshInstanceData.originalMesh); Object meshInstObj = PackageMapper.GetObjectFromToken(meshInstanceData.entityToken); var meshInst = meshInstObj as GameObject; var transform = MarshalData.GetXFormFromUnmanagedArray(meshInstanceData.xform); // Update the transformation of the item, ignore hierarchy updates for now // TODO: Work on hierarchy control systems Transform parentTrs = meshInst.transform.parent; GameObject parent = null; if (parentTrs) { parent = parentTrs.gameObject; } SceneTransmissionProtocolUtilities.UpdateObjectHierarchy(meshInst, parent, transform); // Update mesh filter Mesh mesh = PackageMapper.GetMeshFromToken(meshInstanceData.originalMesh); var meshFilter = meshInst.GetComponent <MeshFilter>(); if (meshFilter) { meshFilter.sharedMesh = mesh; } // Update mesh renderer GameObject meshPrefab = PackageMapper.GetObjectFromToken(meshInstanceData.originalMesh) as GameObject; var meshRenderer = meshPrefab.GetComponent <MeshRenderer>(); var meshInstRenderer = meshInst.GetComponent <MeshRenderer>(); if (meshRenderer && meshInstRenderer) { meshInstRenderer.sharedMaterials = meshRenderer.sharedMaterials; } return(true); }
public static bool UpdateCamera(CameraData cameraData) { CameraProjectionType camType = (CameraProjectionType)cameraData.type; Debug.LogFormat("Camera Update - Token:{0}, Name:{1}, Projection Type:{2}, VerticalFov:{3}, AspectRatio:{4}, HorizontalMag:{5}, NearClip:{6}, FarClip:{7}", cameraData.entityToken, cameraData.displayName, camType, cameraData.verticalFov, cameraData.aspectRatio, cameraData.horizontalMag, cameraData.nearClip, cameraData.farClip); // Get transformation data var transform = MarshalData.GetXFormFromUnmanagedArray(cameraData.xform); // Get camera game object GameObject cameraInst = PackageMapper.GetObjectFromToken(cameraData.entityToken) as GameObject; if (cameraInst) { // Set transformation SceneTransmissionProtocolUtilities.UpdateObjectHierarchy(cameraInst, null, transform); // Get camera component Camera camera = cameraInst.GetComponent <Camera>(); if (camera) { SetCameraData(camera, cameraData); } else { Debug.LogErrorFormat("Camera Update error! Camera component not found! Token:{0}"); return(false); } } else { Debug.LogErrorFormat("Camera Update error! Camera game object not found! Token:{0}"); return(false); } return(true); }