/// <summary> /// /// </summary> /// <remarks> /// May not change the game state whatsoever! /// </remarks> /// <param name="renderEntity"></param> /// <param name="renderView"></param> /// <returns></returns> protected bool ModelCallback(idRenderEntity renderEntity, idRenderView renderView) { idEntity ent = idR.Game.Entities[renderEntity.EntityIndex]; if (ent == null) { idConsole.Error("idEntity::ModelCallback: callback with null game entity"); } return(ent.UpdateRenderEntity(renderEntity, renderView)); }
protected bool UpdateRenderEntity(idRenderEntity renderEntity, idRenderView renderView) { // TODO: cinematic /*if ( gameLocal.inCinematic && gameLocal.skipCinematic ) { * return false; * }*/ idAnimator animator = this.Animator; if (animator != null) { return(animator.CreateFrame(idR.Game.Time, false)); } return(false); }
private void PreRender() { if (_needsRender == true) { _world.InitFromMap(null); idDict spawnArgs = new idDict(); spawnArgs.Set("classname", "light"); spawnArgs.Set("name", "light_1"); spawnArgs.Set("origin", _lightOrigin); spawnArgs.Set("_color", _lightColor); idConsole.Warning("TODO: lighting"); /*gameEdit->ParseSpawnArgsToRenderLight(&spawnArgs, &rLight); * lightDef = world->AddLightDef(&rLight); * if(!modelName[0]) * { * common->Warning("Window '%s' in gui '%s': no model set", GetName(), GetGui()->GetSourceFile()); * }*/ spawnArgs.Clear(); spawnArgs.Set("classname", "func_static"); spawnArgs.Set("model", _modelName); spawnArgs.Set("origin", _modelOrigin); _worldEntity = idE.GameEdit.ParseSpawnArgsToRenderEntity(spawnArgs); if (_worldEntity.Model != null) { Vector3 v = _modelRotate.ToVector3(); _worldEntity.Axis = v.ToMatrix(); _worldEntity.MaterialParameters[0] = 1; _worldEntity.MaterialParameters[0] = 1; _worldEntity.MaterialParameters[0] = 1; _worldEntity.MaterialParameters[0] = 1; _renderEntity = _world.AddEntityDefinition(_worldEntity); } _needsRender.Set(false); } }
/// <summary> /// Present is called to allow entities to generate refEntities, lights, etc for the renderer. /// </summary> public virtual void Present() { if (this.Disposed == true) { throw new ObjectDisposedException(this.GetType().Name); } // TODO: /*if ( !gameLocal.isNewFrame ) { * return; * }*/ // don't present to the renderer if the entity hasn't changed /*if ( !( thinkFlags & TH_UPDATEVISUALS ) ) { * return; * } * BecomeInactive( TH_UPDATEVISUALS );*/ // camera target for remote render views /*if ( cameraTarget && gameLocal.InPlayerPVS( this ) ) { * renderEntity.remoteRenderView = cameraTarget->GetRenderView(); * }*/ // if set to invisible, skip if ((_renderEntity.Model == null) || (this.IsHidden == true)) { return; } // add to refresh list if (_renderModel == null) { _renderModel = idR.Game.CurrentRenderWorld.AddEntityDefinition(_renderEntity); } else { idR.Game.CurrentRenderWorld.UpdateEntityDefinition(_renderModel, _renderEntity); } }