public void Execute(int index) { int currentState = States[index].State; float cd = States[index].CoolDown - DeltaTime; if (cd < 0) { PedestrianState newstate = States[index]; PedestrianData newdata = PedestrianData[index]; InstanceRendererProperty newproperty = StateProperty[index]; int nextstate = NextState(currentState); newproperty.Value = PedestrianAnimStateConfig.StateFrameRange[nextstate]; newstate.CoolDown = RdGen.NextFloat( PedestrianAnimStateConfig.DurationRange[nextstate].x, PedestrianAnimStateConfig.DurationRange[nextstate].y); newdata.Speed = RdGen.NextFloat( PedestrianAnimStateConfig.SpeedRange[nextstate].x, PedestrianAnimStateConfig.SpeedRange[nextstate].y); StateProperty[index] = newproperty; PedestrianData[index] = newdata; States[index] = newstate; } else { States[index] = new PedestrianState() { CoolDown = cd, State = currentState }; } }
public void Render() { for (int i = 0; i < _renderData.Count; i++) { if (_renderData[i].Material && _renderData[i].Mesh) { Entity ent; NativeMultiHashMapIterator <int> iterator; if (_batcher.TryGetFirstValue(i, out ent, out iterator)) { InstanceRendererProperty prop = EntityManager.GetComponentData <InstanceRendererProperty>(ent); _renderer.Init(_renderData[i], prop); _renderer.Batch(ent); while (_batcher.TryGetNextValue(out ent, ref iterator)) { _renderer.Batch(ent); } _renderer.Final(); } } } }
public void Init(InstanceRendererData renderData, InstanceRendererProperty property) { data = renderData; shaderId = property.ParamId; batchCount = 0; }