Ejemplo n.º 1
0
    public bool Initialize(JSONNode node, DirectoryInfo directory, IPointCloudManager manager)
    {
        gameObject.name = "PCNode";
        meshFilter      = gameObject.AddComponent <MeshFilter>();
        meshFilter.mesh = null;
        meshRenderer    = gameObject.AddComponent <MeshRenderer>();

        meshRenderer.shadowCastingMode          = UnityEngine.Rendering.ShadowCastingMode.Off;
        meshRenderer.receiveShadows             = false;
        meshRenderer.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
        meshRenderer.lightProbeUsage            = UnityEngine.Rendering.LightProbeUsage.Off;
        meshRenderer.reflectionProbeUsage       = UnityEngine.Rendering.ReflectionProbeUsage.Off;
        meshRenderer.allowOcclusionWhenDynamic  = false;

        this.pcManager = manager;
        string filename = node["filename"];

        fileInfo = directory.GetFiles(filename)[0];
        Debug.Assert(this.fileInfo != null, "File not found:" + node["filename"]);
        Debug.Assert(this.pcManager != null, "No PCManager");

        gameObject.name = "PC Parent Node";

        JSONArray childrenJSON = node["children"].AsArray;
        ArrayList childrenList = new ArrayList();

        //Debug.Log("N Children: " + childrenJSON.Count);
        for (int i = 0; i < childrenJSON.Count; i++)
        {
            PCNode pcNode = PCNode.AddNode(childrenJSON[i], directory, gameObject, manager);
            if (pcNode != null)
            {
                childrenList.Add(pcNode);
            }
        }
        children = (PCNode[])childrenList.ToArray(typeof(PCNode));

        InitializeFromJSON(node);

        meshRenderer.material = pcManager.GetFDM();

        return(childrenJSON.Count > 0);
    }
    public override bool Initialize(JSONNode node, DirectoryInfo directory, IPointCloudManager manager)
    {
        InitializeFromJSON(node);
        gameObject.name = "PC Parent Node";

        JSONArray childrenJSON = node["children"].AsArray;
        ArrayList childrenList = new ArrayList();

        //Debug.Log("N Children: " + childrenJSON.Count);
        for (int i = 0; i < childrenJSON.Count; i++)
        {
            PointCloudNode pcNode = PointCloudNode.AddNode(childrenJSON[i], directory, gameObject, manager);
            if (pcNode != null)
            {
                childrenList.Add(pcNode);
            }
        }
        children = (PointCloudNode[])childrenList.ToArray(typeof(PointCloudNode));

        return(childrenJSON.Count > 0);
    }
Ejemplo n.º 3
0
 public Mesh CreateMesh(FileInfo fileInfo, IPointCloudManager manager, float priority)
 {
     if (!jobs.ContainsKey(fileInfo.FullName))
     {
         MeshLoaderJob job = jobPool.GetInstance();
         if (job != null)
         {
             jobs[fileInfo.FullName] = job;
             job.AsynMeshLoading(fileInfo, manager, thread, priority);
         }
     }
     else
     {
         MeshLoaderJob job = jobs[fileInfo.FullName];
         if (job.IsDone)
         {
             Mesh mesh = meshPool.GetInstance();
             if (mesh != null)
             {
                 //Debug.Log("Remaining Meshes: " + meshPool.remaining);
                 job.LoadMeshData(mesh);
                 if (mesh != null)
                 {
                     jobs.Remove(fileInfo.FullName);
                     jobPool.ReleaseInstance(job);
                 }
                 return(mesh);
             }
         }
         else
         {
             //Changing priority if not finished
             job.priority = priority;
         }
     }
     return(null);
 }
Ejemplo n.º 4
0
    public override bool Initialize(JSONNode node, DirectoryInfo directory, IPointCloudManager manager)
    {
        gameObject.name = "PointCloudOctreeLeafNode";
        meshFilter      = gameObject.AddComponent <MeshFilter>();
        meshFilter.mesh = null;
        meshRenderer    = gameObject.AddComponent <MeshRenderer>();

        meshRenderer.shadowCastingMode          = UnityEngine.Rendering.ShadowCastingMode.Off;
        meshRenderer.receiveShadows             = false;
        meshRenderer.motionVectorGenerationMode = MotionVectorGenerationMode.ForceNoMotion;
        meshRenderer.lightProbeUsage            = UnityEngine.Rendering.LightProbeUsage.Off;
        meshRenderer.reflectionProbeUsage       = UnityEngine.Rendering.ReflectionProbeUsage.Off;
        meshRenderer.allowOcclusionWhenDynamic  = false;

        this.pointCloudManager = manager;
        string filename = node["filename"];

        fileInfo = directory.GetFiles(filename)[0];
        Debug.Assert(this.fileInfo != null, "File not found:" + node["filename"]);
        Debug.Assert(this.pointCloudManager != null, "No PCManager");
        InitializeFromJSON(node);

        return(true);
    }
    public static PointCloudNode AddNode(JSONNode node, DirectoryInfo directory, GameObject gameObject, IPointCloudManager materialProvider)
    {
        GameObject child = new GameObject("PC Node");

        child.isStatic = true;


        PointCloudNode pcNode = null;

        if (JSONOfLeaf(node))
        {
            pcNode = child.AddComponent <PointCloudLeafNode>();
        }
        else
        {
            pcNode = child.AddComponent <PointCloudParentNode>();
        }

        if (pcNode.Initialize(node, directory, materialProvider))
        {
            child.transform.SetParent(gameObject.transform, false);
            return(pcNode);
        }
        else
        {
            Destroy(child);
            return(null);
        }
    }
 public abstract bool Initialize(JSONNode node, DirectoryInfo directory, IPointCloudManager manager);
Ejemplo n.º 7
0
    public static PCNode AddNode(JSONNode node, DirectoryInfo directory, GameObject gameObject, IPointCloudManager materialProvider)
    {
        GameObject child = new GameObject("PC Node");

        child.isStatic = true;

        PCNode pcNode = child.AddComponent <PCNode>();

        pcNode.Initialize(node, directory, materialProvider);
        child.transform.SetParent(gameObject.transform, false);
        return(pcNode);
    }
Ejemplo n.º 8
0
 public void AsynMeshLoading(FileInfo fileInfo, IPointCloudManager manager, AsyncJobThread thread, float priority)
 {
     this.fileInfo = fileInfo;
     this.manager  = manager;
     Run(thread, priority);
 }