|
|
- Hooks.on("updateToken", (token, updates) => {
- if(!token?.object?.controlled) return;
- if("elevation" in updates) CONFIG.Levels.handlers.RefreshHandler.refreshPlaceables();
- })
-
- Hooks.on("controlToken", (token, controlled)=>{
- if(controlled){
- CONFIG.Levels.currentToken = canvas.tokens.controlled.find(t => t.document.sight.enabled) ?? canvas.tokens.controlled[0];
- }else{
- if(game.user.isGM && !canvas.tokens.controlled.length) CONFIG.Levels.currentToken = null;
- }
- CONFIG.Levels.handlers.RefreshHandler.refreshPlaceables();
- })
-
- Hooks.on("preUpdateToken", (token,updates) => {
- if(token?.object?.controlled) CONFIG.Levels.handlers.DrawingHandler.executeStairs(updates, token);
- if(token.object && "elevation" in updates && !CONFIG.Levels?.useCollision3D){
- const elevDiff = token.object.document.elevation - updates.elevation;
- const p0 = {x:token.object.x,y:token.object.y,z:updates.elevation}
- const p1 = {x:token.object.x,y:token.object.y,z:token.object.losHeight-elevDiff+0.1}
- const collision = CONFIG.Levels.handlers.SightHandler.testCollision(p0, p1, "collision")
- if(collision){
- ui.notifications.error(game.i18n.localize("levels.err.collision"))
- if(!game.user.isGM) delete updates.elevation
- }
- }
- })
|