private void btnOK_Click(object sender, EventArgs e) { Model model = (SceneManager.Current.Models.Count > 0 ? SceneManager.Current.Models[modelIndex] : (Model)SceneManager.Current.Add(new Model())); newBoneKey = model.AddMesh(null, boneIndex); model.SetName(txtName.Text, newBoneKey); newBoneKey = ModelBone.GetModelBoneKey(modelIndex, newBoneKey); Close(); }
private void btnOK_Click(object sender, EventArgs e) { if (lstWheels.SelectedItem != null) { wheel = new Model(); WheelPreview wp = wheels[lstWheels.SelectedIndex]; CNTImporter cntImporter = new CNTImporter(); var rim = (Model)cntImporter.Import(Path.Combine(wp.Archive, wp.Path, "rim.cnt")); //var tyre = (Model)cntImporter.Import(wheelsFolder + lstWheels.SelectedItem + "\\tyre.cnt"); foreach (var mesh in rim.Meshes) { wheel.SetName(mesh.Name, wheel.AddMesh(mesh, 0)); } //foreach (var mesh in tyre.Meshes) { wheel.SetName(mesh.Name, wheel.AddMesh(mesh, 0)); } } this.Close(); }
public void Draw() { if (Linked) { var parentTransform = ((ModelBone)link).CombinedTransform; if (linkType == LinkType.All) { transform = parentTransform; } else { transform = Matrix4.Identity; var v = parentTransform.ExtractTranslation(); parentTransform.Normalize(); parentTransform.M41 = v.X; parentTransform.M42 = v.Y; parentTransform.M43 = v.Z; if ((linkType & LinkType.Rotation) == LinkType.Rotation) { transform *= Matrix4.CreateFromQuaternion(parentTransform.ExtractRotation()); } if ((linkType & LinkType.Scale) == LinkType.Scale) { transform *= Matrix4.CreateScale(parentTransform.ExtractScale()); } if ((linkType & LinkType.Position) == LinkType.Position) { transform *= Matrix4.CreateTranslation(parentTransform.ExtractTranslation()); } } } var mS = SceneManager.Current.Transform; var mT = transform; switch (assetType) { case AssetType.Model: var model = asset as Model; if (model != null) { GL.PushMatrix(); GL.MultMatrix(ref mS); GL.MultMatrix(ref mT); model.Draw(); GL.PopMatrix(); } break; case AssetType.Sprite: if (asset == null) { var sprite = new ModelMeshPart(); sprite.AddVertex(new Vector3(-0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 1)); sprite.AddVertex(new Vector3(-0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 0)); sprite.AddVertex(new Vector3( 0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 0)); sprite.AddVertex(new Vector3( 0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 1)); sprite.AddVertex(new Vector3( 0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 1)); sprite.AddVertex(new Vector3( 0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 0)); sprite.AddVertex(new Vector3(-0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 0)); sprite.AddVertex(new Vector3(-0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 1)); sprite.IndexBuffer.Initialise(); sprite.VertexBuffer.Initialise(); sprite.Material = new Material { Name = "Entity.Asset", Texture = SceneManager.Current.Content.Load<Texture, PNGImporter>("entity_" + entityType.ToString().ToLower(), Path.GetDirectoryName(Application.ExecutablePath) + @"\data\icons\") }; sprite.PrimitiveType = PrimitiveType.Quads; var spritemesh = new ModelMesh(); spritemesh.AddModelMeshPart(sprite); var spritemodel = new Model(); spritemodel.AddMesh(spritemesh); asset = spritemodel; } GL.PushMatrix(); var position = Matrix4.CreateTranslation(mT.ExtractTranslation()); GL.MultMatrix(ref mS); GL.MultMatrix(ref position); GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); ((Model)asset).Draw(); GL.Disable(EnableCap.Blend); GL.PopMatrix(); break; } }
public void Draw() { if (Linked) { var parentTransform = ((ModelBone)link).CombinedTransform; if (linkType == LinkType.All) { transform = parentTransform; } else { transform = Matrix4.Identity; var v = parentTransform.ExtractTranslation(); parentTransform.Normalize(); parentTransform.M41 = v.X; parentTransform.M42 = v.Y; parentTransform.M43 = v.Z; if ((linkType & LinkType.Rotation) == LinkType.Rotation) { transform *= Matrix4.CreateFromQuaternion(parentTransform.ExtractRotation()); } if ((linkType & LinkType.Scale) == LinkType.Scale) { transform *= Matrix4.CreateScale(parentTransform.ExtractScale()); } if ((linkType & LinkType.Position) == LinkType.Position) { transform *= Matrix4.CreateTranslation(parentTransform.ExtractTranslation()); } } } var mS = SceneManager.Current.Transform; var mT = transform; switch (assetType) { case AssetType.Model: var model = asset as Model; if (model != null) { GL.PushMatrix(); GL.MultMatrix(ref mS); GL.MultMatrix(ref mT); model.Draw(); GL.PopMatrix(); } break; case AssetType.Sprite: if (asset == null) { var sprite = new ModelMeshPart(); sprite.AddVertex(new Vector3(-0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 1)); sprite.AddVertex(new Vector3(-0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 0)); sprite.AddVertex(new Vector3(0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 0)); sprite.AddVertex(new Vector3(0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 1)); sprite.AddVertex(new Vector3(0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 1)); sprite.AddVertex(new Vector3(0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(0, 0)); sprite.AddVertex(new Vector3(-0.25f, 0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 0)); sprite.AddVertex(new Vector3(-0.25f, -0.25f, 0.0f), Vector3.UnitY, new Vector2(1, 1)); sprite.IndexBuffer.Initialise(); sprite.VertexBuffer.Initialise(); sprite.Material = new Material { Name = "Entity.Asset", Texture = SceneManager.Current.Content.Load <Texture, PNGImporter>("entity_" + entityType.ToString().ToLower(), Path.GetDirectoryName(Application.ExecutablePath) + @"\data\icons\") }; sprite.PrimitiveType = PrimitiveType.Quads; var spritemesh = new ModelMesh(); spritemesh.AddModelMeshPart(sprite); var spritemodel = new Model(); spritemodel.AddMesh(spritemesh); asset = spritemodel; } GL.PushMatrix(); var position = Matrix4.CreateTranslation(mT.ExtractTranslation()); GL.MultMatrix(ref mS); GL.MultMatrix(ref position); GL.Enable(EnableCap.Blend); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); ((Model)asset).Draw(); GL.Disable(EnableCap.Blend); GL.PopMatrix(); break; } }