Example #1
0
        void RegisterMeshWithoutLightmap(MeshContainer n)
        {
            AbstractGeometryElem geo = null;

            if (n.Mesh.name == "Sphere")
            {
                geo = new SphereBufferGeometryElem(n);
            }
            else if (n.Mesh.name == "Cylinder")
            {
                geo = new CylinderBufferGeometryElem(n);
            }
            else if (n.Mesh.name == "Quad")
            {
                geo = new QuadBufferGeometry(n);
                //} else if(n.Mesh.name == "Cube") {
                //    geo = new BoxBufferGeometryElem(n);
            }
            else
            {
                geo = new BufferGeometryElem(n, false, Vector4.zero);
            }
            geo.Uuid = "geo-" + n.InstanceId;
            root.SharedNodeTable.Add(geo, n.InstanceId);
        }
Example #2
0
        private void CreateGeomManager()
        {
            List <double[]> n = new List <double[]>();

            foreach (var line in nodeline)
            {
                double[] x = line.Coordinate;
                if (x == null)
                {
                    continue;
                }
                n.Add(x);
            }

            List <int[]> e = new List <int[]>();

            foreach (var line in elementline)
            {
                int[] x = line.Triangle;

                if (x == null)
                {
                    continue;
                }

                e.Add(x);
            }

            double[,] point = ListToArray <double>(n);
            int[,] element  = ListToArray <int>(e);

            geomManager = new MeshContainer(point, element);
        }
Example #3
0
    public MeshContainer BuildTriTreeNodeMesh(int triTreeNode, float scale = 1f)
    {
        MutableGeoMesh mutablemesh = new MutableGeoMesh();

        CollectVertexes(mutablemesh, triTreeNode);
        mutablemesh.IndexTriangles();

        List <Vector3> vertices = new List <Vector3>();
        List <Vector2> uv       = new List <Vector2>();
        List <Vector3> normals  = new List <Vector3>();

        int[] triTreeNodesPair = GetTriTreeNodePair(triTreeNode);

        foreach (int nodeIndex in mutablemesh.indexes)
        {
            vertices.Add(nodes[nodeIndex].position * scale);
            normals.Add(nodes[nodeIndex].normal);
            uv.Add(GetVertexUV(nodes[nodeIndex].position, triangleToPairsMap[triTreeNode]));
        }

        MeshContainer meshContainer = new MeshContainer();

        meshContainer.vertices  = vertices.ToArray();
        meshContainer.normals   = normals.ToArray();
        meshContainer.triangles = mutablemesh.triangles.ToArray();
        meshContainer.uv        = uv.ToArray();

        return(meshContainer);
    }
Example #4
0
 public void Visit(MeshContainer n)
 {
     report.Info("## InstanceId: " + n.InstanceId);
     report.Info("Name: " + n.Name);
     report.Info("VertexCount: " + n.VertexCount);
     report.Info("TriangleCount: " + n.TriangleCount);
 }
Example #5
0
            public bool MoveNext()
            {
                if (End)
                {
                    return(false);
                }

                if (MeshTracker != null)
                {
                    MeshTracker = MeshTracker.NextContainer;
                    if (MeshTracker != null)
                    {
                        return(true);
                    }
                }

                while (FrameTracker.MoveNext())
                {
                    Frame frame = FrameTracker.Current as Frame;
                    MeshTracker = frame.MeshContainer;
                    if (MeshTracker != null)
                    {
                        return(true);
                    }
                }

                End = true;
                return(false);
            }
