public Grass2Aspect GenerateAspect(UnplantedGrassInstance unplantedInstance, Vector2 flatPosition) { var rotationInRad = unplantedInstance.FlatRotationInRadians; MyTransformTriplet transformTriplet = new MyTransformTriplet( new Vector3(0, 0, 0), new Vector3(0, rotationInRad, 0), unplantedInstance.Size); UniformsPack uniforms = new UniformsPack(); uniforms.SetUniform("_InitialBendingValue", unplantedInstance.InitialBendingValue); uniforms.SetUniform("_PlantBendingStiffness", unplantedInstance.InitialBendingStiffness); uniforms.SetUniform("_PlantDirection", new Vector4(Mathf.Sin(rotationInRad), Mathf.Cos(rotationInRad), 0, 0)); //todo! uniforms.SetUniform("_Color", unplantedInstance.Color); return(new Grass2Aspect() { Entities = new List <Grass2Entity>() { new Grass2Entity() { DeltaTransformTriplet = transformTriplet, Uniforms = uniforms, FlatRotation = rotationInRad } }, FlatPos = flatPosition }); }
public Grass2Aspect GenerateAspect(UnplantedGrassInstance unplantedInstance, Vector2 flatPosition) { var rotationInRad = unplantedInstance.FlatRotationInRadians; MyTransformTriplet transformTriplet = new MyTransformTriplet( new Vector3(0, 0, 0), new Vector3(Mathf.Deg2Rad * unplantedInstance.InitialBendingValue * 20, rotationInRad, 0), //TODO i use properties from Grass2 as inputs to EVegetation unplantedInstance.Size); UniformsPack uniforms = new UniformsPack(); uniforms.SetUniform("_Color", unplantedInstance.Color); return(new Grass2Aspect() { Entities = new List <Grass2Entity>() { new Grass2Entity() { DeltaTransformTriplet = transformTriplet, Uniforms = uniforms, FlatRotation = rotationInRad } }, FlatPos = flatPosition }); }
public Grass2Aspect GenerateAspect(UnplantedGrassInstance unplantedInstance, Vector2 flatPosition) { var entityRotationInRad = unplantedInstance.FlatRotationInRadians; var usedBillboardIndex = _billboardClan.QueryRandom((int)(entityRotationInRad * 543.21)); //todo seed var entities = new List <Grass2Entity>(); int billboardsCount = 3; for (int i = 0; i < billboardsCount; i++) { var additionalRotation = ((Mathf.PI) / (billboardsCount)) * i; var finalRotationInRad = additionalRotation + entityRotationInRad; MyTransformTriplet transformTriplet = new MyTransformTriplet( new Vector3(0, 0, 0), new Vector3(0, finalRotationInRad, 0), unplantedInstance.Size); UniformsPack uniforms = new UniformsPack(); uniforms.SetUniform("_InitialBendingValue", unplantedInstance.InitialBendingValue); uniforms.SetUniform("_PlantBendingStiffness", unplantedInstance.InitialBendingStiffness); uniforms.SetUniform("_PlantDirection", new Vector4(Mathf.Sin(finalRotationInRad), Mathf.Cos(finalRotationInRad), finalRotationInRad, 0)); //todo! uniforms.SetUniform("_Color", unplantedInstance.Color); uniforms.SetUniform("_ArrayTextureIndex", usedBillboardIndex); var newEntity = new Grass2Entity() { DeltaTransformTriplet = transformTriplet, Uniforms = uniforms, FlatRotation = finalRotationInRad }; entities.Add(newEntity); } return(new Grass2Aspect() { Entities = entities, FlatPos = flatPosition }); }