我一直试图找到一段代码,用于绘制或启动双重黑色箭头视觉指示器的绘制,当按__next__
执行变换旋转时显示键(或使用R
键调整大小),在此处可见:
我一直踩着Rotate操作员的代码,各种绘图功能等,但没有成功。我想我没有足够好的代码结构图片。
如果有人能指出我正确的方向,我将非常感激。
有人至少知道要查找的正确的术语吗?
我使用的是Blender 2.76,但我想对任何版本的见解都会有所帮助。
(我试图做的是在代码中找到决定是否绘制指标的点。我在this问题中解释了"问题"目标是让它始终显示出来。)
答案 0 :(得分:0)
我终于找到了这个地方,而不是单步执行代码,而是浏览它,哈哈!
绘制指标的功能是drawHelpline()
,并且检查该区域是否为“WINDOW'在helpline_poll()
中完成,均来自transform.c文件。
在wm_paintcursor_draw()
从wm_draw.c文件中做出实际决定,该文件使用helpline_poll()
间接调用pc->poll(C)
。
wm_paintcursor_draw()
会调用wm_method_draw_triple()
,wm_draw_update()
会从WM_main()
调用cursor_warp()
来调用{/ 1}}。
这回答了我的问题。
然而,这并不能解决我的实际问题,因为这些函数中的活动子窗口是执行操作符的区域 - 在我的例子中是ToolShelf!这是因为helpline_poll()
,我用来在我的操作符中移动鼠标,只更改鼠标指针位置,不更新任何其他内容(即不更新活动子窗口)。
因此,如果我强制WM_cursor_warp()
返回1,它将仅在ToolShelf上绘制指示符
解决方案是从wm_window.c破解win->screen->subwinactive
以将var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var TVDB = require('node-tvdb');
var async = require('async');
var _ = require('lodash');
var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');
var config = require('./config');
mongoose.connect(config.mongoUrl);
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function(){
//we're connected
console.log("Connected correctly to the server");
});
var index = require('./routes/index');
var users = require('./routes/users');
var showRouter = require('./routes/showRouter');
var episodeRouter = require('./routes/episodeRouter');
var app = express();
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', index);
app.use('/users', users);
app.use('/shows', showRouter);
app.use('/episodes', episodeRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('Not Found');
err.status = 404;
next(err);
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
设置为正确的窗口ID,但这实际上是一个丑陋的黑客,并且与我在这里提出的问题没有直接关系。德尔>
解决方案是使用模态计时器操作符来允许Blender更新活动子窗口,解释here。