public virtual void OnRender(ModelEntityShader shader) { if (_transformInvalid || _lastPos != Position) { _transform = Matrix4.Mult( Matrix4.Mult( Matrix4.Mult( Matrix4.CreateTranslation(_offset), Matrix4.CreateScale(_scale)), Matrix4.CreateFromQuaternion(Rotation)), Matrix4.CreateTranslation(Entity.Position)); _transformInvalid = false; _lastPos = Position; } if (Model != null) { shader.Render(Model, Skin, _transform); } }
public override void OnEnter(bool firstTime) { base.OnEnter(firstTime); if (firstTime) { Generator = new CityGenerator(); World = Generator.Generate(WorldSize, WorldSize); _fpsText = new UILabel(PixelFont.Large); _fpsText.Colour = Color4.White; AddChild(_fpsText); _posText = new UILabel(PixelFont.Large); _posText.Colour = Color4.White; AddChild(_posText); _infDisplay = new UIInfectionDisplay(World); AddChild(_infDisplay); PositionUI(); Camera = new OrthoCamera(Width, Height, 4.0f / _upScale); Camera.SetWrapSize(WorldSize, WorldSize); Camera.Position2D = new Vector2(WorldSize, WorldSize) / 2.0f; Camera.Pitch = TargetCameraPitch; Camera.Yaw = TargetCameraYaw; Plugin.CityGenerated(); GeoShader = new GeometryShader(); GeoShader.Camera = Camera; FlatEntShader = new FlatEntityShader(); FlatEntShader.Camera = Camera; ModelEntShader = new ModelEntityShader(); ModelEntShader.Camera = Camera; _traceShader = new DebugTraceShader(); _traceShader.Camera = Camera; _frameTimer.Start(); } }