private void LoadParticleInstance() { float pSize = 0; switch (_state) { case INSTANCE_MODE.DEBUG: pSize = _DebugBBSize; break; default: pSize = _BBSize; break; } List <BillboardVertex> vertices = new List <BillboardVertex>(); List <short> indices = new List <short>(); short baseIndex = (short)0; BillboardVertex vertex = new BillboardVertex(); vertex.Position = new Vector4(1f, 1f, 1f, 1f); vertex.TexCoord = new Vector4(0.0f, 0.0f, -pSize, pSize); vertices.Add(vertex); vertex.Position = new Vector4(1, 1, 1, 1); vertex.TexCoord = new Vector4(1.0f, 0.0f, pSize, pSize); vertices.Add(vertex); vertex.Position = new Vector4(1, 1, 1, 0); vertex.TexCoord = new Vector4(0.0f, 1.0f, -pSize, -pSize); vertices.Add(vertex); vertex.Position = new Vector4(1, 1, 1, 0); vertex.TexCoord = new Vector4(1.0f, 1.0f, pSize, -pSize); vertices.Add(vertex); indices.Add((short)(0 + baseIndex)); indices.Add((short)(1 + baseIndex)); indices.Add((short)(2 + baseIndex)); indices.Add((short)(2 + baseIndex)); indices.Add((short)(1 + baseIndex)); indices.Add((short)(3 + baseIndex)); _vertexBuffer = new VertexBuffer(_graphicsDevice, typeof(BillboardVertex), vertices.Count, BufferUsage.WriteOnly); _vertexBuffer.SetData(vertices.ToArray()); _indexBuffer = new IndexBuffer(_graphicsDevice, IndexElementSize.SixteenBits, indices.Count, BufferUsage.WriteOnly); _indexBuffer.SetData(indices.ToArray()); }
public void CreateBillboardVerticesFromList(List<Tuple<Vector3, Vector3>> treeList) { if (!treeList.Any()) return; var billboardVertices = new BillboardVertex[treeList.Count * 6]; int i = 0; var random = new Random(); foreach (var t in treeList) createOne( ref i, billboardVertices, t.Item1 + _world.TranslationVector, t.Item2, 0.0001f + (float) random.NextDouble()); _vertexBuffer = Buffer.Vertex.New(Effect.GraphicsDevice, billboardVertices); _vertexInputLayout = VertexInputLayout.FromBuffer(0, _vertexBuffer); }
private void createOne( ref int i, BillboardVertex[] bv, Vector3 p, Vector3 n, float rnd) { n.Normalize(); bv[i++] = new BillboardVertex(p, n, new Vector2(0, 0), rnd); bv[i++] = new BillboardVertex(p, n, new Vector2(1, 0), rnd); bv[i++] = new BillboardVertex(p, n, new Vector2(1, 1), rnd); bv[i++] = new BillboardVertex(p, n, new Vector2(0, 0), rnd); bv[i++] = new BillboardVertex(p, n, new Vector2(1, 1), rnd); bv[i++] = new BillboardVertex(p, n, new Vector2(0, 1), rnd); }
public override void InitTask() { var graph = new GameObject("Graph"); var graphControler = graph.AddComponent <GraphForBillboardVertexes>(); Graphs.Add(graphControler); graphControler.SetupParams(new GraphParameters(new Vector3(0, -20), "Test")); var customFont = FontsGenerator.GetOrCreateFont("Arial", 32); var mainTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 800, 800); mainTexture.name = "Target"; var dotTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 800, 800); mainTexture.name = "Dot"; var selectFrame = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_selectFrameTexture), 800, 800); selectFrame.name = "SelectFrame"; var textTextureFactory = new TextTextureFactory(customFont, 0); var baseScale = Vector2.one; var imageParameters = new BillboardParameters(mainTexture, scale: baseScale * 3f, useCache: true); var selectFrameParameters = new BillboardParameters(selectFrame, scale: baseScale * 6f, isMonoColor: true, useCache: false); var text = textTextureFactory.MakeTextTexture($"Select Me", true); const float scale = 10; var textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white); _selectableVertex = graphControler.SpawnVertex <SelectableVertex, SelectableVertexParameters>( new SelectableVertexParameters(new[] { imageParameters, textParameters }, selectFrameParameters, new Vector3(-20, 20))); var dotImageParameters = new BillboardParameters(mainTexture, scale: baseScale * 3f, useCache: true); text = textTextureFactory.MakeTextTexture($"Dot 1", true); textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white); _dot1 = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>( new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(0, 20))); text = textTextureFactory.MakeTextTexture($"Dot 2", true); textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white); _dot2 = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>( new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(20, 20))); text = textTextureFactory.MakeTextTexture($"Move me", true); textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white); _moveVertex = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>( new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(30, 20, -10))); text = textTextureFactory.MakeTextTexture($"Click me", true); textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale), isMonoColor: true, monoColor: Color.white); var clickVeretex = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>( new BillboardVertexParameters(new[] { imageParameters, textParameters }, new Vector3(-50, 20, -10))); var snowPref = Resources.Load <GameObject>(@"Prefabs\Snowflake"); clickVeretex.gameObject.AddComponent <Button3D>().Action = (g) => { _clickCount++; Destroy(Instantiate(snowPref, clickVeretex.transform.position, Quaternion.identity), 2); }; var colors = new List <Color>(7) { new Color(1f, 0f, 0f), new Color(1f, 127f / 255f, 0f), new Color(1f, 1f, 0f), new Color(0f, 1f, 0f), new Color(0f, 0f, 1f), new Color(75f / 255f, 0f, 130f / 255f), new Color(143f, 0f, 1f), }; var edgeTypes = new List <(Type type, EdgeParameters parameters)>(1) { (typeof(StretchableEdge), new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.white), new SpringParameters(1, 10))) }; var player = CreatePlayer(); player.SetupParams(new PlayerParameters(Vector3.zero, Vector3.zero, SceneParametersContainer.PlayerSpeed, 20, isVR: SceneParametersContainer.IsVR, new ToolConfig[4] { new ToolConfig(typeof(SelectItemTool), new SelectItemToolParams(colors)), new ToolConfig(typeof(GrabItemTool), new GrabItemToolParams()), new ToolConfig(typeof(EdgeCreaterTool), new EdgeCreaterToolParams(edgeTypes)), new ToolConfig(typeof(ClickTool), new ClickToolParams()) })); }
public GraphForBillboardVertexes CreateGraph() { var graph = new GameObject("Graph"); var graphControler = graph.AddComponent <GraphForBillboardVertexes>(); graph.AddComponent <Button3D>().Action = (g) => graphControler.StartForceBasedLayout(1000); Graphs.Add(graphControler); graphControler.SetupParams(new GraphParameters(new Vector3(-69, -15, -30), "Click me")); var customFont = Resources.Load <Font>(_fontPath); var mainTexture = Texture2DExtension.ResizeTexture(Resources.Load <Texture2D>(_mainTexture), 200, 200); mainTexture.name = "Target"; var textTextureFactory = new TextTextureFactory(customFont, 32); var resizedTetxure = Texture2DExtension.ResizeTexture(mainTexture, 200, 200); var baseScale = Vector2.one; var imageParameters = new BillboardParameters(resizedTetxure, scale: baseScale * 3f, useCache: true); var stretchableEdgeMaterialParameters = new StretchableEdgeMaterialParameters(Color.white, true); var edgeParameters = new StretchableEdgeParameters(new StretchableEdgeMaterialParameters(Color.yellow, true), new SpringParameters(1, 5)); var coordinates = new Vector3[26] { new Vector3(-91.62799f, -2.3942585f, -43.161083f), new Vector3(-91.138885f, -3.3022366f, -17.54464f), new Vector3(-68.31055f, -9.711845f, -29.303394f), new Vector3(-71.31007f, -2.7437487f, -56.661026f), new Vector3(-45.411583f, -2.9353018f, -42.584347f), new Vector3(-47.30028f, -3.1969986f, -22.738922f), new Vector3(-64.77525f, -3.20299f, -2.5527115f), new Vector3(-49.3282f, 5.356124f, -2.7157516f), new Vector3(-37.920048f, 5.7275085f, -30.361862f), new Vector3(-52.707493f, 8.093277f, -57.873806f), new Vector3(-88.294876f, 7.605483f, -57.47967f), new Vector3(-81.45683f, 6.2511196f, -1.4397621f), new Vector3(-105.84165f, 6.152034f, -28.007107f), new Vector3(-99.75531f, 16.45427f, -11.093414f), new Vector3(-38.78393f, 16.683071f, -14.812604f), new Vector3(-40.808224f, 15.8126135f, -44.379215f), new Vector3(-73.01358f, 14.908555f, -55.7931f), new Vector3(-68.13217f, 15.000669f, 1.9544525f), new Vector3(-83.44349f, 25.460217f, -8.76181f), new Vector3(-59.4664f, 24.522339f, -10.350107f), new Vector3(-47.37295f, 23.873238f, -31.69215f), new Vector3(-92.189575f, 24.484436f, -28.520731f), new Vector3(-81.99469f, 23.73766f, -46.882977f), new Vector3(-56.52922f, 23.624348f, -43.66665f), new Vector3(-72.91645f, 30.9808f, -30.28012f), new Vector3(-93f, 20f, -42f), }; var currentVertex = new BillboardVertex[coordinates.Length]; for (var i = 0; i < coordinates.Length; ++i) { currentVertex[i] = graphControler.SpawnVertex <BillboardVertex, BillboardVertexParameters>(new BillboardVertexParameters(new[] { imageParameters }, coordinates[i])); } currentVertex[0].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters); currentVertex[1].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters); currentVertex[3].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters); currentVertex[4].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters); currentVertex[5].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters); currentVertex[6].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[2], edgeParameters); currentVertex[0].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters); currentVertex[1].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters); currentVertex[3].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters); currentVertex[4].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[5], edgeParameters); currentVertex[4].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters); currentVertex[5].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[6], edgeParameters); currentVertex[6].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[1], edgeParameters); currentVertex[7].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[8], edgeParameters); currentVertex[8].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[9], edgeParameters); currentVertex[9].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[10], edgeParameters); currentVertex[10].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[12], edgeParameters); currentVertex[11].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[7], edgeParameters); currentVertex[12].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[11], edgeParameters); currentVertex[9].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[4], edgeParameters); currentVertex[9].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters); currentVertex[10].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[3], edgeParameters); currentVertex[10].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters); currentVertex[12].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[0], edgeParameters); currentVertex[12].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[1], edgeParameters); currentVertex[11].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[1], edgeParameters); currentVertex[11].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[6], edgeParameters); currentVertex[7].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[6], edgeParameters); currentVertex[7].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[5], edgeParameters); currentVertex[8].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[5], edgeParameters); currentVertex[8].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[4], edgeParameters); currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[20], edgeParameters); currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[19], edgeParameters); currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[18], edgeParameters); currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[21], edgeParameters); currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[22], edgeParameters); currentVertex[24].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[23], edgeParameters); currentVertex[20].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[19], edgeParameters); currentVertex[19].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[18], edgeParameters); currentVertex[18].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[21], edgeParameters); currentVertex[21].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[22], edgeParameters); currentVertex[22].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[23], edgeParameters); currentVertex[23].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[20], edgeParameters); currentVertex[18].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[17], edgeParameters); currentVertex[18].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters); currentVertex[21].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters); currentVertex[22].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[16], edgeParameters); currentVertex[23].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[16], edgeParameters); currentVertex[23].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[15], edgeParameters); currentVertex[20].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[15], edgeParameters); currentVertex[20].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[14], edgeParameters); currentVertex[19].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[14], edgeParameters); currentVertex[19].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[17], edgeParameters); currentVertex[17].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters); currentVertex[16].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[15], edgeParameters); currentVertex[15].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[14], edgeParameters); currentVertex[14].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[17], edgeParameters); currentVertex[15].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[9], edgeParameters); currentVertex[15].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[8], edgeParameters); currentVertex[14].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[8], edgeParameters); currentVertex[14].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[7], edgeParameters); currentVertex[17].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[7], edgeParameters); currentVertex[17].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[11], edgeParameters); currentVertex[13].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[11], edgeParameters); currentVertex[13].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[12], edgeParameters); currentVertex[16].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[10], edgeParameters); currentVertex[16].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[9], edgeParameters); currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[10], edgeParameters); currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[12], edgeParameters); currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[13], edgeParameters); currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[21], edgeParameters); currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[22], edgeParameters); currentVertex[25].Link <StretchableEdge, StretchableEdgeParameters>(currentVertex[16], edgeParameters); var text = textTextureFactory.MakeTextTexture($"Click me", true); const float scale = 20; var textParameters = new BillboardParameters(text, new Vector4(0, -5, 0, 0), new Vector2(scale, text.height * 1.0f / text.width * scale)); return(graphControler); }