Example #1
0
 public void MergeWith(CollisionNode external)
 {
     foreach (CollisionObject co in external._objects)
     {
         _objects.Add(co);
     }
     SignalPropertyChange();
 }
Example #2
0
        public void MergeWith()
        {
            CollisionNode  external = null;
            OpenFileDialog o        = new OpenFileDialog();

            o.Filter = "Collision (*.coll)|*.coll";
            o.Title  = "Please select a collision to merge with.";
            if (o.ShowDialog() == DialogResult.OK)
            {
                if ((external = (CollisionNode)NodeFactory.FromFile(null, o.FileName)) != null)
                {
                    MergeWith(external);
                }
            }
        }
Example #3
0
        public CollisionObject(CollisionNode parent, ColObject *entry)
        {
            _modelName = entry->ModelName;
            _boneName  = entry->BoneName;
            _unk1      = entry->_unk1;
            _unk2      = entry->_unk2;
            _unk3      = entry->_unk3;
            _flags     = (ushort)entry->_flags;
            _unk5      = entry->_unk5;
            _unk6      = entry->_unk6;
            _boneIndex = entry->_boneIndex;
            _boxMax    = entry->_boxMax;
            _boxMin    = entry->_boxMin;

            int pointCount  = entry->_pointCount;
            int pointOffset = entry->_pointOffset;
            int planeCount  = entry->_planeCount;
            int planeOffset = entry->_planeIndex;

            ColPlane *pPlane = &parent.Header->Planes[planeOffset];

            //Decode points
            BVec2 *pPtr = &parent.Header->Points[pointOffset];

            for (int i = 0; i < pointCount; i++)
            {
                new CollisionLink(this, *pPtr++);
            }

            //CollisionPlane plane;
            for (int i = 0; i < planeCount; i++)
            {
                if (pPlane->_point1 != pPlane->_point2)
                {
                    new CollisionPlane(this, pPlane++, pointOffset);
                }
            }
        }
        public CollisionObject(CollisionNode parent, ColObject* entry)
        {
            _modelName = entry->ModelName;
            _boneName = entry->BoneName;
            _unk1 = entry->_unk1;
            _unk2 = entry->_unk2;
            _unk3 = entry->_unk3;
            _flags = (ushort)entry->_flags;
            _unk5 = entry->_unk5;
            _unk6 = entry->_unk6;
            _boneIndex = entry->_boneIndex;

            int pointCount = entry->_pointCount;
            int pointOffset = entry->_pointOffset;
            int planeCount = entry->_planeCount;
            int planeOffset = entry->_planeIndex;

            ColPlane* pPlane = &parent.Header->Planes[planeOffset];

            //Decode points
            BVec2* pPtr = &parent.Header->Points[pointOffset];
            for (int i = 0; i < pointCount; i++)
                new CollisionLink(this, *pPtr++);

            //CollisionPlane plane;
            for (int i = 0; i < planeCount; i++)
                if (pPlane->_point1 != pPlane->_point2)
                    new CollisionPlane(this, pPlane++, pointOffset);
        }
 public DialogResult ShowDialog(IWin32Window owner, CollisionNode node)
 {
     _node = node;
     try { return ShowDialog(owner); }
     finally { _node.SignalPropertyChange(); _node = null; }
 }
        private void TargetChanged(CollisionNode node)
        {
            ClearSelection();
            trackBar1.Value = 0;
            _snapMatrix = Matrix.Identity;
            _selectedObject = null;

            _modelPanel.ClearAll();

            _targetNode = node;

            PopulateModelList();
            PopulateObjectList();

            if (lstObjects.Items.Count > 0)
            {
                lstObjects.SelectedIndex = 0;
                _selectedObject = lstObjects.Items[0] as CollisionObject;
                SnapObject();
            }
            ObjectSelected();

            _modelPanel.ResetCamera();
        }