Example #6
0
    public void Split(Transform splitTransform)
    {
        if (!_isSplitting)
        {
            _isSplitting = _splitMesh = true;
            _splitPlane  = new Plane(splitTransform);

            MeshFilter[] meshFilters = GetComponentsInChildren <MeshFilter>();

            _meshContainerStatic = new MeshContainer[meshFilters.Length];
            _meshSplitterStatic  = new IMeshSplitter[meshFilters.Length];

            for (int i = 0; i < meshFilters.Length; i++)
            {
                _meshContainerStatic[i] = new MeshContainer(meshFilters[i]);

                _meshSplitterStatic[i] = (IMeshSplitter) new MeshSplitterConvex(_meshContainerStatic[i], _splitPlane, splitTransform.rotation);


                if (UseCapUV)
                {
                    _meshSplitterStatic[i].SetCapUV(UseCapUV, CustomUV, CapUVMin, CapUVMax);
                }
#if UNITY_EDITOR
                _meshSplitterStatic[i].DebugDraw(ShowDebug);
#endif
            }
        }
    }
 public MeshIterator(MeshContainer container) //, float iterationTime, float iterationSpeed
 {
     meshContainer = container;
     //IterationTime = iterationTime;
     //IterationSpeed = iterationSpeed;
     Iterations = new List <MeshIteration>();
 }
Example #8
0
    public void Split(Transform splitTransform)
    {
        if (!_isSplitting)
        {
            _isSplitting = _splitMesh = true;
            _splitPlane = new Plane(splitTransform);

            MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>();

            _meshContainerStatic = new MeshContainer[meshFilters.Length];
            _meshSplitterStatic = new IMeshSplitter[meshFilters.Length];

            for (int i = 0; i < meshFilters.Length; i++)
            {
                _meshContainerStatic[i] = new MeshContainer(meshFilters[i]);

                _meshSplitterStatic[i] = (IMeshSplitter)new MeshSplitterConvex(_meshContainerStatic[i], _splitPlane, splitTransform.rotation);

                if (UseCapUV) _meshSplitterStatic[i].SetCapUV(UseCapUV, CustomUV, CapUVMin, CapUVMax);
        #if UNITY_EDITOR
                _meshSplitterStatic[i].DebugDraw(ShowDebug);
        #endif
            }
        }
    }
Example #9
0
        public void Split(Transform splitTransform)
        {
            if (!_isSplitting)
            {
                //If a cut is made then get the cut plane
                _isSplitting = _splitMesh = true;
                _splitPlane  = new PlaneMath(splitTransform);

                MeshFilter[]          meshFilters     = GetComponentsInChildren <MeshFilter>();
                SkinnedMeshRenderer[] skinnedRenderes = GetComponentsInChildren <SkinnedMeshRenderer>();

                _meshContainerStatic = new MeshContainer[meshFilters.Length];
                _meshSplitterStatic  = new IMeshSplitter[meshFilters.Length];

                //Loop through each mesh filter and intitialze a capped mesh and save it in container
                for (int i = 0; i < meshFilters.Length; i++)
                {
                    _meshContainerStatic[i] = new MeshContainer(meshFilters[i]);

                    _meshSplitterStatic[i] = (IMeshSplitter) new MeshSplitterConcave(_meshContainerStatic[i], _splitPlane, splitTransform.rotation);
                }

                _meshSplitterSkinned  = new IMeshSplitter[skinnedRenderes.Length];
                _meshContainerSkinned = new MeshContainer[skinnedRenderes.Length];
                //Although this function is rendundant here but it is important - it gets the bones and joints of the object incase the object is bendable
                for (int i = 0; i < skinnedRenderes.Length; i++)
                {
                    _meshContainerSkinned[i] = new MeshContainer(skinnedRenderes[i]);

                    _meshSplitterSkinned[i] = (IMeshSplitter) new MeshSplitterConcave(_meshContainerSkinned[i], _splitPlane, splitTransform.rotation);
                }
            }
        }
Example #10
0
        public ModellingTreeNodeGrid(string name, ModellingTreeController treeController)
        {
            base.Name           = name;
            this.treeController = treeController;
            geomManager         = null;

            this.treeController.RemoveNode += RemoveCurrentNode;
        }
