public bool AsyncFinalize() { if (!m_resources.FinalizeLoad()) { return(false); } m_obj3dResources = new ObjectRenderable3DStaticResources(); var highwayParams = new MaterialParams(); highwayParams["LeftColor"] = m_lVolColor; highwayParams["RightColor"] = m_rVolColor; highwayParams["Hidden"] = 0.0f; laserMaterial.BlendMode = BlendMode.Additive; laserEntryMaterial.BlendMode = BlendMode.Additive; var keyBeamMesh = Mesh.CreatePlane(Vector3.UnitX, Vector3.UnitZ, 1, LENGTH_BASE + LENGTH_ADD, Anchor.BottomCenter); m_resources.Manage(keyBeamMesh); m_highwayDrawable = new Drawable3D() { Texture = highwayTexture, Material = highwayMaterial, Mesh = Mesh.CreatePlane(Vector3.UnitX, Vector3.UnitZ, 1, LENGTH_BASE + LENGTH_ADD, Anchor.BottomCenter), Params = highwayParams, }; m_resources.Manage(m_highwayDrawable.Mesh); for (int i = 0; i < 6; i++) { m_keyBeamDrawables[i] = new Drawable3D() { Texture = keyBeamTexture, Mesh = keyBeamMesh, Material = basicMaterial, }; } MaterialParams CreateVolumeParams(int lane) { var volParams = new MaterialParams(); volParams["LaserColor"] = lane == 0 ? m_lVolColor : m_rVolColor; volParams["HiliteColor"] = new Vector3(1, 1, 0); return(volParams); } void CreateVolDrawables(int lane, ref Drawable3D entryDrawable, ref Drawable3D exitDrawable) { entryDrawable = new Drawable3D() { Texture = entryTexture, Mesh = Mesh.CreatePlane(Vector3.UnitX, Vector3.UnitZ, 2 / 6.0f, 1.0f, Anchor.TopCenter), Material = laserEntryMaterial, Params = CreateVolumeParams(lane), }; m_resources.Manage(entryDrawable.Mesh); exitDrawable = new Drawable3D() { Texture = exitTexture, Mesh = Mesh.CreatePlane(Vector3.UnitX, Vector3.UnitZ, 2 / 6.0f, 1.0f, Anchor.BottomCenter), Material = laserMaterial, Params = CreateVolumeParams(lane), }; m_resources.Manage(exitDrawable.Mesh); } CreateVolDrawables(0, ref m_lVolEntryDrawable, ref m_lVolExitDrawable); CreateVolDrawables(1, ref m_rVolEntryDrawable, ref m_rVolExitDrawable); return(true); }