Ejemplo n.º 1
0
        public bool GetItem3D(string name, out Mesh Mesh, out Material[] Materials)
        {
            Mesh      = new Mesh();
            Materials = new Material[0];
            if (!isReady)
            {
                return(false);
            }

            byte[] data;
            if (!name.Contains("ITEMS3D"))
            {
                data = dataFileReader.GetFile(Path.Combine("ITEMS3D", name));
            }
            else
            {
                data = dataFileReader.GetFile(name);
            }


            if (data.Length == 0)
            {
                Wizardry8Unity.LogMessage(string.Format("Unknown Item '{0}'.", name), true);
            }
            var file = new ItemsFile(data, System.IO.Path.GetFileNameWithoutExtension(name));

            Mesh      = file.ItemMesh;
            Materials = file.ItemMaterials;

            return(true);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds a single WizardryMesh game object to scene.
        /// </summary>
        /// <param name="modelName">ModelName of mesh to add.</param>
        /// <param name="parent">Optional parent of this object.</param>
        /// <param name="makeStatic">Flag to set object static flag.</param>
        /// <param name="useExistingObject">Add mesh to existing object rather than create new.</param>
        /// <param name="ignoreCollider">Force disable collider.</param>
        /// <returns>GameObject.</returns>
        public static GameObject CreateWizardryMeshGameObject(
            string modelName,
            Transform parent,
            bool makeStatic = false,
            GameObject useExistingObject = null,
            bool ignoreCollider          = false)
        {
            Wizardry8Unity w8Unity = Wizardry8Unity.Instance;

            // Create gameobject
            string     name = string.Format("Wizardry8Mesh [Name={0}]", modelName);
            GameObject go   = (useExistingObject != null) ? useExistingObject : new GameObject();

            if (parent != null)
            {
                go.transform.parent = parent;
            }
            go.name = name;


            // Get mesh filter and renderer components
            MeshFilter   meshFilter   = go.GetComponent <MeshFilter>();
            MeshRenderer meshRenderer = go.GetComponent <MeshRenderer>();

            if (!meshFilter)
            {
                meshFilter = go.AddComponent <MeshFilter>();
            }
            if (!meshRenderer)
            {
                meshRenderer = go.AddComponent <MeshRenderer>();
            }

            Mesh ItemMesh = new Mesh();

            Material[] ItemMaterials = new Material[0];
            w8Unity.ContentReader.GetItem3D(
                modelName,
                out ItemMesh,
                out ItemMaterials
                );

            if (ItemMesh)
            {
                meshFilter.sharedMesh        = ItemMesh;
                meshRenderer.sharedMaterials = ItemMaterials;
            }

            // Assign static
            if (makeStatic)
            {
                go.isStatic = true;
            }

            return(go);
        }