Example #11
0
    // Can't be [SetUp] because these Functions can't have a parameter.
    private void SetUp(string prefabName)
    {
        // create a mock gameobject with a mesh
        GameObject docMeshPref = Resources.Load <GameObject>(prefabName);

        meshObj   = GameObject.Instantiate(docMeshPref);
        container = new MeshContainer(meshObj.transform);
    }
    public void MeshContainerIsNotNull_Test()
    {
        SetUp();

        MeshContainer mc = GetPrivateField <MeshContainer>("meshContainer");

        Assert.IsNotNull(mc);
    }
    public MeshSplitterConvex(MeshContainer meshContainer, Plane splitPlane, Quaternion splitRotation)
    {
        _mesh = meshContainer;
        _splitPlane = splitPlane;
        _splitRotation = splitRotation;
        _ownRotation = meshContainer.transform.rotation;

        capInds = new List<int>(meshContainer.vertexCount / 10);
    }
    public MeshSplitterConcave(MeshContainer meshContainer, Plane splitPlane, Quaternion splitRotation)
    {
        _mesh          = meshContainer;
        _splitPlane    = splitPlane;
        _splitRotation = splitRotation;
        _ownRotation   = meshContainer.transform.rotation;

        _edges = new List <Edge>(meshContainer.vertexCount / 10);
    }
Example #15
0
    public MeshSplitterConvex(MeshContainer meshContainer, Plane splitPlane, Quaternion splitRotation)
    {
        _mesh          = meshContainer;
        _splitPlane    = splitPlane;
        _splitRotation = splitRotation;
        _ownRotation   = meshContainer.transform.rotation;

        capInds = new List <int>(meshContainer.vertexCount / 10);
    }
Example #16
0
    private void Start()
    {
        isActive = false;

        container  = new MeshContainer(this.transform);
        controller = new MeshController(container);

        container.ApplyColor(ColorCalculator.BASE_COLOR);
    }
Example #17
0
    public MeshController(MeshContainer container)
    {
        this.meshContainer = container;

        this.VerticeData      = SetVerticeData();
        this.RelevantVertices = new List <int>();

        LinkVerticesWithSamePosition();
    }
Example #18
0
        public static ModelResourceNode Convert(LmMsgPck msg)
        {
            var aabb      = LmAABB.Unpack(msg);
            var boneTable = LmBoneTable.Unpack(msg);

            var i = 0u;
            var modelResourceNode = new ModelResourceNode();

            foreach (var boneInfo in boneTable.BoneInfos)
            {
                modelResourceNode.MeshBoneInformation.Bones.Add(new MeshBoneInformation.Bone(boneInfo.BoneName, boneInfo.LodBoneIdx, boneInfo.UniqueBoneIdx));
                // FIXME modelResourceNode.MeshBoneInformation.BoneLut.Add(boneInfo.UniqueBoneIdx, i);
                i++;
            }

            modelResourceNode.NodeTable = LmNodeTable.Unpack(msg);
            if (msg.Version >= 20141113)
            {
                var assetHash = (ulong)msg.Read();
                // TODO msg.UserData.GpuBuffer = msg.UserData.DependencyTable.Get(assetHash);
            }

            var meshContainerCount = (int)msg.Read();

            for (var _ = 0; _ < meshContainerCount; _++)
            {
                var meshContainer = MeshContainer.Convert(msg);
                modelResourceNode.MeshContainers.Add(meshContainer);
            }

            if (msg.Version >= 20140623)
            {
                var unknown = msg.ReadBool();
                modelResourceNode.Name = msg.ReadString();
            }

            if (msg.Version >= 20140722 && msg.Version < 20140929)
            {
                var hasPsdData  = msg.ReadBool();
                var psdDataHash = msg.ReadUint64();
            }

            if (msg.Version < 20140815)
            {
                return(modelResourceNode);
            }

            var gmdlPartsDatasCount = msg.ReadUint();

            for (var _ = 0; _ < gmdlPartsDatasCount; _++)
            {
                var gmdlPartsData = GmdlPartsData.Unpack(msg);
                modelResourceNode.GmdlPartsDatas.Add(gmdlPartsData);
            }

            return(modelResourceNode);
        }
