/// <summary> Returns writer instance. </summary> /// <returns> The writer instance. </returns> public ThreadWriter AsThreadWriter() { #if ENABLE_UNITY_COLLECTIONS_CHECKS Assert.IsTrue(this._useThreads, "Not in thread mode."); #endif return(new ThreadWriter(ref this)); }
public void ShouldWriteImportedMesh() { const string primitiveName = "Books"; const string tmpFileName = "ShouldWriteImportedMesh.vpx"; var go = VpxImportEngine.ImportIntoScene(VpxPath.Primitive, options: ConvertOptions.SkipNone); var ta = go.GetComponent <TableComponent>(); ta.TableContainer.Save(tmpFileName); var writtenTable = FileTableContainer.Load(tmpFileName); var writtenMesh = writtenTable.Primitive(primitiveName).GetMesh(); var table = FileTableContainer.Load(VpxPath.Primitive); var originalMesh = table.Primitive(primitiveName).GetMesh(); Assert.IsTrue(originalMesh.SomewhatEquals(writtenMesh, 0.9f, 4)); File.Delete(tmpFileName); Object.DestroyImmediate(go); }
public void TestInstantiateAtNonUniformScale(bool hasComponent) { GraphBuilder.VariableHandle handle = default; var scale = new float3(1f, 2f, 4f); SetupTestGraphDefinitionMultipleFrames((b, _) => { handle = b.BindVariableToDataIndex("TestEntity"); var onUpdate = b.AddNode(new OnUpdate()); var enabled = b.AddNode(new ConstantBool { Value = true }); var instantiateAt = b.AddNode(new InstantiateAt()); var scaleValue = b.AddNode(new ConstantFloat3 { Value = scale }); b.BindVariableToInput(handle, instantiateAt.Prefab); b.CreateEdge(enabled.ValuePort, onUpdate.Enabled); b.CreateEdge(onUpdate.Output, instantiateAt.Input); b.CreateEdge(scaleValue.ValuePort, instantiateAt.Scale); }, (manager, entity, index) => { var instance = GetGraphInstance(entity); instance.WriteValueToDataSlot(handle.DataIndex, entity); if (hasComponent) { manager.AddComponent <Scale>(entity); manager.AddComponent <NonUniformScale>(entity); } }, (manager, entity, index) => { var e = manager.GetAllEntities().Last(); Assert.IsTrue(manager.GetComponentData <NonUniformScale>(e).Value.Equals(scale)); Assert.IsFalse(manager.HasComponent <Scale>(e)); }); }
public void TestInstantiateAtRotation(bool hasComponent) { GraphBuilder.VariableHandle handle = default; var rotation = new quaternion(1f, 2f, 3f, 4f); SetupTestGraphDefinitionMultipleFrames((b, _) => { handle = b.BindVariableToDataIndex("TestEntity"); var onUpdate = b.AddNode(new OnUpdate()); var enabled = b.AddNode(new ConstantBool { Value = true }); var instantiateAt = b.AddNode(new InstantiateAt()); var constantPositionValue = b.AddNode(new ConstantQuaternion { Value = rotation }); b.BindVariableToInput(handle, instantiateAt.Prefab); b.CreateEdge(enabled.ValuePort, onUpdate.Enabled); b.CreateEdge(onUpdate.Output, instantiateAt.Input); b.CreateEdge(constantPositionValue.ValuePort, instantiateAt.Rotation); }, (manager, entity, index) => { var instance = GetGraphInstance(entity); instance.WriteValueToDataSlot(handle.DataIndex, entity); if (hasComponent) { manager.AddComponent <Rotation>(entity); } }, (manager, entity, index) => { var e = manager.GetAllEntities().Last(); Assert.IsTrue(manager.GetComponentData <Rotation>(e).Value.Equals(rotation)); }); }