Example #19
0
        /// <summary>
        ///  This is the function that generates the correct scad code for our Mesh
        /// </summary>
        /// <param name="objectToProcess"></param>
        /// <param name="level"></param>
        /// <returns></returns>
        public string GetScadOutputRecursive(MeshContainer objectToProcess, int level = 0)
        {
            string info = AddRenderInfoIfReqired(objectToProcess);

            string mesh_string = "import(\"{0}\");".FormatWith(objectToProcess.FilePath);

            info += mesh_string + AddNameAsComment(objectToProcess);

            return(ApplyIndent(info, level));
        }
    // Can't use normal [SetUp], because one test use different mocks.
    // The default SetUp-Method can't have parameters.
    public void SetUp(string mockName = "Mock_simple")
    {
        GameObject docMeshPref = Resources.Load <GameObject>("Prefabs/" + mockName);

        docMeshObj = GameObject.Instantiate(docMeshPref);

        MeshContainer container = new MeshContainer(docMeshPref.transform);

        controller = new MeshController(container);
    }
Example #21
0
            ///-----------------------------------------------------------------
            public LineData(int capacity, GameObject gameObject, MeshRenderer renderer, Material material, int borderThickness)
            {
                this.gameObject = gameObject;
                this.material   = material;

                forceDirtyPass = false;
                index          = 0;
                mesh           = new MeshContainer(capacity, renderer, borderThickness);
                positions      = new BufferContainer(capacity);
                colors         = new BufferContainer(capacity);
            }
    public void SendMesh(MeshContainer newMesh)
    {
        Mesh mesh = new Mesh
        {
            vertices  = newMesh.vertecies.ToArray(),
            triangles = newMesh.triangles.ToArray()
        };

        newMesh.gameObject.GetComponent <MeshFilter>().mesh             = mesh;
        newMesh.gameObject.GetComponent <MeshRenderer>().material       = baseMaterial;
        newMesh.gameObject.GetComponent <MeshRenderer>().material.color = Random.ColorHSV(0f, 1f, .5f, .5f, .25f, .75f, 1f, 1f);
    }
Example #23
0
        void CreateObject(Object obj, MyObjectType t)
        {
            GameObject go = Instantiate(slotTemplate) as GameObject;

            go.SetActive(true);
            go.transform.SetParent(gridParent);
            go.transform.localScale = Vector3.one;
            createdObjs.Add(go);
            UI.UI_Slot slot = go.GetComponent <UI_Slot>();

            string targetText = null;
            bool   isEquiped  = false;

            isEquiped = gameSettings.isEquiped(obj, t);

            switch (t)
            {
            case MyObjectType.mw:
                Weapon mw = (Weapon)obj;
                targetText = mw.id.value;
                break;

            case MyObjectType.sw:
                Weapon sw = (Weapon)obj;
                targetText = sw.id.value;
                break;

            case MyObjectType.mask:
                Mask m = (Mask)obj;
                targetText = m.obj.id.value;
                break;

            case MyObjectType.skill:
                break;

            case MyObjectType.outfit:
                MeshContainer mc = (MeshContainer)obj;
                targetText = mc.id.value;
                break;

            default:
                break;
            }

            slot.type      = type;
            slot.obj       = obj;
            slot.item.text = targetText;
            slot.tick.SetActive(isEquiped);

            bool isBought = gameSettings.playerProfile.IsBought(targetText);

            slot.item.color = (isBought) ? Color.white : Color.gray;
        }
Example #24
0
 private void RemoveCurrentNode(object sender, EventArgs args)
 {
     if (args is EventArgsModellingTreeNode)
     {
         MshToMatWPF.ModellingTree.ModellingTreeNode node = (args as EventArgsModellingTreeNode).nodeCurrent;
         if ((node != this) & (treeController.DetermParentFromPair(node, this) != node))
         {
             return;
         }
         geomManager = null;
     }
 }
Example #25
0
 public Actor(MeshContainer Mesh, string Name) : base()
 {
     this.ID        = Guid.NewGuid().ToString();
     this.Name      = Name;
     this._Modified = false;
     this.Type      = DrawObjectType.Actor;
     this._GeometryMaterialIndices = new List <int>();
     this._Geometries = Mesh.Geometries;
     this._Materials  = new List <Material>();
     this._Materials.Add(new Material(ID + "_01", Material.Default));
     for (int i = 0; i < this._Geometries.Count; i++)
     {
         this.GeometryMaterialIndices.Add(0);
     }
 }
Example #26
0
        MeshContainer CompileSnapBuffer()
        {
            CreateSnap = true;
            RenderKind Save = Device.RenderKind;

            StoredSnapItems.Clear();
            StoredSnapItems.Add(null);
            RegisterLocked    = false;
            Device.RenderKind = RenderKind.SnapBuffer;
            MeshContainer Result = MeshCreator.CreateMeshes(Device, CompileDraw);

            Device.RenderKind = Save;
            RegisterLocked    = true;
            CreateSnap        = false;
            return(Result);
        }
        BoundingBox GetMinMaxValues(MeshContainer mc)
        {
            DataStream     ds       = mc.MeshData.Mesh.LockVertexBuffer(LockFlags.ReadOnly);
            List <Vector3> vertices = new List <Vector3>();

            do
            {
                vertices.Add(ds.Read <Vector3>());
                ds.Seek(mc.MeshData.Mesh.BytesPerVertex - Vector3.SizeInBytes, System.IO.SeekOrigin.Current);
            } while (ds.Position < ds.Length);

            var bb = BoundingBox.FromPoints(vertices.ToArray());

            mc.MeshData.Mesh.UnlockVertexBuffer();
            return(bb);
        }
        void VisitToCreateMesh_r(GameObject go)
        {
            if (go.GetComponent <Renderer>())
            {
                var mesh = ComponentHelper.GetMesh(go);
                if (!containerTable.Contains <MeshContainer>(mesh.GetInstanceID()))
                {
                    var c = new MeshContainer(mesh);
                    containerTable.Add(c.InstanceId, c);
                }
            }

            for (int i = 0; i < go.transform.childCount; i++)
            {
                VisitToCreateMesh_r(go.transform.GetChild(i).gameObject);
            }
        }
Example #29
0
        public void ContextMenuImport(object sender, EventArgs args)
        {
            if (importDialog != null)
            {
                ModellingTreeNodeDialogDataImport data = new ModellingTreeNodeDialogDataImport();
                data.node = this;

                importDialog(data);

                if (data.filename != string.Empty)
                {
                    ImportMesh imp = new ImportMeshMsh(data.filename);
                    imp.Build();
                    this.geomManager = imp.geomManager;
                }
            }
        }
Example #30
0
        /// <summary>
        /// Nacteni animovaneho modelu
        /// </summary>
        /// <param name="loaded">>Entita do ktere bude pridan parametr s animaci</param>
        /// <param name="objectUrl">Adresa k souboru .X s animaci</param>
        /// <param name="name">Jmeno modelu</param>
        /// <returns>Entitu s animaci</returns>
        private Entity LoadAnimatedObject(Entity loaded, string objectUrl, string name)
        {
            AllocateHierarchy alloc;

            alloc = new WiccanRede.Graphics.Scene.SpecialObjects.AnimatedObject.AnimationAllocation();

            try
            {
                rootFrame = Mesh.LoadHierarchyFromFile(objectUrl, MeshFlags.Managed, dev, alloc, null);
            }
            catch (Exception)
            {
                Console.WriteLine("Chyba pri nacitani ze souboru");
            }

            SetupBoneMatrices(rootFrame.FrameHierarchy as anim.AnimationFrame);

            List <MeshContainer> meshes = new List <MeshContainer>();
            Frame rf = rootFrame.FrameHierarchy;

            getAnimationMesh(rf, meshes);

            MeshContainer mc = meshes[0];

            ExtendedMaterial[] materials = mc.GetMaterials();
            Texture[]          textures  = new Texture[materials.Length];
            string             pathname  = Path.GetDirectoryName(objectUrl) + @"\";

            // load textures
            for (int i = 0; i < materials.Length; i++)
            {
                if (materials[i].TextureFilename != null)
                {
                    if (File.Exists((pathname + materials[i].TextureFilename)))
                    {
                        textures[i] = TextureLoader.FromFile(dev, (pathname + materials[i].TextureFilename),
                                                             0, 0, 0, Usage.None, Format.R8G8B8, Pool.Managed, Filter.Linear, Filter.Linear, 0);
                    }
                }
            }

            loaded.AddParametr(new Parametr("Objekt[]", "textures", textures));
            loaded.AddParametr(new Parametr("Microsoft.DirectX.Direct3D.AnimationRootFrame", name, rootFrame));
            loaded.AddParametr(new Parametr("Microsoft.DirectX.Direct3D.ProgressiveMesh", "pMesh", GetMesh(rootFrame)));
            return(loaded);
        }
Example #31
0
        public void Buy()
        {
            GameSettings s = Resources.Load("Game Settings") as GameSettings;

            if (curCost > s.playerProfile.money.value)
            {
                return;
            }

            s.playerProfile.money.value -= curCost;

            switch (storeType)
            {
            case MyObjectType.mw:
                Weapon mw = s.r_manager.GetWeapon(storeId);
                s.playerProfile.bought_items.Add(mw.id.value);
                break;

            case MyObjectType.sw:
                Weapon sw = s.r_manager.GetWeapon(storeId);
                s.playerProfile.bought_items.Add(sw.id.value);
                break;

            case MyObjectType.mask:
                Mask m = s.r_manager.GetMask(storeId);
                s.playerProfile.bought_items.Add(m.obj.id.value);
                break;

            case MyObjectType.skill:
                break;

            case MyObjectType.outfit:
                MeshContainer mc = s.r_manager.GetMesh(storeId);
                s.playerProfile.bought_items.Add(mc.id.value);
                break;

            default:
                break;
            }

            EquipItem(s, storeType);
            onProfileUpdate.Raise();
            isTrue.Invoke();
        }
Example #32
0
            public override void SetUserDataInMeshContainer(MeshContainer meshcontainer)
            {
                G3DMesh g3dmesh = new G3DMesh();

                ExtendedMaterial[] materials = meshcontainer.GetMaterials();

                if (materials != null)
                {
                    g3dmesh.Materials = new Material[materials.Length];
                    g3dmesh.Textures  = new Texture[materials.Length];
                    for (int i = 0; i < materials.Length; i++)
                    {
                        // Load texture from file or resource
                        if (materials[i].TextureFilename != null)
                        {
                            Texture texture;
                            try
                            {
                                texture = TextureLoader.FromFile(meshcontainer.MeshData.Mesh.Device, materials[i].TextureFilename);
                            }
                            catch
                            {
                                try
                                {
                                    texture = TextureLoader.FromStream(meshcontainer.MeshData.Mesh.Device, System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream(materials[i].TextureFilename));
                                }
                                catch
                                {
                                    texture = null;
                                }
                            }
                            g3dmesh.Textures[i] = texture;
                        }

                        // Load material
                        g3dmesh.Materials[i]         = materials[i].Material3D;
                        g3dmesh.Materials[i].Ambient = g3dmesh.Materials[i].Diffuse;
                    }
                }

                g3dmesh.Mesh           = meshcontainer.MeshData.Mesh;
                meshcontainer.UserData = g3dmesh;
            }
        BoundingBox GetMinMaxValues(MeshContainer mc)
        {
            DataStream ds = mc.MeshData.Mesh.LockVertexBuffer(LockFlags.ReadOnly);
            List<Vector3> vertices = new List<Vector3>();
            do
            {
                vertices.Add(ds.Read<Vector3>());
                ds.Seek(mc.MeshData.Mesh.BytesPerVertex - Vector3.SizeInBytes, System.IO.SeekOrigin.Current);
            } while (ds.Position < ds.Length);

            var bb = BoundingBox.FromPoints(vertices.ToArray());

            mc.MeshData.Mesh.UnlockVertexBuffer();
            return bb;
        }
Example #34
0
            public bool MoveNext()
            {
                if(End)
                    return false;

                if( MeshTracker != null)
                {
                    MeshTracker = MeshTracker.NextContainer;
                    if(MeshTracker != null)
                        return true;
                }

                while(FrameTracker.MoveNext())
                {
                    Frame frame = FrameTracker.Current as Frame;
                    MeshTracker = frame.MeshContainer;
                    if(MeshTracker != null)
                        return true;
                }

                End = true;
                return false;
            }
Example #35
0
 public void Reset()
 {
     FrameTracker.Reset();
     MeshTracker = null;
     End = false;
 }